基于FPGA的DDS信号发生器设计
扫描二维码
随时随地手机看文章
摘要:利用FPGA芯片及D/A转换器,采用直接数字频率合成技术,设计并实现了一个频率、幅值可调的信号发生器,同时阐述了该信号发生器的工作原理、电路结构及设计思路。经过电路调试,输出波形达到技术要求,证明了该信号发生器的有效性和可靠性。
0 引言
信号发生器作为一种基本电子设备广泛的应用于教学、科研中,因此从理论到工程对信号的发生进行深入研究,有着积极的意义。随着可编程逻辑器件(FPGA)的不断发展,直接频率合成(DDS)技术应用的愈加成熟,利用DDS原理在FPGA平台上开发高性能的多种波形信号发生器与基于DDS芯片的信号发生器相比,成本更低,操作更加灵活,而且还能根据要求在线更新配置,系统开发趋于软件化、自定义化。本文研究了基于FPGA的DDS信号发生器设计,实现了满足预定指标的多波形输出。可产生不同频率、幅度的正弦波、三角波、矩形波信号,仿真和实测结果均证实了其灵活性和可靠性。
1 函数信号发生器的原理和设计
1.1 函数信号发生器的结构
图1为DDS信号发生器系统结构框图。系统以FPGA芯片为信息处理核心,主要完成数字频率合成、D/A转换、选择滤波、功率放大、LCD显示等功能。
频率控制字M送入32位的累加器进行累加运算,截取32位累加器的第24到第30位作为ROM的地址,ROM在累加器的控制下,输出8位的数字波形数据,经过DAC0832转换为模拟量,因为DAC0832输出的是电流的形式,所以通过电压转电流电路转换为电压形式的模拟波形,但其中还含有大量的高频成分,为了输出频率纯净的信号波形,再通过一个二阶的有源低通滤波器。最后为了调节输出信号的峰峰值,再引入一个幅度调节电路。
根据直接数字频率合成理论将系统的频率分辨率及输出频率写为:
其中fclk和N为系统时钟和位宽,M为频率控制字,利用信号相位与时间成线性关系的特性,直接对所需信号进行抽样、量化和映射,输出频率可调的信号波形。每个时钟周期内,由频率控制字M决定相位增量的大小以控制输出频率。由式子可以看出和N也关系着D/A转换的频率,位宽N越大、时钟fclk越低,分辨率越高,但系统时钟变低,也会
降低最大的输出频率,fclk以及一个周期波形的采样数值的输出个数。
1.2 数模转换电路
数模转换电路采用DAC0832,ADC0832是8位分辨率的倒T型电阻网络型D/A转换器。根据对DAC0832的数据锁存器和DAC寄存器的不同控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本文使用的是直通的工作方式。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832转换结果以电流形式输出。为了得到模拟电压信号,需要通过一个高输入阻抗的线性运算放大器。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。为了将DAC0832转换得到的模拟电流值转换为模拟的电压值,在ADC0832的输出端接了由运放NE5532构成的电流转电压电路,如图3所示。
NE5532是高性能低噪声双运算放大器(双运放)集成电路。与很多标准运放相似,但它具有更好的噪声性能,优良的输出驱动能力及相当高的小信号带宽,电源电压范围大等特点。因此很适合应用在高品质和专业音响设备、仪器、控制电路及电话通道放大器。
DAC0832的转换电流输出为:
1.3 二阶有源低通滤波器
二阶有源低通滤波器也采用运放NE5532,其截止频率设计为6KHz,函数信号发生器的输出最高频率是20KHz,根据实际调试中出现的情况:将低通滤波器的截止频率设计为6KHz时,输出的波形频率纯净,如果提高低通滤波器的截止频率,输出波形就会有高频成分,如果降低截止频率就会降低输出波形的最高频率。二阶有源低通滤波器如图4所示。
其特征频率为:
将R=1KΩ,C=10nF带入式5计算得f0=16KHz。二阶低通滤波器的通带截止频率为:fp=0.37fo,将带入计算得截止频率f0=16KHz,通带放大倍数为1。
为了实现输出波形的幅度可调,在函数信号发生器的输出端连接一个电压跟随器,并用一个滑动变阻器调节输出的波形峰值。幅度调接电路由运放NE5532构成,如图5所示。
2 DDS的Verilog实现
DDS程序流程图如图6所示,32位累加器对输出的频率控制字进行不断的累加,取32位累加器的的第24到第30位作为ROM的地址,根据32位累加器的第32位和第31位的值对ROM地址和ROM输出数据做如下处理:
1)第32位等于0且第31位等于0,则ROM地址和ROM输出数据不变;
2)第32位等于0且第31位等于1,则ROM地址取反但ROM输出数据不变;
3)第32位等于1且第31位等于0,则ROM地址不变但ROM输出数据取反;
4)第32位等于0且第31位等于0,则ROM地址取反和ROM输出数据也取反。
DDS输出正弦波的时序仿真波形如图7所示。第一个信号是100MHz系统时钟clk,第二个信号是复位信号rst_n,第三个信号是累加器add,第四个信号是累加器的高8位即ROM地址,第六个信号是ROM输出即波形数据。
3 硬件调试
该信号发生器可以输出一定功率的幅度、频率可调的正弦波、方波、三角波信号。该信号发生器输出波形的频率分辨率为1Hz、输出频率范围:1Hz-20kHz,输出电压范围:50mV-1V。
由于低通滤波器的电容对输出三角波和方波的充放电影响,输出三角波和方波的频率越高,影响越严重,导致输出的波形失真。经过测量,三角波的输出不失真的频率为5KHz左右,输出方波不失真的频率为2KHz左右。由于DDS采用全数字结构,不可避免地引入了散杂。其来源主要有三个:相位累加器相位舍入误差造成的散杂;幅度量化误差造成的散杂和DAC非理想特性造成的散杂。
函数信号发生器输出频率为1.3KHz的正弦波如图8所示,函数信号发生器输出频率为1.2KHz的三角波如图9所示,函数信号发生器输出频率为1.2KHz的方波如图10所示。
4 结论
本文介绍了基于FPGA的DDS信号发生器的设计,描述了其电路结构、工作原理、设计思路及实现方法,并按照技术要求进行计算、编程。经过仿真、电路测试,结果表明输出波形达到了设计指标的要求,可以作为稳定的信号源使用,也对DDS的原理和实现有了更深的了解和认识。