FPGA模拟DDS正弦波信号源1

上传人:re****.1 文档编号:431731562 上传时间:2023-05-05 格式:DOC 页数:21 大小:180.50KB
返回 下载 相关 举报
FPGA模拟DDS正弦波信号源1_第1页
第1页 / 共21页
FPGA模拟DDS正弦波信号源1_第2页
第2页 / 共21页
FPGA模拟DDS正弦波信号源1_第3页
第3页 / 共21页
FPGA模拟DDS正弦波信号源1_第4页
第4页 / 共21页
FPGA模拟DDS正弦波信号源1_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《FPGA模拟DDS正弦波信号源1》由会员分享,可在线阅读,更多相关《FPGA模拟DDS正弦波信号源1(21页珍藏版)》请在金锄头文库上搜索。

1、摘要随着科学技术的发展和测量技术的进步,普通的信号发生器已无法满足目前日益发展的电子技术领域的生产调试需要。而DDS技术是一种新兴的直接数字频率合成技术,具有频率分辨率高、频率切换速度快、切换相位连续、输出信号相位噪声低、可编程、全数字化易于集成、体积小、重量轻等优点,因而在雷达及通信等领域具有广泛的应用前景。目前市面上的DDS芯片,价格昂贵、功能固定单一,应用受到限制。本综合实验项目采用基于FPGA的EDA技术设计实现DDS芯片,并可以根据实际需要对其功能进行灵活地修改,配置。关键字:FPGA EDA DDS1 DDS的研究现状及发展趋势在频率合成(FS, Frequency Synthes

2、is)领域中,常用的频率合成技术有模拟锁相环、数字锁相环、小数分频锁相环(fractional-N PLL Synthesis)等,直接数字合成(Direct Digital SynthesisDDS)是近年来新的FS技术。单片集成的DDS产品是一种可代替锁相环的快速频率合成器件。DDS是产生高精度、快速变换频率、输出波形失真小的优先选用技术。DDS以稳定度高的参考时钟为参考源,通过精密的相位累加器和数字信号处理,通过高速D/A变换器产生所需的数字波形(通常是正弦波形),这个数字波经过一个模拟滤波器后,得到最终的模拟信号波形。如图1-1所示,通过高速DAC产生数字正弦数字波形,通过带通滤波器后

3、得到一个对应的模拟正弦波信号,最后该模拟正弦波与一门限进行比较得到方波时钟信号。 DDS系统一个显著的特点就是在数字处理器的控制下能够精确而快速地处理频率和相位。除此之外,DDS的固有特性还包括:相当好的频率和相位分辨率(频率的可控范围达Hz级,相位控制小于0.09),能够进行快速的信号变换(输出DAC的转换速率300百万次/秒)。这些特性使DDS在军事雷达和通信系统中应用日益广泛。其实,以前DDS价格昂贵、功耗大(以前的功耗达Watt级)、DAC器件转换速率不高,应用受到限制,因此只用于高端设备和军事上。随着数字技术和半导体工业的发展,DDS芯片能集成包括高速DAC器件在内的部件,其功耗降低

4、到mW级(AD9851在3.3v时功耗为650mW),功能增加了,价格便宜。因此,DDS也获得广泛的应用:现代电子器件、通信技术、医学成像、无线、PCS/PCN系统、雷达、卫星通信。1.1DDS的系统简介DDS的原理框图如图1所示。图中相位累加器可在每一个时钟周期来临时将频率控制字(TUNING WORD)所决定的相位增量M累加一次,如果记数大于2N,则自动溢出,而只保留后面的N位数字于累加器中。正弦查询表ROM用于实现从相位累加器输出的相位值到正弦幅度值的转换,然后送到DAC中将正弦幅度值的数字量转变为模拟量,最后通过滤波器输出一个很纯净的正弦波信号。 由图可知,一个基本的DDS结构,主要由

5、相位累加器、相位调制器、正弦ROM查找表和DAC构成。图中的相位累加器、相位调制器、正弦ROM查找表是DDS结构中的数字部分,由于具有数控频率合成的功能,又合称为NCO(Numerically Controlled Oscillators)。相位累加器是整个DDS的核心,在这里完成上述原理推导中的相位累加功能。相位调制器接收相位累加器的相位输出,在这里加上一个相位偏移值,主要用于信号的相位调制。正弦查找表ROM是DDS最关键的部分,也是最复杂的部分;设计时首先需要对正弦函数进行采样,接着将采样的结果放到ROM模块的对应存储单元中;每一个地址对应一个数值,输出为10位。为了保证输出数据的稳定性,

6、将ROM的输出数据先寄存在REGOUT中,待下一个始终到来时,再将其输出。整个系统各模块是在同步时钟信号CLK的控制下协调工作的。数模转换器(DAC)的作用是将数字形式的波形幅值转换成所要求合成频率的模拟形式信号。DAC有电压和电流输出两种,其输出的信号并不能真正连续可变,而是以其绝对分辨率为最小单位的,所以其输出实际上是一个阶梯模拟信号。现在,一些器件厂家如美国的AD公司,都在DDS器件的芯片内部集成了DAC,这种结构称为Complete-DDS,大大简化了DDS的系统设计。1.2 DDS的性能特点(1)DDS的频率分辨率在相位累加器的位数N足够大时,理论上可以获得相应的分辨精度,这是传统方

7、法难以实现的。 (2)DDS是一个全数字结构的开环系统,无反馈环节,因此速度极快,一般在毫微秒量级。(3)DDS的相位误差主要依赖于时钟的相位特性,相位误差小。另外,DDS的相位是连续变化的,形成的信号具有良好的频谱,这是传统的直接频率合成方法无法实现的(4)相位变化连续 改变DDS输出频率,实际上改变的每一个时钟周期的相位增量,相位函数的曲线是连续的,只是在改变频率的瞬间其频率发生了突变,因而保持了信号相位的连续性。 (5)输出波形的灵活性只要在DDS内部加上相应控制如调频控制FM、调相控制PM和调幅控制AM,即可以方便灵活地实现调频、调相和调幅功能,产生FSK、PSK、ASK和MSK等信号

8、。另外,只要在DDS的波形存储器存放不同波形数据,就可以实现各种波形输出,如三角波、锯齿波和矩形波甚至是任意的波形。当DDS的波形存储器分别存放正弦和余弦函数表时,既可得到正交的两路输出。 (6)其他优点 由于DDS中几乎所有部件都属于数字电路,易于集成,功耗低、体积小、重量轻、可靠性高,且易于程控,使用相当灵活,因此性价比极高。1.3 DDS的基本参数计算公式 由于相位累加器是N比特的模2加法器,正弦查询表ROM中存储一个周期的正弦波幅度量化数据,所以频率控制字M取最小值1时,每2N个时钟周期输出一个周期的正弦波。所以此时有: f0=fc/2N (1.3.1)式中f0为输出信号的频率,fc为

9、时钟频率,N为累加器的位数。 更一般的情况,频率控制字是M时,每2N/M个时钟周期输出一个周期的正弦波。所以此时有:f0 = M*fc/2N (1.3.2)式中为f0输出信号的频率,fc为时钟频率,N为累加器的位数,M为频率控制字。 式(1.3.2)为DDS系统最基本的公式之一。由此可以得出: 输出信号的最小频率(分辨率)为:f0min= fc/2N(1.3.3) 输出信号的最大频率为:f0max =Mmax*fc/2N (1.3.4) DAC 每信号周期输出的最少点数为k= 2N /Mmax(1.3.5)当 N 比较大时,对于很大范围内的 M 值,DDS系统都可以在一个周期内输出足够的点,保

10、证输出波形失真很小。 2 DDS主体部分设计整个DDS系统的设计采用层次结构,采用VHDL与原理图输入相结合的方法,下面就各个部分的设计分别介绍。 本设计中采用的频率字为32位,即N=32,ROM为256*8位,故ROM的地址线宽M=8,输出数据线宽L=8. 由于ROM地址线为8位(28=256),而相位累加器的输出为32位,为了保证他们之间的对应,我们将相位累加器的高8位与ROM的地址线相连。这样存在多个相位地址对应同一个ROM地址的情况,如果把相位累加器输出的所有位数全部用来查询ROM,那ROM的容量会非常的大,如此巨大的ROM表容量在实际工作中难以实现。因此,常使用相位地址高位来寻址,舍

11、去低位的相位截断方法。当然,这种方法会引入一定的噪声,但对于节省的资源来说,这种方法还是值得的。2.1 相位累加器其VHDL代码为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity 10701 is port(clk:in std_logic; fre: in std_logic_vector(31 downto 0); add_pio:out std_logic_vector(9 downto 0);end 10701;architecture 10701 of 10701 isbe

12、gin process(clk,fre)variable phase:std_logic _vector(31 downto 0);beginif(clkevent and clk=1)thenphase:=phase+fre;add_pio=phase(31 downto 22);end if;end process;end 10701;输入端口中clk和fre分别代表相位累加器的时钟和频率字。变量phase代表相位累加器,每来一个时钟完成一次相位累加。相位累加器输出的高10位用作波形数据表的地址,由输出管脚add_pio输出。2.2 显示电路正弦信号产生器采用数码管来显示工作状态。为简化设

13、计,显示电路包括4位数码管.4个数码管电路设计为独立工作,它们各自接收需要显示的数据。准备显示的数据在可编程逻辑器件中进行译码,产生的显示代码被送到7段数码管实现数据的显示。由于3个数码管电路完全一样,下面给出其中一路的VHDL代码,该代码支持共阴极数码管的工作。修改代码中的显示代码,就可很方便地用于共阳极数码管。设计一个共阴极7段数码管显示电路。其VHDL代码为:library ieee;use ieee.std_logic_1164.all;entity 10702 isport(data: in std_logic_vector(3 downto 0); seven_seg:out st

14、d_logic_vector(6 downto 0);end 10702;architecture 10702 of 10702 isbeginwith data selectseven_seg=”0111111”when”0000”, ”0000110”when”0001”,”1011011”when”0010”,”1001111”when”0011”,”1100110”when”0100”,”1101101”when”0101”,”0111101”when”0110”,”0000111”when”0111”,”1111111”when”1000”,”1101111”when”1001”,”

15、0000000”when others;End 10702;接收准备显示的一位数据,该数据采用8421BCD码。输入的8421BCD码译码以后通过可编程逻辑器件的输入/输出管脚送到数码管的输入管脚。输出端口seven_seg的7位数据按照从低到高的顺序依次送到数码管的管脚a_g。2.3键盘电路键盘是一组按键开关的集合。像数码管,键盘也是数字系统的一个关键部件。按键开关具有两个状态,闭合或者断开。这两个状态反映在电压上就是按键开关呈现出高电平或者低电平。如果按键开关呈现高电平表示它断开,那么按键开关呈现低电平表示它闭合,因此通过检测按键开关呈现的电平状态就可以确认按键开关是否被按下。在键盘包含的按键开关较少的情况下,例如只包含4个按键开关,独立式键盘占用的输入/输出管脚数量是可以接受的。具有4个按键的独立式键盘电路如图所示。键盘中的5个按键分别有两个不同的用途:输入数据和刷新DDS的频率状态字。输入数据通过按键KEY0、KEY1、KEY2、KEY3实现。其中按键KEY0用来调整输出信号频率的个位;按键KEY1用来调整输出信号的十位;按键KEY2用来调整输出信号的百位;按键KE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号