FPGA数字信号处理(1)-AM调制的实现
一:前言
- 本内容分享为本人自学经历。受限于作者水平可能有不准确的地方。欢迎诸位批评指正。
- 分享的文章需要一些基本的FPGA开发基础
二:概述
这部分简单,但却是最最重要的,把这部分看懂,所有的程序也就明白了。
1. AM信号:
(A+ma*cos(w0t))*cos(wct)
看到这个式子,首先肯定要产生两个频率不同的余弦波cos(w0t),cos(wct)。立马想到调用系统自带的DDS IP核来实现,这是最简单的方法。当然你也可以利用ROM配合加法器自己写一个。这里就不讲了。
产生两个余弦波后,再来两个乘法器(虽然可以直接使用 * 这个符号。但是关于这种方式实现和IP核实现有什么区别。各位读者自行百度)
2.AM信号生成中的注意点
首先看一下调制深度的问题。关于本部分的叙述。大家可以找找教材。调制深度通常为已调波的最大振幅与最小振幅之差对载波最大振幅与最小振幅之和的比。可以算出调制深度就是ma/A。本设计中A为1,调制深度就是ma,其实只要A的值和后面的余弦波的最大值是相同的,调制深度就会为ma,为0~1之间。但是问题在于在FPGA上实现就有一些问题了。关于浮点和定点我在这里就不献丑了大家自行百度。
在本设计中DDS生成的信号是有符号的8bit数据。那么这里先假设A为127。再来再算一下调制深度。这时包络最大值为127+ma127,最小值为127-ma