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
    +关注

    关注

    189

    文章

    3018

    浏览量

    237581
  • 滤波器
    +关注

    关注

    162

    文章

    8351

    浏览量

    184749

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    信号处理:指数移动平均 (EMA) 滤波器

    作者: Mustahsin Zarif 之前我们在《信号处理简介》文中已经见过了两类滤波器:有限脉冲响应 (FIR) 滤波器和无限脉冲响应 (IIR)
    的头像 发表于 10-04 18:35 1548次阅读
    信号处理:指数移动平均 (EMA) <b class='flag-5'>滤波器</b>

    LP5560可编程单LED驱动数据手册总结

    LP5560 是可编程 LED 驱动,可生成各种闪烁序列,每个序列最多三不同长度的脉冲。闪烁序列可以通过单线接口进行
    的头像 发表于 08-29 11:07 901次阅读
    LP5560<b class='flag-5'>可编程</b>单LED驱动<b class='flag-5'>器</b>数据手册总结

    基于 FPGA 的任意波形发生+低通滤波器系统设计

    设计将用两种方式实现低通滤波器。 方法:利用Vivado自身具备的DDS和FIR的IP核实现; 方法二:通过Verilog编程实现FIR
    发表于 05-07 15:34

    HMC1044LP3E可编程谐波低通滤波器,1-3GHz 3dB带宽技术手册

    HMC1044LP3E是款针对所有采用正交调制和/或解调应用的可编程带宽LPF(低通滤波器)。 HMC1044LP3E可滤除LO谐波,
    的头像 发表于 04-23 10:48 759次阅读
    HMC1044LP3E<b class='flag-5'>可编程</b>谐波低通<b class='flag-5'>滤波器</b>,1-3GHz 3dB带宽技术手册

    ADRF6520 针对μW无线电2GHz通道间隔的双通道可编程滤波器和VGA技术手册

    ADRF6520包括对匹配的完全差分低噪声、低失真可编程滤波器和可变增益放大器(VGA)。每个通道都能够抑制较大的带外干扰信号,同时忠实放大所需信号,因而模数转换(ADC)的带宽和
    的头像 发表于 04-23 10:16 665次阅读
    ADRF6520 针对μW无线电2GHz通道间隔的双通道<b class='flag-5'>可编程</b><b class='flag-5'>滤波器</b>和VGA技术手册

    LTC6602双通道、匹配、高频带通/低通滤波器技术手册

    LTC6602 是款双通道、匹配、可编程带通或低通滤波器和差分驱动。 LTC6602 的选择性再加上其相位匹配和动态范围,使其非常适合于 RFID 系统中的
    的头像 发表于 04-21 15:20 904次阅读
    LTC6602双通道、匹配、高频带通/低通<b class='flag-5'>滤波器</b>技术手册

    HMC900LP5E 50MHz双通道基带可编程低通滤波器技术手册

    HMC900LP5E是款6阶、可编程带宽、完全校准、双通道低通滤波器。 该器件具有0或10 dB输入增益设置并支持3.5至50 MHz范围的任意带宽。校准时,相对所需带宽的精度为±2.5%。 它包括
    的头像 发表于 04-21 10:05 818次阅读
    HMC900LP5E 50MHz双通道基带<b class='flag-5'>可编程</b>低通<b class='flag-5'>滤波器</b>技术手册

    HMC1023LP5E 72MHz双通道可编程低通滤波器技术手册

    HMC1023是款6阶、可编程带宽、完全校准、双通道低通滤波器。 它具有可编程的0至10 dB增益并支持5 MHz至72 MHz范围的任意带宽。 校准时,带宽精确至+/-2.5%。
    的头像 发表于 04-19 14:00 655次阅读
    HMC1023LP5E 72MHz双通道<b class='flag-5'>可编程</b>低通<b class='flag-5'>滤波器</b>技术手册

    ADRF6520针对μW无线电2GHz通道间隔的双通道可编程滤波器和VGA技术手册

    ADRF6520包括对匹配的完全差分低噪声、低失真可编程滤波器和可变增益放大器(VGA)。每个通道都能够抑制较大的带外干扰信号,同时忠实放大所需信号,因而模数转换(ADC)的带宽和
    的头像 发表于 04-19 11:37 705次阅读
    ADRF6520针对μW无线电2GHz通道间隔的双通道<b class='flag-5'>可编程</b><b class='flag-5'>滤波器</b>和VGA技术手册

    文详解Verilog HDL

    Verilog HDL(Hardware Description Language)是硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。现实生活中多用于专用集成电路
    的头像 发表于 03-17 15:17 3777次阅读
    <b class='flag-5'>一</b>文详解Verilog <b class='flag-5'>HDL</b>

    使用DDS生成信号并在Vivado中实现低通滤波器

    本文使用 DDS 生成信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号。
    的头像 发表于 03-01 14:31 2438次阅读
    使用DDS<b class='flag-5'>生成</b>三<b class='flag-5'>个</b>信号并在Vivado中实现低通<b class='flag-5'>滤波器</b>

    算法操作案例分享丨有限冲激响应滤波器FIR)实验

    》、《电机控制系统设计》、《DSP系统设计与应用》向下滑动查看所有实验列表内容2►案例分享、实验名称:4-2有限冲激响应滤波器FIR)算法(MATLAB辅助,
    的头像 发表于 02-08 09:43 1169次阅读
    算法操作案例分享丨有限冲激响应<b class='flag-5'>滤波器</b>(<b class='flag-5'>FIR</b>)实验

    AFE4400高频率的低通滤波器有什么作用呢?

    AFE4400内部有可编程的RF CF,组成低通滤波器。可是依据RF CF计算出的截止频率会很大,KHZ数量级的。请问,这么高频率的低通滤波器有什么作用呢?
    发表于 01-17 07:38

    可编程交流负载标准

    可编程交流负载标准是电力电子测试领域的重要组成部分,它为交流电源、变频、逆变器等设备的测试提供了标准化的负载条件。这种可编程性使得测试更加灵活和精确,能够满足不同设备和应用场景的需求。 核心在于其
    发表于 01-15 13:53

    PLC可编程控制器的简介

    PLC的英文全称为Programmable Logic Controller,也就是可编程序控制器。它是种将计算机技术与继电器技术结合起来的现代化自动控制装置,1969年,美国数字化设备公司研制出
    的头像 发表于 12-23 09:09 2068次阅读