EDA电子项目DDS信号源的设计课件.ppt
一、项目描述,了解数字频率合成(DDS)工作原理。掌握DDS合成器三个主要模块:频率控制寄存器、高速相位累加器和正弦查找表。本项目是采用ALTERA公司的Cyclone系列FPGA芯片利用直接数字频率合成的原理,实现一个频率、幅度、相位可调的正弦波信号发生器。,1. 项目任务,DDS信号源的设计,一、项目描述了解数字频率合成(DDS)工作原理。1. 项目任,一、项目描述,2. 项目目标,一、项目描述2. 项目目标,二、项目资讯,可编程逻辑器件概述 FPGA与CPLD PLD开发软件 可编程逻辑器件的设计应用流程 数字频率合成(DDS)工作原理 LPM模块的调用方法(前四项参见专题课件相应内容),六项内容,二、项目资讯 可编程逻辑器件概述六项内容,二、项目资讯,包括设计准备、设计输入、设计处理和器件编程四个步骤相应的功能仿真(前仿真)、时序仿真(后仿真)和器件测试三个设计验证过程。,可编程逻辑器件的设计应用流程,二、项目资讯包括设计准备、设计输入、设计处理和器件编程四个步,三、项目分析,1. 信号产生的方法,RC振荡器:频率稳定度不高LC振荡器:频率稳定度不高石英晶体振荡器 :频率稳定度高,但频率调节困难,三、项目分析1. 信号产生的方法RC振荡器:频率稳定度不高,三、项目分析,1. 信号产生的方法,频率稳定度高,但频率很难连续步进,三、项目分析1. 信号产生的方法频率稳定度高,但频率很难连续,三、项目分析,1. 信号产生的方法,DDS( Direct Digital Synthesizer )即直接数字合成器,是一种新型的频率合成技术,具有较高的频率分辨率,可以实现快速的频率切换,并且在改变频率的同时能够保持相位的连续,很容易实现频率、相位和幅值的数控调制。因此,在现代电子系统及设备的频率源设计中,尤其在通信领域,DDS应用越来越广泛。,三、项目分析1. 信号产生的方法DDS( Direct Di,三、项目分析,对于一个频率为 的正弦信号 ,可以用下式来描述:,2.直接数字频率合成的原理,其相位:,将正弦信号的相位和幅值均转化为数字量,用频率为 的基准时钟对正弦信号进行抽样,三、项目分析对于一个频率为 的正弦信号 ,可以用,将2切割成2N等份作为最小量化单位,从而得到的数字量M为:,三、项目分析,2.直接数字频率合成的原理,将2切割成2N等份作为最小量化单位,从而得到的数字量M,当M取1时,可以得到输出信号的最小频率步进为:,三、项目分析,2.直接数字频率合成的原理,由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。,当M取1时,可以得到输出信号的最小频率步进为: 三、项目分析,DDS正弦信号发生器原理框图:,三、项目分析,2.直接数字频率合成的原理,DDS正弦信号发生器原理框图: 三、项目分析2.直接数字频率,三、项目分析,3.系统设计思路,FPGA的技术方案,三、项目分析3.系统设计思路 FPGA的技术方案,三、项目分析,4.技术指标,设计要求如下:,(1)产生正弦波波形;,(2)输出信号频率范围0Hz4MHz,频率步进间隔为10KHz或100KHz可选;设计4个按键用来控制频率增减,用数码管显示频率值。,(3)输出信号幅值范围05V(峰峰值),波形幅值和相位可调。,三、项目分析4.技术指标 设计要求如下:(1)产生正弦波波形,四、项目实施,微机一台(Windows XP系统、安装好Quartus 5.0等相关软件)EDA学习开发板一块USB电源线一条ISP下载线一条。,硬件平台准备,四、项目实施微机一台(Windows XP系统、安装好Qua,四、项目实施1. 方案设计,四、项目实施1. 方案设计,四、项目实施1. 方案设计,硬件电路详细设计,高速D/A转换电路设计,FPGA内部逻辑设计,滤波电路的设计,信号放大电路的设计,驱动电路的设计,四、项目实施1. 方案设计 硬件电路详细设计高速D/A转,四、项目实施2. DDS子系统设计,DDS子系统参数的确定,(1)输出带宽,当频率控制字M=1时,输出信号的最低频率为 fomin=fclk/2N 式中,fclk为系统时钟频率,N为相位累加器的位数。当N取值 很大时,最低输出频率可以达到很低,甚至可以认为DDS的最低频率为零频。,DDS的最高输出频率由系统时钟频率和一个周期波形采样点数决定。当系统时钟频率为,采样点数为X,则最高输出频率为 fomax=fclk/X,四、项目实施2. DDS子系统设计 DDS子系统参数的确,四、项目实施2. DDS子系统设计,(2)频率稳定度。DDS信号的频率稳定度等同于外部时钟信号的频率稳定度。由于外部时钟信号一般采用晶体振荡器,因此,DDS信号频率可以达到很高的稳定度。,(3)频率分辨率。频率分辨率由下式决定:,如果参考时钟频率取40MHz,相位累加器位数取32,可求得最小频率步进值为:,四、项目实施2. DDS子系统设计 (2)频率稳定度。D,四、项目实施2. DDS子系统设计,DDS子系统参数的确定,(1)系统时钟频率:40MHz;,(2)频率控制字的位宽:32位;,(3)相位累加器的位宽:32位;,(4)波形存储器的地址位宽:10位;,(5)波形存储器的数据位宽:10位。,最小频率步进值,四、项目实施2. DDS子系统设计 DDS子系统参数的确,四、项目实施2. DDS子系统设计,DDS子系统顶层原理图,四、项目实施2. DDS子系统设计 DDS子系统顶层原,四、项目实施2. DDS子系统设计,频率字设定及显示模块,ADD_SUB_8BIT模块功能:实现8位的加减法计算,每来一个脉冲模块自加一或自减一。模块通过输出控制数码管将频率值显示出来。本模块包括一个8位的LPM_ADD_SUB(加减模块)和8位的LPM_FF(触发器模块)。,ADD_SUB_32BIT模块功能:实现32位的加减法计算,每来一个脉冲模块自加或自减100KHz频率。本模块包括一个32位的LPM_ADD_SUB(加减模块)和32位的LPM_FF(触发器模块)。,四、项目实施2. DDS子系统设计 频率字设定及显示模块,四、项目实施2. DDS子系统设计,Addsub32模块设计,本模块中使用了两个LPM模块,分别是ADD_SUB_32BIT(加减模块),DFF_32(触发器模块),四、项目实施2. DDS子系统设计 Addsub32模块,四、项目实施2. DDS子系统设计,LPM_ADD_SUB模块的调用,(1)新建一个电路原理图文件,(2)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。,四、项目实施2. DDS子系统设计 LPM_ADD_SU,四、项目实施2. DDS子系统设计,LPM_ADD_SUB模块的调用,(3)分别点击红色标记处按钮,进入LPM模块选择界面。,(4)选中红色标记中的LPM_ADD_SUB模块,并给模块命名,进入下一界面。,四、项目实施2. DDS子系统设计 LPM_ADD_SU,四、项目实施2. DDS子系统设计,LPM_ADD_SUB模块的调用,(5)本界面是设定模块的输入位数,由于要实现32位的加减法计算,所以选择32位。计算模式选择加减共存模式,并通过add_sub输入端选择,输入为1时是加法模式,0为减法模式。,四、项目实施2. DDS子系统设计 LPM_ADD_SU,四、项目实施2. DDS子系统设计,LPM_ADD_SUB模块的调用,(6)由于需要设计的模块功能是每触发一次,就作一次加法或减法运算,并且值固定是增加或减少100KHz。通过计算得:将此值固定在B输入端。,四、项目实施2. DDS子系统设计 LPM_ADD_SU,四、项目实施2. DDS子系统设计,LPM_ADD_SUB模块的调用,(7)向模块中添加一个clock信号,用来控制模块的动作,每来一个上升沿,就作一次加减法。到此本模块的设定基本完成,一直点击next,直到最后点击finish,完成模块的设计。,四、项目实施2. DDS子系统设计 LPM_ADD_SU,四、项目实施2. DDS子系统设计,LPM_FF模块的调用,(1)新建一个电路原理图文件,(2)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。,四、项目实施2. DDS子系统设计 LPM_FF模块的调,四、项目实施2. DDS子系统设计,LPM_FF模块的调用,(3)分别点击红色标记处按钮,进入LPM模块选择界面。,(4)选中红色标记中的LPM_FF模块,并给模块命名,进入下一界面。,四、项目实施2. DDS子系统设计 LPM_FF模块的调,四、项目实施2. DDS子系统设计,LPM_FF模块的调用,(5)本界面是设定模块的输入位数,所以选择32位。触发器模式选择D触发器。到此本模块的设定基本完成,一直点击next,直到最后点击finish,完成模块的设计。,四、项目实施2. DDS子系统设计 LPM_FF模块的调,四、项目实施2. DDS子系统设计,分频模块(ALTPLL模块的调用),(1)新建一个电路原理图文件,(2)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。,四、项目实施2. DDS子系统设计 分频模块(ALTP,四、项目实施2. DDS子系统设计,分频模块(ALTPLL模块的调用),(3)分别点击红色标记处按钮,进入LPM模块选择界面。,(4)选中红色标记中的ALTPLL模块,并给模块命名,进入下一界面。,四、项目实施2. DDS子系统设计 分频模块(ALTPL,四、项目实施2. DDS子系统设计,分频模块(ALTPLL模块的调用),(5)由于实验板上的晶振频率是50MHz,所以在输入clock0框中填入50。,四、项目实施2. DDS子系统设计 分频模块(ALTPL,四、项目实施2. DDS子系统设计,分频模块(ALTPLL模块的调用),(6)按红色中的要求选择复选框。,四、项目实施2. DDS子系统设计 分频模块(ALTPL,四、项目实施2. DDS子系统设计,分频模块(ALTPLL模块的调用),(7)由于设计需要40MHz的时钟信号,所以我们利用ALTPLL模块实现了一个0.8分频。到此本模块的设定基本完成,一直点击next,直到最后点击finish,完成模块的设计。,四、项目实施2. DDS子系统设计 分频模块(ALTPL,四、项目实施2. DDS子系统设计,累加器(ACC)模块(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子系统设计 累加器(ACC)模,四、项目实施2. DDS子系统设计,累加器(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=phasein;acc=acc+freq;end if;q=acc+phase;accout=q(31 downto 22);end process;end behav;,四、项目实施2. DDS子系统设计 累加器(ACC)模,四、项目实施2. DDS子系统设计,C语言生成正弦函数关系数据,#include #include math.hmain() int i; float s; for(i=0;i1024;i+) s=sin(atan(1)*8*i/1024); printf(%d:%d;n,i,(int)(s+1)*1023/2); ,在TURBO C中编译此段程序,并生成EXE文件,然后在DOS下运行生成的EXE文件,在执行DOS命令:SIN_ROMSIN_ROM.mif,生成mif文件,再加上mif文件的头部说明,就建成了一张正弦函数关系表。,四、项目实施2. DDS子系统设计 C语言生成正弦函数,四、项目实施2. DDS子系统设计,正弦函数关系表,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子系统设计 正弦函数关系表 W,四、项目实施2. DDS子系统设计,ROM模块的调用,(1)新建一个电路原理图文件,(2)在原理图中空白处双击,出现下面对话框,点击图中红色标记按钮。,四、项目实施2. DDS子系统设计 ROM模块的调用,四、项目实施2. DDS子系统设计,ROM模块的调用,(3)分别点击红色标记处按钮,进入LPM模块选择界面。,(4)选中红色标记中的ROM模块,并给模块命名,进入下一界面。,四、项目实施2. DDS子系统设计 ROM模块的调用 (,四、项目实施2. DDS子系统设计,ROM模块的调用,(5)本设计中ROM的地址线需要10条,数据线需要10条,所以按照红色标记选择参数。,四、项目实施2. DDS子系统设计 ROM模块的调用 (,四、项目实施2. DDS子系统设计,ROM模块的调用,(6)按照红色标记选择参数。,四、项目实施2. DDS子系统设计 ROM模块的调用 (,四、项目实施2. DDS子系统设计,ROM模块的调用,(7)将生成的mif格式的正弦函数关系表导入到ROM中。到此本模块的设定基本完成,一直点击next,直到最后点击finish,完成模块的设计。,四、项目实施2. DDS子系统设计 ROM模块的调用 (,四、项目实施3.高速A/D转换电路设计,高速D/A转换器AD7533,四、项目实施3.高速A/D转换电路设计 高速D/A转换,四、项目实施4.模拟子系统设计,D/A转换电路,四、项目实施4.模拟子系统设计 D/A转换电路,四、项目实施4.模拟子系统设计,滤波电路,四、项目实施4.模拟子系统设计 滤波电路,四、项目实施4.模拟子系统设计,放大及驱动电路,增益可调放大电路,差分放大电路,驱动电路,四、项目实施4.模拟子系统设计 放大及驱动电路增益可调放,四、项目实施5. 波形仿真,波形仿真结果,波形图中:CLK的频率为40M,此时设定的频率字freqin为40000,所以此时能产生40KHz的正弦波形。初相位phasein设定为3,即初相位为 Sinout输出的是ROM的地址,通过输出地址可在ROM中查询出对应的正弦波的模拟值。,四、项目实施5. 波形仿真 波形仿真结果 波形图,四、项目实施6. 测试结果,100kHz正弦波,四、项目实施6. 测试结果 100kHz正弦波,四、项目实施6. 测试结果,1MHz正弦波,四、项目实施6. 测试结果 1MHz正弦波,四、项目实施,5.硬件电路调试及排故,电路调试:拨动拨码开关SWD0,并按KEY0键提高或降低频率,观察示波器波形。故障分析及排除:在确认学习开发板无故障的前提下:1无论怎样拨动拨码开关和按键,数码管均没有显示。出现这种情况,很可能是管脚没有分配好,或者分配了管脚,但是没有重新编译,这是大多数同学容易犯得毛病。 2按动按键,数码管显示数字不正确。出现这种情况,首先应检查电路设计是否有误,再检查管脚分配是否正确。,四、项目实施5.硬件电路调试及排故 电路调试:,五、项目评价与总结提高,1.项目评价标准,五、项目评价与总结提高 1.项目评价标准,五、项目评价与总结提高,2.项目总结,DDS合成器包括频率控制寄存器、高速相位累加器和正弦查找表三个主要模块。通过Quartus II软件自带的LPM库设计对应模块,并能结合C语言进行设计Quartus II原理图设计的主要步骤包括:新建工程、建立编辑原理图设计文件、编译、仿真及器件编程等。,3.拓展与提高,采用VHDL语言输入方式代替原理图输入方式。采用第三方仿真软件MODELSIM对设计结果进行仿真。,五、项目评价与总结提高2.项目总结 DDS合成器包括频率控制,谢谢观赏,谢谢观赏,谢谢观赏谢谢观赏,