基于DDS技术的信号发生器_第1页
基于DDS技术的信号发生器_第2页
基于DDS技术的信号发生器_第3页
基于DDS技术的信号发生器_第4页
基于DDS技术的信号发生器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现代电子学实验报告实验题目: 基于DDS技术的信号发生器 姓 名: 陈 思 年 级: 2010级 电子信息科学与技术 指导教师: 马 莉 完成日期: 2013.10.10 原创性声明本人声明本实验报告涉及的电路图、程序代码均为自己设计,没有抄袭他人的成果。 特此声明! 声明人: 陈思 摘要11. 实验目的22. 实验原理及内容22.1 实验的总体结构22.2 实验的理论基础和原理33. 实验内容44. 实验设计与测试54.1 频率控制模块54.2 按键选择模块74.3 正弦波信号产生模块84.4 总体测试135. 实验结论与测试14参考文献15摘要函数信号发生器简介 在频率合成(Fs,Freq

2、uency Synthesis)领域中,直接数字合成(Direct Digital SynthesisDDS)是近年来新的FS技术。单片集成的DDS产品是一种可代替锁相环的快速频率合成器件。因其精度高、变换频率快、输出波形失真小成为优先选用技术。具体体现在频带宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。DDS以稳定度高的参考时钟为参考源,通过精密的相位累加器和数字信号处理,通过高速DA变换器产生所需的数字波形(通常是正弦波形),这个数字波形经过一个模拟滤波器后,得到最终的模拟信号波形。 函数信号

3、发生器在生产实践和科技领域有着广泛的应用。本设计是采用了EDA技术设计的函数信号发生器。此函数信号发生器的实现是基于VHDL语言描述各个波形产生模块,然后在Quartus软件上实现波形的编译,仿真和下载到Cyclone芯片上。基于DDS技术的信号发生器1. 实验目的 1. 掌握DDS频率合成原理 ; 2. 掌握正弦信号产生的原理 ; 3. 掌握MCU8951 IP核合成任意频率脉冲信号的设计; 4掌握给定一个频率字或相位字用按键改变频率合成正弦信号的设计。 5. Quartus软件上实现波形的编译,仿真和下载到Cyclone芯片上。2. 实验原理 2.1 实验的总

4、体结构电路图 直接数字频率合成器DDS的组成见图1.图1 DDS原理简图它由相位累加器、只读存储器(ROM)、数模转换器(DAC)及低通平滑滤波器(LPF)构成.在时钟脉冲的控制下,频率控制字K由累加器累加得到相应的相码,相码寻址ROM进行相码-幅码变换输出不同的幅度编码,再经过数模变换器得到相应的阶梯波,最后经低通波器对阶梯波进行平滑,即得到由频率控制字K决定的连续变化的输出波形。2.2 实验的理论基础和原理 DDS是以数控振荡器的方式产生频率、相位和幅度可控制的信号波形。电路结构包括基准时钟、相位累加器、幅度/相位转换电路(ROM)、D/A转换器(DAC)和低通滤波器,系统时钟CLK由一个

5、稳定的晶体振荡器产生,它用于同步频率合成器的各个部分。相位累加器是DDS的核心,它由N位加法器和N位相位寄存器级联构成,完成相位累加工作。每输入一个时钟脉冲CLK,加法器将输入的N位频率控制字和相位寄存器输出的累加相位数据相加,产生新的相位数据,并送至相位累加器的输入端。然后,相位寄存器将新相位数据反馈到加法器的输入端,使加法器在下一个时钟的作用下继续产生新的相位数据。当相位寄存器溢出时,将整个相位累加器置零,从而完成一个周期性的输出。相位累加器的溢出频率即为DDS的合成输出信号频率。 性能指标:1.输出带宽当频率控制字K=1 时(即:向相位累加器中送入的累加步长为1),则输出的最低频率为式中

6、,fc 为系统时钟频率,N 为相位累加器的位数。当相位累加器位数很高时,最低输出频率可达到mHz ,甚至更低,可以认为DDS 的最低合成频率为零频。DDS 最高输出频率受限于系统时钟频率和一个周波波形系列点数,在时钟频率为fc、采样点数为M(存储深度)下,最高输出频率为: 这是一个比较大的数值,所以,DDS 相对其它频率合成技术,其带宽得到了极大的提高。2.频率、幅度、相位分辨率频率分辨率也就是频率的最小步进量,其值等于DDS 的最低合成频率。 根据相位累加器位数的不同有着不同的频率分辨率。由DDS 最低合成频率接近零频知,其频率分辨率可达到零频。所以DDS相比其它频率合成技术有精密的频率分辨

7、率。精细频率分辨率使得输出频率十分逼近连续变化。幅度的分辨率决定于幅度控制的DAC 的位数:式中,N 为幅度控制的DAC 的位数,Vref 为幅度控制的DAC 的参考电压。相位差的分辨率与一个周波采样点数M 成反比,从上可看出,DDS 技术可根据实际需要,对频率分辨率、幅度分辨率以及相位差分辨率进行灵活控制。3. 实验内容(1)实验内容1:根据EDA技术实用教程中的相关内容,完成仿真,并由仿真结果进一步说明DDS的原理。完成编译和下载。选择模式1;其中键2、键1输入8位频率字FWORD;键4、键3输入8位相位字PWORD(此例中只将相位字设为常数);利用GW48系统ADDA板上的10位D/A输

8、出波形,用示波器观察输出波形(示波器探头接ADDA板的“PA”输出口)。注意,FPGA(EP1C3)与ADDA(设为B型)板上A/D的引脚连接锁定参考附图1。注意打开实验箱上的+/-12V电源。实验中,clock0可以选择12MHz或50MHz作为A/D的工作频率;按动键2,键1可以看到输出正弦波频率的提高。(2) 实验内容2:例11-14后的程序将32位频率字作了截断,是8位。如果不作截断,修改其中的程序,并设法在GW48实验系统上完成实验(提示,增加2个锁存器与单片机通信)。(3) 实验内容3:将上例改成频率可数控的正交信号发生器,即使电路输出两路信号,且相互正交,一路为正弦(sin)信号

9、,一路为余弦(cos)信号(此电路可用于正交方式的信号调制解调)。(4) 实验内容4:利用上例设计一个FSK信号发生器,并硬件实现之。(5)实验内容5:利用VHDL完成10位输出数据宽度的移相信号发生器的设计,其中包括设计正弦波形数据MIF文件(数据深度1024、数据类型是10进制数);给出仿真波形。最后进行硬件测试,对于GW48系统,选择模式1:时钟接法参考以上实验1-28);用键4、3控制相位字PWORD输入,键2、1控制频率字FWORD输入。观察他们的李萨如图形。然后修改设计,增加幅度控制电路(可以用一乘法器控制输出幅度);最后可利用MATLAB设计和硬件实现。4. 实验设计与测试 4.

10、1 频率控制模块 代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FREQUENCY IS PORT ( CLK : IN STD_LOGIC; A : IN STD_LOGIC_VECTOR(4 DOWNTO 0);-设置A的初值 FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF FREQUENCY IS SIGNAL FULL : STD_LOGIC;BEGIN P_REG: PROCESS(CLK) VARIABLE CNT1 :

11、 STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT1 = "11111" THEN CNT1 := A; -当CNT1计数计满时,输入数据D被同步预置给计数器CNT1 FULL <= '1' -同时使溢出标志信号FULL输出为高电平 ELSE CNT1 := CNT1 + 1; -否则继续作加1计数 FULL <= '0' -且输出溢出标志信号FULL为低电平 END IF; END IF; END PROC

12、ESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2; -如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = '1' THEN FOUT <= '1' ELSE FOUT <= '0' END IF; END IF; END PROCESS P_DIV ;END; 模块元件图4.2 按键选择模块代码LIBRARY

13、IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BUTTON IS PORT ( d : IN STD_LOGIC_VECTOR(2 DOWNTO 0) ; a,b,c : OUT STD_LOGIC ) ; END;ARCHITECTURE ONE OF BUTTON ISBEGINPROCESS( d )BEGIN CASE d IS WHEN "000" => NULL; WHEN OTHERS =&g

14、t; a <= d(0);-dlt b <= d(1);-sqr c <= d(2);-sinEND CASE; END PROCESS;END; 模块元件图4.3 正弦波信号产生模块 代码library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity sin is port ( clk : in std_logic ; -正弦信号的相位 clr : in std_logic; d : out std_logic_v

15、ector(7 downto 0) ) ; -正弦函数值 end ;architecture one of sin is-结构体开始 begin process( clk,clr) variable num : std_logic_vector(5 downto 0); begin if clr = '0' then d <= "00000000" else if clk'event and clk = '1' then if num = "111111" then num := "000000&q

16、uot;-每加到111111时清零 else num := num+1; end if; end if; end if; case num is -四个输入,共有16总相位可能 360/64=5.625 when "000000" => d <= CONV_STD_LOGIC_VECTOR(128,8); -每5.625取一个点 when "000001" => d <= CONV_STD_LOGIC_VECTOR(141,8); -共64个点 when "000010" => d <= CONV_

17、STD_LOGIC_VECTOR(153,8); when "000011" => d <= CONV_STD_LOGIC_VECTOR(165,8); when "000100" => d <= CONV_STD_LOGIC_VECTOR(177,8); when "000101" => d <= CONV_STD_LOGIC_VECTOR(188,8); when "000110" => d <= CONV_STD_LOGIC_VECTOR(199,8); whe

18、n "000111" => d <= CONV_STD_LOGIC_VECTOR(209,8); when "001000" => d <= CONV_STD_LOGIC_VECTOR(218,8); when "001001" => d <= CONV_STD_LOGIC_VECTOR(227,8); when "001010" => d <= CONV_STD_LOGIC_VECTOR(234,8); when "001011" => d

19、 <= CONV_STD_LOGIC_VECTOR(240,8); when "001100" => d <= CONV_STD_LOGIC_VECTOR(246,8); when "001101" => d <= CONV_STD_LOGIC_VECTOR(250,8); when "001110" => d <= CONV_STD_LOGIC_VECTOR(253,8); when "001111" => d <= CONV_STD_LOGIC_VECTOR

20、(254,8); when "010000" => d <= CONV_STD_LOGIC_VECTOR(255,8); when "010001" => d <= CONV_STD_LOGIC_VECTOR(254,8); when "010010" => d <= CONV_STD_LOGIC_VECTOR(253,8); when "010011" => d <= CONV_STD_LOGIC_VECTOR(250,8); when "010100&q

21、uot; => d <= CONV_STD_LOGIC_VECTOR(246,8); when "010101" => d <= CONV_STD_LOGIC_VECTOR(240,8); when "010110" => d <= CONV_STD_LOGIC_VECTOR(234,8); when "010111" => d <= CONV_STD_LOGIC_VECTOR(227,8); when "011000" => d <= CONV_STD_

22、LOGIC_VECTOR(218,8); when "011001" => d <= CONV_STD_LOGIC_VECTOR(209,8); when "011010" => d <= CONV_STD_LOGIC_VECTOR(199,8); when "011011" => d <= CONV_STD_LOGIC_VECTOR(188,8); when "011100" => d <= CONV_STD_LOGIC_VECTOR(177,8); when &q

23、uot;011101" => d <= CONV_STD_LOGIC_VECTOR(165,8); when "011110" => d <= CONV_STD_LOGIC_VECTOR(153,8); when "011111" => d <= CONV_STD_LOGIC_VECTOR(141,8); when "100000" => d <= CONV_STD_LOGIC_VECTOR(128,8); when "100001" => d <

24、;= CONV_STD_LOGIC_VECTOR(115,8); when "100010" => d <= CONV_STD_LOGIC_VECTOR(103,8); when "100011" => d <= CONV_STD_LOGIC_VECTOR(91,8); when "100100" => d <= CONV_STD_LOGIC_VECTOR(79,8); when "100101" => d <= CONV_STD_LOGIC_VECTOR(68,8)

25、; when "100110" => d <= CONV_STD_LOGIC_VECTOR(57,8); when "100111" => d <= CONV_STD_LOGIC_VECTOR(47,8); when "101000" => d <= CONV_STD_LOGIC_VECTOR(38,8); when "101001" => d <= CONV_STD_LOGIC_VECTOR(29,8); when "101010" =>

26、d <= CONV_STD_LOGIC_VECTOR(22,8); when "101011" => d <= CONV_STD_LOGIC_VECTOR(16,8); when "101100" => d <= CONV_STD_LOGIC_VECTOR(10,8); when "101101" => d <= CONV_STD_LOGIC_VECTOR(6,8); when "101110" => d <= CONV_STD_LOGIC_VECTOR(3,8

27、); when "101111" => d <= CONV_STD_LOGIC_VECTOR(1,8); when "110000" => d <= CONV_STD_LOGIC_VECTOR(0,8); when "110001" => d <= CONV_STD_LOGIC_VECTOR(1,8); when "110010" => d <= CONV_STD_LOGIC_VECTOR(3,8); when "110011" => d &

28、lt;= CONV_STD_LOGIC_VECTOR(6,8); when "110100" => d <= CONV_STD_LOGIC_VECTOR(10,8); when "110101" => d <= CONV_STD_LOGIC_VECTOR(16,8); when "110110" => d <= CONV_STD_LOGIC_VECTOR(22,8); when "110111" => d <= CONV_STD_LOGIC_VECTOR(29,8); when "111000" => d <= CONV_STD_LOGIC_VECTOR(38,8); when "111001" => d <= CONV_STD_LOGIC_VECTOR(47,8); when "111010" => d <= CONV_STD_LOGIC_VECTOR(57,8); when "111011" =>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论