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

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

3天内不再提示

如何用matlab生成一个可编程FIR滤波器的硬件HDL代码?

FPGA之家 来源:SoWhat1412 作者:SoWhat1412 2021-05-03 09:37 次阅读

01

概述

本文通过matlab自带的工具箱生成一个可编程FIR滤波器的硬件HDL代码,可生成VHDL或者Verilog HDL两种类型的代码。

02

具体操作步骤

新建一个matlab的脚本,键入下面两行代码,这里是直接调用matlab已经定义好的“dspprogfirhdl”模型,然后在simulink工具中打开该系统模型。

modelname = ‘dspprogfirhdl’;open_system(modelname)

运行上面两行代码后,会打开simulink并出现下图:

4ef7597c-a2d1-11eb-aece-12bb97331649.jpg

上图就是“dspprogfirhdl”模型的结构图, 图中Host Behavioral Model 是用来产生可编程FIR滤波器的系数(低通或者高通滤波器系数),Programmable FIR via Registers 是我们要生成的可编程滤波器模块,FIR Behavioral 是一个行为级的参考模块,它用来和可编程滤波器模块做结果的比对。

双击上图中的 Programmable FIR via Registers 模块或者运行如下脚本中:

systemname = [modelname ‘/Programmable FIR via Registers’];open_system(systemname);

会出现下图,这是programmable FIR via Registers模块的内部结构:

4fbbb812-a2d1-11eb-aece-12bb97331649.png

上图中coeffs_registers 是一个FIR 滤波器的系数寄存器,当‘write_enable’ 信号拉高写FIR的系数;当 ‘write_done’ 拉高,也就是写完成时, shadow registers 才会更新一次FIR的滤波器系数,该模型生成的HDL代码默认是全并行的结构实现,可根据需要改为串行流水结构。

开始执行仿真,以及查看仿真波形,执行如下代码;

sim(modelname);open_system([modelname ‘/Scope’]);

会生成如下的仿真结果:

上图中,filter_input是输入的信号,ref_out和dut output是参考模型和dut的输出结果,error是二者的结果比对情况。

也可以使用simulink工具中的 Logic Analyzer逻辑分析仪查看波形,点击本文第一张图中的wifi符号,如下图:

4fe0e970-a2d1-11eb-aece-12bb97331649.png

最后会在 Logic Analyzer中生成如下的波形图:

500a484c-a2d1-11eb-aece-12bb97331649.jpg

将filter滤波器输入信号和输出信号用模拟形式展开,如下图:

5023bab6-a2d1-11eb-aece-12bb97331649.jpg

03

生成HDL代码

下面通过两种方式生成HDL代码

方式一(脚本):

脚本中键入如下代码,生成HDL的dut代码(默认生成.vhd的代码):

workingdir = tempname;makehdl(systemname,‘TargetDirectory’,workingdir);

matlab命令行窗口中出现如下图,表示成功FIR滤波器的DUT代码:

502cd038-a2d1-11eb-aece-12bb97331649.jpg

脚本中键入如下代码,生成HDL的tb代码:

makehdltb(systemname,‘TargetDirectory’,workingdir);

matlab命令行窗口中出现如下图,表示成功FIR滤波器的TB代码:

505b0458-a2d1-11eb-aece-12bb97331649.png

方式二(界面):

在下图中双击箭头所示部分,会出现configration配置界面(生成.v格式的代码):

509bdbc2-a2d1-11eb-aece-12bb97331649.jpg

出现下图,按照如下图操作1,2,3,然后点击下方generate。

50d60180-a2d1-11eb-aece-12bb97331649.png

matlab的命令行出现下图,表示成功生成FIR滤波器的DUT代码:

50ded9a4-a2d1-11eb-aece-12bb97331649.png

在configuration中选取testbench然后点击生成testbench即可。

51252bf2-a2d1-11eb-aece-12bb97331649.jpg

matlab的命令行出现下图,表示成功生成FIR滤波器的TB代码:

5162db82-a2d1-11eb-aece-12bb97331649.png

04

modelsim工具仿真

经过matlab工具生成可编程的FIR滤波器HDL代码后,在工作目录中会有如下的文件(包括:仿真用的数据.dat文件,dut和tb文件,run.do脚本):

516dd690-a2d1-11eb-aece-12bb97331649.png

使用modelsim仿真后的结果如下:

51779f68-a2d1-11eb-aece-12bb97331649.png

原文标题:matlab工具生成可编程FIR滤波器的HDL代码

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    185

    文章

    2980

    浏览量

    230927
  • 滤波器
    +关注

    关注

    161

    文章

    7859

    浏览量

    178861

原文标题:matlab工具生成可编程FIR滤波器的HDL代码

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADS7066有可编程滤波器,请问使用该滤波器时,是否可以简化设计抗混叠滤波的截止频率?

    我看ADS7066有可编程滤波器,请问使用该滤波器时,是否可以简化设计抗混叠滤波的截止频率?是否会有像SD ADC样的过采样效果? 例如
    发表于 11-25 07:29

    基于FPGA实现FIR数字滤波器

    在数字信号处理系统中,有限脉冲响应(finite impulse response,FIR)数字滤波器非常重要的基本单元。近年来,由于FPGA具有高速度、高集成度和高可靠性的特点
    的头像 发表于 11-05 16:26 914次阅读
    基于FPGA实现<b class='flag-5'>FIR</b>数字<b class='flag-5'>滤波器</b>

    利用可编程可变电阻滤波器提高分辨率的ADS7138

    电子发烧友网站提供《利用可编程可变电阻滤波器提高分辨率的ADS7138.pdf》资料免费下载
    发表于 09-23 11:38 0次下载
    利用<b class='flag-5'>可编程</b>可变电阻<b class='flag-5'>滤波器</b>提高分辨率的ADS7138

    具有可编程FIR和IIR滤波器的Δ-Σ ADC的优点

    电子发烧友网站提供《具有可编程FIR和IIR滤波器的Δ-Σ ADC的优点.pdf》资料免费下载
    发表于 09-03 11:48 0次下载
    具有<b class='flag-5'>可编程</b><b class='flag-5'>FIR</b>和IIR<b class='flag-5'>滤波器</b>的Δ-Σ ADC的优点

    FIR滤波器的工作原理和特点

    FIR(Finite Impulse Response)滤波器,即有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件之
    的头像 发表于 08-05 16:33 1418次阅读
    <b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>的工作原理和特点

    如何区分IIR滤波器FIR滤波器

    IIR(无限脉冲响应)滤波器FIR(有限脉冲响应)滤波器是数字信号处理领域中两种非常重要的滤波器类型。它们在许多应用中都发挥着关键作用,如音频处理、图像处理、通信系统等。 1. 引言
    的头像 发表于 07-19 09:44 5223次阅读

    iir滤波器fir滤波器的优势和特点

    IIR滤波器FIR滤波器是数字信号处理领域中两种非常重要的滤波器类型。它们各自具有独特的优势和特点,适用于不同的应用场景。本文将介绍IIR滤波器
    的头像 发表于 07-19 09:28 1807次阅读

    基于matlab FPGA verilog的FIR滤波器设计

    今天和大侠简单聊聊基于matlab FPGA verilog的FIR滤波器设计,话不多说,上货。 本次设计实现8阶滤波器,9
    发表于 07-04 20:11

    matlab与FPGA数字信号处理系列 Verilog 实现并行 FIR 滤波器

    rst_n 低电平进行复位; (2)获取滤波器系数 h0 ~ h7; 按照 第讲 通过matlab的fdatool工具箱设计FIR滤波器
    发表于 05-24 07:48

    DSP教学实验箱_DSP算法实验_嵌入式教程:4-3 有限冲激响应滤波器FIR)算法(CCS显示)

    生成滤波器,另外种是纯算法生成滤波器。本实验中是通过FIR
    发表于 05-16 09:30

    Matlab生成fir滤波器抽头系数

    在Vivado调用fir滤波器时,我们会遇到需要填充滤波器抽头系数的问题,手工计算又不现实,所以在此向大家介绍
    发表于 04-30 16:17

    Vivado 使用Simulink设计FIR滤波器

    。 使用vivado的System Generator可以在simulink下快速的通过matlab的强大设计功能设计滤波器。这里使用fdatool设计了15阶的
    发表于 04-17 17:29

    Matlab生成fir滤波器抽头系数的流程

    在Vivado调用fir滤波器时,我们会遇到需要填充滤波器抽头系数的问题,手工计算又不现实,所以在此向大家介绍
    的头像 发表于 03-25 09:49 1544次阅读
    <b class='flag-5'>Matlab</b><b class='flag-5'>生成</b><b class='flag-5'>fir</b><b class='flag-5'>滤波器</b>抽头系数的流程

    Vivado经典案例:使用Simulink设计FIR滤波器

    FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格
    的头像 发表于 03-25 09:18 2254次阅读
    Vivado经典案例:使用Simulink设计<b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>

    如何在Matlab中实现不同窗低通滤波器的设计?

    Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。
    的头像 发表于 02-27 14:11 7248次阅读
    如何在<b class='flag-5'>Matlab</b>中实现不同窗低通<b class='flag-5'>滤波器</b>的设计?