DDS多信号发生器的实现.docx
《DDS多信号发生器的实现.docx》由会员分享,可在线阅读,更多相关《DDS多信号发生器的实现.docx(14页珍藏版)》请在冰豆网上搜索。
DDS多信号发生器的实现
DDS多信号发生器的实现
摘要:
详细介绍了直接数字频率合成器(DDS)的工作原理、基本结构。
在参考DDS相关文献的基础上,提出了符合结构的DDS设计方案,利用DDS技术设计多波形信号发生器,此设计基于可编程逻辑器件FPGA,采用QuartusⅡ开发平台,由VHDL编程实现。
关键词:
FPGA;DDS;多波形信号发生器
前言
直接数字频率合成(DDS:
DirectDigitalFrequencySynthesi)是近年来发展起来的一种新的频率合成技术,其主要优点是相对带宽很大,频率转换时间极短(可小于20ns),频率分辨率很高,全数字化结构便于集成,输出相位连续可调,且频率、相位和幅度均可实现程控。
DDS能够与计算机技术紧密结合在一起,克服了模拟频率合成和锁相频率合成等传统频率合成技术电路复杂、设备体积较大、成本较高的不足,因此它是一种很有发展前途的频率合成技术。
DDS技术现已在接收机本振、信号发生器、通信系统、雷达系统等方面得到广泛应用。
数字频率合成器作为一种信号产生装置己经越来越受到人们的重视,它可以根据用户的要求产生相应的波形,具有重复性好、实时性强等优点,己经逐步取代了传统的函数发生器。
本文的目的:
1、设计开发出一个能产生正弦波、方波、三角波等波形的信号源。
2、实现累加器步长可控、累加频率可控。
3、输出信号幅度可控。
4、可通过嵌入式逻辑分析仪观察波形。
一、直接数字频率合成(DDS)的基本原理
对于一个频谱纯净的单频正弦信号可以用下式来描述
其相位为:
显然,该正弦信号相位和幅值均为连续,为了便于采用数字技术,应对连续的正弦信号进行离散化处理,即把相位和幅值均转化为数字量。
用频率为为k的基准时钟对正弦信号进行抽样,这样,在一个基准时钟周期clk内,相位的变化量为:
由上式得到的为模拟量,转化成数字量,将2
切割成
等份作为最小量化单位,从而得到的数字量M为:
得出:
这表明,在基准时钟信号频率
确定的情况下,输出正弦信号的频率值
决定于M的大小,而且与M呈线性关系。
通过改变M的大小,就可改变输出正弦信号的频率,因此,M也称频率控制字。
当基准时钟频率取
时,正弦信号的频
率就等于频率控制字M。
当M取1时,可以得到输出信号的最小频率步进为
由此可知,只要N取得足够大,就可以得到非常小的频率步进值。
将相位转化为数字量以后,
可描述为如下形式:
其中
指前一个基准时钟周期的相位值。
从上式看来,只要用频率控制字M进行简单的累加运算,就可以得到正弦函数的当前相位值。
而正弦信号的幅值就是当前相位值的函数。
由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。
由以上理论分析,可以得到一种用数字的方法获得正弦信号的方法;先构建一个N位的相位累加器,在每一个时钟周期内,将相位累加器中的值与频率控制字相加,得到当前相位值。
将当前相位值作为ROM的地址,读出ROM中的正弦波数据,再通过D/A转换成模拟信号。
只需改变频率控制字,就可以改变输出信号的频率图1为DDS正弦信号发生器的原理框图:
图1DDS正弦信号发生器的原理框图
从上述原理图中也可以看到,频率控制字数字越大,ROM的地址变化越快,输出的模拟信号频率越高。
其中ROM的地址由相位累加器输出的地址高位提供。
二、DDS产生波形分析
设计要求如下:
1、设计开发出一个能产生正弦波、方波、三角波等波形的信号源。
2、实现累加器步长可控、累加频率可控。
3、输出信号幅度可控。
4、可通过嵌入式逻辑分析仪观察波形。
(一)信号产生:
1、从上面分析了DDS的工作原理可知,我们只需要在存储器里面存储相应形的数据再取出来就可以得到所需的波形。
本次采集的数据都是8bit*1024words。
图三正弦波ROM部分数据图四方波ROM部分数据
2、构建了一个32位的相位累加器,在每一个时钟周期内,将相位累加器中的值与频率控制字相加,得到当前相位值。
将当前相位值作为ROM的地址,读出ROM中的正弦波数据,再通过D/A转换成模拟信号。
由于累加器累加的作用,需改变频率控制字M,就可以改变输出信号的频率。
如图5的电路原理图,图6图7图8所示的频率变化的三种波形图:
图5变频信号电路原理图
图6变频正弦信号波形仿真图
图7变频三角波信号波形仿真图
图8变频方波信号波形仿真图
(二)、波形选择:
DDS具有选择任意波形的功能,因此我们需要对三种波形进行选择。
需要构建一个3选1的波形选择器再输出。
采用QuartusII里面的VHDL语言进行编程,再生成3选1元器件,实现3选1的波形选择功能。
1、编程语言如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
Entitymux41is
port(sel:
instd_logic_vector(7downto0);--定义输入端口sel
d1,d2,d3:
instd_logic_vector(7downto0);--定义输入端口d1,d2,d3,d4
q:
outstd_logic_vector(7downto0));--定义输出端口
endmux41;
architecturebehavofmux41is
begin
process(sel)
begin
caseselis
when"00000001"=>q<=d1;
when"00000010"=>q<=d2;
when"00000011"=>q<=d3;
whenothers=>null;
endcase;
endprocess;
endbehav;
图9波形选择器
2、选择器分析:
Sel:
选择端口。
当sel端口的时钟脉冲为“00000001”时,输出信号为正弦信号;
当sel端口的时钟脉冲为“00000010”时,输出信号为三角信号;
当sel端口的时钟脉冲为“00000011”时,输出信号为方波信号。
D1:
正弦信号输入端口
D2:
三角信号输入端口
D3:
方波信号输入端口
Q:
信号输出端口
3、波形仿真
将选择器连接好,得到具有选择信号功能的电路图。
如图10选择信号电路原理图,图11信号仿真图
图10选择信号电路原理图
图11三种信号仿真图
(三)、幅度变化
DDS可以调整信号的幅度,本文是通过乘法器进行增大幅值。
在信号输出之前添加一个4位的乘法器,将信号的幅值增大。
如图12调幅电路原理图,图13调幅仿真图
图12调幅电路原理图
图13调幅仿真图
(四)、相位调整
DDS工作原理是在时钟控制下存储器中去不同的地址,得到不同的数值从而形成信号。
DDS自动取地址是从第一个开始,也就是说初始的相位是0。
所以改变DDS第一个取的地址就能改变其初相位。
所以在DDS取地址之前加一个加法器和触发器。
这个加法器的输入是从调频的输出,另一个加法器的输入端则用时钟控制。
当时钟clk等于0时,加法器则不改变数值即不改变信号的初相位。
当时钟clk不等于0时,加法器改变数值即改变初相位,从而达到相位调整的功能。
如图14相位调整电路原理图,图15相位调整信号仿真图
图14相位调整电路原理图
图15相位调整信号仿真图
三、嵌入式逻辑分析
将该DDS信号发生器的电路图下载到EP2C5Q208C8芯片里面,进行引脚绑定,利用QuartusII的嵌入式逻辑分析仪来观察动态的波形。
检测DDS输出信号是否正确。
如图16嵌入式分析三角波变幅波形图、图17嵌入式方波变幅波形图。
图16嵌入式逻辑分析三角波变幅波形图
图17嵌入式逻辑分析方波变幅波形图
四、总结
这次论文研究的是DDS多信号发生器。
主要研究了DDS的工作原理、基本结构。
在参考DDS相关文献的基础上,提出了符合结构的DDS设计方案,利用DDS技术设计多波形信号发生器,此设计基于可编程逻辑器件FPGA,采用QuartusⅡ开发平台,由VHDL编程实现。
1、信号产生:
通过在已存入地址的存储器里选址得到不同的信号。
2、信号选择:
在三个存储器里分别存入正弦信号,三角信号,方波信号的地址与数据,通过VHDL语言构建一个新的三选一的波形选择器达到信号选择的功能。
3、信号变频:
通过累加器在单位时间内增加选址的数量达到变频的作用。
4、信号调幅:
在波形输出之前用乘法器增大波形幅值。