简易AM信号调制的FPGA实现过程简单讲解

首先,为什么是am信号的调制过程,是因为在短时间情况下,am信号的实现相对简单,而且上述提到的几个模块都可以得到使用和验证。
因为fpga的价格因素,做课设/比赛使用最多的还是altera的cyclone系列板。所以,本文使用quartus ii 13.1 作为verilog代码综合实现工具。
am信号调制过程就不做过多介绍了,简单来说,就是基带信号和一个直流信号相加,然后与载波相乘。那么,在实现过程中,做了些许改变,先让基带信号与载波相乘,然后将截位后的信号与载波相加。如果想要实现更精细的am信号调制(变更调制深度等参数),可以修改这个地方的先后顺序。
am公式表达如下:
nco(dds)的本质是rom表,rom表存储着正弦波的波形数据,相位精度代表波形数据的多少。根据phi_inc_i累加地址,rom根据地址输出波形数据,最后数据计算如下。
然后让基带和载波信号相乘,使用lpm_mult ip核,设置好位宽,数据类型设为“signed”,设置流水线(增加clock),延迟设为1,便于后续通过时序检查。
相乘输出信号位宽为32位,保险起见我们只截取最高位的符号位,再截取低位的数据。但是经过上板测试和仿真,符号位实际上有很多位。当然,这部分可以将符号位进行优化,或者设置一个模块,根据输入的参数输出不一样的截位信号,相当于在调整调制深度。
同时,将载波信号延迟一个周期,与乘法器延迟一周期的信号做好时序对齐,然后经过lpm_add_sub ip核的加法运算;同样,lpm_add_sub ip核设置好输入信号位宽,数据类型设为“signed”,设置流水线,延迟设为1。
最后输出的信号就可以经过高速dac输出。整个调制过程就结束了。
仿真结果:
最后思考,可以在加法器和乘法器增加一个enable端口,ip核可以增加这个输入信号;如果先加再乘,由于直流信号一般不会变动,使能信号可以等待每次低速adc或低速nco数值更新再拉高一次;乘法器也可以使用使能信号控制,这样的话性能可能没有变化,功耗或许可降低些。
此外,使用vcs仿真nco的nco.vo文件时,一直遇到一个问题,报错如下:
大概是说nco生成的4个hex文件有问题,但是使用modelsim就没这个问题了。

基于亚马逊无人机送货系统
u-blox与英伟达无人驾驶生态系统达成合作伙伴关系
星河亮点推出5G毫米波综测仪原型系统,符合3GPP标准规范要求
超频三收购圣比和49.5%股权 进军锂电池领域
检修中细漆包线头上锡小经验,Enameled wire
简易AM信号调制的FPGA实现过程简单讲解
关于智能大棚控制系统,它是由哪些设备组成的
树莓派GPIO入门08-使用74HC595芯片驱动数码管(二)
美光斥资30亿美元扩建汽车芯片工厂!
传英特尔与风投合作组建20亿美元投资基金
魅族pro7什么时候上市?魅族pro7最新消息:魅族PRO 7本月发布无悬念,副屏竟然可玩游戏
三相异步电机和单相异步电机之间怎么区别?
论绿色变换的发展
第一代GalaxyWatchActive正在接受一系列更新
千元内有什么性价比蓝牙耳机?盘点几款平价好用的蓝牙耳机
iphone xr分辨率真的很低?还是你愿意将就?
区块链钱包的基本类型和特点以及工作原理介绍
三星Galaxy C8正式开售,双摄、面部识别打造超酷中端机
OLED关键技术及特征说明
太阳能电池板利用理想二极管给12V电池充电