摘要:针对信号发生器时输出频率精度高和幅值可调的要求,采用直接数字频率合成(DDS)技术,提出一种基于FPGA的幅值、频率均可调的、高分辨率、高稳定度的信号发生器设计方案。采用AT89S52单片机为控制器,控制FPGA产生波形的数字信号,结合双数模(D/A)转换器及低通滤波器,最终实现输出信号幅值0~5 V可调,分辨率为10 bits;频率范围1 Hz~10 MHz可调,最小分辨率为1 Hz;频率稳定度优于10-4。信号参数可通过键盘进行设置,并在LCD上输出。由于FPGA的可编程性,易于对系统进行升级和优化。
关键词:FPGA;信号发生器;DDS;单片机;VHDL
直接数字频率合成(DDS)技术具有相对频带宽、频率转换时间短、频率分辨率高、输出信号相位连续、能够实现全数字自动化控制等优点,已经逐步成为高性能信号发生器的核心技术。现场可编程门阵列(FPGA)器件具有工作速度快、集成度高、可靠性好和现场可编程等优点,在现代电子设备中的应用越来越广。
本文采用DDS技术和FPGA芯片设计了一种频率可调的信号发生器,可输出正弦波、方波、三角波和锯齿波等数字信号,其频率范围广,稳定性好,精度高,系统灵活,易于升级。
1 系统总体设计
系统框图如图1所示,它由单片机控制模块、FPGA波形产生模块、幅度控制模块、数模转换(DAC)模块、低通滤波模块、键盘输入和液晶显示模块组成。FPGA模块采用DDS技术,可产生正弦波、方波、三角波或锯齿波的数字信号,经D/A转换、低通滤波后输出。其波形类型及频率大小通过单片机直接控制,输出信号幅度的控制由单片机通过幅度控制模块改变数模转换模块的参考电压来间接实现。
2 功能模块设计
2.1 FPGA模块
该模块根据MCU提供的频率控制字K及波形选择字,利用DDS技术产生波形数字信号,通过数模转换器DAC变成阶梯波,再经过低通滤波器平滑后就可以得到合成的信号波形。此模块主要由相位累加器、相位寄存器和波形查找表构成,其原理框图如图2所示。其中,fc为输入基准时钟频率,fo为输出信号频率,K、N、L分别为频率控制字、相位累加/寄存器、波形查找表和D/A转换器的字长。
图中相位累加器是核心,它主要由1个N位二进制累加器和1个由固定时钟控制的N位相位寄存器构成。相位寄存器的输出与累加器的一个输入端相连,MCU送来的频率控制字K加到累加器的另一个输入端。在每个时钟脉冲到达时,相位寄存器将其上一个时钟周期内的值送入累加器并与频率控制字K相加,其结果作为当前时钟周期的输出序列,此输出序列作为波形查找表的地址。波形查找表实质上是一个相位/幅度转换ROM电路,ROM内部存储了一个完整周期波形的相位/幅度值。相位寄存器每寻址一次波形查找表,就输出一个与相位对应的信号幅度值。频率控制字K决定了相应的相位增量,相位累加器则不断的对该相位增量进行线性累加,当累加器产生一次溢出时,就生成一个周期的DDS合成信号。
理想情况下,相位寄存器的N位全部用来寻址,这时DDS的合成频率为:
而DDS的最大输出频率由乃奎斯特采样定理决定,即fmax=fc/2。实际中DDS的最高输出频率由允许输出的杂散水平决定,一般取值为fo≤40%fc。因此,要改变DDS的输出频率,只要改变频率控制字K即可。
这里采用Altra公司的FPGA器件EP1C3T144C8,适合中规模应用,该模块设计由VHDL实现,后级采用10位D/A输出。为便于频率调节,根据式(1)和式(2),我们将输出频率分为两档(1Hz~1 MHz和1~10 MHz),并由FPGA根据键入的频率控制字自动选择。而两档输出的基准时钟fc由50 MHz晶振通过FPGA内部锁相环3分频得到(fc≈16.666 67 MHz),或者再经10倍频得到(fc≈166.666 7 MHz)。若相位累加器字长N为24位,频率控制字K为20位二进制数,则两档输出的最高频率分别为:
可见,即使在输出最高频率时,也能保证每周期波形有16个点,从而有效保证了输出信号波形的逼真度。
将波形数据存储在波形ROM中的方案有2种:一种是在一个完整周期内进行采样,然后将采样值依次存于ROM单元中,这个方案的优点是思路清晰,实现简单;另一种方案是根据周期信号波形的对称性,只对其在1/2或1/4周期上采样并存储,因此可以节省存储空间,但实现上要复杂些。为简化设计,本文采用了第一种方案。
2.2 幅度控制模块
输出信号的幅度控制是通过2片DAC芯片实现的,其电路图如图3所示。其中,第1片DAC用来将FPGA输出的波形的数字信号转换为模拟阶梯信号,幅值的调节是通过第2片DAC的输出改变第1片DAC的参考电压来实现。
DAC是本模块的核心器件,其转换速度等特性直接影响整个系统的性能。DAC器件的选择应从分辨率、转换速度、量化误差和线性度等几个方面考虑。因为本系统的工作频率较高,所以首先应选用高速DAC。其次是考虑分辨率和量化误差问题,增大DAC的位数可减小量化误差,提高分辨率。因此,本文采用的DAC器件是德州仪器公司生产的高速低功耗、10位分辨率的DAC芯片THS5651。
DAC的参考电压可通过EXTL0端来选择内部或外部。当该端口为低电平时(即:EXTL0=AGND),选择内部参考电压;当该端口为高电平时(即:EXTL0=AVDD),选择外部参考电压。只要改变参考电压的大小,就可以改变输出波形的幅值。THS5651外部参考电压范围为0~5V,因此,采用10位DAC(最小分辨率为4.88x10-2V)。图中第2片THS5651的输出接到第1片THS5651的参考电压输入端EXT10,通过单片机控制第2片THS5651输出,进而控制第1片THS5651的参考电压。
2.3 低通滤波模块
经过D/A转换后输出的阶梯波信号通常含有较多的时钟成分及较为陡峭的跃变边缘,为了减少输出波形的抖动、抑制高次谐波、取出主频fo,必须在D/A转换器的输出端接入截止频率为fc/2的低通滤波器。
2.4 键盘与显示模块
本系统需要设置并显示输出波形的类型、频率和幅值等参数。为使系统拥有一个友好、便捷、美观的用户界面,设计中采用键盘和液晶显示器作为系统的输入输出模块。键盘输入模块选用8279控制4x4阵列键盘,采用扫描方式由8279得到键盘码并由中断服务程序把数据送给单片机。此方案不用单片机扫描,占用资源少。输出模块采用HZ128-64D20汉显液晶模块,该模块自带一、二级汉字字库点阵,通过串行接口与单片机相连。用液晶显示器可以实现多级菜单,用户界面友好,操作方便。
3 系统软件设计
FPGA系统采用硬件描述语言VHDL按模块化方式进行设计,并将各模块集成于FPGA芯片中,然后通过QuartusⅡ软件开发平台对设计文件进行编译、优化、综合、布局布线和逻辑仿真,最后对FPGA芯片进行编程,实现系统的设计要求。单片机控制程序采用C语言进行设计,设计中采用了结构化和层次化的设计方法,通过按键判断程序选择进入不同的模式:波形选择、频率设置、幅度设置、波形参数显示4种模式和1个复位模式(图中省略)。在不同的模式下分别执行相应的子程序,最后分别向FPGA写入相应的控制字。该系统程序流程如图4所示。
4 系统测试
由键盘设置输出信号波形的类型、频率和幅度等参数,在50Ω负载下,用示波器测试输出波形的频率和幅值,并与设置值进行比较。由于在FPGA中经分/倍频后的结果与计算时钟存在一定误差,因此,需通过软件进行补偿修正,以便使频率误差降到最低。对于信号幅度的控制,在程序中也采用软件进行补偿修正。经过多次测试和反复改进,最终实现了如下技术指标:
1)输出波形正弦波、方波、三角波、锯齿波。通过对波形查找表ROM的修改,可实现其它波形,易于系统升级。
2)输出频率1 Hz~10MHz。
3)频率分辨率 1Hz~1MHz时为1Hz。1~10MHz时为10Hz。
4)频率稳定度优于10-4。
5)输出电压0~5V。
6)幅度分辨率10bits。
5 结束语
本文给出了一种基于FPGA和DDS技术的信号发生器设计方案,解决了输出信号幅值可调的问题,能产生较为理想的正弦波、方波、三角波和锯齿波等信号波形,波形平滑,无明显毛刺,响应速度快,频率范围广,稳定性好,幅值调节精度高。系统实现简单、灵活,易于升级,实用性较强,具有较好的应用前景。
上一篇:三态门逻辑功能的Multisim仿真方案
下一篇:全加器功能及应用的仿真设计分析
推荐阅读最新更新时间:2024-05-02 21:35