1、一、项目描述一、项目描述n 了解数字频率合成了解数字频率合成(DDS)(DDS)工作原理。工作原理。n 掌握掌握DDSDDS合成器三个主要模块:频率控制寄存器、合成器三个主要模块:频率控制寄存器、高速相位累加器和正弦查找表。高速相位累加器和正弦查找表。n 本项目是采用本项目是采用ALTERAALTERA公司的公司的CycloneCyclone系列系列FPGAFPGA芯片芯片利用利用直接数字频率合成的原理,实现一个频率、直接数字频率合成的原理,实现一个频率、幅度、相位可调的正弦波信号发生器幅度、相位可调的正弦波信号发生器。一、项目描述一、项目描述二、项目资讯二、项目资讯n 可编程逻辑器件概述可编
2、程逻辑器件概述n FPGA FPGA与与CPLD CPLD n PLD PLD开发软件开发软件n 可编程逻辑器件的设计应用流程可编程逻辑器件的设计应用流程n 数字频率合成数字频率合成(DDS)(DDS)工作原理工作原理n LPMLPM模块的调用方法模块的调用方法(前四项参见(前四项参见专题课件专题课件相应内容)相应内容)二、项目资讯二、项目资讯n 包括设计准备、设计输包括设计准备、设计输入、设计处理和器件编入、设计处理和器件编程四个步骤程四个步骤n 相应的功能仿真(前仿相应的功能仿真(前仿真)、时序仿真(后仿真)、时序仿真(后仿真)和器件测试三个设真)和器件测试三个设计验证过程。计验证过程。三
3、、项目分析三、项目分析1.1.信号产生的方法信号产生的方法n RC振荡器:频率稳定度不高n LC振荡器:频率稳定度不高n 石英晶体振荡器:频率稳定度高,但频率调节困难 三、项目分析三、项目分析频率稳定度高,但频率很难连续步进频率稳定度高,但频率很难连续步进三、项目分析三、项目分析1.1.信号产生的方法信号产生的方法n DDS(Direct Digital Synthesizer)即直接数字合成器,即直接数字合成器,是一种新型的频率合成技术,具有较高的频率分辨率,是一种新型的频率合成技术,具有较高的频率分辨率,可以实现快速的频率切换,并且在改变频率的同时能够可以实现快速的频率切换,并且在改变频率
4、的同时能够保持相位的连续,很容易实现频率、相位和幅值的数控保持相位的连续,很容易实现频率、相位和幅值的数控调制。因此,在现代电子系统及设备的频率源设计中,调制。因此,在现代电子系统及设备的频率源设计中,尤其在通信领域,尤其在通信领域,DDS应用越来越广泛。应用越来越广泛。三、项目分析三、项目分析n 对于一个频率为 的正弦信号 ,可以用下式来描述:outsn 其相位:n 将正弦信号的相位和幅值均转化为数字量 n 用频率为 的基准时钟对正弦信号进行抽样 outfclkfn 将2切割成2N等份作为最小量化单位,从而得到的数字量M为:三、项目分析三、项目分析n 当M取1时,可以得到输出信号的最小频率步
5、进为:三、项目分析三、项目分析 由于正弦函数为非线性函数,很难实时计算,一般通过查表的方由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。法来快速获得函数值。n DDS正弦信号发生器原理框图:三、项目分析三、项目分析三、项目分析三、项目分析nFPGA的技术方案 三、项目分析三、项目分析n设计要求如下:(1)产生正弦波波形;)产生正弦波波形;(2)输出信号频率范围)输出信号频率范围0Hz4MHz,频率步进间隔为,频率步进间隔为10KHz或或100KHz可选;设计可选;设计4个按键用来控制频率增减,用数码管显示频率值。个按键用来控制频率增减,用数码管显示频率值。(3)输出
6、信号幅值范围)输出信号幅值范围05V(峰(峰峰值),波形幅值和相位可调。峰值),波形幅值和相位可调。四、项目实施四、项目实施n 微机一台(微机一台(Windows XP系统、安装好系统、安装好Quartus 5.0等相关软件)等相关软件)n EDA学习开发板一块学习开发板一块n USB电源线一条电源线一条n ISP下载线一条。下载线一条。四、项目实施四、项目实施1.方案设计方案设计 四、项目实施四、项目实施1.方案设计方案设计 n硬件电路详细设计高速高速D/AD/A转换电路设计转换电路设计 FPGAFPGA内部逻辑设计内部逻辑设计 滤波电路的设计滤波电路的设计 信号放大电路的设计信号放大电路的
7、设计 驱动电路的设计驱动电路的设计四、项目实施四、项目实施2.DDS子系统设计子系统设计 nDDS子系统参数的确定(1)输出带宽输出带宽当频率控制字M=1时,输出信号的最低频率为 fomin=fclk/2N 式中,fclk为系统时钟频率,N为相位累加器的位数。当N取值 很大时,最低输出频率可以达到很低,甚至可以认为DDS的最低频率为零频。DDS的最高输出频率由系统时钟频率和一个周期波形采样点数决定。当系统时钟频率为,采样点数为X,则最高输出频率为 fomax=fclk/X 四、项目实施四、项目实施2.DDS子系统设计子系统设计(2)频率稳定度。DDS信号的频率稳定度等同于外部时钟信号的频率稳定
8、度。由于外部时钟信号一般采用晶体振荡器,因此,DDS信号频率可以达到很高的稳定度。(3)频率分辨率。频率分辨率由下式决定:如果参考时钟频率取40MHz,相位累加器位数取32,可求得最小频率步进值为:四、项目实施四、项目实施2.DDS子系统设计子系统设计 nDDS子系统参数的确定子系统参数的确定(1)系统时钟频率:)系统时钟频率:40MHz;(2)频率控制字的位宽:)频率控制字的位宽:32位;位;(3)相位累加器的位宽:)相位累加器的位宽:32位;位;(4)波形存储器的地址位宽:)波形存储器的地址位宽:10位;位;(5)波形存储器的数据位宽:)波形存储器的数据位宽:10位。位。最小频率步进值最小
9、频率步进值 四、项目实施四、项目实施2.DDS子系统设计子系统设计 nDDS子系统顶层原理图 四、项目实施四、项目实施2.DDS子系统设计子系统设计 n频率字设定及显示模块 ADD_SUB_8BITADD_SUB_8BIT模块功能:实现模块功能:实现8 8位的加减法计算,每来一个脉位的加减法计算,每来一个脉冲模块自加一或自减一。模块通过输出控制数码管将频率值冲模块自加一或自减一。模块通过输出控制数码管将频率值显示出来。本模块包括一个显示出来。本模块包括一个8 8位的位的LPM_ADD_SUB(LPM_ADD_SUB(加减模块加减模块)和和8 8位的位的LPM_FFLPM_FF(触发器模块)。(
10、触发器模块)。ADD_SUB_32BITADD_SUB_32BIT模块功能:实现模块功能:实现3232位的加减法计算,每来一个脉冲位的加减法计算,每来一个脉冲模块自加或自减模块自加或自减100KHz100KHz频率。本模块包括一个频率。本模块包括一个3232位的位的LPM_ADD_SUB(LPM_ADD_SUB(加减模块加减模块)和和3232位的位的LPM_FFLPM_FF(触发器模块)。(触发器模块)。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nAddsub32模块设计n本模块中使用了两个LPM模块,分别是ADD_SUB_32BIT(加减模块),DFF_32(触发器模块)四、项
11、目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_ADD_SUB模块模块的调用的调用(1)新建一个电路原理图文件)新建一个电路原理图文件(2)在原理图中空白处双击,出现下面)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。对话框,点击图中红色标记按钮。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_ADD_SUB模块模块的调用的调用(3)分别点击红色标记处按钮,)分别点击红色标记处按钮,进入进入LPM模块选择界面。模块选择界面。(4)选中红色标记中的)选中红色标记中的LPM_ADD_SUB模块,并给模块命名,进入下一界面。模块,并给模块命名,进入下一界面
12、。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_ADD_SUB模块模块的调用的调用(5)本界面是设定模块的输入)本界面是设定模块的输入位数,由于要实现位数,由于要实现32位的加减法计位的加减法计算,所以选择算,所以选择32位。计算模式选择位。计算模式选择加减共存模式,并通过加减共存模式,并通过add_sub输输入端选择,输入为入端选择,输入为1时是加法模式,时是加法模式,0为减法模式。为减法模式。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_ADD_SUB模块模块的调用的调用(6)由于需要设计的模块功能)由于需要设计的模块功能是每触发一次,就作一次加法或
13、减是每触发一次,就作一次加法或减法运算,并且值固定是增加或减少法运算,并且值固定是增加或减少100KHz。通过计算得:。通过计算得:将此值固定在将此值固定在B输入端。输入端。1073741824010032MKdatab四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_ADD_SUB模块模块的调用的调用(7)向模块中添加一个)向模块中添加一个clock信信号,用来控制模块的动作,每来一号,用来控制模块的动作,每来一个上升沿,就作一次加减法。到此个上升沿,就作一次加减法。到此本模块的设定基本完成,一直点击本模块的设定基本完成,一直点击next,直到最后点击,直到最后点击finis
14、h,完成模,完成模块的设计。块的设计。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_FF模块的调用(1)新建一个电路原理图文件)新建一个电路原理图文件(2)在原理图中空白处双击,出现下面)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。对话框,点击图中红色标记按钮。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_FF模块的调用(3)分别点击红色标记处按钮,)分别点击红色标记处按钮,进入进入LPM模块选择界面。模块选择界面。(4)选中红色标记中的)选中红色标记中的LPM_FF模块,并模块,并给模块命名,进入下一界面。给模块命名,进入下一界面。四、
15、项目实施四、项目实施2.DDS子系统设计子系统设计 nLPM_FF模块的调用(5)本界面是设定模块的输入)本界面是设定模块的输入位数,所以选择位数,所以选择32位。触发器模式位。触发器模式选择选择D触发器。到此本模块的设定触发器。到此本模块的设定基本完成,一直点击基本完成,一直点击next,直到最,直到最后点击后点击finish,完成模块的设计。,完成模块的设计。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n分频模块(ALTPLL模块的调用)(1)新建一个电路原理图文件)新建一个电路原理图文件(2)在原理图中空白处双击,出现下面)在原理图中空白处双击,出现下面对话框,点击图中红色标
16、记按钮。对话框,点击图中红色标记按钮。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n分频模块(ALTPLL模块的调用)(3)分别点击红色标记处按钮,)分别点击红色标记处按钮,进入进入LPM模块选择界面。模块选择界面。(4)选中红色标记中的)选中红色标记中的ALTPLL模块,并模块,并给模块命名,进入下一界面。给模块命名,进入下一界面。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n分频模块(ALTPLL模块的调用)(5)由于实验板上的晶振)由于实验板上的晶振频率是频率是50MHz,所以在输入,所以在输入clock0框中填入框中填入50。四、项目实施四、项目实施2.DDS子
17、系统设计子系统设计 n分频模块(ALTPLL模块的调用)(6)按红色中的要求选择)按红色中的要求选择复选框。复选框。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n分频模块(ALTPLL模块的调用)(7)由于设计需要)由于设计需要40MHz的时钟信号,所以我们利用的时钟信号,所以我们利用ALTPLL模块实现了一个模块实现了一个0.8分分频。到此本模块的设定基本完频。到此本模块的设定基本完成,一直点击成,一直点击next,直到最后,直到最后点击点击finish,完成模块的设计。,完成模块的设计。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n累加器(累加器(ACCACC)模块
18、()模块(1 1)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity acctest isport(clk:in std_logic;freqin:in std_logic_vector(31 downto 0);phasein:in std_logic_vector(31 downto 0);accout:out std_logic_vector(9 downto 0);end acctest;四、项目实施四、项目实施2.DDS
19、子系统设计子系统设计 n累加器(累加器(ACC)模块()模块(2)architecture behav of acctest issignal acc:std_logic_vector(31 downto 0);signal freq:std_logic_vector(31 downto 0);signal phase:std_logic_vector(31 downto 0);signal q:std_logic_vector(31 downto 0);begin process(clk)beginif(clkevent and clk=0)thenfreq=freqin;phase=pha
20、sein;acc=acc+freq;end if;q=acc+phase;accout=q(31 downto 22);end process;end behav;四、项目实施四、项目实施2.DDS子系统设计子系统设计 nC语言生成正弦函数关系数据语言生成正弦函数关系数据#include#include math.hmain()int i;float s;for(i=0;iSIN_ROM.mif,生成生成mif文件,再加上文件,再加上mif文文件的头部说明,就建成了一件的头部说明,就建成了一张正弦函数关系表。张正弦函数关系表。四、项目实施四、项目实施2.DDS子系统设计子系统设计 n正弦函数关
21、系表 WIDTH=10;DEPTH=1024;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN0:511;1:514;2:517;3:520;4:524;5:527;6:530;7:533;8:536;9:539;10:542;11:545;12:549;13:552;14:555;15:558;mif文件的头部说明四、项目实施四、项目实施2.DDS子系统设计子系统设计 nROM模块的调用(1)新建一个电路原理图文件)新建一个电路原理图文件(2)在原理图中空白处双击,出现下面)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。对话框,点击图
22、中红色标记按钮。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nROM模块的调用(3)分别点击红色标记处按钮,)分别点击红色标记处按钮,进入进入LPM模块选择界面。模块选择界面。(4)选中红色标记中的)选中红色标记中的ROM模块,并给模块,并给模块命名,进入下一界面。模块命名,进入下一界面。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nROM模块的调用(5)本设计中)本设计中ROM的地址线需要的地址线需要10条,数据线需要条,数据线需要10条,条,所以按照红色标记选所以按照红色标记选择参数。择参数。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nROM模块的调用
23、(6)按照红色标记)按照红色标记选择参数。选择参数。四、项目实施四、项目实施2.DDS子系统设计子系统设计 nROMROM模块的调用模块的调用 (7)将生成的)将生成的mif格式的正格式的正弦函数关系表导入到弦函数关系表导入到ROM中。中。到此本模块的设定基本完成,到此本模块的设定基本完成,一直点击一直点击next,直到最后点击,直到最后点击finish,完成模块的设计。,完成模块的设计。四、项目实施四、项目实施3.高速高速A/D转换电路设计转换电路设计 高速高速D/A转换器转换器AD7533四、项目实施四、项目实施4.模拟子系统设计模拟子系统设计 D/A转换电路转换电路四、项目实施四、项目实
24、施4.模拟子系统设计模拟子系统设计 滤波电路滤波电路四、项目实施四、项目实施4.模拟子系统设计模拟子系统设计 放大及驱动电路放大及驱动电路增益可调放大电路差分放大电路驱动电路四、项目实施四、项目实施5.波形仿真波形仿真 n波形仿真结果 波形图中:CLK的频率为40M,此时设定的频率字freqin为40000,所以此时能产生40KHz的正弦波形。初相位phasein设定为3,即初相位为 Sinout输出的是ROM的地址,通过输出地址可在ROM中查询出对应的正弦波的模拟值。05.131024360四、项目实施四、项目实施6.测试结果测试结果 100kHz正弦波四、项目实施四、项目实施6.测试结果测
25、试结果 1MHz正弦波四、项目实施四、项目实施n 电路调试:电路调试:拨动拨码开关拨动拨码开关SWD0SWD0,并按,并按KEY0KEY0键提高或降低频率,观察示波器键提高或降低频率,观察示波器波形。波形。n 故障分析及排除:故障分析及排除:在确认学习开发板无故障的前提下:在确认学习开发板无故障的前提下:1 1无论怎样拨动拨码开关和按键,数码管均没有显示。出现这无论怎样拨动拨码开关和按键,数码管均没有显示。出现这种情况,很可能是管脚没有分配好,或者分配了管脚,但是没种情况,很可能是管脚没有分配好,或者分配了管脚,但是没有重新编译,这是大多数同学容易犯得毛病。有重新编译,这是大多数同学容易犯得毛
26、病。2 2按动按键,数码管显示数字不正确。出现这种情况,首先按动按键,数码管显示数字不正确。出现这种情况,首先应检查电路设计是否有误,再检查管脚分配是否正确。应检查电路设计是否有误,再检查管脚分配是否正确。五、项目评价与总结提高五、项目评价与总结提高 五、项目评价与总结提高五、项目评价与总结提高n DDS合成器包括频率控制寄存器、高速相位累加器和正弦查合成器包括频率控制寄存器、高速相位累加器和正弦查找表三个主要模块。通过找表三个主要模块。通过Quartus II软件自带的软件自带的LPM库设计库设计对应模块,并能结合对应模块,并能结合C语言进行设计语言进行设计n Quartus II原理图设计的主要步骤包括:新建工程、建立编原理图设计的主要步骤包括:新建工程、建立编辑原理图设计文件、编译、仿真及器件编程等。辑原理图设计文件、编译、仿真及器件编程等。n 采用采用VHDLVHDL语言输入方式代替原理图输入方式。语言输入方式代替原理图输入方式。n 采用第三方仿真软件采用第三方仿真软件MODELSIMMODELSIM对设计结果进行仿真。对设计结果进行仿真。