1、 JIANGSU UNIVERSITY OF TECHNOLOGYFPGA 技术实验报告基于 FPGA 的直接数字频率合成器设计学 院: 电气信息工程学院 专 业: 测控技术与仪器 班 级: 11 测控 2 姓 名: 学 号: 指导教师: 时 间: 2014 年 12 月 目 录一、功能要求与整体设计-(3)1.1 功能要求-(3)1.2 整体设计-(3) 二、 DDS 技术的基本原理-(3)三、 基本 DDS 设计-(5)3.1 频率预置与调节电路-(5)3.2 累加器-(5)3.3 波形存储器-(6)3.4 D/A 转换器-(6)3.5 低通滤波器-(6)四 、基于 DDS 的正弦信号发生
2、器设计实现-(6)4.1 32 位加法器 ADDER32 设计-(6)4.2 32 位寄存器 REG32B 设计-(7)4.3 正弦波 ROM 设计-(8)五、程序设计-(9)5.1 正弦波产生程序设计-(9)5.2 三角波产生程序设计-(11)5.3 方波产生程序设计-(12)5.4 锯齿波产生程序设计-(14)5.5 顶层仿真-(16)六、 DAC0832 接口电路及程序设计-(17)6.1 DAC0832 接口电路设计-(17)6.2 DAC0832 接口程序设计-(18)七、 软硬件调试-(18)7.1 软件下载-(18)7.2 硬件调试-(19)八、心得体会-(22)九、参考文献-(
3、22)十、附录-(23)附录 1 源程序清单-(23)附录 2 实物图-(27)一、功能要求和整体设计1.1 功能要求设计一个多功能波形发生器。该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。具体要求如下:(1)具有产生正弦波、方波、三角波、锯齿波 4 种周期性波形的功能。(2)用键盘输入编辑生成上述 4 种波形(同周期)的线性组合波形。(3)具有波形存储功能。(4)输出波形的频率范围为 100Hz200kHz ;重复频率可调,频率步进间隔100Hz。(5)具有显示输出波形的类型、重复频率(周期)和幅度的功能。 1.2 整体设计多功能波形发生器系统由输入部分、FPGA 部分、
4、DAC、显示部分四部分组成。其系统框图如图 1-1 所示。图 1-1 系统框图二、DDS 技术的基本原理对于正弦信号发生器,它的输出可以用下式来描述:sinsin(2)out outAtf(1)其中,Sout 是指该信号发生器的输出信号波形,f out 只输出信号对应的频率。上式的表述对于时间 t 是连续的,为了用数字逻辑实现该表达式,必须进行离散化处理,用基准时钟 clk 进行抽样,令正弦信号的的相位 为2outf(2)在一个 clk 周期clk,相位 的变化量为(3)其中 fclk 指 clk 的频率对于 2 可以理解为“满”相位,为了对 进行数字量化,把 2 切割成 2N,用词每个 cl
5、k 周期的相位增量 用量化值 B来描述:B=(2 N)/2,且 B 为整数与上式联立可得:(4)显然,信号发生器可以描述(5)其中 k-1 指前一个 clk 周期的相位值,同样得出(6)由以上推倒可以得出,只要对相位的量化值进行简单的累加运算,就可以得到正弦信号的当前相位值,而用于累加的香味增量量化值 B 决定了信号的输出频率 fout 并呈现简单的线性关系。直接数字合成器 DDS 就是根据以上原理而设计的数控频率合成器,图 2-1为其基本 DDS 结构,主要有相位累加器、相位调制器、正弦 ROM 查找表构成图中的相位累加器、相位调制器、正弦 ROM 查找表是 DDS 结构中的数字部分。图 2
6、-1 基本 DDS 结构三、 基本 DDS 设计DDS 基本组成如图 3-1 所示。图 3-1 为 DDS 基本组成3.1 频率预置与调节电路此部分主要实现频率控制量的输入与调节,不变量 K 被称为相位增量,也叫频率控制字,通过调节频率控制字可以改变信号的输出频率。3.2 累加器相位累加器由加法器和寄存器组成,其组成框图如图 3-2 所示。图 3-2 相位累加器组成框图在时钟的作用下,进行相位累加,当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。3.3 波形存储器可以进行波形的相位幅值转换。ROM 的 N 位地址:把 0360 度的正弦角度离散成具有 2N 个样值的序列 ;ROM
7、 的 D 位数据位:2N 个样值的幅值量化为D 位二进制数据。3.4 D/A 转换器D/A 转换器可以把已经合成的波形的数字量转换成模拟量。3.5 低通滤波器滤除生成的阶梯形正弦波中的高频成分,将其变成光滑的波形。四、基于 DDS 的正弦信号发生器设计实现根据设计原理框图分别设计出加法器、寄存器、正弦波等 ROM。 4.1 32 位加法器 ADDER32 设计在原理图文件下在空白处双击,单击“MegaWizard Plug-In Manager”选择第一项,如图 4-1 所示 。图 4-1 原理图设置 选择器件为 cyclone,语言方式为 VerilogHDL。在算数项 Arithmetic
8、 中选择计数器 LPM_ADD_SUB.存于所建工程文件夹下命名为 ADDER32.单击 NEXT,进入以后对话框后选择 32 位加法器工作模式选择有一位加法进位输出,选择有符号加法方式,选择 2 级流水线工作模式 ,此时该加法器变为有时序电路的模块,最后至 finish 按钮,编辑完成,32 位加法器模块如图 4-2所示。 图 4-2 32 位加法器模块4.2 32 位寄存器 REG32B 设计寄存器 DFF32 由 LMP_FF 宏模块担任,生成方法同 ADDER32 相同,设置位数为 32 位,且为时序控制模块,如图 4-3 所示。图 4-3 32 位寄存器模块DFF32 与 ADDER32 构成一个 32 位累加器其高十位 A31.22为波形数据ROM 的地址。 十位加法器和寄存器与 32 位方法相同。4.3 正弦波 ROM 设计a.首先通过 mif 文件来产生正弦波注意:在生成正弦波的时候要注意与 sin_rom 中的数据一致。即位 DEPTH = 1024;WIDTH = 10;这样才能保证在最后的输出中能够有完整的正弦波图形输出。