1、太原科技大学:DDS 信号发生器1电子课程设计-DDS 信号发生器合成器学院:专业班级:姓名:学号:指导老师:2012 年 12 月太原科技大学:DDS 信号发生器2直接数字频率合成器(DDS)一、 设计任务与要求直接数字频率综合技术,即 DDS 技术,是一种新型的频率合成技术和信号产生方法。利用 EDA 技术和 FPGA 实现直接数字频率合成器 DDS 的设计。设计要求:1、 利用 QuartusII 软件实验箱实现 DDS 的设计;2、 通过实验箱上的开关输入 DDS 的频率和相位控制字,并能用示波器观察加以验证;3、 系统具有清零和使能的功能;4、 DDS 中的波形存储器模块用 Alte
2、ra 公司的 Cyclone 系列 FPGA 芯片中的 ROM 实现。二、 总体框图N 位Mf低 通 滤 波 器*品路控制字 *5*5*5制字累 加 器*品路控制字 *5*5*5制字频 率 控 制 字*品路控制字 *5*5*5制字 相 位 寄 存 器*品路控制字 *5*5*5制字加 法 器*品路控制字 *5*5*5制字相 位 控 制 字*品路控制字 *5*5*5制字正 弦 查 找 表*品路控制字 *5*5*5制字 数 模 转 换 器*品路控制字 *5*5*5制字时 钟 源 *品路控制字 *5*5*5制字太原科技大学:DDS 信号发生器3图 1 DDS 总体框图1、 模块的功能(1) 频率预置和
3、调节电路不变量 K 称作相位增量,也叫频率控制字。此模块实现频率控制量的输入。(2) 相位累加器相位累加器是一个带有累加功能的 N 位加法器,它以设定的 N 位频率控制字 K 作为步长进行线性累加,当其和满时,计数器清零,并进行重新运算,它使输出频率正比于时钟频率和相位增量之积。(3) 相位寄存器相位寄存器是一个 N 位的寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。相位频率控 f 量化制字 K 序列N 位N 位 N 位图 2 相位累加器相位累加器的组成=N 位加法器+N 位寄存器相位累加器的作用:在时钟的作用下,进行相位累加注意:当相位累加器累加满量时就会产生一次
4、溢出,完成一个周期 的动作。(4) 正弦查找表正弦查找表 ROM 是 DDS 最关键的部分,也是最复杂的部分,设计时首先需对正弦函数进行离散采样,接着将采样的结果放到 ROM 模块的对应存储单元中,每一位地址对应一个数值,输出为 8 位。ROM 中必须包含完整的正弦采样值,此设计采样 256 点,而且还要注意避免在按地址读取 ROM 内容时可能引起的不连续点,避免量化噪音集中于基频的谐波上。相位量化序列 正弦幅度量化序列N 位 D 位图 3 波形存储器作用:进行波形的相位-幅值转换原理:加 法 器 寄 存 器地 数波 形 ROM址 据 据 据据太原科技大学:DDS 信号发生器4ROM 的 N
5、位地址把 0 360的正弦角度离散成具有 2N 个样值的序列ROM 的 D 位数据位则 2N 个样值的幅值量化为 D 位二进制数据(5) D/A 转换器D/A 转换器的作用:把已经合成的正弦波的数字量转换成模拟量。典型 D/A 转换器芯片 DAC0832:DAC0832 是一个 8 位 D/A 转换器。单电源供电,从+5V+15V 均可正常工作。基准电压的范围为正负 10V;电流建立时间为 1s;CMOS 工艺,低功耗,仅 20mW。DAC0832 转换器芯片为 20 引脚,双列直插式封装,其引脚排列如图 4所示。1 2021819 817976 115 12416151413310图 4 D
6、AC0832 引脚图对各引脚信号说明如下: DI7DI0:转换数据输入。 CS:片选信号(输入),低电平有效。 ILE:数据锁存允许信号(输入) ,高电平有效。 WR1:写信号(输入) ,低电平有效。 WR2:第 2 写信号(输入) ,低电平有效。 XFER:数据传送控制信号(输入) ,低电平有效。 IOUT1、IOUT2:电流输出 1、2,DAC 转换器的特性之一是:Iout1+Iout2=常数 RFB反馈电阻端 VREF:基准电压,其电压可正可负,范围-10V+10V. DGND:数字地 AGND:模拟CS VDDWR1WR2ILEXFER VREFDI0 RFBDI1 IOUT1DI2
7、IOUT2DI3DI4DI5DI6DI7GNDGND太原科技大学:DDS 信号发生器5(6)低通滤波器低通滤波器的作用:滤除生成的阶梯正弦波中的高频成分,将其变成光滑的正弦波。2、设计思路直接数字频率合成器(Direct Digital Frequency Synthesizer)是 一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术。其电路系统具有较高的频率分辨率,可以实现快速的频率切换( “NONE“,init_file = “Sinrom256_8.mif“,intended_device_family = “Cyclone“,lpm_hint = “ENABLE_RU
8、NTIME_MOD=NO“,lpm_type = “altsyncram“,maximum_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:太原科
9、技大学:DDS 信号发生器17D70CLKQ70REG2inst6(D)寄存器逻辑符号 表 4 寄存器功能表输 入 输 出CLK D QQ1Q2Q1Q2数据端 D,用来输入被寄存的二进制信号;脉冲端 CLK,在脉冲的上升沿到来时,Q 随 D 变化;仿真结果:图 14 寄存器 REG2 的仿真波形太原科技大学:DDS 信号发生器18仿真结果分析:由仿真波形可看出相位寄存器的输出 Q 随输入端 D 而变化,当来一个时钟沿时,D 就输入一个数,D 就随之而变化。并且存在一定延时。REG2 的 VHDL 程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTIT
10、Y REG2 ISPORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY REG2;ARCHITECTURE ART OF REG2 ISBEGINPROCESS(CLK)ISBEGINIF(CLKEVENT AND CLK=1)THENQ=D;END IF;END PROCESS;END ARCHITECTURE ART;模块五、DAC 0832 数模转换器CLKRSTILECONTDATA_OUT70DAC0832inst7(E)DAC 083
11、2 逻辑符号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 ISPORT(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 DAC08
12、32 ISSIGNAL Q:INTEGER RANGE 0 TO 63;SIGNAL DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN太原科技大学:DDS 信号发生器19PROCESS(CLK)BEGINIF RST=1THEN Q=0;ELSIF CLKEVENT AND CLK=1THENIF Q=63 THEN Q=0;IF DATA=“11111111“THEN DATA=“00000000“;ELSE DATA=DATA+1;END IF;ELSE Q=Q+1;END IF;END IF;END PROCESS;ILE=1;CONT=0;DATA_OUT
13、=DATA;END BEHAV;数模转换正弦波形:设计的输出频率为 7.3682307MHz,但是示波器显示为 7.599MHz,示波器显示的频率是不准确的,实际可以用频谱仪看输出的频率。图 15 不加滤波器的 DDS 输出可以看到正弦波是由一个台阶一个台阶组成的,这就是 DA 的模拟输出。太原科技大学:DDS 信号发生器20加低通滤波器图 16 加低通滤波器的 DDS 输出可以看到台阶没有了,正弦波变得比较光滑,这是因为高阶的谐波分量都被滤除了。五、总体设计电路图PIN_105PIN_104PIN_101PIN_100PIN_85PIN_84PIN_83PIN_82VCCk70 INPUT2
14、8 VCCCLK INPUTI 99 VCCEN INPUTPIN_131 VCCRESET INPUTPIN_132PIN_133PIN_134PIN_135PIN_136PIN_137PIN_138PIN_139Q70OUTPUTPIN_162PIN_161PIN_164PIN_163VGA30OUTPUTK70CLKENRESETOUT170SUM99instD70CLK Q70REG2inst3D70CLK Q70REG1inst4VCCGNDaddress70clock q70ROM256_8inst1VGA0VGA1VGA2VGA3图 17 顶层电路原理图电路整体工作情况:DDS
15、设计顶层原理图如上,假定相位控制字位 0,这时 DDS 的核心部分相位累加器的 FPGA 的设计可分为如下几个模块:相位累加器 SUM99、相位寄存器 REG1、正弦查找表 ROM 和输出数据寄存器 REG2。图中,输入信号有时钟输入 CLK,使能端 EN,复位端 RESET,频率控制字 K,输出信号为 Q。太原科技大学:DDS 信号发生器21整个 DDS 模块采用一个时钟,CLK 来自为高稳性晶振提供,以用来同步各个模块的运算速度。DDS 核心的相位累加器由一个 8 位字长的二进制加法器和一个有时钟 f 取样的 8 位寄存器组成,作用是对频率控制字进行线性累加,当其和满时,计数器清零,并进行
16、重新运算。相位寄存器 REG1 是一个一般的 8 位寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。波形存储器中所对应的是一张函数波形查询表,对应不同的相位码址输出不同的幅度编码。当相位控制字为 0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码。为了保证输出数据的稳定性,将 ROM 的输出数据先寄存在 REG2 中,待下一个时钟到来时,再将其输出。整个系统各模块是在同步时钟信号 CLK 的控制下协调工作的。REG2 所寄存的幅度编码经 D/A 转换后得到对应的阶梯波,最后经低通滤波器平滑后可得到所需的模拟波。相位累加器在基准时钟的作用下,进行线性相位累
17、加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期也就是 DDS 信号的一个频率周期。整个系统 DDS 的仿真结果:图 18 顶层电路原理图的仿真波形仿真结果分析:当相位控制字为 0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码。由系统 DDS 仿真波形图可知当来一个时钟脉冲时,对应波形存储器寻址,可得结果正确是离散的正弦波采样点。 太原科技大学:DDS 信号发生器22管脚分配:接下来就要选择目标器件并对相应的引脚进行锁定,实验选择的器件位cyclone 系列的 EP1C3T144 芯片,引脚锁定方法如下:图 19 DDS 的管脚分配图硬件验证:DDS 的
18、输入频率控制字 K 有 8 位数据,输出数据 Q 为 8 位,并且 ROM需 256 个存储单元,实验时所用的是 ALTERA 公司的 EP1K30TC144 芯片。分别将输出数据 Q 的 8 位数据接实验箱上的 8 盏灯,会看到 8 盏灯分别按照波形存储器寻址,从而闪烁不止。当按照存储数据闪烁一遍后,表明一个周期扫描结束,然后再从新扫描,不断循环。将离散的数字幅值接到 DAC0832 端,经 D/A 转换输出正弦波波形,得以验证该设计达到了预期的设计要求。DDS 的特点如下:1、DDS 的频率分辨率在相位累加器的位数 N 足够大时,理论上可以获得相应的分辨精度,这是系统方法难以实现的。2、DDS 是一个全数字结构的开环系统,无反馈环节,因此其速度极快,一般在纳秒量级。3、DDS 的相位误差主要依靠于时钟的相位特性,相位误差小。另外,DDS的相位是连续变化的,形成的信号具有良好的频谱,这是传统的直接频率合成方法无法实现的。太原科技大学:DDS 信号发生器23