一、前言
1.1. 平台
- Vivado 2017.4;
- Matlab 2016b;
1.2. 参数
- 载波频率:5M;
- 频率偏移:-75KHz ~ 75KHz;
- 系统时钟:100M;
- AD位宽:12位;
二、关于FM调制
简单来说就是:幅度改变频率。
与之相对应的是AM:幅度改变幅度。
怎么理解呢?对FM来说:调制信号的幅度大小决定了已调信号的频率。当调制信号的幅度改变时,已调信号的频率也会随之改变,而且只有频率会改变,幅度是保持不变的。
这里对FM调制的理论部分不过多讲述,有兴趣的可以自行上网查阅。
三、FM调制的FPGA实现
一个完整的FM调制系统主要分为以下几个部分:
- AD模块
- FM调制模块
- DA模块
其中,AD模块将模拟调制信号转换成数字调制信号。调制信号可以通过信号发生器产生。在本工程中,将在FPGA内部通过DDS产生一个正弦信号来模拟AD采样数据。FM调制模块的功能就是将调制信号变成FM已调信号。已调信号通过DA模块变成模拟信号后就可以通过天线发送出去。
3.1. 产生调制信号
调制信号是用DDS产生正弦信号来模拟实现的。DDS的实现需要用到ROM IP核,在配置ROM IP核之前需要用Matlab生成IP核所需要的.coe文件。
- 生成.coe配置文件
Matlab代码部分参考本人之前的博客:
AM调制的FPGA实现
其中只需要把位宽(改成12)和文件生成路径作相应修改即可。
- 调用一个单口ROM IP核
关于IP核的配置如下