zoukankan      html  css  js  c++  java
  • MATLAB设计不同结构的FIR或IIR滤波器

      网上很多教程都是使用MATLAB的FDATool工具设计滤波器,然后将系数导出,放到IP核中,由IP核根据数据速率核主处理时钟来决定滤波器的结构。这种设计方式很方便但是不灵活,有时会碰到这种情况:我们需要一个FIR滤波器,数据速率和主处理时钟速率都很高,甚至一样,且滤波器的阶数又很高,这个时候由IP自己来生成滤波器时,会生成全并行滤波器,会占用大量资源,甚至资源都不够用。此时我们希望能自己决定滤波器的结构,从而达到资源和效率相匹配的目的。高手可以自己动手用HDL语言来实现自己所需结构的滤波器,本文介绍一种用MATLAB提供的Filterbuilder工具来设计滤波器,并自动生成我们所需结构滤波器的HDL代码。

    1. 打开Filterbuilder工具

      打开Filterbuilder工具有两种方式,一种是在MATLAB的的应用程序中的信号处理和通信一栏下,如图所示:(我用的是MATLAB2016a版本,PS:点击图标右上方的星星图标,可以将工具添加到收藏夹,以后打开方便。)

    第二种是在MATLAB的命令行窗口直接输入filterbuilder回车,选择lowpass,然后确定。

    1.  设计一个低通FIR滤波器

      设计一个低通FIR滤波器,采样率245.76MHz,通带带宽3.2MHz,阻带5MHz,通带纹波0.1dB,阻带衰减80dB,窗函数为Kaiserwin。如图所示:

       点击Apply后再点击右上角的View Filter Response就可以看到滤波器的幅频响应,点击信息按钮,能看到滤波器的阶数以及资源情况,如果全并行结构实现这个滤波器的化,需要687个乘法器,显然这是不合适的。

    1.   生成所需结构的HDL

      点击Data Types按钮,Arithmetic栏选择Fixed point,根据具体情况填入输入数据精度

      点击Code generation标签,然后点击generate HDL,在弹出窗口根据自己熟悉的语言选择VHDL或Verilog。在Architecture处可以选择全并行、全串行、部分串行、级联串行以及分布式。这里选择部分串行,点击view details可以看到不同结构消耗不同数量的乘法器,根据自己系统要求可以自由选择。在下面还可以选择增加流水线寄存器。

      点击global setting,将clock enable input port 名称改为ce。这为后续将HDL代码导入system generator的black box提供方便。

      后面几项根据需要设置。设置完成后点击Generate,即可生成HDL代码。HDL代码可以当做一个模块直接添加到程序中,可以综合。

    转载请注明出处,谢谢!

  • 相关阅读:
    揆首:以极客的思维做云诺
    [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
    wxWidgets初学者导引(3)——wxWidgets应用程序初体验(PDF版及附件下载)
    Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
    十问华为战略营销总裁徐文伟
    Debug与Release有时候确实不一致
    COM实践经验
    [置顶] (游戏编程-04)JAVA版雷电(奇迹冬瓜)
    第23章 COM和ActiveX(COM可以实现跨进程跨机器的函数调用)
    用Delphi即时判断当前的网络的连接方式
  • 原文地址:https://www.cnblogs.com/desen2010/p/6880133.html
Copyright © 2011-2022 走看看