新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于MCU/FPGA的多功能正弦信号发生器的设计

基于MCU/FPGA的多功能正弦信号发生器的设计

作者:时间:2012-04-09来源:网络收藏

在通信、广播、电视系统中,都需要射频发射,即载波,把音频、视频信号或脉冲信号运载出去,这就需要能产生高频信号的振荡器。正弦波振荡电路在各个科学技术部门的应用是十分广泛的。在工业、农业、生物医学等领域(如高频感应加热、熔炼、淬火,超声波焊接、超声诊断、核磁共振成像等)都需要功率或大或小、频率或高或低的振荡器。

本文引用地址:http://www.eepw.com.cn/article/190535.htm

本系统以直接数字合成(DDS)芯片为信号发生核心,以单片机为控制和人机界面核心,使用作为控制核心,组成一个具有多种信号输出能力的信号发生电路。可输出频率可调的正弦信号、调频信号、调幅信号和数字调制输出信号等,具有广泛的应用前景[1-2]。

1 系统总体设计方案和工作原理

系统整体框图如图1。单片机接收用户的模式选择和参数设置值并经过程序处理后送入。在中预先构建了实现各种功能的功能模块。DDS控制模块用于控制DDS芯片AD9851产生相应频率的无调制正弦波及调频正弦波;DAC7611控制模块用于控制DAC7611数模转换器并为DAC904数模转换器提供基准电压;二进制基带码控制模块用于将用户输入的二进制基带码转换为串行数据,便于后续处理;数字调制控制模块用于判断用户选择的数字调制方式,并结合二进制基带码模块输出的数据,输出不同的相位值给ROM中的正弦波表,实现输出数字调制信号;DAC904用于D/A转换输出数字调制信号。

6.jpg

2 FPGA内部控制模块及其实现

2.1 DDS控制模块

AD9851是ADI公司的专用DDS芯片,采用CMOS生产的具有高集成度的直接数字合成器,内置32 bit频率累加器、10 bit高速DAC、高速比较器和可软件选通的时钟6倍频电路。外接参考频率源时,AD9851可以产生频谱纯净、频率和相位都可控且稳定度非常高的正弦波。

相位累加器的位数为N,相位控制字的值为FN,频率控制字的位数为M,频率控制字的值为FM,Fc为AD9851内部时钟频率。此时,最终合成信号的频率和相位可由式(1)和式(2)来决定:

7.jpg

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输出。

8.jpg

模拟信号相关文章:什么是模拟信号


fpga相关文章:fpga是什么


负离子发生器相关文章:负离子发生器原理
尘埃粒子计数器相关文章:尘埃粒子计数器原理
离子色谱仪相关文章:离子色谱仪原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭