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

    文章

    3029

    浏览量

    239223
  • 滤波器
    +关注

    关注

    162

    文章

    8471

    浏览量

    186288

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX260/MAX261/MAX262:微处理可编程通用有源滤波器的设计与应用

    /MAX262系列微处理可编程通用有源滤波器,探讨它们的特点、设计要点以及实际应用。 文件下载: MAX260BCNG+.pdf 、产品概述 MAX260/MAX261/MAX26
    的头像 发表于 04-03 12:20 188次阅读

    深入剖析MAX263/264/267/268:引脚可编程通用和带通滤波器

    Integrated公司推出的MAX263/264/267/268引脚可编程通用和带通滤波器,希望能为工程师们在实际设计中提供有力帮助。 文件下载: MAX263ACWI+.pdf 、概述 MAX263/264
    的头像 发表于 04-03 12:15 200次阅读

    20位引脚可编程低功耗Σ-Δ ADC AD7781:特性、应用与设计要点

    就来深入探讨款由ADI公司推出的20位引脚可编程低功耗Σ-Δ ADC——AD7781,了解它的特性、应用场景以及设计过程中的注意事项。 文件下载: AD7781.pdf 、AD7781的特性亮点 1. 引脚
    的头像 发表于 04-01 09:50 405次阅读

    IDT821024:四通道非可编程PCM编解码的技术剖析

    能和广泛应用的四通道非可编程PCM编解码。 文件下载: 821024JG.pdf 产品特性 多通道与滤波功能 IDT821024集成了四通道的PCM编解码功能,并配备了片上数字
    的头像 发表于 01-30 17:45 1313次阅读

    通过vivado HLS设计FIR低通滤波器

    Vivado HLS是款强大的高层次综合工具,可将C/C++代码转换为硬件描述语言(HDL),显著提升FPGA开发效率。
    的头像 发表于 01-20 16:19 539次阅读
    通过vivado HLS设计<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>FIR</b>低通<b class='flag-5'>滤波器</b>

    MAX262微处理可编程通用有源滤波器:设计与应用指南

    微处理可编程通用有源滤波器,凭借其独特的性能和灵活的编程能力,为工程师们提供了强大的信号处理解决方案。今天,我们就深入探讨这系列
    的头像 发表于 01-20 11:05 476次阅读

    MAX261微处理可编程通用有源滤波器的深度剖析

    MAX260/MAX261/MAX262:微处理可编程通用有源滤波器的深度剖析 在电子工程领域,滤波器的设计与应用至关重要。今天,我们将深入探讨Maxim公司的MAX260/MAX2
    的头像 发表于 01-20 11:00 330次阅读

    MAX260微处理可编程通用有源滤波器的深度解析

    MAX260/MAX261/MAX262:微处理可编程通用有源滤波器的深度解析 在电子设计领域,滤波器的重要性不言而喻。今天,我们要深入探讨的是Maxim公司的MAX260/MAX2
    的头像 发表于 01-20 10:55 305次阅读

    MAX270/MAX271 数字可编程双二阶连续时间低通滤波器详解

    MAX270/MAX271 数字可编程双二阶连续时间低通滤波器详解 引言 在电子设计领域,滤波器的性能对于信号处理至关重要。Maxim Integrated公司的MAX270/MAX271数字
    的头像 发表于 01-19 16:30 309次阅读

    HMC1023LP5E:72 MHz 双可编程低通滤波器驱动的卓越之选

    HMC1023LP5E:72 MHz 双可编程低通滤波器驱动的卓越之选 在电子工程师的设计世界里,滤波器是至关重要的组件,它能帮助我们筛选出所需的信号,抑制干扰。今天要给大家详细介绍
    的头像 发表于 01-19 16:05 288次阅读

    ADRF6520:用于微瓦级无线电的双可编程滤波器和可变增益放大器

    ADRF6520:用于微瓦级无线电的双可编程滤波器和可变增益放大器 在当今的电子世界中,对于高性能、高集成度的射频和信号处理组件的需求日益增长。ADRF6520作为款由ADI公司推出的产品,为微瓦
    的头像 发表于 01-19 15:50 222次阅读

    IDT821024:四通道非可编程PCM编解码的技术剖析

    道非可编程PCM编解码。 文件下载: 821024PPG.pdf 、产品特性概览 1. 多通道与滤波功能 IDT821024具备4通道
    的头像 发表于 01-13 17:00 603次阅读

    如何选择合适的高阶低通滤波器

    高阶低通滤波器种通过组合多个二阶滤波器级来实现的滤波器,用于抑制高频信号并保留低频信号。从信号处理的角度来看,世界上所有的信号都可以被理解为是
    的头像 发表于 12-30 15:37 1381次阅读
    如何选择<b class='flag-5'>一</b><b class='flag-5'>个</b>合适的高阶低通<b class='flag-5'>滤波器</b>

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

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

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

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