1、基于DDS的AM调制的设计摘要:实验利用Quartus II 软件实现直接数字频率合成,具有频率字和相位字的控制功能,从而改变频率和相位。还具有相位清零功能以及波形切换功能。并且通过修改存储器ROM 中的数据来提高精度和设计图形。本文主要介绍实验中功能实现的方案,原理,以及相关操作。还有实验中遇到的问题和解决方法。关键字:数字频率合成 频率字 相位字 精度提高 Abstract The experiment is to design the Direct Digital Synthesizer (DDS) with the Quartus II. The designed synthesize
2、r should be able to change the phase and frequency ,and it also can set the phase to zero or change the waves. In addition, we can set the data in the ROM to improve the accuracy of the DDS and design special figures.The text is mainly to introduce the methods, principle, and operations. We also tal
3、k about the problems and solutions in the experiment.Key words Direct Digital Synthesizer frequency phase improve accuracy目 录1引言 (4)2设计要求 (6)3工作原理介绍 (7)4各个子模块设计原理 (8) 41 频率预置与调节电路 (8) 4. 2 累加器模块 (9) 43 波形存储模块 (11) 44 D/A转化器与低通滤波器 (12) 45 调制与解调电路 (13) 4. 6 显示测频模块 (15) 4. 61 测频模块 (15) 4. 62 显示模块 (17)
4、4. 7 脉冲发生电路 (18)5仿真结果 (20)6设计结论和感想 (22)7实验总结 (23)8参考文献 (24)引言DDS 同DSP(数字信号处理)一样,是一项关键的数字化技术。DDS是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。 DDS的性能特点:DDS在相对带宽、频率转换时间、高分头放力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟
5、信号源的性能。(1)输出频率相对带宽较宽 输出频率带宽为50%fs(理论值)。但考虑到低通滤波器的特性和设计难度以及对输出信号杂散的抑制,实际的输出频率带宽仍能达到40%fs。 (2)频率转换时间短 DDS是一个开环系统,无任何反馈环节,这种结构使得DDS的频率转换时间极短。事实上,在DDS的频率控制字改变之后,需经过一个时钟周期之后按照新的相位增量累加,才能实现频率的转换。因此,频率时间等于频率控制字的传输,也就是一个时钟周期的时间。时钟频率越高,转换时间越短。DDS的频率转换时间可达纳秒数量级,比使用其它的频率合成方法都要短数个数量级。 (3)频率分辨率极高 若时钟fs的频率不变,DDS的
6、频率分辨率就是则相位累加器的位数N决定。只要增加相位累加器的位数N即可获得任意小的频率分辨率。目前,大多数DDS的分辨率在1Hz数量级,许多小于1mHz甚至更小。(4)相位变化连续 改变DDS输出频率,实际上改变的每一个时钟周期的相位增量,相位函数的曲线是连续的,只是在改变频率的瞬间其频率发生了突变,因而保持了信号相位的连续性。正文1、设计要求1. 基本设计要求a) 利用QuartusII软件和SmartSOPC实验箱来实现DDS调制器的设计;b) DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA芯片中的RAM实现,RAM结构配置成21210类型;c) 具体参数要求:频率
7、控制字K取4位;基准频率fc=1MHz,由实验板上的系统时钟分频得到;d) 系统具有清零和使能的功能;e) 利用实验箱上的D/A转换器件将ROM输出的数字信号转换为模拟信号,能够通过示波器观察到正弦波形;f) 通过开关(实验箱上的Ki)输入DDS的频率和相位控制字,并能用示波器观察加以验证;2. 提高部分设计要求a) 通过按键(实验箱上的Si)输入DDS的频率和相位控制字,以扩大频率控制和相位控制的范围;(注意:按键后有消颤电路)b) 能够同时输出正余弦两路正交信号;c) 在数码管上显示生成的波形频率;d) 充分考虑ROM结构及正弦函数的特点,进行合理的配置,提高计算精度;e) 设计能输出多种
8、波形(三角波、锯齿波、方波等)的多功能波形发生器;f) 自行添加其他功能。2、工作原理介绍在进行正式的实验操作前,我们需要先了解DDS的具体实现原理,方能进行设计。图1 DDS实现的原理图根据以上的原理图,下面以正弦波为例,对各个部分进行简单介绍。波形存储器,即为ROM,用于存储波形数据。将一个周期内的正弦波,分为2N份,取每一点坐标下的正弦值,在将数据进行处理,扩展到0到2D-1中的取值。完成以上过程即完成了ROM数据的配置。N位是ROM的地址线宽度,即ROM中存有2N数据;D位是ROM的数据线宽度,即ROM输出的数据范围是0到2D-1,这与以上ROM的数据配置相互对应。如果对ROM中数据逐
9、一取值,输出的为阶梯波,但是通过D/A转换即可恢复正弦波形,累加器就是用于此。但ROM中的数据也可以间隔取值,这样会减少采样点的个数,但因为系统时钟频率fc=1MHz足够大,远远大于Nyquist频率,所以减少采样点,对恢复波形没有影响,但是可以缩短一个波形的输出时间(即TS),这样就能提高输出波形频率。即通过改变数据取样间隔,从而改变输出频率,达到频率可控。频率控制字K就用于改变采样间隔,频率控制字决定了累加器每次相加的数值,即在ROM中每个几个数据取出一个输出,这样就达成了频率控制。总体电路图如下:图2 DDS调制器总体电路图3、各个子模块设计原理:(1)频率预置与调节电路作用:实现频率控
10、制量的输入;不变量K被称为相位增量,也叫频率控制字。图3 频率控制字电路图中ENP使能端接k5开关。控制电路采用循环计数方式,不再另外设置清零端。当k5置1时,74163开始加计数。当k5置0时,74163处于保持状态。此时可由测频电路显示的频率换算出频率字。(2)相位累加器相位累加器由12位的加法器和12位的寄存器组成,其原理图如下所示:图4 相位累加器相位累加器的作用是在频率为1MHz的时钟的作用下,进行相位累加,当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。其中的加法器用VHDL语言编写,寄存器则由硬件实现。具体实现如下:1、加法器:library ieee;use ie
11、ee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity adder isport(op: in signed (14 downto 0);result: out signed (14 downto 0);end adder;architecture beh of adder issignal p: signed (14 downto 0);beginP=001110111110001;result=OP+P;end beh;2、寄存器图5 寄存器内部电路op211.0端输入的
12、频率字,控制步长,addr11.0端输入的是寄存器中输出的,这样可以通过寄存器的clk脉冲控制地址线上的数值以步长为间隔变化,这样就可根据步长对ROM中的数据进行采样。采用寄存器是考虑到result11.0端输出的数据时间不统一,这样将影响到取样,并且要将数据进行累加时也需要脉冲,这就要由累加器提供,这也说明了寄存器的作用。对累加器进行波形仿真如下图6 累加器仿真波形图(3)波形存储器其作用是进行波形的相位-幅值转换。原理是: ROM的N位地址 把0O360O的正弦角度离散成具有2N个样值的序列;ROM的D位数据位则2N个样值的幅值量化为D位二进制数据。 图7 音频信号封装模型 图8 调制信号
13、封装模型图9 音频信号发生电路图10 调制信号发生电路由电路图可以看出音频信号和调制信号采用同样的发生方法,其结构类似。故分析时,仅以音频信号为例。音频信号发生电路主要由三部分组成:频率控制字、累加器、记录正弦波的ROM。频率控制字与总电路中的频率控制字类似。不同的是为了更好的进行控制,增加了一个清零开关。电路结构如左图示。累加器结构如前,不再作说明。电路中使用的正弦波利用MATLAB软件生成波形并导入ROM中。MATLAB软件用到的公式如下:a) T=2*pi/4096;t=0:T:2*pi;/正弦波 A=(1+sin(t)*1023/2; B=round(A);b) T=2*pi/4096
14、;t=0:T:2*pi-T;/方波 A=(1+square(t)*1023/2; B=round(A);c) T=2*pi/4096;t=0:T:2*pi-T;/锯齿波 A=(1+sawtooth(t)*1023/2; B=round(A);d) T=2*pi/4096;t=0:T:2*pi-T;/三角波 A=(1+square(t,0.5)*1023/2; B=round(A);另外,通过更改参数可以形成二分之一的正弦波及四分之一的正弦波。本例实验中时间有限,仅以正弦波为例设计。其余波形仅作理论分析,不另作硬件仿真。(4)D/A转化器与低通滤波器D/A转换器的作用有二。其一是把已经合成的正弦
15、波的数字量转换成模拟量。 其二则是是滤除生成的阶梯形正弦波中的高频成分,将其变成光滑的正弦波,充当低通滤波器。(5)调制与解调电路调制解调部分电路图如下图示:图11 调制解调电路该部分电路有3个模块组成:mul、adder、mul10。其中mul模块接音频信号,mul10则接调制信号。adder模块则与74163组合使用,控制m的取值范围,使之产生或不产生过调制。各模块均由VHDL语言编写,具体实现如下:mul模块LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.aLL;USE ieee.std_logic_si
16、gned.all;USE ieee.std_logic_unsigned.all;ENTITY mul ISPORT (X:IN signed (9 downto 0);y:IN STD_LOGIC_VECTOR(3 downto 0);clk:in std_logic;result: OUT signed (14 downto 0);END mul;ARCHITECTURE mul_arch OF mul IS SIGNAL p: signed (4 downto 0);BEGINp= signed (0&y); PROCESS (clk) BEGIN IF (clkevent and cl
17、k=1) THEN result=X*p;END IF;END PROCESS;END mul_arch;adder模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity adder isport(op: in signed (14 downto 0);result: out signed (14 downto 0);end adder;architecture beh of adder issignal p: signed (14
18、downto 0);beginP=001110111110001;result=OP+P;end beh;mul10模块LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.aLL;USE ieee.std_logic_signed.all;USE ieee.std_logic_unsigned.all;ENTITY mul10 ISPORT (x:IN signed (9 downto 0);y:IN signed (14 downto 0);clk:in std_logic;result: OUT signed
19、(9 downto 0);END mul10;ARCHITECTURE mul10_arch OF mul10 ISSIGNAL p: signed (24 downto 0);BEGIN PROCESS (clk)BEGIN IF (clkevent and clk=1) THEN P=X * Y;result=P(24 downto 15);END IF;END PROCESS;END mul10_arch;(6)显示测频电路显示测频电路用于测量信号频率,并将结果数字化显示在数码管中。其外部模块如下图: 图12 显示测频电路模块 图13 测频模块其中,测频模块封装于显示测频模块中。下面我们
20、将对这两个模块进行分析。1) 测频模块测频电路用于测量发生波形的频率,其原理图如下:图14 测频电路原理图原理波形图如下:图15 原理波形图而其实际电路采用如下方式实现:图16 实际测频电路图测频电路由计数器和寄存器两部分组成。先对单位时钟clk1进行二分频,在二分频反相后的结果处于高电平时,就使得计数器的使能端有效,计数器开始计数,当二分频反相结果出现下降沿时,计数器的结果就被寄存器锁存后通过显示电路输出。电路中存在反相器会有延时效应,但是延时时间很短,只要小于待测信号周期即可,而根据最后的实验结果可知,测得的频率最高只是几千,所以反相器的延时效应对实验没有太大影响。2) 显示模块显示模块内
21、部电路图如下:图17 显示模块内部电路在显示模块内部,testfrequency模块为测频电路的封装,lpm_mux4为一28选4器件。m6模块为用触发器组成的模7计数器,配合74138构成扫频电路。seg为用VHDL语言编写的译码显示模块。现将各模块内部电路显示如下:图18 模7计数模块内部电路Seg模块采用语言编写,设计为16进制显示,单管显示为0F:library ieee;use ieee.std_logic_1164.all;entity seg isport(bcd_led: in std_logic_vector(3 downto 0);ledseg: out std_logic
22、_vector(6 downto 0);end seg;architecture beh of seg isbegin with bcd_led selectledseg=1000000 when 0000,-0 1111001 when 0001,-1 0100100 when 0010,-2 0110000 when 0011,-3 0011001 when 0100,-4 0010010 when 0101,-5 0000010 when 0110,-6 1011000 when 0111,-7 0000000 when 1000,-8 0010000 when 1001,-9 0001
23、000 when 1010,-10 0000011 when 1011,-11 1000110 when 1100,-12 0100001 when 1101,-13 0000110 when 1110,-14 0001110 when 1111,-15 1111111 when others;end beh;(7)脉冲发生电路此电路实际上是分频电路,把系统提供的48MHz频率的时钟信号分频得到实验中用到的各种频率的时钟信号。电路如下: 图19 脉冲发生电路图中三个模块为语言模块,内部实现方式一致,仅参数有所变动。现将48M分频即kcoun1模块内部展开:LIBRARY IEEE;USE IE
24、EE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY kcoun1 ISPORT(A :IN std_logic; B :buffer std_logic);END kcoun1;ARCHITECTURE kcoun1_arc OF kcoun1 ISSIGNAL counter :std_logic;BEGINPROCESS(A)VARIABLE counter1:integer RANGE 0 TO 48000000;CONSTANT md :integer := 24000000;BEGINIF(Aevent AND A
25、=1)THENIF (counter1 = md) THENcounter1 :=0;counter = NOT counter;B 1时,波形将产生过调制。其中一种过调制波形截图如下:图20 过调制波形(注:此时需要修改音频和载波模块内部累加器的参数。)另外,通过多次硬件仿真可以发现,仿真结果会出现相移和噪声,现截图如下。如何减小这一影响也是研究的方向。5、设计过程中出现的问题及解决方法由于在做DDS实验之前,已经有做过EDA实验,所以基本的操作问题都已经不再出现,主要的问题是在于原理图的设计细节。1. ROM中参数错误在完成ROM参数设定,将ROM与累加器连好先后进行电路编译时却报了错,最
26、后发现是ROM中参数设定出现了错误,本应该是0-1023,但在excel中利用公式计算而使得1024出现了,从而会报错。最后将512该成511.5即可,重新编译即可通过。2. 提高精度后,波形错误在进行sin信号精度提高的时候,开始在sin_rom中存放的是sin信号前半部分的数据,用result11作为切换正反相脉冲,这样下载的波形正确了,但在加上相位字后,就出现了失真。通过分析知道因为在加入初始相移后,取样从中间开始,但是addr是从0开始到4095结束的,所以,取样从ROM的最后跳到开始时,正反相没有切换,使得波形失真,所以用地址做脉冲是不可行的。考虑用输出值做脉冲,在512处跳变,但是
27、因为在ROM中512的值很少,这样就可能因为步长较大就将512跳过,取不到512,就会失去正反相切换的使能,所以用sin的输出值做脉冲也不可行。最后考虑到sin波形和cos波形只是相差一个相位,所以用cos的前半部分数据存入ROM中,用ROM中的输出的最高位反相作为脉冲(0-1),只要ROM中的取样数据有最后跳至开始,最高位就会是1-0,出现脉冲,并且在其他的时候都不会有此跳变。3. 测频错误在完成最初的测频时是正确的,但在进行精度提高后,测频出现了错误。对测频单元进行单独测试,接入标准1000Hz的信号,所得结果确实为1000,确认测频模块正确,但是因为是精度提高了,使得整个周期的总数据量超
28、过了4096,而使得测频出现错误,最后还是测频端接的只是COS的频率,没有能够通过修改测出提高精度后的信号频率,我个人觉得还是比较遗憾的。6、实验总结本次课程设计比较成功,因为之前有做过多功能数字钟的设计,对QuartusII软件和SmartSOPC实验箱的使用比较熟悉了,因而除上述的问题之外设计比较顺畅。不过设计的结果还是有一些缺陷的:设计中一个波形就要生成一个ROM,因而要产生多种不同波形时要生成多个ROM,但是由于硬件的限制,所用的实验箱只能生成大约5个ROM,从资源的方面看也是很浪费的。一种好的方法是将各种波形产生的数据表分区放在同一个ROM中,通过开关控制一个数据选择器选择查表的范围。很遗憾,这种方法是在设计后才想到的,没能具体实现。7、参考文献1) EDA设计实验指导书 南京理工大学 电子技术中心2) 数字电路 蒋立平 编著 南京理工大学翻印3) 电子设计自动化应用计术 高等教育出版社 2004年11月版4)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1