基于DDS任意波形发生器的实现与设计 王葵军
基于DDS任意波形发生器的实现与设计
王葵军
【摘要】 详细阐述了直接数字频率合成器的原理与设计,利用Verilog HDL语言实现了DDS功能,在SignalTap II中完成了验证,最终在Cyclone II EP2C8Q208C器件上实现。 关 键 词 SignalTap II;DDS;FPGA
0 引言
DDS技术是一种新的频率合成技术的一次,最早由J.Tierney、C.M.Tader等人于1971年提出。DDS是Direct Digital Frequency Synthesis的简称,即直接数字频率合成技术。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛应用于电子仪器领域、也是无线通信系统实现设备全数字化的一个关键技术[1]。本文采用Verilog HDL设计的高精度DDS任意波形发生器,已成功应用于所做的课题中。
1 DDS原理
直接数字频率合成器(DDS)具有超高速的频率转换时间,极高的频率分辨率和较低的相位噪声,在频率改变与调频时,DDS 能够保持相位的连续,因此很容易实现频率、相位和幅度调制。此外,DDS 技术大部分是基于数字电路技术的,具有可编程控制的突出优点。因此这种信号产生技术得到了越来越广泛的应用,很多厂家已经生产出DDS 专用芯片,这种器件成为当今电子系统及设备中频率源的首选器件[2]。
DDS主要由相位累加器、波形存储器、D/A转换、低通滤波器等组成。在系统时钟的驱动下,相位累加器对频率控制字K进行线性累加,得到与相位对应的存储器地址,使之输出相应的幅度,经过模数转换器得到相应的阶梯波形,最后经过低通滤波器对其进行平滑滤波,得到所需要的波形。系统框图如图1所示。
K 相位累加器 D/A转换器foutfclk
图1 DDS系统框图
在图1中,fout为输出频率,fclk为系统工作频率,即参考频率。输出与输入的关系可由式(1)给出:
fout=
K
fclk (1) 2N
fclk
(2) N2
其中,N为相位累加器的位数,K为频率控制字。由式(1)我们可以得到频率分辨率为:
Δf=
对于输出的精度,DDS设计的核心是相位累加器,它由一个加法器和一个相位寄存器组成,每来一个时钟,相位寄存器以步长增加,相位寄存器的输出与相位控制字相加,然后输入到波形存储器查询表地址上。波形存储器查询表包含一个周期任意波形的数字幅度信息,每个地址对应任意波形中 0~360°范围的一个相位点。查询表把输入的地址相位信息映射成任意波形幅度的数字量信号,驱动 DAC,输出模拟量。
由式(1)可知,频率控制字与输出信号频率成正比。由取样定理,所产生的信号频率不能超过时钟频率的一半,在实际运用中,为了保证信号的输出质量,输出频率不要高于时钟频率的33%,以避免混叠或谐波落入有用输出频带内[3,4]。
第 1 页 共 5 页
基于DDS任意波形发生器的实现与设计 王葵军
2 Verilog 模块实现
本文设计的相位累加器20位,频率控制字为8位,为保证输出精度,取相位累加器的高12位,采用自顶向下下的方式进行设计,顶层模块如下,生成的电路模块如图2:
module DDS(CLK,K,Rst,Out); input CLK; input[7:0] K; input Rst; output[7:0] Out; wire[19:0] Temp1,Temp2; Adder U1(.CLK(CLK),.Rst(Rst),.K(K),.SignalOut(Temp1)); Reg U2(.CLK(CLK),.Rst(Rst),.Datain(Temp1),.Dataout(Temp2)); Sin_Rom U3(.address(Temp2[11:4]),.clock(CLK),.q(Out)); //FangBo_Rom U3(.address(Temp2[11:4]),.clock(CLK),.q(Out));方波 //Sawtooth U3(.address(Temp2[11:4]),.clock(CLK),.q(Out));锯齿波
//Tri_Rom U4(.address(Temp2[11:4]),.clock(CLK),.q(Out));三角波 endmodule
相位累加器模块:
module Adder(CLK,Rst,K,SignalOut); input CLK; input Rst; input[7:0] K;
SignalOut; output[19:0]
reg[19:0] SignalOut;
always @(posedge CLK or negedge Rst) begin
if(!Rst)
SignalOut<=0; else
SignalOut<=SignalOut+K; end endmodule 寄存器模块:
module Reg(CLK,Rst,Datain,Dataout); input CLK; input Rst; input[19:0] Datain;
Dataout; output[19:0]
reg[19:0] Dataout;
or negedge Rst) always @(posedge CLK
begin if(!Rst)
Dataout<=0; else
Dataout<=Datain;
第 2 页 共 5 页
基于DDS任意波形发生器的实现与设计 王葵军
end endmodule
RSTINPUTVCCRegAdderCLKIN[3..0]INPUTVCCINPUTVCCSawtoothDataout[7..0]CLKRstSignalOut[11..0]Datain[11..0]inst1address[7..0]clockinst2q[7..0]OUTPUTSawtooth[7..0]CLKRstK[3..0]instFangBo_Romaddress[7..0]clockinst5q[0]OUTPUTFangboSin_Romaddress[7..0]clockinst6q[7..0]OUTPUTSIN[7..0]Tri_Romaddress[7..0]clockinst7q[7..0]OUTPUTTri[7..0] 图2 DDS电路模块
波形存储器采用LPM_ROM进行定制。利用MegaWizard Plug-In Manager定制lpm_rom宏功能块,将波形数据加载于此ROM中。QuartusⅡ能接受的LPM_ROM中的初始化数据文件的格式有2种:Memory Initialization File格式和Hexadecimal File(.hex)格式[5]。实际应用中只要使用其中一种格式的文件即可,利用Matlab语言编程对波形函数进行采样生成初始化数据文件。
3 仿真实验
本设计在Altera公司的QuartuslI 8.0环境下编译,采用自上而下的设计方法,即先从系统总体要求出发,自上而下逐步将设计内容细化,最后完成系统硬件的整体设计。在将设计文件加载到FPGA之前,为了验证设计的正确性,必须对设计进行全面充分的仿真。可以编写Testbench在Modelsim 进行仿真。在QuartuslI 8.0环境下,进行时序仿真得到的结果如图3所示。
图3 Quartus II 时序仿真结果
得到的结果时序结果并不直观,将仿真生成的波形文件*.vwf另存为*.tbl格式文件。以数据文件输入的方式将此*.tbl文件中的QuartusⅡ仿真输出信号的数值导入Matlab中,进行波形仿真验证,得到如图4所示波形。得到的波形有很多毛刺,可以在后端对其进行滤波设计。
250200Y/幅值1501005000500100015002000
第 3 页 共 5 页
基于DDS任意波形发生器的实现与设计 王葵军
图4 MATLAB仿真波形
在完成设计并编译工程后,建立SignalTap II (.stp)文件并加入工程、配置STP文件、编译并下载设计到FPGA,在Quartus II软件中显示被测信号的波形如下图5所示。
图5 自上而下:正弦波、方波波形、三角波形、锯齿波形图
4 结论
SignalTap II 嵌入式逻辑分析器,提供了芯片测试的一个很好的途径。通过SignalTap II 测试芯片无需外接专用仪器,它在器件内部捕获节点进行分析和判断系统故障。通过对Cyclone EP2C8Q208C器件的实验证实该测试手段大大提高系统的调试能力,具有很好的效果。
将仿真后的DDS工程下载到FPGA器件Cyclone EP2C8Q208C中,进行电路的硬件调试,最终符合我们所需的频率源。基于Verilog HDL的直接数字频率合成器能够实现比较复杂的调频、调相和调幅等功能,具有良好的实用性。DDS 技术大部分是基于数字电路技术的,具有可编程控制的突出优点。
参 考 文 献
[1] 田耘,徐文波等.无线通信FPGA设计[M].北京:电子工业出版,2007.
[2] 徐洋,黄智宇等.基于Verilog HDL的FPGA设计与工程应用[M].北京:人民邮电出版社,2009. [3] 顾宝良. 通信电子线路[M].北京:电子工业出版,2002.
[4] J.Bhasker. A Verilog HDL Primer[M].北京:北京航空航天大学,2008. [5] 王彦.基于FPGA的工程设计与应用[M].北京:电子工业出版,2007.
第 4 页 共 5 页
基于DDS任意波形发生器的实现与设计 王葵军
Implementation and Design of Arbitrary Waveform Generator Based on
Direct Digital Synthesize
Wang Kuijun
Abstract Elaborated on direct digital frequency synthesizer theory and design, using Verilog Hardware Description Language implemented the Direct Digital Synthesize functions. In SignalTap II completed the validation and downloaded to Cyclone II EP2C8Q208C devices.
Key Words SignalTap II; Direct Digital Synthesize; Field Programmable Gate Array
希望大家多多指点,呵呵
作者联系方式:
MSN: phdwong@hotmail.com QQ:381312581
風華葵軍—用芯成就未來
第 5 页 共 5 页