基于FPGA的函数发生器设计.docx
《基于FPGA的函数发生器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的函数发生器设计.docx(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于FPGA的函数发生器设计本设计中的函数发生器是通过VHDL语言来描绘的,通过这样一种硬件描绘语言,根据设计要求中所需要使用到的功能,尽可能的知足了实际应用中的详细需求。设计要求通过本设计产生频率可控的正弦波,方波,三角波和锯齿波等波形。5.1软件设计思路数字频率合成器DDFS技术是一种可把一系列数字量形式信号通过DAC转换成模拟量形式信号的合成技术9。目前使用最广泛的一种DDFS方式是利用高速存储器作查寻表,然后通过高速DAC产生已用数字形式存入的正弦波。图5-1是DDFS的根本原理图。图5-1DDFS根本原理图相位累加器由N位加法器与N位累加存放器级联构成。时钟脉冲每触发一次,加法器便将
2、频率控制数据与累加存放器输出的累加相位数据相加,然后把相加后的结果送至累加存放器的数据输入端。累加存放器将加法器在上一个时钟作用后所产生的新相位数据反应到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。这样,相位累加器在参考时钟的作用下将进展线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDFS合成信号的一个频率周期,累加器的溢出频率就是DDFS输出的信号频率。用相位累加器输出的数据作为取样地址来对正弦波波形存储器进展相位幅值转换,即可在给定的时间上确定输出的波形幅值。通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟
3、量形式信号,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯洁的正弦波信号10。对于计数容量为2N的相位累加器和具有M个相位取样的正弦波波形存储器,假设频率控制字为K,那么DDFS系统输出信号的频率为:fofcK/2N,而频率分辨率那么为:ffominfc/2N。波形的数据存放在RAM里,主要有正弦波、三角波、锯齿波包括半正弦波、半三角波和半锯齿波的数据。要到达较高的频率精度,必须利用DDFS来实现对输出波形频率的控制并按频率要求对相位增量进展累加,然后以累加相位值作为地址码来读取存放在存储器中的波形数据。通过改变相位增量存放器的增量值即步长,使相位累加器可以输出根据相位增量存放器所给
4、出的步长来改变波形存储器的地址,进而改变波形每周期的点数,进而到达改变输出波形频率的目的。该电路的设计关键在于用硬件构造一个多位累加器来实现相位的累加。根据DDFS的原理,输出信号频率fo与累加器时钟fclk,累加器位数M,相位增量N的关系如下:fo(fclk*N)/2M5.2源程序的讲明以下是数字函数发生器设计的局部源程序讲明。完好程序请见附录1.调用双口RAM:双口RAM拥有两套读写资源,可以同时进展读写而互相不受影响。这里使用双口RAM来实现波形查找表的功能,可以方便地使用外部控制器更改查找表中的内容,也就更改了输出波形的类型,进而简单的实现任意波的输出。altsyncram_compo
5、nent:altsyncramGENERICMAP(intended_device_family=ACEX1K,operation_mode=DUAL_PORT,width_a=8,widthad_a=10,numwords_a=1024,width_b=8,widthad_b=10,numwords_b=1024,lpm_type=altsyncram,width_byteena_a=1,outdata_reg_b=UNREGISTERED,indata_aclr_a=NONE,wrcontrol_aclr_a=NONE,address_aclr_a=NONE,address_reg_b=C
6、LOCK0,address_aclr_b=NONE,outdata_aclr_b=NONE,read_during_write_mode_mixed_ports=DONT_CARE,power_up_uninitialized=FALSE,init_file=sin_rom1024_2.mif)2.频率合成输出:在每一个时钟周期,频率累加器以输入的频率字为步进进展自增累加;累加结果的高位送给相位累加器与相位字进展累加,可以理解为在这里加上相位偏置;相位累加器的输出作为波形查找表的地址从查找表中读出相应的数据后送给D/A转换器,最后经过低通滤波器,后级放大等信号调理电路形成模拟量的波形输出。FR
7、EQ_WORDS=XEEEEEPHASE_WORDS=0000000000FreqAcc:PROCESS(CLK)BEGINIF(CLKEVENTANDCLK=1)THENreg_G_FreqWords=FREQ_WORDS;-频率字输入同步reg_G_PhaseWords=PHASE_WORDS;-相位字输入同步arith_G_FreqAcc=arith_G_FreqAcc+reg_G_FreqWords;-相位累加器ENDIF;ENDPROCESSFreqAcc;-相位累加器arith_G_PhaseAcc=arith_G_FreqAcc(freq_adder_width-1DOWNTOf
8、req_adder_width-phase_words_width)+reg_G_PhaseWords;-取累加器高位送LUTreg_G_LUTAddress=arith_G_PhaseAcc(phase_adder_width-1DOWNTOphase_adder_width-lut_add_width);DDFSOUT=reg_G_OutRegister;5.3系统的时序仿真实现和验证在完成了软件局部的设计就可以在所选用的仿真软件上进展调试,以验证所编写的程序是否可以实现预先设定的功能。5.3.1使用QuartusIITextEditor建立设计QuartusIITextEditor11是
9、一个灵敏的工具,用于以AHDL、VHDL和VerilogHDL语言以及Tcl脚本语言输入文本型设计。还可以使用TextEditor输入、编辑和查看其它ASCII文本文件,包括为QuartusII软件或者由QuartusII软件建立的那些文本文件。还可以用TextEditor将任何AHDL语句或者节段模板、Tcl命令或者任何支持的VHDL或者VerilogHDL构造模板插入当前文件中。AHDL、VHDL和VerilogHDL模板为您输入HDL语法提供了一个简便的方法,可以进步设计输入的速度和准确度。还可以获取有关所有AHDL元素、关键字和语句以及宏功能模块和根本单元的上下文相关帮助。5.3.2使
10、用AssignmentEditor指定初始设计的约束条件AssignmentEditor是用于在QuartusII软件中建立和编辑分配的界面。分配用于在设计中为逻辑指定各种选项和设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配。使用AssignmentEditor可以选择分配种别;使用QuartusIINodeFinde选择要分配的特定节点和实体;显示有关特定分配的信息;添加、编辑或者删除选定节点的分配。还可以向分配添加备注,可以查看出现分配的设置和配置文件。以下步骤描绘使用AssignmentEditor进展分配的根本流程:1.翻开AssignmentEditor。2.在Ca
11、tegory栏中选择相应的种别分配。3.在NodeFilter栏中指定相应的节点或者实体,或者使用NodeFinder对话框查找特定的节点或者实体。4.在显示当前设计分配的电子表格中,添加相应的分配信息。AssignmentEditor中的电子表格提供适用的下拉列表,或者允许您键入分配信息。当您添加、编辑和删除分配时,消息窗口中将出现相应的Tcl命令12。还可以将数据从AssignmentEditor导出到Tcl脚本文件(.tcl)或者与电子表格兼容的文件中。建立和编辑分配时,QuartusII软件对适用的分配信息进展动态验证。假如分配或者分配值无效,QuartusII软件不会添加或者更新数值
12、,改为转换为当前值或者不承受该值。当您查看所有分配时,AssignmentEditor将显示为当前工程而建立的所有分配,但当您分别查看各个分配种别时,AssignmentEditor将仅显示与所选特定种别相关的分配。图5-3QuartusIIAssignmentEditor5.3.3使用QuartusIIVHDL可以使用AnalysisSynthesis分析并综合VHDL和VerilogHDL设计13。AnalysisSynthesis包括QuartusIIIntegratedSynthesis,它完全支持VHDL和VerilogHDL语言,并提供控制综合经过的选项。如图5-4中所示。图5-4
13、Settings对话框的VHDLInput页AnalysisSynthesis构建单个工程数据库,将所有设计文件集成在设计实体或者工程层次构造中。QuartusII软件用此数据库进展其余工程处理。其它Compiler模块对该数据库进展更新,直到它包含完全优化的工程。开场时,该数据库仅包含原始网表;最后,它包含完全优化且适宜的工程,工程将用于为时序仿真、时序分析、器件编程等建立一个或者多个文件。当它建立数据库时,AnalysisSynthesis的分析阶段将检查工程的逻辑完好性和一致性,并检查边界连接和语法错误。AnalysisSynthesis还在设计实体或者工程文件的逻辑上进展综合和技术映射
14、。它从VerilogHDL和VHDL中推断触发器、锁存器和状态机。它为状态机建立状态分配,并作出能减少所用资源的选择。此外,它还用Altera参数化模块库(LPM)函数中的模块交换运算符,例如+或者-,而该函数已为Altera器件做了优化。AnalysisSynthesis使用多种算法来减少门的数目,删除冗余逻辑以及尽可能有效地利用器件体系构造。可以使用逻辑选项分配自定义综合。AnalysisSynthesis还应用逻辑综合技术,以协助施行工程时序要求,并优化设计以知足这些要求。消息窗口和Report窗口的消息区域显示AnalysisSynthesis生成的任何消息。Status窗口记录工程编
15、译期间在AnalysisSynthesis中处理所花的时间。5.3.4控制AnalysisSynthesis可以使用以下选项和功能来控制QuartusIIAnalysisSynthesis:l编译器指令和属性lQuartusII逻辑选项lQuartusII综合网表优化选项1使用编译器指令和属性QuartusII软件支持编译器指令,这些指令也称为编译指示。可以在VerilogHDL或者VHDL代码中包括translate_on和translate_off等编译器指令作为备注。这些指令不是VerilogHDL或者VHDL命令;但是,综合工具使用它们以特定方式推动综合经过。仿真器等其它工具那么忽略这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 函数 发生器 设计
限制150内