当前位置:网站首页>基于 VIVADO 的 AM 调制解调(1)方案设计
基于 VIVADO 的 AM 调制解调(1)方案设计
2022-08-11 08:30:00 【chylinne】
一、AM 原理
常规调幅(conventional AM)信号(简称 AM 信号)的时域表达式为:
![s_{AM}(t)=A_{c}[1+m(t)]cos2\pi f_{c}t](http://img.inotgo.com/imagesLocal/202208/11/202208110830072787_3.gif)
其中,
是载波幅度,
是调制信号(基带消息信号)。
是已调信号,它的包络直接对应着信号
的变化规律。
定义调幅指数(modulation index),或调制深度,为:
![\beta _{AM}=\frac{max[s_{AM}(t)]-A_{c}}{A_{c}}=max[m(t)]](http://img.inotgo.com/imagesLocal/202208/11/202208110830072787_10.gif)
它反应了信号在载波幅度上的“调制程度”。
对应的解调方法一般是使用包络检波器,即直接提取
的实包络来恢复消息信号。包络检波器实质上是一个整流器与一个低通滤波器的结合,这主要是利用了 RC 电路中电容放电慢的特点来提取提取
的包络。因此,我们具体可以通过全波整流并低通滤波两步来实现。
二、目标设计
完成信号 AM 调制和解调功能,目标如下:
(1)载波信号频率范围:1M-10MHz,分辨率 0.01 MHz。
(2)调制信号为单频正弦波信号,频率范围:1kHz-10kHz,分辨率 0.01kHz。
(3)调制深度 0-1.0,步进 0.1,精度优于 5%。
(4)使用 MATLAB 对比调制信号和解调信号指标。
(5)载波信号频率、调制信号频率和调制深度可设置。
(6)完成 Testbench 仿真验证。
三、方案设计
1、原理框图
AM 调制解调较简单,其原理框图设计如下所示:

2、实现工具
原理框图中的调制信号、载波信号可以通过 Xilinx VIVADO 中调用 DDS IP 核进行配置得到;乘法器、加法器则直接调用 Xilinx VIVADO 的 IP 核进行使用;低通滤波器需要在调用 IP 核的基础上,利用 MATLAB 的滤波器设计工具生成 .coe 文件进行参数配置。
3、参数设计
(1)系统参数
时钟频率
设置为 100 MHz。
(2)发送端参数
对于调制信号和载波信号而言,我们使用的是 DDS IP 核,根据 Xilinx 的 dds_compiler 官方手册给出的公式

我们可以利用系统时钟频率
、输出信号频率
、相位累加器位宽
来计算出所需的频率控制字
的数值。
对于调制信号,我们设置输出信号频率
为 8 kHz,相位累加器位宽
为 24。
对于载波信号,我们设置输出信号频率
为 8 MHz,相位累加器位宽
为 16。
类似的,根据手册,我们同样可以根据公式

来计算相位控制字
的数值,本次设计中暂不用考虑设计相位控制字。
然后,我们将调制深度
设置为 0.9,直流分量
幅度大小设置为 127。这里需要注意的是,调制深度不能直接在代码中写小数,我们可以将
乘上 256 后取整,再与调制信号相乘,最后将结果右移 8 位即可。
(3)接收端参数
在 MATLAB 命令行窗口输入 filterDesigner 进入滤波器设计 GUI 界面。滤波器选择 fir 低通滤波器,滤波器阶数设置为 100,采样频率为 25 MHz,截止频率为 25kHz。

下图量化完成后,点击菜单栏目标(Targets),输出为 .coe 文件,在调用 fir IP 核时引用。

边栏推荐
猜你喜欢
随机推荐
迷你图书馆系统(对象+数组)
JUC Concurrent Programming
XXL-JOB 分布式任务调度中心搭建
magical_spider远程采集方案
Nuget can't find the package problem
高德能力API
租房小程序
js将table生成excel文件并去除表格中的多余tr(js去除表格中空的tr标签)
囍楽cloud task source code
抽象类和接口
go-grpc TSL authentication solution transport: authentication handshake failed: x509 certificate relies on ... ...
兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
机器学习(三)多项式回归
nodejs微服务中跨域,请求,接口,参数拦截等功能
【415. 字符串相加】
klayout--导出版图为gds文件
eureka和consul的区别
Kotlin算法入门计算素数以及优化
向日葵安装教程--向日葵远程桌面控制
关于架构的认知








