FM调制的FPGA实现

一、前言

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文件。

  1. 生成.coe配置文件

Matlab代码部分参考本人之前的博客:
AM调制的FPGA实现

其中只需要把位宽(改成12)和文件生成路径作相应修改即可。

  1. 调用一个单口ROM IP核

关于IP核的配置如下

FPGA实现AM(幅度调制)和FM(频率调制)信号的解调,是通信系统设计中的常见任务。由于FPGA具备高度并行计算能力和可重构性,适合处理实时性强、数据吞量大的信号处理任务。 ### AM信号解调方法与技术 AM信号的解调通常采用**包络检波法**或**同步解调法**。 - **包络检波法**是一种较为简单的解调方式,适用于标准AM信号。其核心思想是通过检测调幅信号的包络来恢复原始信息信号。在FPGA中,可以通过对调制信号进行整流(如全波整流),然后使用低通滤波器去除高频载波成分,从而提取出基带信号 [^3]。 示例代码片段如下: ```verilog always @(posedge sysclk) begin if(modulated_final[23] == 1) begin modulated_signal_abs <= -modulated_final; else begin modulated_signal_abs <= modulated_final; end end ``` - **同步解调法**则需要本地生成一个与接收信号载波同频同相的参考信号,与接收到的AM信号相乘后,再经过低通滤波器恢复原始信号。这种方式虽然复杂度略高,但能提供更好的解调质量,尤其适用于抑制载波的AM信号(如DSB-SC)。 ### FM信号解调方法与技术 FM信号的解调相对复杂,常见的方法包括**鉴频法**和**相位差分法**。 - **鉴频法**通常利用数字微分器对FM信号的相位变化进行求导,从而得到瞬时频率的变化,进而恢复出调制信号。这种方法在FPGA中可以通过CORDIC算法提取信号的相位信息,然后进行差分运算实现解调 [^1]。 - **相位差分法**则是将连续两个采样点的相位差作为输出,这种差分形式能够直接反映频率变化。该方法适用于正交采样后的I/Q信号,常用于数字FM解调系统中。具体步骤包括: 1. 使用CORDIC模块获取I/Q信号的角度; 2. 对角度进行差分处理; 3. 对差分结果进行低通滤波以去除噪声; 4. 最终得到调制信号。 ### 系统验证与仿真工具 在FPGA开发过程中,通常结合MATLAB和Vivado等工具进行联合仿真与验证。MATLAB可用于生成测试信号、设计滤波器系数以及对FPGA输出结果进行分析,而Vivado则用于综合、布局布线及硬件下载 [^1]。 ---
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值