1、EDA 设计报告-基于 DDS 的正弦信号发生器专 业: 班 级: 学 号: 姓 名: 1 / 11目 录一、DDS 信号发生器原理2二、基于 DDS的正弦信号发生器设计实现3三、DDS 信号发生器原理图6四、仿真结果7五、 硬件调试结果及分析7六、心得与体会92 / 11一. DDS 信号发生器原理对于正弦信号发生器,它的输出可以用下式来描述:其中,Sout 是指该信号发生器的输出信号波形,fout 只输出信号对应的频率。上式的表述对于时间 t 是连续的,为了用数字逻辑实现该表达式,必须进行离散化处理,用基准时钟 clk 进行抽样,令正弦信号的的相位 为在一个 clk 周期clk,相位 的变
2、化量为其中 fclk 指 clk 的频率对于 2 可以理解为“满”相位,为了对 进行数字量化,把 2 切割成 2N,用词每个 clk 周期的相位增量 用量化值 B 来描述:B=(2 N)/2,且 B 为整数与上式联立可得:显然,信号发生器可以描述其中 k-1 指前一个 clk 周期的相位值,同样得出3 / 11由以上推倒可以得出,只要对相位的量化值进行简单的累加运算,就可以得到正弦信号的当前相位值,而用于累加的香味增量量化值 B 决定了信号的输出频率 fout 并呈现简单的线性关系。直接数字合成器 DDS 就是根据以上原理而设计的数控频率合成器,下图为其基本 DDS 结构,主要有相位累加器、相
3、位调制器、正弦 ROM 查找表构成图中的相位累加器、相位调制器、正弦 ROM 查找表是 DDS 结构中的数字部分,二、 基于 DDS的正弦信号发生器设计实现根据设计原理框图分别设计出加法器、寄存器、正弦波 ROM。 1、32 位加法器 ADDER32设计在原理图文件文件下在空白处双击,单击“MegaWizard Plug-In Manager”选择第一项 4 / 11选择器件为 cyclone,语言方式为 VerilogHDL。在算数项Arithmetic 中选择计数器 LPM_ADD_SUB.存于所建工程文件夹下命名为ADDER32.单击 NEXT,进入以后对话框后选择 32 位加法器工作模
4、式选择有一位加法进位输出,选择有符号加法方式,选择 2 级流水线工作模式 ,此时该加法器变为有时序电路的模块,最后至 finish 按钮,编辑完成。 2、32 位寄存器 DFF32设计寄存器 DFF32 由 LMP_FF 宏模块担任,生成方法同 ADDER32 相同,设置位数为 32 位,且为时序控制模块。5 / 11DFF32 与 ADDER32 构成一个 32 位累加器其高十位 A3122为波形数据ROM 的地址3. 正弦波 ROM设计a.首先通过 mif 文件来产生正弦波注意:在生成正弦波的时候要注意与 sin_rom 中的数据一致。即位 DEPTH = 1024;WIDTH = 10;
5、这样才能保证在最后的输出中能够有完整的正弦波图形输出。存盘并命名为 sin_rom.mifb.LPM_ROM 的订制:按 ADDER32 的产生方法来产生 LMP_ROM,在宏模块选6 / 11择中选“Memory Complier”中“ROM:1-PORT”项,依次设定地址线与数据线的位宽均为十位,最后产生 LMP_ROM。三、 DDS 信号发生器原理图原理图共分为三大部分:相位累加器,相位调制器,正弦 ROM 查找表。1. 相位累加器相位累加器是 DDS 的核心,完成相位累加的过程其输入可以称7 / 11为频率字输入在输入时增加一个寄存器可以使频率字改变时不会干扰相位累加器的正常工作2.
6、相位调制器相位调制器接受相位累加器的相位输出,加上一个相位偏移值,可用于信号的相位调制。加一个寄存器可用于信号的同步保持。如图10 所示3. 正弦 ROM 查找表正弦 ROM 的输入是相位调制器的输出,即 ROM 的地址值,输出送往 DAC 转化为模拟信号。四、仿真结果五、 硬件调试结果及分析调试、仿真成功后进行硬件调试阶段,在“Assignment”菜单下选择“Device”项进行器件选择 Cyclone 中的 EP1C12Q240C8 器件,在8 / 11“Assignment”菜单下选择”pins”项,进行管脚锁定。键 1(PIO0)B17233 DAC 2217键 2(PIO1)B16
7、234 DAC 3219键 3(PIO2)B15235 DAC 4223键 4(PIO3)B14236 DAC 5225键 5(PIO4)F17237 DAC 6226键 6(PIO5)F16238 DAC 7224键 7(PIO6)F15239 DAC 8222键 8(PIO7)F14240 DAC 9218Clock0 clk28管脚锁定后再次进行编译,成功后选择“tools”菜单下“programmer”项进行下载。用示波器进行波形观察。选择模式 0。键 1至键 4 用来控制频率字的输入,键 5 至键 8 控制相位字的输入,clock0 选择 20MHz,。按动键 1 至键 4 调节频率
8、子输入,键 5 至键 8 调节相位字输入结果如图所示:当改变频率字时波形变化如图所示当改变相位字时波形如所示9 / 11当同时改变频率字与相位字时,波形如图所示硬件调试结果分析:该调试的结果满足了实验的要求,验证了 DDS 信号发生器的功能,即能够调节频率与相位。六、心得与体会通过这次的课程设计,我复习并进一步熟练了 Quartus 的基本功能和操作,掌握了 Verilog HDL 语言的设计输入、编译、仿真和调试等过程。我的几点体会如下:首先,在编写顶层文件的过程中,要注意保证设计的芯片与书上要求的一致,这样才能减少在编译过程中的错误;其次,ROM 中关于波形的设置要与.m 文件中的参数一致
9、,以减少波形的失真;最10 / 11后,连接试验箱下载时要注意示波器与实验箱连接处是否良好,以减少波形失真。此外通过调节实验箱上的幅度按钮可以保证示波形的完整。通过这次实验,我也发现了自己的知识缺陷。在定制 ROM 的过程中,没将波形参数与.m 文件中的参数保持一致,导致后面的步骤出现了误差。在使用硬件实验箱进行下载时,由于对实验箱构造不熟练,浪费了大量时间。这次的 EDA 课程设计让我感觉到,Quartus这款软件的功能的强大,也深深体会到自己掌握的功能只是九牛一毛!提升的空间还很大,后面的学习中,我将积极的把所学知识与实际操作相结合,增加动手实践的经历,探索并掌握更多 Quartus的未知功能。