当前位置:网站首页>基于 VIVADO 的 AM 调制解调(1)方案设计
基于 VIVADO 的 AM 调制解调(1)方案设计
2022-08-11 08:30:00 【chylinne】
一、AM 原理
常规调幅(conventional AM)信号(简称 AM 信号)的时域表达式为:
其中, 是载波幅度, 是调制信号(基带消息信号)。 是已调信号,它的包络直接对应着信号 的变化规律。
定义调幅指数(modulation index),或调制深度,为:
它反应了信号在载波幅度上的“调制程度”。
对应的解调方法一般是使用包络检波器,即直接提取 的实包络来恢复消息信号。包络检波器实质上是一个整流器与一个低通滤波器的结合,这主要是利用了 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 核时引用。
边栏推荐
- 向日葵安装教程--向日葵远程桌面控制
- Active users of mobile banking grew rapidly in June, hitting a half-year high
- magical_spider远程采集方案
- 老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
- ImportError: /usr/local/cuda-11.2/lib64/libcublas.so.10: version `libcublas.so.10‘ not found
- 法律顾问成了律所鸡肋产品了吗?
- Has legal counsel become a tasteless product of law firms?
- 2022 China Soft Drink Market Insights
- 小程序组件不能修改ui组件样式
- Notable NFT development trends in 2022
猜你喜欢
随机推荐
通过Xshell连接Vagrant创建的虚拟机
oracle数据库中列转行,列会有变化
gRPC系列(一) 什么是RPC?
C语言操作符详解
Redis 只会用缓存?20种妙用让同事直呼牛X(荣耀典藏版)
支持各种文件快速重命名最简单的小技巧
如何通过开源数据库管理工具 DBeaver 连接 TDengine
tensorflow 基础操作1(tensor 基本属性 , 维度变换,数学运算)
Notable NFT development trends in 2022
万字长文带你了解多态的底层原理,这一篇就够了
dsu on tree(树上启发式合并)学习笔记
golang string manipulation
gRPC系列(二) 如何用Protobuf组织内容
Kotlin算法入门兔子数量优化及拓展
【Day_13 0509】▲跳石板
js将table生成excel文件并去除表格中的多余tr(js去除表格中空的tr标签)
研发了 5 年的时序数据库,到底要解决什么问题?
Creo9.0 特征的成组
Kotlin算法入门计算质因数
jenkins 流水线脚本详细解析Pipeline