摘 要: 介绍了一种以FPGA和单片机为控制核心,基于调制原理配合使用DDS专用芯片AD9851,实现了一种多功能正弦信号发生器。实现了在30 Hz~12 MHz频率范围内正弦信号的无失真输出,且在输出端接50 Ω功率电阻的条件下,输出电压峰峰值在5.8 V~6 V范围内。系统还具有AM、FM、ASK、FSK、PSK调制的功能,整体工作稳定,界面友好,操作简单。
关键词: FPGA;单片机;DDS;调制
在通信、广播、电视系统中,都需要射频发射,即载波,把音频、视频信号或脉冲信号运载出去,这就需要能产生高频信号的振荡器。正弦波振荡电路在各个科学技术部门的应用是十分广泛的。在工业、农业、生物医学等领域(如高频感应加热、熔炼、淬火,超声波焊接、超声诊断、核磁共振成像等)都需要功率或大或小、频率或高或低的振荡器。
本系统以直接数字合成(DDS)芯片为信号发生核心,以单片机为控制和人机界面核心,使用FPGA作为控制核心,组成一个具有多种信号输出能力的信号发生电路。可输出频率可调的正弦信号、调频信号、调幅信号和数字调制输出信号等,具有广泛的应用前景[1-2]。
1 系统总体设计方案和工作原理
系统整体框图如图1。单片机接收用户的模式选择和参数设置值并经过程序处理后送入FPGA。在FPGA中预先构建了实现各种功能的功能模块。DDS控制模块用于控制DDS芯片AD9851产生相应频率的无调制正弦波及调频正弦波;DAC7611控制模块用于控制DAC7611数模转换器并为DAC904数模转换器提供基准电压;二进制基带码控制模块用于将用户输入的二进制基带码转换为串行数据,便于后续处理;数字调制控制模块用于判断用户选择的数字调制方式,并结合二进制基带码模块输出的数据,输出不同的相位值给ROM中的正弦波表,实现输出数字调制信号;DAC904用于D/A转换输出数字调制信号。
2 FPGA内部控制模块及其实现
2.1 DDS控制模块
AD9851是ADI公司的专用DDS芯片,采用CMOS生产的具有高集成度的直接数字合成器,内置32 bit频率累加器、10 bit高速DAC、高速比较器和可软件选通的时钟6倍频电路。外接参考频率源时,AD9851可以产生频谱纯净、频率和相位都可控且稳定度非常高的正弦波。
相位累加器的位数为N,相位控制字的值为FN,频率控制字的位数为M,频率控制字的值为FM,Fc为AD9851内部时钟频率。此时,最终合成信号的频率和相位可由式(1)和式(2)来决定:
FPGA中DDS控制模块的功能主要是对AD9851写控制字,使其输出正弦、AM、FSK、FM波。功能的切换通过写入不同的控制字得以实现,频率数据由P0、nWR、CS、Addr等微机标准接口写入。对AD9851的操作由FQD、WCK、Dout、RST输出口与芯片数字接口实现。实现FM时,需要在中心频率周围产生5 kHz/10 kHz的频偏,这要求模块输出的频率控制字要随调制信号幅度变化而变化,在模块的输入端给出了当前的频率控制字增量,模块读入这个增量与中心频率控制字相加,即可得到当前频率控制字,也即实现了FM。
2.2 幅度调制模块
实际控制调幅度AM时,保持载波信号幅度不变,控制调制信号的幅度,就可以实现AM在10%~100%之间调节。通过控制DAC7611输出信号幅度,即控制DAC904的参考电压,达到控制调制度的效果。可以通过一个模拟乘法器AD835电路实现调幅信号,且载波信号频率可以做得很高,也比较容易实现。
2.3 频率调制模块
在软件实现时,根据调频信号变化的规律采用数字方式控制DDS正弦波发生器的频率控制字,存在一个单独的ROM模块中,直接作用于输出波形的频率值,即实现了对信号源频率的调制。
由单片机输入中心频率和最大频偏后,启动数字FM,FPGA内部时钟单元将产生一个128 kHz的时钟,用于累加8 128 bit正弦波表地址,得出相应正弦幅度量化值。该幅度值一方面作为输出信号输出至外部D/A的数据端口,用于恢复正弦信号;另一方面作为频率控制字的计算依据,根据相应公式计算出频率控制字。写时序控制器在时钟的作用下将生成的频率控制字写到DDS芯片AD9851内,从而产生一个频率与正弦信号幅度成比例的调频信号。
2.4 数字调制模块
在具体的编程实现过程中,在FPGA内设置二进制基带码模块和数字调制控制模块。通过二进制基带码模块,将键盘输入的0、1值转换为串行数据,便于后续处理。通过数字调制控制模块判断用户选择的方式为ASK、PSK还是FSK,结合二进制基带码模块输出的数据,输出不同的相位值给ROM中的正弦波表,实现输出数字调制信号。
对于ASK,将载波信号与二进制基带信号相乘;对于PSK,用二进制基带信号控制载波的相位,当二进制基带信号的上升沿(下降沿)到来时,载波反相,其他时间相位不变,得到的输出经D/A转换后就是PSK信号,对于FSK,0、1各代表不同的频率值,二进制基带信号控制频率控制字。
假设载波固定频率为100 kHz,基带序列码速率为10 kb/s,当实现2ASK时,如果基带序列为1码,应输出5个正弦载波,为0则应输出零电平。可将基带序列的速率控制转为控制当序列符号为1时能输出正弦波的数量,而载波的频率是通过向自制DDS信号源写入载波频率控制字实现的。因此,当确定载波频率时,从单片机输入一个数字x表示当序列符号为1时能输出正弦波的数量,则可确定基带序列码的速率。如图2所示,数字x通过din[7..0]输入并存储到了模块内部一个寄存器中,内部一个计数器从0开始计数,每当计满x-1,计数器清零,并且使内部一个标志位flag取反。当flag为1时,输出端口adr-out[9..0]输出一定规律的连续地址查表RAM-1 024 B存储器(里面存的是正弦波表),控制输出正弦载波;当已输出x个时,flag取反为0,则控制输出一个固定地址到RAM-1 024 B,这个固定地址里存为0值,则此时输出0电平。循环下去即可实现2ASK调制。同理,当选择输出2PSK时,每当flag取反一次则将输出的正弦载波反相一次,则就实现了2PSK调制。当选择输出2FSK时,每当flag取反一次,则分别将两个频率控制字送入自制DDS信号源,从而控制输出了两个频率相互变化的2FSK输出。
3 电路调试及仿真
电路调试采用计算机仿真和硬件调试相结合的方式,以QuartusII 5.0为设计环境,用Verilog HDL硬件描述语言编程,完成各个功能模块的设计,并对设计好的各个模块进行仿真测试,再将各个模块相互连接。分配好FPGA的各个引脚后,对文件编译并将生成文件下载到FPGA中,完成设计。
3.1 软件仿真
在FPGA内编译后,仿真时序如图3所示。
②2ASK波形记录如图7所示。
③2FSK波形记录如图8所示。
4 系统软件设计
本机用户界面设计采用多键切换方式,即每个工作模式都由一个对应的按键去触发,触发后再设置输出频率、调制度等参数,单片机根据用户输入的参数对硬件进行相应设置,主要包括写频率控制字、写幅度控制字等。软件流程如图9所示。
本文介绍的多功能正弦信号发生器可以输出频率可调的正弦波以及调制度可调的AM、FM、FSK、PSK、ASK波。实验证明,使用这种方法产生的波形具有稳定及高精度的特点,有一定的开发和生产价值。
参考文献
[1] 夏新凡,陈晓君.正弦信号发生器的设计[J].电子设计工程,2009(5):13-15.
[2] 郝小江,罗彪.基于FPGA的函数信号发生器[J].电测与仪表,2008(5):49-51.
[3] 黄根春,陈小桥,张望先.电子设计教程[M].北京:电子工业出版社,2007.