基于FPGA的DDS信号发生器的设计 .pdf
基于FPGA的DDS信号发生器的设计
【摘要】本文介绍了基于FPGA和MCU技术的直接数字合成信号发生器的
设计,详细分析了其主要模块的系统结构、软硬件设计和具体实现电路。
【关键词】信号发生器;DDS;FPGA
1.引言
随着数字集成电路和微电子技术的发展,直接数字合成技术(DirectDigital
Synthesis)简称DDS将先进的数字处理技术与方法引入信号合成领域,优越的
性能和突出的特点使其成为现代频率合成技术中的佼佼者。DDS器件采用了高
速数字电路和高速D/A转换技术,具备了频率转换时间短、相对带宽宽、频率
分辨率高、输出相位连续和相位可快速程控切换等优点,可以实现对信号的全数
字式调制。本文给出了基于FPGA和MCU技术的直接数字合成信号发生器的设
计,实现了满足预定指标的多频率波形输出。
2.DDS基本原理
DDS建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值
数字化后存人存储器作为查找表。然后通过查表读取数据,再经D/A转换器转
换为模拟量,将保存的波形重新合成出来。DDS基本原理框图如图1所示。
图1DDS基本原理框图
基本功能包括:接收频率控制字进行相位累加;使用带反馈的移位寄存器产
生随机序列;把随机序列加到相位地址码或幅度值:对相位累加值进行相幅转换;
把读出的幅度值进行D/A转换并调节其幅度;对波形进行滤波后放大输出波形。
3.DDS信号的产生
下面就FPGA实现DDS正弦波信号为例,对其键技术进行分析。
3.1采样点的实现
对一个幅度为1的正弦波的一个周期进行1024点采样,用Matlab计算得到
每一点对应的幅度值,然后量化成8位二进制数据存放在ROM中。用MATLAB
语言编写的正弦函数数据采集程序如下:
CLEARTIC;
T=2*PI/1024;
t=[0:T:2*pi];
y=255*sinz(t);
round(y);
3.2数据ROM制作
有了上面的采样点接下去就可以结合QUARTUS中ROM的制作来设计一个
存储1024个采样点的存储器,下面是实现的部分Verilog程序。
modulerom(
address,
clock,
q);
altsyncramaltsyncram_component(
.clock0(clock),
.address_a(address),
.q_a(sub_wire0)
//synopsystranslate_off
,
.aclr0(),
.aclr1(),
.address_b(),
.addressstall_a(),
.addressstall_b(),
.byteena_a(),
.byteena_b(),
.clock1(),
.clocken0(),
.clocken1(),
.data_a(),
.data_b(),
.q_b(),
.rden_b(),
.wren_a(),
.wren_b()
//synopsystranslate_on
);
defparam
3.3PLL锁相环倍频的实现
在本次设计中选择Cyclone芯片它带有一个PLL可以将系统时钟频率被倍
频到120M。
在FPGA中使用其LPM库,可以实现波形的任意分频和移相。根据要求设
计锁相环倍频到120MHZ,其最高频率不能太高,这是由外部运算放大器
THS4001所能转换的速率以及FPGA在综合的时候所能承受的最高频率所约束。
在QU