0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用matlab产生待滤波信号并编写testbench进行仿真分析

Hx 来源:CSDN技术社区 作者:DengFengLai123 2021-04-27 18:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本讲使用matlab产生待滤波信号,并编写testbench进行仿真分析,在Vivado中调用FIR滤波器的IP核进行滤波测试,下一讲使用两个DDS产生待滤波的信号,第五讲或第六讲开始编写verilog代码设计FIR滤波器,不再调用IP核。

本例使用上一讲的FIR滤波器IP核工程。

matlab与FPGA数字滤波器设计(2)——Vivado调用IP核设计FIR滤波器

matlab与FPGA数字滤波器设计(1)——通过matlab的fdatool工具箱设计FIR数字滤波器

100063647-127709-tu_1.png

1. 新建仿真文件

(1) Simulation Sources -》 sim_1 -》右键 Add Sources;

(2) Add or Create Simulation Sources,新建仿真文件 fir_ip_tb;

100063647-127710-tu_2.png

2. 编写testbench

(1) 例化加入的IP核,其中:

输入时钟引脚为 clk,设置为32MHz(此处暂时还未设定频率);

输入数据引脚为data_in,位宽16-bit,表示待滤波数据;

输出数据引脚为data_out,位宽40-bit,表示滤波后的数据;

输出数据有效信号引脚data_out_valid,位宽1-bit,输出状态,为高电平时表示输出的data_out有效;

输入数据准备好信号引脚data_in_ready,位宽1-bit,输出状态,为高电平时表示准备好接收输入数据;

输入有效信号S_AXIS_DATA_0_tvalid,为1时表示输入信号有效,为0时即使有输入信号data_in到 fir 的 ip 核 ,ip 核也不做处理,此处直接让其恒为1,输入数据恒有效;

总结,需要给ip核输入的数据目前只有两个,一个是时钟,一个是待滤波数据。

100063647-127711-tu_3.png

(2) 产生32MHz时钟信号;

初始 initial 时设置时钟信号clk为低电平0,always 表示一直执行,#16表示每隔16 ns(单位是在仿真文件开头自动有定义ns)时钟取反一次,即每隔 16ns 时钟 0/1间隔变化,相当于32ns一个时钟周期,约等于32MHz;

100063647-127712-tu_4.png

3. 产生待滤波数据data_in

(1) 编写matlab程序,产生两个信号0.5MHz和5MHz,采样频率32MHz,采样5个周期,进行16-bit量化,并把量化后的数据写到 .txt 文件中;

100063647-127713-tu_5.png

可以看到,在 0.5MHz 和 5MHz处有两个峰,表示抽样后的两个信号,经过滤波器之后,5MHz 信号被滤除,只剩下 0.5MHz 信号,蓝色框内可以看到,在 3MHz 以后滤波器的响应已经低于 -80dB,相当于滤波后的幅度是滤波前的1/10000,滤波效果很好。

100063647-127714-tu_6.png

使用 32MHz 的采样时钟采样 0.5MHz 待滤波信号(相当于0.5MHz信号叠加了5MHz噪声),每个周期采样 64 个点,在testbench中读取一个周期的64个点,重复30个周期得到30个周期的输入待滤波信号给FIR滤波器;

100063647-127715-tu_7.png

4. 仿真结果分析

点击1处开始仿真,Vivado中一般默认只会仿真1us,这时候只看到了初始化的一部分,是看不到后续结果的,点击2处进行仿真,会将所有的仿真步骤完成,执行到上图中第64行的 $stop 语句停止仿真;

100063647-127716-tu_8.png

5. 仿真结果分析

(1) data_out_valid:初始为0,在1.872 ns跳变为1,输出数据开始有效,在为0的那段时间输出数据data_out无效,这段时间内是FIR的IP核进行一些内部的配置和初始化;

100063647-127717-tu_9.png

(2) 更改数据表示模式

对data_in,右键设置其数据格式Radix为有符号的十进制数(Signed Decimal),设置其波形为模拟波形(Analog);

对 data_out 同样设置;

对 Pattern 设置 无符号十进制,不需要设置波形。

100063647-127718-tu_10.png

(3) 点击放大缩小可以查看整个仿真的效果

通过下面几图,可以看到仿真效果很好,5MHz高频噪声滤除干净,肉眼观察不出来。

100063647-127719-tu_11.png

100063647-127720-tu_12.png

100063647-127721-tu_13.png

(4) Matlab数据分析

肉眼观察时域的仿真图无法得知高频噪声具体被滤掉了多少,是否还混有噪声,此时需要将滤波后的数据按照前文读取仿真数据的方式,将仿真得到的滤波后的数据写入.txt文件,再通过 matlab 读取 FPGA 滤波后的数据并进行FFT 频谱分析,通过频域的波形来观察滤波效果,通过 matlab 仿真,可以看到高频信号的确被滤除。

100063647-127722-tu_14.png

100063647-127723-tu_15.png

下一讲使用两个 DDS 产生待滤波的信号,结合FIR滤波器搭建一个信号产生及滤波的系统,并编写testbench进行仿真分析。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    189

    文章

    3033

    浏览量

    239520
  • 仿真
    +关注

    关注

    55

    文章

    4568

    浏览量

    138822
  • fir滤波器
    +关注

    关注

    1

    文章

    97

    浏览量

    19746
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71517
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    多种储能技术在MATLAB和Simulink中的建模与仿真

    面对这些实际需求,MATLAB & Simulink 展现出了强大的优势。它不仅支持对各种储能技术进行灵活建模,更为“多种储能技术”提供了统一的仿真分析平台。无论是电池储能、超级电容
    的头像 发表于 05-12 13:48 190次阅读
    多种储能技术在<b class='flag-5'>MATLAB</b>和Simulink中的建模与<b class='flag-5'>仿真</b>

    水轮机调速器仿真测试仪:原理、应用与常见故障实战分析

    \"自动切至手动模式,无法正常进行自动调节。 原因分析: 1. 首先检查仿真测试仪输出的转速信号,发现
    发表于 05-08 09:32

    使用MATLAB和Simulink进行信号完整性分析

    信号完整性是保持高速数字信号的质量的过程。信号完整性是衡量电信号从源传输到目标位置时的质量的关键度量。在高速数字和模拟电子中,确保信号的预期
    的头像 发表于 01-23 13:57 8927次阅读
    使用<b class='flag-5'>MATLAB</b>和Simulink<b class='flag-5'>进行</b><b class='flag-5'>信号</b>完整性<b class='flag-5'>分析</b>

    利用matlab和FPGA产生FMCW波

    调频连续波(frequency modulated continuous wave, FMCW),常用于雷达中进行距离检测,其所用到的信号是一种频率随调制信号线性增长的调频波,还可用于电缆的故障定位。本文基于电缆的故障定位这个方
    的头像 发表于 11-24 09:08 4070次阅读
    利用<b class='flag-5'>matlab</b>和FPGA<b class='flag-5'>产生</b>FMCW波

    求助,关于testbench仿真的问题求解

    我用c 写了一段加密算法,其中包含了S盒替换表和密钥等参数,现在想用vcs和testbench仿真这个程序,c 编译成机器码后怎么区分哪段数据是写入ITCM哪段是写入DTCM的,又应该怎么写入DTCM
    发表于 11-05 08:56

    语法纠错和testbench的自动生成

    编写Verilog代码时,我一般都是先在编辑器上写完,因为编辑器vscode或者notepad++可以提供语法高亮和自动补全等功能,然后用仿真器跑仿真,但是在编写过程中不可避免的会有
    发表于 10-27 07:07

    vivado仿真时GSR信号的影响

    利用vivado进行设计xilinx FPGA时,写完设计代码和仿真代码后,点击run simulation(启动modelsim进行仿真)。
    的头像 发表于 08-30 14:22 1698次阅读
    vivado<b class='flag-5'>仿真</b>时GSR<b class='flag-5'>信号</b>的影响

    如何设置协议分析进行微秒级测试?

    测量。 自动化脚本分析:使用Python或MATLAB编写脚本,自动计算关键性能指标(KPI)生成报告。例如,通过PyVISA控制力科分析
    发表于 07-28 17:28

    基于Matlab与FPGA的双边滤波算法实现

    前面发过中值、均值、高斯滤波的文章,这些只考虑了位置,并没有考虑相似度。那么双边滤波来了,既考虑了位置,有考虑了相似度,对边缘的保持比前几个好很多,当然实现上也是复杂很多。本文将从原理入手,采用Matlab与FPGA设计实现双边
    的头像 发表于 07-10 11:28 4947次阅读
    基于<b class='flag-5'>Matlab</b>与FPGA的双边<b class='flag-5'>滤波</b>算法实现

    无刷直流电机控制系统的建模仿真分析

    摘要:分析了BLDCM的数学模型,运用MATLAB仿真软件搭建了无刷直流电机控制系统的仿真模型。本系统采用了速度PID控制、电流迟滞控制的双闭环控制方案,电流迟滞控制是为了更方便地跟踪
    发表于 06-27 16:52

    罗德与施瓦茨方案:D波段射频宽带信号产生分析

    R&S D波段宽带信号产生分析方案,是市面上最为紧凑及易用的解决方案,信号源可直接对上变频器进行参数设定,频谱与
    的头像 发表于 06-16 14:46 1963次阅读
    罗德与施瓦茨方案:D波段射频宽带<b class='flag-5'>信号</b><b class='flag-5'>产生</b>与<b class='flag-5'>分析</b>

    是德频谱分析仪对微波信号频率稳定性的测量与分析

    内置的高精度频率合成器产生测试信号,利用其卓越的频谱分析功能,对微波信号的频率稳定性进行评估。测量过程中,
    的头像 发表于 06-13 13:54 1074次阅读
    是德频谱<b class='flag-5'>分析</b>仪对微波<b class='flag-5'>信号</b>频率稳定性的测量与<b class='flag-5'>分析</b>

    嵌入式直驱力矩电机设计及其系统仿真分析

    和基于 Matlab/Simulink 的双闭环电机调速系统仿真模型,对力矩电机系统进行仿真分析,两者仿
    发表于 06-11 15:11

    利用MATLAB对交流电机调速系统进行建模和仿真

    技术是借助计算机及相关技术,对真实系统的运行过程和状态进行数字化模拟的技术。Simulink作为MATLAB的一个组件,能够实现对动态系统的建模、仿真和综合分析。本文在Simulink
    发表于 06-06 14:31

    普源示波器如何连接MATLAB实现数据采集与分析

    普源示波器(Rigol)作为国内知名的测试测量仪器品牌,广泛应用于电子工程、科研实验、教学等领域。为了进一步扩展其功能,用户常需将示波器与MATLAB等数据分析平台连接,实现自动化测试、实时信号处理
    的头像 发表于 05-29 09:34 1512次阅读