详细程序及原理参考原文:
FPGA学习(二)——实现AM信号调制与解调 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/37203478
- 使用的软件是Vivado 2016.4
- 实验室板卡是Nexys Video
一、写在前面
仿真可实现,VIO可用。
1.本篇记录的是如何进行AM信号的调制与解调,
其主要步骤包括:
- 分频器(Frequency divider)的产生
- 载波信号(Carrier signal)的产生
- 调制信号(Modulated signal)的产生
- 含直流分量(DC component)的调制信号
- 已调信号(Modulated signal)的产生
- 相干解调(Coherent demodulation)
- 滤除直流分量(DC component)
- 中间还有截位操作
2.关于截位:
在FPGA中,随着信号处理的层次加深,对信号进行乘、累加、滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源就越多,但位宽超过一定范围后,位宽的增宽并不会对处理精度带来显著的改善,这时就需要对信号进行截位。
3.关于滤波器设计
两种方法:
一是相干解调时需要低通滤波器;
二是可采用对已调信号取绝对值的方式(包络检波)也需要低通滤波器。
二、对过程的要求:
(1)载波信号频率范围:1M-10MHz,分辨率0.01MHz;
(2)调制信号为单频正弦波信号,频率范围:1kHz-10kHz,分辨率0.01kHz;
(3)调制深度0-1.0,步进0.1,精度优于5%;
(4)调制信号和解调信号位宽为___8___位,其他信号位宽自定义,解调误差优于1%(可利用MATLAB对数据进行验证);
三、原理分析
1.调制与解调原理
//已调信号输出:out=Add_1_out*dds_zb_out
//含直流分量的调制信号:Add_1_out=mult_1_out+1280(8位调制信号的幅值)
//可控的直流分量输出:mult_1_out=dds_tz_out*ma(Ma/10为调制深度)
//载波信号输出:DDS>>dds_compiler_zb>>dds_zb_out>>频率控制字fre_word_zb,16bits,输出位宽8bits
//无直流分量的调制信号输出:DDS>>dds_compiler_tz>>dds_tz_out>>频率控制字fre_word_tz,16bits,输出位宽8bits
2.根据要求设计信号参数
(1)载波信号频率范围:1M-10MHz,分辨率0.01MHz
DDS工作时钟选择40MHz,dds_zb_out:频率控制字16位,输出8位,原理见:
子木:FPGA学习(一)——产生频率可控的正弦波zhuanlan.zhihu.com
(2)调制信号为单频正弦波信号,频率范围:1kHz-10kHz,分辨率0.01kHz
DDS工作时钟选择10MHz,dds_tz_out:频率控制字为16位,