基于FPGA的函数信号发生器设计答辩人:姜波2013年毕业论文答辩会目录1.系统简介2.研究背景和意义3.使用工具4.DDS算法原理5.波形原理图及说明2013年毕业论文答辩会9.硬件电路10.电路测试8.ModelSim信号仿真7.功能仿真11.结论6.主程序流程图12.前展望景1.系统简介:函数信号发生器在教学、通信、测量等领域是非常重要的的工具。制作噪声低、频率变换快和分辨率高的信号发生器已引起了现科学界越来越浓厚的兴趣。本设计主要讨论了如何利用FPGA来实现一个DDS系统,该系统以FPGA为核心的硬件结构来实现,使用Altera公司的CycloneII系列开发板。通过对时钟信号进行分频和相位累加,对输出的波形进行调用LPM-ROM存储,再经高速D/A转换,低通滤波器后输出函数信号。通过对QuartusII开发工具的VHDL的编写,电路的连接,时序仿真进行了研究。而且利用ModelSim进行更精确地仿真。仿真通过后,形成顶层文件得以完成对系统的全面布局,最后将软件硬件互相结合,下载到开发板FPGA芯片上进行硬件调试。2.研究背景和意义传统的三极管等分离元件式模拟信号发生器频率稳定性低、可靠性差的特点,已经不可能满足实际应用的需要,所以就必须制作频率稳定性、精确度更高的信号发生器解决这些问题。传统的信号发生器技术对科学的发展带来了很多,而且随着集成电路技术和数字信号处理的发展,直接数字频率合成技术(DDS)已开始被广泛的用于信号发生器的发生和制作当中。3.使用工具采用的工具:软件:QuartusII9.0ModelSimPESE10.2硬件:SOC/家庭实验室KX_7C系列CycloneIIEP2C5T144芯片4.DDS算法原理在参考时钟的驱动下,相位累加器对频率控制字进行线性累加,得到的相位码对波形存储器寻址,使之输出相应的条幅码,经过D/A转换得到相应的阶梯波,最后再使用低通滤波器对其进行平滑处理,得到所需频率的平滑连续的波形。5.波形发生原理图及说明VCCGZD_F_choose2INPUTVCCchoice_BX_2INPUTVCCchoice_BX_1INPUTVCCCLK_WAIBUINPUTVCCGZD_F_choose1INPUTVCCFword[7..0]INPUTVCCFDTJ[3..0]INPUToutyy[9..0]OUTPUTVCCa[23..0]b[23..0]s[23..0]adder32binst1loaddin[23..0]dout[23..0]reg23binst410bits1024wordsBlocktype:M4Kaddress[9..0]clockq[9..0]romfbinst6clkclk_outfenpin3inst7a1a2a3s0s1outymux31inst8clkclk_outfenpin3inst910bits1024wordsBlocktype:M4Kaddress[9..0]clockq[9..0]romsjinst13GND10bits1024wordsBlocktype:M4Kaddress[9..0]clockq[9..0]rominst3x1X2a1[9..0]b1[9..0]c1[9..0]d1[9..0]y1[9..0]choice1234inst10bits1024wordsBlocktype:M4Kaddress[9..0]clockq[9..0]romrybinst2DenomisUNSIGNEDNumerisUNSIGNEDnumer[9..0]denom[9..0]quotient[9..0]remain[9..0]divinst5GNDCycloneIIinclk0frequency:20.000MHzOperationMode:NormalClkRatioPh(dg)DC(%)c010/10.0050.00inclk0c0PLLUinst10A[23..14]A[23..14]B[19..12]A[23..14]A[23..14]B[23..20]B[11..0]FUDU[9..4]FUDU[3..0]B[23..0]A[23..0]FUDU[9..0]锁相环分频选频累加器波形存储ROM波形选择幅度调节原理图说明锁相环:直接调用IPcore实现,将晶振提供的20MHZ时钟信号倍频到200MHZ作为系统工作时钟。相位累加器:根据频率控制字产生查找表的地址,查找表根据这个地址输出a[23..0]b[23..0]s[23..0]adder32binst1loaddin[23..0]dout[23..0]reg23binst4B[23..0]A[23..0]VCCclkINPUT正弦查找ROM:此模块是直接调用ROM的IPcore实现的,用于存放正弦波形的1024个采样点。采样点可用QuartusII直接产生mif文件。10bits1024wordsBlocktype:M4Kaddress[9..0]clockq[9..0]rominst3A[23..14]DenomisUNSIGNEDNumerisUNSIGNEDnumer[9..0]denom[9..0]quotient[9..0]remain[9..0]divinstVCCfenzi[9..0]INPUTVCCfenmu[9..0]INPUTshuchu[9..0]OUTPUTyushu[9..0]OUTPUT幅度调节:对于幅度调节的设计,我们应用除法器的思想。输出的波形数据是mif文件中离散的十位二进制数据,我们都十位数据进行除法处理。正弦查找表开始初始化检测按键是否有键按下是否确认键计算控制字送出控制字缓冲区清零是否数字键存入缓冲区调用显示子程序否是是否是否6.主程序流程图7.功能仿真高频区低控制:choice_BX1=0,choice_BX2=0,正弦波GZD_F_choose1=1,GZD_F_choose2=0,高频区Fword=0000,0000分析数据,mif文件和图知从583-587中间无间隔,本波形一周期中1024个点。T=(738.02-718.017)*1024=20.483072us。f=1/T=48.8208KHZ(理论值:48.828125KHZ)。8.ModelSim信号仿真9.硬件电路IO/ASDO1IO/nCSO2IO3IO4VCCIO5GND6IO7IO8IO9TDO10TMS11TCK12TDI13DATA014DCLK15nCE16CLK017CLK118GND19nCOFIG20CLK221CLK322VCCIO23IO24IO25IO26IO27IO28VCCIO29IO30IO31IO32GND33GND34VCCINT/PLL35GND36VCCINT37GND38GND39IO40IO41IO42IO43IO44IO45VCCIO46IO47IO48GND49VCCINT50IO51IO52IO53VCCIO54IO55GND56IO57IO58IO59IO60GND61VCCINT62IO63IO64IO65VCCIO66IO67GND68IO69IO70IO71IO72IO73IO74IO75IO76VCCIO77GND78IO79IO80IO81nSTATUS82CONF_DONE83MSEL184MSEL085IO86IO87CLK788CLK689CLK590CLK491IO92IO93IO94VCCIO95IO96IO97GND98IO99IO100IO101VCCIO102IO103IO104GND105GND106IO107GND108VCCINT109GND110GND111IO112IO113IO114IO115VCCIO116GND117IO118IO119IO120IO121IO122GND123VCCINT124IO125IO126VCCIO127GND128IO129GND130VCCINT131IO132IO133IO134IO135IO136IO137VCCIO138IO139GND140IO141IO142IO143IO144CycloneIIEP2C5T144ALTERA1FPGA11223344556677889910103LCD11122334455662LCD2GND1VCC2VO3D/I4R/W5E6DB07DB18DB29DB310DB411DB512DB613DB714CS115CS216REST17VOUT18LED+19LED-20LCD12864LCD1286412864MSB-11BIT-22BIT-33BIT-44BIT-55BIT-66BIT-77BIT-88BIT-99LSB-1010Vrof-IN11VDD12GND13Rfb14Iout115Iout216AD75204AD75206OP6505OP6501122334455667788991010JTAGTCKDGNDTDOVCCTCKTMSDGNDTCKVCCTMSTDICONFIG-DONEnCONFIGnSTATUS+5V+12VGNDGNDGND+5VVoGNDVCCRp10k-20k10KR110KR210KR310KR410KR510KR610KR710KR8GND10KR9GNDVCCGNDS1S2S3S4S5S6S7S8S9S10S11S12S13S14S15S16R16R17R18R19U174LS0812348765S20SWDIP-4GND10KR2010KR2110KR2210KR23VCCIO1.0pFC1470nHL1390nHL2390nHL35.6pFC24.7pFC322pFC433pFC522pFC622pFC7GNDVoVoutoutA0+inputA1-inputA2-Vref3+Vref4+outB5+inputB6-inputB7LF353LF3531KR26100pFC8D11KR271KR28GNDVCC-VCCVoutP72P71P70P69P67P65P64P63P60P59P58P57P56P55P53P52P51P48P47P45P44P43P42P41P40P73P74P75P76P79P80P81P86P87P92P93P94P96P97P99P100P101P103P104P105P107P144P143P142P139P137P136P135P134P133P132P129P126P125P122P121PP120P119P118P115P114P113P112VCCGNDGNDP73P74P75P76P77P79P80P83VCCGNDP77P79P80P83P73P74P75P76P27P43P42P41P40P32P31P30P9P141P139P137P136P135P134P133P132P129P126P8P7P94P96P97P12012345678P2key-Header812345678910P1DA--Header10P141P139P137P136P135P134P133P132P129P126P27P43P42P41P40P32P31P30键盘控制液晶显示幅值检测椭圆滤波DA转换主核10.电路测试10位输出QuartusII仿真输出不同位的测试(相当测量分频器)正弦波三角波方波11.结论我们利用AlteraCycloneIIEP2C5T144型号的芯片可以按照题目要求设计出产生正弦波、三角波和方波的函数信号发生器。我们可以从仿真结果看出,采用二十四位的相位累加器的波形发生器完全满足题目的要求。整个系统使用四片1024*10的ROM存储4种波形。在实际的设计中,只要任意改变波形存储器中的波形数据,我们可以实现对任意周期波形输出。通过进一步对采样量化和存储器容量ROM等参数的精确计算,根据不同条件的需要,我们设计出了最小1Hz甚至更高分辨率的波形发生器。而且,我们利用软件编写控制幅度的调节,避免了用滑动电阻调节幅度带来