1、太原科技大学:DDS信号发生器电子课程设计 -DDS信号发生器合成器 学院: 专业班级: 姓名: 学号: 指导老师: 2012年12月直接数字频率合成器(DDS)一、 设计任务与要求直接数字频率综合技术,即DDS技术,是一种新型的频率合成技术和信号产生方法。利用EDA技术和FPGA实现直接数字频率合成器DDS的设计。设计要求:1、 利用QuartusII软件实验箱实现DDS的设计;2、 通过实验箱上的开关输入DDS的频率和相位控制字,并能用示波器观察加以验证;3、 系统具有清零和使能的功能;4、 DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA芯片中的ROM实现。二、 总
2、体框图 相 位 控 制 字*品路控制字 *5*5*5制字 N位频 率 控 制 字*品路控制字 *5*5*5制字数 模 转 换 器*品路控制字 *5*5*5制字正 弦 查 找 表*品路控制字 *5*5*5制字加 法 器*品路控制字 *5*5*5制字相 位 寄 存 器*品路控制字 *5*5*5制字累 加 器*品路控制字 *5*5*5制字 M f低 通 滤 波 器*品路控制字 *5*5*5制字时 钟 源 *品路控制字 *5*5*5制字 图1 DDS总体框图1、 模块的功能(1) 频率预置和调节电路 不变量K称作相位增量,也叫频率控制字。此模块实现频率控制量的输入。(2) 相位累加器相位累加器是一个带
3、有累加功能的N位加法器,它以设定的N位频率控制字K作为步长进行线性累加,当其和满时,计数器清零,并进行重新运算,它使输出频率正比于时钟频率和相位增量之积。(3) 相位寄存器 相位寄存器是一个N位的寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。 相位 频率控f量化制字K序列加 法 器寄 存 器N位N位N位 图2 相位累加器 相位累加器的组成=N位加法器+N位寄存器 相位累加器的作用:在时钟的作用下,进行相位累加 注意:当相位累加器累加满量时就会产生一次溢出,完成一个周期 的动作。(4) 正弦查找表正弦查找表ROM是DDS最关键的部分,也是最复杂的部分,设计时首先需对正
4、弦函数进行离散采样,接着将采样的结果放到ROM模块的对应存储单元中,每一位地址对应一个数值,输出为8位。ROM中必须包含完整的正弦采样值,此设计采样256点,而且还要注意避免在按地址读取ROM内容时可能引起的不连续点,避免量化噪音集中于基频的谐波上。地 数 波 形 ROM址 据 据 据据 相位量化序列正弦幅度量化序列 N位D位 图3 波形存储器 作用:进行波形的相位-幅值转换 原理: ROM的N位地址 把0 360的正弦角度离散成具有2N个样值的序列 ROM的D位数据位 则2N个样值的幅值量化为D位二进制数据(5) D/A转换器 D/A转换器的作用:把已经合成的正弦波的数字量转换成模拟量。 典
5、型D/A转换器芯片DAC0832: DAC0832是一个8位D/A转换器。单电源供电,从+5V+15V均可正常工作。基准电压的范围为正负10V;电流建立时间为1s;CMOS工艺,低功耗,仅20mW。DAC0832转换器芯片为20引脚,双列直插式封装,其引脚排列如图4所示。CS VDDWR1WR2ILEXFER VREFDI0 RFBDI1 IOUT1DI2 IOUT2DI3DI4DI5DI6DI7GNDGND1202181981797611512416151413310 图4 DAC0832引脚图 对各引脚信号说明如下: DI7DI0:转换数据输入。 CS:片选信号(输入),低电平有效。 IL
6、E:数据锁存允许信号(输入),高电平有效。 WR1:写信号(输入),低电平有效。 WR2:第2写信号(输入),低电平有效。 XFER:数据传送控制信号(输入),低电平有效。 IOUT1、IOUT2:电流输出1、2,DAC转换器的特性之一是:Iout1+Iout2=常数 RFB反馈电阻端 VREF:基准电压,其电压可正可负,范围-10V+10V. DGND:数字地 AGND:模拟 (6)低通滤波器 低通滤波器的作用:滤除生成的阶梯正弦波中的高频成分,将其变成光滑的正弦波。2、 设计思路 直接数字频率合成器(Direct Digital Frequency Synthesizer)是 一种基于全数
7、字技术,从相位概念出发直接合成所需波形的一种频率合成技术。其电路系统具有较高的频率分辨率,可以实现快速的频率切换(20ns),频率分辨率高(0.01HZ),频率稳定度高,输出信号的频率和相位可以快速程控切换,输出相位可连续,可编程以及灵活性大等优点。DDS技术很容易实现频率、相位和幅度的数控调制,广泛用于接收本振、信号发生器、仪器、通信系统、雷达系统等,尤其适合调频无线通信系统。 图1是DDS的基本总体框图,频率控制字M和相位控制字N分别控制DDS输出正弦波的频率和相位。DDS系统的核心是相位累加器,它由一个累加器和一个N位寄存器组成。每来一个时钟脉冲,相位寄存器以步长M增加。相位寄存器的输出
8、与相位控制字相加,其结果作为正弦查找表的地址。正弦查找表由ROM构成,内部存有一个完整周期正弦波的数字幅度信息,每个查找表的地址对应正弦波中0-360范围内的一个相位点。查找表把输入的地址信息映射成正弦波的数字幅度信号,同时输出到数模转换器DAC的输入端,DAC输出的模拟信号经过低通滤波器(LPF),可得到一个频谱纯净的正弦波。 DDS基本结构框图特点:其中CLK来自高稳性晶振所提供,用于提供DDS各种部件的同步工作。DDS核心的相位累加器由一个N位字长的二进制加法器和一个有时钟f取样的N位寄存器组成,作用是对频率控制字进行线性累加;波形存储器中所对应的是一张函数波形查询表,对应不同的相位码址
9、输出不同的幅度编码。当相位控制字为0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码。该幅度编码经D/A转换后得到对应的阶梯波,最后经低通滤波器平滑后可得到所需的模拟波形。相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期就是DDS信号的一个频率周期。三、选择器件 直接数字频率合成器(DDS)中所用到的器件为: 1、装有Quartus软件的计算机一台。 2、芯片:使用Altera公司生产的Cyclone系列芯片,如EP1C12Q240C8芯片。 3、EDA实验箱一个。 4、下载接口是数字芯片的下载接口(JTAG),
10、主要用于FPGA芯片的数据下载。 5、按键开关和LED灯。6、时钟源。7、示波器。四、功能模块 模块一:相位累加器SUM99 (A) 相位累加器SUM99逻辑符合 表1相位累加器逻辑功能表频率控制字K7.0相 位 控 制 字 H7.0 累 加 和 S7.0进 位 输 出 C7.0 C7 K7H7 S7 C6 K6 H6 S6 C5 K5 H5 S5 C4 K4 H4 S4 C3 K3 H3 S3 C2 K2 H2 S2 C1 K1 H1 S1 C0 K0 H0 S0 当来一个时钟脉冲时,频率控制字与相位控制字相加,累加和为S. 表2 相位累加器SUM99逻辑功能表 输 入 输 出 CLK EN
11、 RESET X X 0 复 位 1 1 OUT7.0 当RESET为低电平时,输出OUT复位为0; 当RESET为高电平,使能信号EN为高电平时,来一个时钟脉冲信号,频率控制字线性累加输出一个OUT数据. 仿真结果:图5 相位累加器的仿真波形仿真结果说明:由仿真波形图可知当来一个上升沿时输出频率控制字线性累加和。它以设定的8位频率控制字K作为步长来进行加法运算实现累加功能,当其和满时,计数器清零,并进行重新运算。SUM99的VHDL程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTIT
12、Y SUM99 IS PORT(K:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; EN:IN STD_LOGIC; RESET:IN STD_LOGIC; OUT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY SUM99;ARCHITECTURE ART OF SUM99 IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK,EN,RESET)IS BEGIN IF RESET=0THEN TEMP=00000000; EL
13、SE IF CLKEVENT AND CLK=1THEN IF EN=1THEN TEMP=TEMP+K; END IF; END IF; END IF; OUT1=TEMP; END PROCESS;END ARCHITECTURE ART;模块二:相位寄存器REG1 (B)相位寄存器REG1逻辑符号 表3 相位寄存器 逻辑功能表输 入输 出 CLK D Q Q1 Q2 Q1 Q2 数据端D,用来输入被寄存的二进制信号; 脉冲端CLK,在脉冲的上升沿到来时,Q随D变化; 仿真结果: 图6 相位寄存器REG1的仿真波形 仿真结果说明:由仿真波形可看出相位寄存器的输出Q随输入端D而变化,当来一个
14、时钟沿时,D就输入一个数,Q就随之而变化。并且存在一定延时。 REG1的VHDL程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG1 IS PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY REG1;ARCHITECTURE ART OF REG1 IS BEGIN PROCESS(CLK)IS BEGIN IF(CLKEVENT AND CLK=1)THEN Q=D; END
15、IF; END PROCESS;END ARCHITECTURE ART;模块三:正弦查找表ROM (C)正弦查找表ROM 逻辑符号 表3 ROM256_8中的数据 定制LPM_ROM元件:图7 定制新的宏观能块图8 LPM 宏功能块设定图9 选择SinROM模块数据线和地址线宽度图10 选择地址锁存信号CLOCK图11 调入ROM初始化数据文件图12 LPM_ROM设计完成仿真结果: 图13 ROM256_8的仿真波形仿真结果说明:由仿真波形图可知,按ROM256_8中的存储数据地址address,当来一个时钟脉冲时,就会输出ROM256_8存储器中的数据。当相位控制字为0,相位累加输出的序
16、列对波形存储器寻址,得到一系列离散的幅度编码。ROM256_8的VHDL程序:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY ROM256_8 ISPORT(address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END ROM256_8;ARCHITECTURE SYN OF rom256_8 ISSIGNAL sub_wire0:
17、 STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncramGENERIC (address_aclr_a: STRING;init_file: STRING;intended_device_family: STRING;lpm_hint: STRING;lpm_type: STRING;maximum_depth: NATURAL;numwords_a: NATURAL;operation_mode: STRING;outdata_aclr_a: STRING;outdata_reg_a: STRING;widthad_a: NATURAL;widt
18、h_a: NATURAL;width_byteena_a: NATURAL);PORT (clock0: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END COMPONENT;BEGINq NONE,init_file = Sinrom256_8.mif,intended_device_family = Cyclone,lpm_hint = ENABLE_RUNTIME_MOD=NO,lpm_type = altsyncram,maximum_
19、depth = 256,numwords_a = 256, operation_mode = ROM,outdata_aclr_a = NONE,outdata_reg_a = UNREGISTERED,widthad_a = 8,width_a = 8,width_byteena_a = 1);PORT MAP (clock0 = clock,address_a = address,q_a = sub_wire0);END SYN; 模块四、ROM256_8输出数据寄存器REG2: (D)寄存器逻辑符号 表4 寄存器功能表输 入输 出CLK D Q Q1Q2 Q1 Q2 数据端D,用来输入被
20、寄存的二进制信号; 脉冲端CLK,在脉冲的上升沿到来时,Q随D变化; 仿真结果:图14 寄存器REG2的仿真波形仿真结果分析:由仿真波形可看出相位寄存器的输出Q随输入端D而变化,当来一个时钟沿时,D就输入一个数,D就随之而变化。并且存在一定延时。REG2的VHDL程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG2 IS PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY REG2;
21、ARCHITECTURE ART OF REG2 IS BEGIN PROCESS(CLK)IS BEGIN IF(CLKEVENT AND CLK=1)THEN Q=D; END IF; END PROCESS;END ARCHITECTURE ART;模块五、DAC 0832数模转换器 (E)DAC 0832逻辑符号 DAC 0832的VHDL程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DAC0832 IS PO
22、RT(CLK:IN STD_LOGIC; RST:IN STD_LOGIC; ILE:OUT STD_LOGIC; CONT:OUT STD_LOGIC; DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END DAC0832;ARCHITECTURE BEHAV OF DAC0832 ISSIGNAL Q:INTEGER RANGE 0 TO 63;SIGNAL DATA:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF RST=1THEN Q=0; ELSIF CLKEVENT AND C
23、LK=1THEN IF Q=63 THEN Q=0; IF DATA=11111111THEN DATA=00000000; ELSE DATA=DATA+1; END IF; ELSE Q=Q+1; END IF; END IF; END PROCESS; ILE=1;CONT=0;DATA_OUT=DATA;END BEHAV;数模转换正弦波形:设计的输出频率为7.3682307MHz,但是示波器显示为7.599MHz,示波器显示的频率是不准确的,实际可以用频谱仪看输出的频率。图15 不加滤波器的DDS输出可以看到正弦波是由一个台阶一个台阶组成的,这就是DA的模拟输出。加低通滤波器图16
24、加低通滤波器的DDS输出可以看到台阶没有了,正弦波变得比较光滑,这是因为高阶的谐波分量都被滤除了。五、总体设计电路图图 17 顶层电路原理图电路整体工作情况: DDS设计顶层原理图如上,假定相位控制字位0,这时DDS的核心部分相位累加器的FPGA的设计可分为如下几个模块:相位累加器SUM99、相位寄存器REG1、正弦查找表ROM和输出数据寄存器REG2。图中,输入信号有时钟输入CLK,使能端EN,复位端RESET,频率控制字K,输出信号为Q。 整个DDS模块采用一个时钟,CLK来自为高稳性晶振提供,以用来同步各个模块的运算速度。DDS核心的相位累加器由一个8位字长的二进制加法器和一个有时钟f取
25、样的8位寄存器组成,作用是对频率控制字进行线性累加,当其和满时,计数器清零,并进行重新运算。相位寄存器REG1是一个一般的8位寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。波形存储器中所对应的是一张函数波形查询表,对应不同的相位码址输出不同的幅度编码。当相位控制字为0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码。为了保证输出数据的稳定性,将ROM的输出数据先寄存在REG2中,待下一个时钟到来时,再将其输出。整个系统各模块是在同步时钟信号CLK的控制下协调工作的。REG2所寄存的幅度编码经D/A转换后得到对应的阶梯波,最后经低通滤波器平滑后可得到所需
26、的模拟波。相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期也就是DDS信号的一个频率周期。整个系统DDS的仿真结果:图18 顶层电路原理图的仿真波形仿真结果分析: 当相位控制字为0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码。由系统DDS仿真波形图可知当来一个时钟脉冲时,对应波形存储器寻址,可得结果正确是离散的正弦波采样点。 管脚分配:接下来就要选择目标器件并对相应的引脚进行锁定,实验选择的器件位cyclone系列的EP1C3T144芯片,引脚锁定方法如下:图19 DDS的管脚分配图硬件验证: DDS的输入频
27、率控制字K有8位数据,输出数据Q为8位,并且ROM需256个存储单元,实验时所用的是ALTERA公司的EP1K30TC144芯片。 分别将输出数据Q的8位数据接实验箱上的8盏灯,会看到8盏灯分别按照波形存储器寻址,从而闪烁不止。当按照存储数据闪烁一遍后,表明一个周期扫描结束,然后再从新扫描,不断循环。 将离散的数字幅值接到DAC0832端,经D/A转换输出正弦波波形,得以验证该设计达到了预期的设计要求。DDS的特点如下:1、 DDS的频率分辨率在相位累加器的位数N足够大时,理论上可以获得相应的分辨精度,这是系统方法难以实现的。2、 DDS是一个全数字结构的开环系统,无反馈环节,因此其速度极快,一般在纳秒量级。3、 DDS的相位误差主要依靠于时钟的相位特性,相位误差小。另外,DDS的相位是连续变化的,形成的信号具有良好的频谱,这是传统的直接频率合成方法无法实现的。22