基于FPGA的DDS设计

基于FPGA的DDS设计
基于FPGA的DDS设计

基于FPGA的DDS设计与实现

摘要

随着现代电子技术的不断发展,在通信系统中往往需要在一定频率范围内提供一系列稳定和准确的频率信号,一般的振荡器己不能满足要求,这就需要频率合成技术。直接数字频率合成(Direct Digital Frequency Synthesis,DDS)是把一系列数据量形式的信号通过D/A转换器转换成模拟量形式的信号合成技术。DDS具有相对带宽宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号等优点,已成为现代频率合成技术中的姣姣者。目前在高频领域中,专用DDS芯片在控制方式、频率控制等方面与系统的要求差距很大,利用FPGA来设计符合自己需要的DDS 系统就是一个很好的解决方法。

现场可编程门阵列(FPGA)器件具有工作速度快、集成度高、可靠性高和现场可编程等优点,并且FPGA支持系统现场修改和调试,由此设计的DDS电路简单,性能稳定,也基本能满足绝大多数通信系统的使用要求。

Abstract

With the continuous development of modern electronic technology in communications systems often require a certain frequency range provides a range of stable and accurate frequency signal, the general oscillator has been unable to meet the requirements, which require frequency synthesis。Direct Digital Frequency Synthesis :“DDS”。It is to form a data signal through D / A converter converts the signal into analog form of synthesis。DDS has a relatively wide bandwidth, frequency conversion time is short, high frequency resolution, the output phase continuous, can produce a variety of broadband quadrature modulation signals and other advantages, has become a modern synthesizer technology leader. Present in high frequency areas, special DDS chip control, frequency control and other aspects of system requirements differ greatly, the use of FPGA to design DDS system suits their needs is a good solution.

Field programmable gate array (FPGA) devices have to work fast, high integration, high reliability and the advantages of field programmable and support system for FPGA-site to modify and debug the design of the DDS circuit which is simple, stable performance, but also the basic communications systems can meet most requirements.

关键词(keywords):频率合成(Frequency Synthesizer);DDS技术(DDS technology);

频率控制(Frequency Control);FPGA设计(FPGA Design)

目录

1 DDS产生波形的原理 (3)

2 DDS的结构原理 (6)

3 DDS调频系统在FPGA中的实现的模块设计 (7)

3.1 相位累加器控制模块的设计 (7)

3.2 波形储存器ROM的设计 (8)

4 连接原理图 (9)

5 DDS的仿真 (10)

1 DDS产生波形的原理

利用DDS技术产生波形的过程是:基于奈奎斯特抽样定理对需要产生的波形进行采样、量化后存入存储器(例如ROM)中作为待产生信号波形的数据表;在需要输出波形时,从数据表中依次读出数据,产生数字化信号,这个信号再通过D/A转换器和滤波器后就变成了所需的模拟信号波形。如果改变数据表中的内容,就可以得到不同的信号波形。

下面以正弦波信号波形的产生为例说明DDS工作原理。

基于DDS产生正弦信号波形的原理框图如图1所示。图中,fclk为相位累加器的时钟信号,其周期为T0;相位累加器(从0~(2^n-1)计数)在fclk的作用下,产生数据存储器所需的地址信号。

如何获取正弦波形存储器中的数据呢?

我们知道,某一个频率的正弦信号可以表示为

式中,A为正弦波的振幅,w为正弦信号的频率(角频率),为初始相位。由于A和

不随时间而变化,可以令A=1,=0,得到归一化的正弦信号表达式

如果将上述正弦信导的一个完整周期内的相位0~2pi的变化用单位圆表示,其相位与幅度一一对应,即单位团上的每一点均对应输出一个特定的幅度值,如图8.6.3所

示。例如,在圆上取16个相位点就有16种幅度值与之对应,如果在圆上取2^N个相位点,则相位分辨率为2pi/2^N。根据奈空斯特定理,以等量的相位间隔对其进行相位/

幅度抽样得到一个周期性的正弦信号的离散相位的幅度序列,并且对模拟幅度进行量化,旦化后的幅值采用相应的二进制数据编码。这样就把一个周期的正弦波连续信号转换成为一系列离散的二进制数字量,然后通过一定的手段固化在只读存储器ROM中,每个存储单元的地址即是相位取样地址,存储单元的内容是已经量化了正弦波幅值。这样的一个只读存储器就构成了一个与2pi周期内相位取样相对应的正弦函数表,因它存储的是一个周期的正弦波波形幅值,因此称其为正弦波形存储器,又称作查找表。

对于一个连续的正弦信号,其相位是时间的线性函数,相位对时间的导数为w,即

当角频率w为一定位时,其相位斜率也是一个确定值。此时,正弦波形信号的相位与时间呈线性关系,即。根据这一基本关系,在一定频率的时钟信号作用下,通过一个线性的地址计数器对已得到的正弦波波形存储器进行扫描,进而周期性地读取波形存储器中的数据,其输出通过D/A转换器及低通滤波器就可以合成一个完整的、具有一定频率的正弦波信号。假设存储器有2^n个存储单元,如果重复地从0~(2^n-1)单元读出数据存储器中的数据,在数据存储器的输出端就会得到周期性的正弦序列,如图8.6.4中的空心圆点所示;再将周期的正弦序列送到D/A转换器和低通滤波器进行变换,就可以得到连续的正弦信号。显然,如果提高时钟信号fclk的频

率,则从数据存储器中读出数据的速度就会加快,数据点之间的时间间隔就会缩短,读取一个周期的正弦数据所用的时间缩短,从而输出正弦信号的周期变小、频率增大。

由图8.6.4可知,输出正弦信号的周期T与地址计

数器时钟信号的周期T0。存在如下关系:

式中f为输出正弦信号的频率,fo为计数器时钟信号的频率。

由上述分析可知,正弦波形存储器的地址数目决定了相位量化误差,而存储器的位数决定了幅度量化误差。在实际的DDS中,可利用正弦波的对称性,将360度范围内的幅位、相位点减少到90度内,或利用正弦函数的压缩算法降低ROM的存储容量。

2 DDS的结构原理

DDS的基本原理是利用有限的离散数据,通过查表法得到信号的幅值,通过数模转换器D/A后生成连续波。DDS的原理框图如图1所示。

其中:频率控制字为fword;相位累加器的位数为N。相位累加器以步长fword做累加,产生所需的频率控制数据;把得到的频率控制数据作为地址对ROM存储器进行寻址。数据存储器(ROM)实质是一个相位/幅度转换电路,ROM中存储二进制码表示所需合成信号的相位/幅度值,相位寄存器每寻址一次ROM,就输出一个相对应的信号相位/幅度值。理想情况下,累加器的N位全部用来寻址时,DDS的合成频率为:

式中:fword为频率控制字;N为相位累加器位数;fclk为输入时钟。当fword=1时,得DDS的最小分辨率。如果改变频率控制字,就可以改变合成的频率的频偏。

3 DDS调频系统在FPGA中的实现的模块设计

3.1 相位累加器控制模块的设计

相位累加器由地址加法器和寄存器构成。加法器完成加法,寄存器将加法器的结果加以保存作为下一次相加用。周而复始直到加法器出现溢出。相位累加器的速度主要由累加器来决定。加法器的设计主要有三种方法:串行加法器、流水线加法器、并行加法器。其中串行加法器结构简单,但速度较慢。并行加法器虽速度较快,但占处理器的资源大。本次课设使用的是流水线加法器,将加法器和寄存器结合在一起设计。本设计中采用的是10位的频率控制字。在满足性能的前提下为节省资源开销,从32位的相位累加器结果中提取高10位作为ROM的查询地址,由此而产生的误差会对频谱纯度有影响,但是对波形的精度的影响是可以忽略的。以下是相位累加器的实现程序:

module counter(clk,fre_word,address);

input clk;

input [9:0]fre_word;

output reg[9:0]address;

reg [31:0] phaseadder;//声明32位锁存器

always@(posedge clk)

begin

phaseadder=phaseadder+fre_word;//以fre_word的作为总步长进行累加

(例如fre_word=512,即一个周期以512步组成)。

address=phaseadder[26:15];//锁存输出取15到26位的地址值

end

endmodule

3.2 波形储存器ROM的设计

1、本设计中,要求DDS系统能输出方波,三角波和正弦波三种波形。定制三个ROM (ROM:1-PORT),分别加载波形数据文件正弦波sinrom.mif、三角波triangle.mif、方波rectangle.mif。ROM通过Tools中的MegaWizard Plug-In Manager…定制的。

2、定制三个ROM(ROM:1-PORT),分别加载波形数据文件正弦波sinrom.mif、三角波triangle.mif、方波rectangle.mif。

3、定制一个PLL(Phase Locked Loop)锁相环。通过“Tools”中的“MegaWizard Plug-In Manager…”定制。命名为“PLL.v”。(主要为了能烧入开发板仿真而加进来的,可以不要。开发板只提供50MHz的输入频率,需要更高的频率,加锁相环来提高和稳定频率的)

4、多路选择器MUX_3定制。定制多路选择器的步骤很容易,也是通过“Tools”中的“MegaWizard Plug-In Manager…”定制。在“Installed Plug-Ins”——“Gates”中选中“LPM_MUX”,将所要生成的“MUX_3”命名为“MUX_3.v”。

点击下一步后,在“How many ‘data’inputs do you want?”中选择“3”,即三路数据输入,用来接收三个不同的波形(正弦波、三角波、方波)。并且在下一行中设置输入输出的总线数据位数为10位,因为这里用的是10位的D/A转换器。点击“Finish”完成即可。

4 连接原理图

所有的设计文件都准备好了,接下来就是将设计的文件全部连接起来。

5 DDS的仿真

建立一个仿真文件,进行波形输出的软件仿真。

1、我们先进行对正弦波输出的仿真。仿真结果如图:

根据仿真设立的参数可以计算出输出正弦波的频率为

为1023*(1/(20*10^-9))/(2^10)=50MHz。

2、对输出方波波形的软件仿真,仿真结果如图:

根据仿真设立的参数可以计算出输出正弦波的频率为为256*(1/(20*10^-9))/(2^10)=12.5MHz。

3、对输出三角波的的软件仿真,仿真结果如图:

根据仿真设立的参数可以计算出输出正弦波的频率为

为512*(1/(20*10^-9))/(2^10)=25MHz。

结论:

据软件仿真的结果,该DDS信号发生系统是成功的。可以进行基本的正弦波,三角波和方波型号的产生。还可以根据改变频率控制字的值来改变输出信号的频率。三种输出频率以上,满足本课设的要求。

谢辞

这次课设成功的完成了,自己有努力,更有蒋留兵老师的耐心指导和对该DDS信号发生系统的详细解析。非常感谢蒋留兵老师的耐心指导。

主要参考文献为:

[1] 罗杰。Verilog HDL与数字ASIC设计基础。武汉:华中科技大学出版社

[2]熊兴中,杨平先,吴治隆。基于Verilog HDL DDS相位累加器的一种优化设计。

四川理工学院电子与信息工程系。

相关主题
相关文档
最新文档