FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波)
本文链接:https://blog.csdn.net/qq_46621272/article/details/125337119
FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波)
文章目录
- 前言
- 一、 调频波调制
- 1. fm_modulation_dds 模块逻辑框图
- 2. fm_modulation_dds.v verilog 代码
- 二、 调频波解调
- 1. fm_demodulation_fir 模块逻辑框图
- 2. fm_demodulation_fir.v verilog 代码
- 三、 fm_modem_fir_testbench.v
- 四、 FIR IP 设置
- 五、 DDS IP 设置
- 1. dds_compiler_phase IP设置
- 六、 仿真时序波形图
- 1. 激励文件信号波形图
- 2. FM调频波调制模块信号波形图
- 3. FM调频波解调模块信号波形图
- 六、 综合布线后 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 低通滤波实现了调频波的解调输出。
一、 调频波调制
1. fm_modulation_dds 模块逻辑框图
2. fm_modulation_dds.v verilog 代码
//fm_modulation_dds.v
module fm_modulation_dds
(output m_axis_data_tvalid,input m_axis_data_tready,output [15:0] m_axis_data_tdata,input rst_n,input clk
);parameter PHASE_COEF = 6554;//100KHz reg signed [15:0] phase_cnt_r;wire signed [15:0] s_axis_phase_tdata_i;reg s_axis_phase_tvalid_r;wire s_axis_phase_tready_i;wire signed [15:0] phase_step_i;wire signed [7:0] dds_4khz_tdata_i; // 4khz 正弦波 FM 调制信号wire dds_4khz_tvalid_i;wire dds_4khz_tready_i;wire signed [15:0] fm_tdata_i; // FM 调频波wire fm_tvalid_i;wire fm_tready_i;assign phase_step_i = dds_4khz_tdata_i*16;assign dds_4khz_tready_i = s_axis_phase_tready_i;assign s_axis_phase_tdata_i = phase_cnt_r;always @(posedge clk)beginif(rst_n == 0 )s_axis_phase_tvalid_r <= 0;else if(s_axis_phase_tready_i == 1)s_axis_phase_tvalid_r <= dds_4khz_tvalid_i;endalways @(posedge clk)beginif(rst_n == 0 )beginphase_cnt_r <= 0;endelse if(s_axis_phase_tready_i == 1 && dds_4khz_tvalid_i == 1)beginphase_cnt_r <= phase_cnt_r + phase_step_i + PHASE_COEF;endend dds_compiler_1m_4k dds1 // XILINX VIVADO DDS IP,100MHz 时钟输入,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);dds_compiler_phase dds2(.aclk (clk), // input wire aclk.aresetn (rst_n), // input wire aresetn.s_axis_phase_tvalid(s_axis_phase_tvalid_r), // input wire s_axis_phase_tvalid.s_axis_phase_tready(s_axis_phase_tready_i), // output wire s_axis_phase_tready.s_axis_phase_tdata (s_axis_phase_tdata_i), // input wire [15 : 0] s_axis_phase_tdata.m_axis_data_tvalid (fm_tvalid_i), // output wire m_axis_data_tvalid.m_axis_data_tready (fm_tready_i), // input wire m_axis_data_tready.m_axis_data_tdata (fm_tdata_i) // output wire [15 : 0] m_axis_data_tdata);assign fm_tready_i = m_axis_data_tready;assign m_axis_data_tvalid = fm_tvalid_i;assign m_axis_data_tdata = fm_tdata_i;endmodule
二、 调频波解调
1. fm_demodulation_fir 模块逻辑框图
2. fm_demodulation_fir.v verilog 代码
//fm_demodulation_fir.v
module fm_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 signed [15:0] uf_data_r = 0;reg signed [15:0] sv_data_r = 0;reg uf_valid_r = 0;wire uf_tready_i;reg [15:0] abs_data_r = 0;reg abs_valid_r = 0;wire abs_tready_i;////////////////////////////////////////////////////////////////////////////////////always @(posedge clk) beginif(rst_n == 0 )uf_valid_r <= 0;else if(uf_tready_i == 1)uf_valid_r <= s_axis_data_tvalid;endalways @(posedge clk) //微分 dx/dt ,dt =一个时钟周期,dx=当前数据减去上个时钟的数据的差beginif(rst_n == 0 )beginuf_data_r <= 0;sv_data_r <= 0;endelse if(uf_tready_i == 1 && s_axis_data_tvalid == 1)beginsv_data_r <= s_axis_data_tdata; //将当前数据存起来uf_data_r <= s_axis_data_tdata - sv_data_r; //当前数据 - 上个时钟保存的数据endend
////////////////////////////////////////////////////////////////////////////////////always @(posedge clk)beginif(rst_n == 0 )abs_valid_r <= 0;else if(abs_tready_i == 1)abs_valid_r <= uf_valid_r;endalways @(posedge clk) //绝对值beginif(rst_n == 0 )abs_data_r <= 0;else if(abs_tready_i == 1 && uf_valid_r == 1)beginif(uf_data_r >= 0)abs_data_r <= uf_data_r;elseabs_data_r <= -uf_data_r;endend
////////////////////////////////////////////////////////////////////////////////////wire 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;assign uf_tready_i = abs_tready_i;fir_compiler_lowpass_10k_30k_1m fm_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 [31 : 0] m_axis_data_tdata
);
endmodule
三、 fm_modem_fir_testbench.v
///////////////////////////////////////////////////////////////////////`timescale 1ns / 100ps
//fm_modem_fir_testbench.v
module fm_modem_fir_testbench;reg rst_n;
reg clk;parameter CLK_PERIOD = 1000; //1MHzinitial beginrst_n = 0;#(10 * CLK_PERIOD)rst_n = 1;#(3000 * CLK_PERIOD)$stop;
endinitialclk = 0;
always
beginclk = #(CLK_PERIOD/2.0) ~clk;
endwire signed [15:0] fm_mod_tdata; //调频波数据,载波100KHz 正弦波,调制信号 4KHz 正弦波wire fm_mod_tvalid;wire fm_mod_tready;wire signed [15:0] fm_demod_tdata; //经过解调还原的 4KHz 正弦波wire fm_demod_tvalid;wire fm_demod_tready=1;fm_modulation_dds fm_u1 //调频波调制模块,生成 载波100KHz 正弦波,调制信号 4KHz 正弦波的调频信号(.clk (clk), //1MHz.rst_n (rst_n), //复位.m_axis_data_tdata (fm_mod_tdata), //调频波数据输出, output wire [16 : 0].m_axis_data_tvalid (fm_mod_tvalid),.m_axis_data_tready (fm_mod_tready));fm_demodulation_fir fm_u2 //调频波解调模块,将调频波解调还原调制信号(.clk (clk), //1MHz.rst_n (rst_n), //复位.s_axis_data_tdata (fm_mod_tdata), //调频信号输入 intput wire [16 : 0].s_axis_data_tvalid (fm_mod_tvalid),.s_axis_data_tready (fm_mod_tready),.m_axis_data_tdata (fm_demod_tdata), //调频波解调数据输出, output wire [16 : 0].m_axis_data_tvalid (fm_demod_tvalid),.m_axis_data_tready (fm_demod_tready));endmodule
四、 FIR IP 设置
- 和上篇文章 FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波) 的设置一样,系数文件也一样,请参考这篇文章 FIR IP 配置这一章节
五、 DDS IP 设置
- dds_compiler_1m_4k IP设置和上篇文章 FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波) 的设置一样,请参考这篇文章 DDS IP 配置这一章节
1. dds_compiler_phase IP设置
六、 仿真时序波形图
1. 激励文件信号波形图
2. FM调频波调制模块信号波形图
3. FM调频波解调模块信号波形图
六、 综合布线后 FPGA 资源使用报告
七、 相关 vivado 工程、IP 设置等详细文档连接,采用 Xilinx vivado 2017.4 版本
XILINX FIR IP 详解、Verilog 源码、Vivado 工程
FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)详细介绍
FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波) 详细介绍
FIR 中级应用 - AM 调幅波调制解调(FIR + FIFO)详细介绍
FIR 高级应用 - AM 调幅波调制解调(FIR 低通滤波+重采样,FIR 高阶系数,FIR+FIFO ) 详细介绍
FIR 高级应用 - 多通道实验 (四个通道用一个 FIR IP,每通道用不同的系数) 详细介绍
FIR 高级应用 FIR Reload的使用) 详细介绍
AM 调幅波调制解调(FIR 低通滤波) vivado 工程文件下载
FM 调频波调制解调(FIR 低通滤波) Vivado 工程文件下载
AM 调幅波调制解调(FIR + FIFO) Vivado 工程文件下载
AM 调幅波调制解调(FIR 低通滤波+重采样,FIR 高阶系数,FIR+FIFO ) Vivado 工程文件下载
FIR 高级应用 - 多通道实验 Vivado 工程文件下载
FIR 高级应用 FIR Reload 的使用 vivado 工程文件下载
FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波)相关推荐
- FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)
本文链接:https://blog.csdn.net/qq_46621272/article/details/125334644 FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波) 文章目 ...
- matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...
本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...
- 基于multisim的fm调制解调_高通二代5G调制解调器骁龙X55实现7Gbps高速率,透露5G三大关键点...
雷锋网(公众号:雷锋网)消息,MWC2019前夕,高通今天宣布推出继骁龙X50后的第二代5G新空口(5G NR)调制解调器骁龙X55 5G调制解调器,也是全球首款实现7Gbps速率的5G调制解调器.工 ...
- 图像处理之基础---高斯低通滤波在指定区域画放大圆形图
像淘宝中的物品图片进行放大扫描效果: 上图中图一为原图,现给定素材,需要将图像画城图二然后输出.现在问题是, 给定的图像都是矩形,怎么将矩形的图片画到中间的那两个圆里面呢? http://downlo ...
- python图像处理基础 || (五) 图像频域的阈值型高通与低通滤波
图像频域的阈值型高通与低通滤波 文章目录 图像频域的阈值型高通与低通滤波 1. 频域图像非卷积操作的高通滤波 2. 频域图像非卷积操作的低通滤波 3. 频域图像的带通滤波 本部分内容所用的数据放在百度 ...
- m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
目录 1.算法描述 2.仿真效果预览 3.Verilog核心程序 4.完整FPGA 1.算法描述 整个模型的基本框图为 软件无线电是现代通信技术的重要研究领域和发展方向,目前发展迅速.快速发展的软件无 ...
- 基于 VIVADO 的 FM 调制解调(上)设计篇
一.概述 本文先简要介绍了频率调制(frequency modulation,FM,简称调频)的原理,然后对其进行方案设计,最后基于 VIVADO 2018.3 使用 Verilog 进行实现. 二. ...
- 基于multisim的fm调制解调_矢量调制分析
本应用指南的第一部分介绍了矢量信号分析(VSA) 的初步知识,并讨论 了矢量信号分析测量的概念和操作理论.该部分还描述了矢量信号分析的频域,通过快速傅立叶变换(FFT) 分析实现的频谱分析测量能力.今 ...
- FM调制解调以及MATLAB实现
首先FM调制时属于非线性调制中的一种,常见的非线性调制时FM(频率调制),PM(相位)调制 FM调制:就是利用调制信号的变化去改变载波的频率,幅度保持不变,即载波信号的频率随我们调制信号的幅度变化而变 ...
最新文章
- 二叉树查找python_二叉搜索树的python实现
- [Material Design] 教你做一个Material风格、动画的button(MaterialButton)
- python和access哪个难_python和access的区别
- SQL Server中Text和varchar(max)数据类型区别
- 使用SQL Server Management Studio 创建数据库备份作业
- 服务器云端设置怎么退出_换新手机时,3个地方要及时清除退出,别让旧手机成隐私“内鬼”...
- xcode 怎么调用midi开发录音_直播_个人工作室入门_1K-2k价位录音编曲声卡推荐
- 【人工智能】无人车系统仿真软件-PreScan
- python化学公式配平_用Python配平化学方程式的方法
- 浙江大学计算机系自主招生题目,浙江大学自主招生试题
- goto解密PHP源码解密程序源码下载
- 计算机ABC分类法的步骤,ABC分类法的具体步骤
- 数学分析 - 定积分(待修改)
- NFT 推荐|Funguys 王国作品集第一弹
- 2011 信义聚会记实
- 产品读书《六顶思考帽》
- kaldi理解WFST,HCLG,lattice
- 组织项目管理(PMP知识整理)
- SSAO By Computer Shader(三)
- Linux CentOS7 升级内核的方法