本文链接:https://blog.csdn.net/qq_46621272/article/details/125334644

FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)


文章目录

  • 前言
  • 一、 调幅波调制
    • 1. am_modulation_dds 模块逻辑框图
    • 2. am_modulation_dds.v verilog 代码
  • 二、 调幅波解调
    • 1. am_demodulation_fir 模块逻辑框图
    • 2. am_demodulation_fir.v verilog 代码
  • 三、 am_modem_fir_testbench.v
  • 四、 FIR IP 设置
    • 1. lowpass_10k_30k_1m.coe FIR IP 系数文件
    • 2. Matlab FIR 系数生成,Filter Designer 设置贴图
    • 3. FIR IP 设置贴图
  • 五、 DDS IP 设置
    • 1. dds_compiler_1m_100k IP设置贴图
    • 1. dds_compiler_1m_4k IP设置贴图
  • 六、 仿真时序波形图
    • 1. 激励文件信号波形图
    • 2. AM调幅波调制模块信号波形图
    • 3. AM调幅波解调模块信号波形图
  • 七、 综合布线后 FPGA 资源使用报告
  • 八、 相关 vivado 工程、IP 设置等详细文档连接,采用 Xilinx vivado 2017.4 版本
    • [XILINX FIR IP 详解、Verilog 源码、Vivado 工程](https://blog.csdn.net/qq_46621272/article/details/125292610)
    • [FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)详细介绍](https://blog.csdn.net/qq_46621272/article/details/125334644)
    • [FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波) 详细介绍](https://blog.csdn.net/qq_46621272/article/details/125337119)
    • [FIR 中级应用 - AM 调幅波调制解调(FIR + FIFO)详细介绍](https://blog.csdn.net/qq_46621272/article/details/125384724)
    • [FIR 高级应用 - AM 调幅波调制解调(FIR 低通滤波+重采样,FIR 高阶系数,FIR+FIFO ) 详细介绍](https://blog.csdn.net/qq_46621272/article/details/125385375)
    • [FIR 高级应用 - 多通道实验 (四个通道用一个 FIR IP,每通道用不同的系数) 详细介绍](https://blog.csdn.net/qq_46621272/article/details/125346332)
    • [FIR 高级应用 FIR Reload的使用) 详细介绍](https://blog.csdn.net/qq_46621272/article/details/125348908)
    • [AM 调幅波调制解调(FIR 低通滤波) vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85674733)
    • [FM 调频波调制解调(FIR 低通滤波) Vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85722410)
    • [AM 调幅波调制解调(FIR + FIFO) Vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85722449)
    • [AM 调幅波调制解调(FIR 低通滤波+重采样,FIR 高阶系数,FIR+FIFO ) Vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85722484)
    • [FIR 高级应用 - 多通道实验 Vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85722518)
    • [FIR 高级应用 FIR Reload 的使用 vivado 工程文件下载](https://download.csdn.net/download/qq_46621272/85722534)

前言

这是 XILINX FIR IP 详解、Verilog 源码、Vivado 工程 这篇文章的实验部分,用 FIR 低通滤波实现了调幅波的解调输出。
采用 Xilinx vivado 2017.4 版本


一、 调幅波调制

1. am_modulation_dds 模块逻辑框图

2. am_modulation_dds.v verilog 代码

//am_modulation_dds.v
module  am_modulation_dds
(output         m_axis_data_tvalid,input            m_axis_data_tready,output   [15:0]  m_axis_data_tdata,input         rst_n,input         clk
);wire signed   [7:0]   dds_100khz_tdata_i;     //  100KHz   正弦波    AM 载波wire               dds_100khz_tvalid_i;wire                dds_100khz_tready_i;wire signed [7:0]   dds_4khz_tdata_i;       //  4khz   正弦波  AM 调制信号wire             dds_4khz_tvalid_i;wire              dds_4khz_tready_i;reg signed    [15:0]  am_tdata_r;reg                  am_tvalid_r;wire                am_tready_i;assign  am_tready_i         = m_axis_data_tready;assign    dds_100khz_tready_i = am_tready_i;assign   dds_4khz_tready_i   = am_tready_i;assign   m_axis_data_tvalid  = am_tvalid_r;assign   m_axis_data_tdata   = am_tdata_r;always @(posedge clk)    //AM 调制算法实现beginif(rst_n == 0 )beginam_tdata_r    <= 0;am_tvalid_r    <= 0;endelse if(am_tready_i == 1)beginam_tdata_r  <= dds_100khz_tdata_i * (dds_4khz_tdata_i/2 + 128);    // 128 是直流分量,式中的除2是为了不使数据超过16位溢出// 这个代码中,载波频率很低,就直接用乘法去写代码了。// 如果载波频率比较高就需要用DSP单元或乘法 IP 去实现。am_tvalid_r    <= dds_4khz_tvalid_i & dds_100khz_tvalid_i;endenddds_compiler_1m_100k dds1                      // XILINX VIVADO DDS IP,1MHz 时钟输入,100KHz正弦波 8 位输出(.aclk               (clk),                  // input wire aclk.aresetn          (rst_n),                // input wire aresetn.m_axis_data_tvalid    (dds_100khz_tvalid_i),  // output wire m_axis_data_tvalid.m_axis_data_tready    (dds_100khz_tready_i),  // input wire m_axis_data_tready.m_axis_data_tdata  (dds_100khz_tdata_i)    // output wire [7 : 0] m_axis_data_tdata);dds_compiler_1m_4k dds2                           // XILINX VIVADO DDS IP,1MHz 时钟输入,4khz正弦波 8 位输出(.aclk             (clk),                  // input wire aclk.aresetn          (rst_n),                // input wire aresetn.m_axis_data_tvalid    (dds_4khz_tvalid_i),    // output wire m_axis_data_tvalid.m_axis_data_tready    (dds_4khz_tready_i),    // input wire m_axis_data_tready.m_axis_data_tdata  (dds_4khz_tdata_i)      // output wire [7 : 0] m_axis_data_tdata);endmodule

二、 调幅波解调

1. am_demodulation_fir 模块逻辑框图

2. am_demodulation_fir.v verilog 代码

//am_demodulation_fir.v
module  am_demodulation_fir
(input                  rst_n,input                 clk,input                   s_axis_data_tvalid,output                   s_axis_data_tready,input    signed[15:0]    s_axis_data_tdata,output                    m_axis_data_tvalid,input                    m_axis_data_tready,output   signed[15:0]    m_axis_data_tdata
);reg       [15:0]  abs_data_r  = 0;reg                    abs_valid_r = 0;wire               abs_tready_i;always @(posedge clk)beginif(rst_n == 0 )abs_valid_r    <= 0;else if(abs_tready_i == 1)abs_valid_r    <= s_axis_data_tvalid;endalways @(posedge clk) //取绝对值beginif(rst_n == 0 )abs_data_r  <= 0;else if(abs_tready_i == 1 && s_axis_data_tvalid == 1)beginif(s_axis_data_tdata >= 0)abs_data_r <= s_axis_data_tdata;elseabs_data_r <= -s_axis_data_tdata;endendwire signed [39:0]  fir_fm_tdata_i;wire             fir_fm_tvalid_i;wire                fir_fm_tready_i;assign  fir_fm_tready_i     = m_axis_data_tready;assign    m_axis_data_tdata   = fir_fm_tdata_i >>>19;assign m_axis_data_tvalid  = fir_fm_tvalid_i;assign   s_axis_data_tready  = abs_tready_i;fir_compiler_lowpass_10k_30k_1m am_fir_u1(.aresetn          (rst_n),            // input wire aresetn.aclk              (clk),              // input wire aclk.s_axis_data_tvalid   (abs_valid_r),      // input wire s_axis_data_tvalid.s_axis_data_tready (abs_tready_i),     // output wire s_axis_data_tready.s_axis_data_tdata (abs_data_r),       // input wire [15 : 0] s_axis_data_tdata.m_axis_data_tvalid (fir_fm_tvalid_i),  // output wire m_axis_data_tvalid.m_axis_data_tready    (fir_fm_tready_i),  // input wire m_axis_data_tready.m_axis_data_tdata  (fir_fm_tdata_i)    // output wire [39 : 0] m_axis_data_tdata);
endmodule

三、 am_modem_fir_testbench.v

///////////////////////////////////////////////////////////////////////`timescale 1ns / 100ps//am_modem_fir_testbench.v
module am_modem_fir_testbench;reg           rst_n;
reg         clk;parameter CLK_PERIOD        = 1000;        //1MHzinitial   beginrst_n = 0;#(20 * CLK_PERIOD)rst_n = 1;#(3000 * CLK_PERIOD)$stop;
endinitialclk = 0;
always
beginclk = #(CLK_PERIOD/2.0) ~clk;
endwire signed  [15:0]  am_mod_tdata;           //调幅波数据,载波100KHz 正弦波,调制信号 4KHz 正弦波wire                am_mod_tvalid;wire              am_mod_tready;wire signed   [15:0]  am_demod_tdata;         //经过解调还原的 4KHz 正弦波wire              am_demod_tvalid;wire                am_demod_tready=1;am_modulation_dds    am_u1                   //调幅波调制模块,生成 载波100KHz 正弦波,调制信号 4KHz 正弦波的调幅信号(.clk             (clk),              //1MHz.rst_n                (rst_n),            //复位.m_axis_data_tdata  (am_mod_tdata),     //调幅波数据输出, output wire [16 : 0].m_axis_data_tvalid   (am_mod_tvalid),.m_axis_data_tready (am_mod_tready));am_demodulation_fir        am_u2               //调幅波解调模块,将调幅波解调还原调制信号(.clk              (clk),              //1MHz.rst_n                (rst_n),            //复位.s_axis_data_tdata  (am_mod_tdata),     //调幅信号输入 intput wire [16 : 0].s_axis_data_tvalid    (am_mod_tvalid),.s_axis_data_tready (am_mod_tready),.m_axis_data_tdata  (am_demod_tdata),   //调幅波解调数据输出, output wire [16 : 0].m_axis_data_tvalid (am_demod_tvalid),.m_axis_data_tready   (am_demod_tready));endmodule

四、 FIR IP 设置

1. lowpass_10k_30k_1m.coe FIR IP 系数文件

; XILINX CORE Generator(tm)Distributed Arithmetic FIR filter coefficient (.COE) File
; Generated by MATLAB(R) 9.7 and DSP System Toolbox 9.9.
; Generated on: 17-Jun-2022 13:49:47
Radix = 16;
Coefficient_Width = 16;
CoefData =
fd36,fed1,fe98,fe5f,fe27,fdf3,fdc4,fd9c,fd80,fd72,fd74,fd8a,fdb8,fe00,fe67,feed,
ff99,006b,0166,028d,03e0,0561,0711,08ef,0afb,0d34,0f98,1224,14d5,17a7,1a94,1d9a,
20b0,23d2,26f9,2a1d,2d37,3041,3333,3604,38af,3b2d,3d75,3f84,4152,42db,441b,450e,
45b1,4603,4603,45b1,450e,441b,42db,4152,3f84,3d75,3b2d,38af,3604,3333,3041,2d37,
2a1d,26f9,23d2,20b0,1d9a,1a94,17a7,14d5,1224,0f98,0d34,0afb,08ef,0711,0561,03e0,
028d,0166,006b,ff99,feed,fe67,fe00,fdb8,fd8a,fd74,fd72,fd80,fd9c,fdc4,fdf3,fe27,
fe5f,fe98,fed1,fd36;

2. Matlab FIR 系数生成,Filter Designer 设置贴图

3. FIR IP 设置贴图



五、 DDS IP 设置

1. dds_compiler_1m_100k IP设置贴图




1. dds_compiler_1m_4k IP设置贴图

dds_compiler_1m_4k 与 dds_compiler_1m_100k 设置基本一致,这里只贴了一处不一样的设置。

六、 仿真时序波形图

1. 激励文件信号波形图

2. AM调幅波调制模块信号波形图

3. AM调幅波解调模块信号波形图

七、 综合布线后 FPGA 资源使用报告

八、 相关 vivado 工程、IP 设置等详细文档连接,采用 Xilinx vivado 2017.4 版本

FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)相关推荐

  1. FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波)

    本文链接:https://blog.csdn.net/qq_46621272/article/details/125337119 FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波) 文章目 ...

  2. 用Multisim仿真对调幅波进行解调

    实验目的与要求 1.理解调幅信号的解调原理和实现方法. 2.掌握包络检波器的基本电路和低通滤波器参数对检波器输出的影响. 3.掌握包络检波器的主要技术指标的实验测试方法. 4.掌握包络检波器中失真产生 ...

  3. matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...

    本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...

  4. 基于multisim的fm调制解调_高通二代5G调制解调器骁龙X55实现7Gbps高速率,透露5G三大关键点...

    雷锋网(公众号:雷锋网)消息,MWC2019前夕,高通今天宣布推出继骁龙X50后的第二代5G新空口(5G NR)调制解调器骁龙X55 5G调制解调器,也是全球首款实现7Gbps速率的5G调制解调器.工 ...

  5. 图像处理之基础---高斯低通滤波在指定区域画放大圆形图

    像淘宝中的物品图片进行放大扫描效果: 上图中图一为原图,现给定素材,需要将图像画城图二然后输出.现在问题是, 给定的图像都是矩形,怎么将矩形的图片画到中间的那两个圆里面呢? http://downlo ...

  6. python图像处理基础 || (五) 图像频域的阈值型高通与低通滤波

    图像频域的阈值型高通与低通滤波 文章目录 图像频域的阈值型高通与低通滤波 1. 频域图像非卷积操作的高通滤波 2. 频域图像非卷积操作的低通滤波 3. 频域图像的带通滤波 本部分内容所用的数据放在百度 ...

  7. m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序

    目录 1.算法描述 2.仿真效果预览 3.Verilog核心程序 4.完整FPGA 1.算法描述 整个模型的基本框图为 软件无线电是现代通信技术的重要研究领域和发展方向,目前发展迅速.快速发展的软件无 ...

  8. matlab 调制 解调,基于Matlab调制与解调的实现

    <基于Matlab调制与解调的实现>由会员分享,可在线阅读,更多相关<基于Matlab调制与解调的实现(15页珍藏版)>请在人人文库网上搜索. 1.基于Matlab调制与解调的 ...

  9. 基于multisim的fm调制解调_矢量调制分析

    本应用指南的第一部分介绍了矢量信号分析(VSA) 的初步知识,并讨论 了矢量信号分析测量的概念和操作理论.该部分还描述了矢量信号分析的频域,通过快速傅立叶变换(FFT) 分析实现的频谱分析测量能力.今 ...

最新文章

  1. python数组操作加法_Numpy数组索引和/或加法似乎是
  2. 服务器如何删除所有磁盘信息,关于怎样删除EFI分区,简单省事,很多换下来的硬盘都有这个分区...
  3. Linux下对于inode的理解
  4. ES6的Reflect对象
  5. [转]PHP 超全局变量详解 $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SE
  6. 【免费毕设】基于PHP实现的WEB图片共享系统(源代码+论文)
  7. Stacking 模型融合详解(附python代码)
  8. python大数据基础学习环境变量_《Python大数据基础与实战》[56M]百度网盘pdf下载...
  9. PIL ellipse函数画椭圆
  10. 10分钟快速搭建多方视频会议系统
  11. gis 六边形网格_ArcGIS中的奇技淫巧(Ⅱ)—蜂巢网格图
  12. 【1】Kali破解家用WI-FI密码 - WEP加密
  13. ROS-ubuntu-系统安装
  14. React Native入门——布局实践:开发京东客户端首页(一
  15. 西门子S7200plc通信不上实际问题和解决方法
  16. usb触摸屏驱动 - usbtouchscreen
  17. iOS 页面的卡顿的原因以及如何解决. 如何优化app的启动速度
  18. python向上取整_python向上取整
  19. java用hutool.excelUtil实现excel创建模板和下载模板
  20. 2020年全国水资源总量、总供水量、总用水量及人均综合用水量分析[图]

热门文章

  1. “疫情”防控时期大势所趋,智慧社区尽显“智慧”迎来新的发展热潮
  2. 2022年常见软件测试面试题全套
  3. 字典攻击是什么意思?底层原理是什么?
  4. React实现复制功能
  5. Large Margin Partial Label Machine
  6. 网康防火墙--上线指南_在线付款接受指南-第1部分
  7. 每日积累(20161212-day-16)(PHILIPS 272P 显示器webcam ,ubuntu使用)
  8. Idea 使用git插件从git仓库下载project图文并茂,详细解答
  9. 图片搜索淘宝商品api接口
  10. Mysql导出逗号分隔的csv文件