基本的冷杉过滤器

为您的教程文件创建一个文件夹

在MATLAB之外设置一个可写的工作文件夹®安装文件夹,用于存储在完成教程工作时生成的文件。教程说明假设您已经创建了该文件夹hdlfilter_tutorials在驱动器C。

在滤波器设计器中设计FIR滤波器

本节假设您熟悉MATLAB用户界面和过滤器设计器。下面的说明指导您通过程序设计和创建一个基本FIR滤波器使用过滤器设计器:

  1. 启动MATLAB软件。

  2. 将当前文件夹设置为在其中创建的文件夹为您的教程文件创建一个文件夹

  3. 属性启动筛选器设计器filterDesigner在MATLAB命令窗口中的命令。出现“滤镜设计与分析工具”对话框。

  4. 在“筛选器设计与分析工具”对话框中,检查是否设置了以下筛选器选项:

    选项 价值
    响应类型 低通滤波器
    设计方法 冷杉Equiripple
    过滤器订单 最低订购量
    选项 密度的因素:20.
    频率的规范

    单位:赫兹

    Fs:48000

    成就:9600

    Fstop:12000

    大小规格

    单位:dB

    apas:1

    Astop:80

    这些设置用于筛选器设计器为您创建的默认筛选器设计。如果您不需要更改过滤器,并且设计滤波器是灰色,你做了,可以跳到吗数字转换过滤器

  5. 如果您修改了步骤4中列出的选项,请单击设计滤波器。筛选器设计器为指定设计创建筛选器,并在任务完成时在筛选器设计器状态栏中显示以下消息。

    设计滤波器……完成

    有关使用过滤器设计器设计过滤器的更多信息,请参阅DSP System Toolbox™文档。

数字转换过滤器

您必须为HDL代码生成量化过滤器。要量化你的过滤器,

  1. 打开您创建的基本FIR滤波器设计在滤波器设计器中设计FIR滤波器

  2. 单击“设置量化参数”按钮在左侧的工具栏中。过滤器设计器显示过滤算法菜单在其对话框的下半部分。

  3. 选择定点过滤算法列表。然后选择指定所有过滤精度列表。过滤器设计器在对话框的下半部分显示量化参数的三个选项卡面板中的第一个面板。

    使用量化选项来测试各种设置对量化滤波器的性能和准确性的影响。

    量化参数设置如下:

    选项卡 参数 设置
    系数 分子字长 16
    Best-precision部分长度 选择
    使用无符号表示 清除
    缩放分子系数,以充分利用整个动态范围 清除
    输入/输出 输入单词长度 16
    输入部分长度 15
    输出字长 16
    过滤器内部 舍入模式 地板上
    溢出模式 饱和
    Accum.字长 40
  4. 点击应用

有关使用过滤器设计器量化过滤器的更多信息,请参阅DSP系统工具箱文档。

配置和生成VHDL代码

量化过滤器之后,就可以为过滤器配置编码器选项并生成VHDL代码了。本节将指导您启动Filter Design HDL Coder™UI,设置选项,并为您设计和量化的基本FIR滤波器生成VHDL代码和测试工作台在滤波器设计器中设计FIR滤波器数字转换过滤器

  1. 通过选择启动过滤器设计HDL编码器UI目标>产生高密度脂蛋白在筛选器设计器对话框中。过滤器设计器显示生成HDL对话框。

  2. 寻找过滤器设计HDL编码器的在线帮助。

    1. 在MATLAB窗口中,单击帮助按钮或单击工具栏上的按钮帮助>产品帮助

    2. 内容面板的帮助浏览器,选择滤波器设计HDL编码器条目。

    3. 最小化帮助浏览器。

  3. 在生成HDL对话框中,单击帮助按钮。这时会打开一个上下文敏感的帮助窗口。该窗口显示有关对话框的信息。

  4. 关闭帮助窗口。

  5. 将光标放在文件夹中的标签或文本框目标窗格中的生成HDL对话框,并右键单击。一个这是什么?按钮出现。

  6. 点击这是什么?上下文敏感的帮助窗口显示描述文件夹选择。配置生成的HDL代码的内容和样式,在工作时使用上下文敏感的帮助获取更多信息。每个选项都有一个帮助主题。

  7. 的名字的文本框目标窗格,将默认名称替换为basicfir。此选项命名VHDL实体和包含筛选器VHDL代码的文件。

  8. 选择全局设置选项卡的UI。然后选择一般选项卡的附加的设置UI部分。类型教程-基本的FIR滤波器评论标题文本框中。编码器将注释添加到每个生成文件中头注释块的末尾。

  9. 选择港口选项卡的附加的设置UI部分。

  10. 更改输入和输出端口的名称。在输入端口文本框、替换filter_indata_in。在输出端口文本框、替换filter_outdata_out

  11. 的复选框添加输入寄存器选择。的港口窗格现在看起来如下所示。

  12. 单击试验台选项卡中的生成HDL对话框。在文件名称文本框,将默认名称替换为basicfir_tb。此选项命名生成的测试工作台文件。

  13. 点击生成启动代码生成过程。

    编码器显示消息在MATLAB命令窗口,因为它产生过滤器和测试台VHDL文件:

    启动过滤器VHDL代码生成过程:basicfir生成:C:\hdlfilter_tutorials\hdlsrc\basicfir。启动basicfir VHDL实体的生成basicfir VHDL体系结构的生成HDL延时为2个样本成功完成过滤器的VHDL代码生成过程:启动VHDL测试台生成输入刺激生成完成输入刺激生成;3429个样本长度。###生成测试平台:C:\hdlfilter_tutorials\hdlsrc\basicfir_tb。请稍等……完成VHDL测试台的生成

    如消息所示,编码器创建文件夹hdlsrc在您当前的工作文件夹下,并放置文件basicfir.vhdbasicfir_tb.vhd在那个文件夹。

    请注意,这些消息包括指向生成代码和测试工作台文件的超链接。通过单击这些超链接,您可以直接在MATLAB编辑器中打开代码文件。

    生成的VHDL代码具有以下特点:

    • 硬件描述语言(VHDL)实体命名basicfir

    • 当复位信号活跃时,使用异步复位的寄存器(1)。

    • 端口有以下名称:

      硬件描述语言(VHDL)端口 的名字
      输入 data_in
      输出 data_out
      时钟输入 clk
      时钟允许输入 clk_enable
      复位输入 重置
    • 用于处理过滤器输出的额外寄存器。

    • 时钟输入,时钟使能输入,和重置端口是类型STD_LOGIC和数据输入输出端口是类型STD_LOGIC_VECTOR

    • 系数是命名多项式系数n,在那里n为系数,从1开始。

    • 类型安全表示在零连接时使用:' 0 ' & ' 0 '

    • 寄存器是由该语句生成的那么ELSIF clk'事件,clk='1'而不是rising_edge函数。

    • 后缀“_process”附加到进程名称。

    生成的测试工作台:

    • 是一个可移植的VHDL文件。

    • 强制时钟,时钟启用,和重置输入信号。

    • 强制时钟使输入信号活跃高。

    • 驱动时钟输入信号高(1)为5纳秒和低(0)为5纳秒。

    • 强制复位信号为两个周期加上2纳秒的保持时间。

    • 对数据输入信号应用2纳秒的保持时间。

    • 对于FIR滤波器,应用脉冲、步进、斜坡、啁啾和白噪声刺激类型。

  14. 当您完成生成代码时,单击关闭关闭生成HDL对话框。

探索生成的VHDL代码

通过打开和浏览文件来熟悉生成的VHDL代码basicfir.vhd在一个ASCII或HDL模拟器编辑器。

  1. 打开生成的VHDL过滤器文件basicfir.vhd

  2. 搜索basicfir。属性指定的值标识VHDL模块的名字选项目标窗格。参见第5步配置和生成VHDL代码

  3. 搜索教程。此部分是编码人员放置您为评论标题选择。参见第10步配置和生成VHDL代码

  4. 搜索HDL代码。本节列出您所修改的编码器选项配置和生成VHDL代码

  5. 搜索过滤器设置。本节描述您在在滤波器设计器中设计FIR滤波器数字转换过滤器

  6. 搜索实体。属性指定的值命名VHDL实体的名字选项目标窗格。参见第5步配置和生成VHDL代码

  7. 搜索港口。这港口声明定义了时钟、时钟启用、重置以及数据输入和输出端口。时钟、时钟启用和重置信号的端口用默认字符向量命名。方法上指定的用于数据输入和输出的端口输入端口输出端口选项港口选项卡的生成HDL对话框。参见第12步配置和生成VHDL代码

  8. 搜索常量。本节定义系数。它们使用默认的命名方案进行命名,多项式系数n,在那里n为系数,从1开始。

  9. 搜索信号。这段代码定义了过滤器的信号。

  10. 搜索过程。的过程块名称Delay_Pipeline_process包括默认过程块后缀“_process”

  11. 搜索如果重置。此代码断言复位信号。指定了默认的active high(1)。还请注意过程块在为寄存器生成VHDL代码时应用默认的异步重置样式。

  12. 搜索ELSIF。当过滤器对寄存器操作时,此代码检查上升边。默认的ELSIF clk 'event语句,而不是可选语句rising_edge函数。

  13. 搜索Output_Register。这段代码将过滤器数据写入输出寄存器。默认情况下生成此寄存器的代码。在步骤13中配置和生成VHDL代码,你清除了添加输入寄存器选项,但留下了添加输出寄存器选中。还请注意过程块名称Output_Register_process包括默认过程块后缀“_process”

  14. 搜索data_out。这段代码驱动过滤器的输出数据。

验证生成的VHDL代码

本节解释如何验证生成的VHDL代码的基本FIR滤波器与生成的VHDL测试台。本教程使用导师图形®ModelSim®软件作为编译和模拟VHDL代码的工具。您还可以使用其他VHDL仿真工具包。

要验证过滤器代码,请完成以下步骤:

  1. 开始你的导师图形ModelSim模拟器。

  2. 将当前文件夹设置为包含生成的VHDL文件的文件夹。例如:

  3. 如果需要,可以创建一个设计库来存储编译过的VHDL实体、包、架构和配置。在导师图形ModelSim模拟器,您可以创建一个设计库与vlib命令。

  4. 编译生成的过滤器和测试台VHDL文件。在导师图形ModelSim模拟器,您编译的VHDL代码与威科姆公司命令。下面的命令编译过滤器和过滤器测试台VHDL代码。

    威科姆公司basicfir。vhd威科姆公司basicfir_tb.vhd

    下面的屏幕显示了编译期间显示的命令序列和信息消息。

  5. 加载测试台进行模拟。加载测试工作台的过程因您使用的模拟器而异。在导师图形ModelSim模拟器,您为模拟加载测试工作台vsim命令。例如:

    vsim work.basicfir_tb

    下图显示了加载的结果work.basicfir_tbvsim命令。

  6. 打开一个显示窗口,在测试工作台运行时监视模拟。在导师图形ModelSim模拟器,使用以下命令打开一个窗口和查看模拟结果作为HDL波形。

    以下窗口显示。

  7. 要开始运行模拟,请为您的模拟器发出启动模拟命令。例如,在导师图形ModelSim模拟器,您可以启动模拟与运行命令。

    以下显示了运行-用于启动模拟的命令。

    当您的测试平台模拟运行时,请注意错误消息。如果出现错误消息,解释它们,因为它们属于您的过滤器设计和您选择的HDL代码生成选项。根据您在生成筛选器VHDL代码时指定的自定义,确定是否期望得到结果。

    以下窗口以HDL波形显示仿真结果。