在MATLAB外部设置一个可写的工作文件夹®安装文件夹,用于存储完成教程工作时生成的文件。教程说明假定您创建了文件夹hdlfilter_tutorials
在驱动器C上。
本教程指导您完成以下步骤:设计优化的量化离散时间FIR滤波器,为滤波器生成Verilog代码,以及使用生成的测试台验证Verilog代码。
本节假设您熟悉MATLAB用户界面和滤波器设计器。
启动MATLAB软件。
将当前文件夹设置为在其中创建的文件夹为教程文件创建文件夹.
通过输入来启动过滤器设计器FilterDesigner.
命令在MATLAB命令窗口。出现“筛选器设计与分析工具”对话框。
在“过滤器设计和分析工具”对话框中,设置以下过滤器选项:
选项 | 价值 |
---|---|
响应类型 | 低通 |
设计方法 | 冷杉Equiripple |
过滤器订单 | 最低订购量 |
选项 | 密度系数:20 |
频率规格 | 单位: 财政司司长: Fpass: Fstop: 12000 |
震级规格 | 单位: 阿帕斯: 消毒药: |
这些设置用于过滤器设计器为您创建的默认过滤器设计。如果不必更换过滤器,以及设计滤波器是灰色的,你完成了,可以跳到量化FIR滤波器.
点击设计滤波器.筛选器设计器为指定的设计创建筛选器。当任务完成时,以下消息将出现在筛选器设计器状态栏中。
设计滤波器……完成
有关使用滤波器设计器设计滤波器的更多信息,请参阅DSP系统工具箱™ 文档
您必须量化用于HDL代码生成的过滤器。为了量化滤波器,
打开在中创建的FIR滤波器设计在过滤器设计器中设计FIR滤波器如果它还没有打开。
单击“设置量化参数”按钮在左侧工具栏中。筛选器设计器显示过滤算法菜单在其对话框的下半部分。
选择定点
从列表中删除。然后选择指定所有
从过滤精度列表。过滤器设计器在其对话框的下半部分显示量化参数的三个选项卡面板中的第一个。
使用量化选项测试各种设置对量化滤波器的性能和精度的影响。
设置量化参数如下:
选项卡 | 参数 | 设置 |
---|---|---|
系数 | 分子字长 | 16. |
Best-precision部分长度 | 挑选出来的 |
|
使用无符号表示法 | 清除 |
|
缩放分子系数以充分利用整个动态范围 | 清除 |
|
输入输出 | 输入字长 | 16. |
输入分数长度 | 15. |
|
输出字长 | 16. |
|
过滤内部 | 舍入模式 | 地板上 |
溢出模式 | 饱和 |
|
累积。字长 | 40 |
点击申请.
有关使用滤波器设计器量化滤波器的更多信息,请参阅DSP系统工具箱文档。
量化过滤器后,您已准备好配置编码器选项并为过滤器生成Verilog代码。本节指导您通过启动UI,设置选项,并为您设计和量化的FIR滤波器生成Verilog代码和测试台在过滤器设计器中设计FIR滤波器和量化FIR滤波器.
通过选择启动Filter Design HDL Coder™UI目标>生成HDL.在“筛选设计器”对话框中。筛选器显示“生成HDL”对话框。
选择Verilog
为语言选项,如下图所示。
在里面的名字的文本框目标窗格,替换默认名称optfir
.此选项名称名称Verilog模块以及包含过滤器的Verilog代码的文件。
在里面过滤器结构窗格中,选择优化高密度脂蛋白选择。此选项用于生成针对性能或空间要求优化的HDL代码。启用此选项后,编码器会使关于数据类型的权衡权衡,可能忽略您的量化设置以实现优化。当您使用该选项时,请记住,您以原始过滤器对象产生的过滤器结果与优化的HDL代码产生的模拟结果之间的潜在数字差异的成本。
选择CSD.
为系数乘数选择。该选项通过指示编码器用由规范签名的数字(CSD)技术产生的部分产品来替换它们来优化系数乘数操作。下载188bet金宝搏该技术通过表示具有最小非零数字计数的二进制数来最小化恒定乘法所需的添加操作的数量。
选择添加管道寄存器选择。对于FIR滤波器,这个选项优化最终的总和。编码器创建一个最终的加法器,对连续的产品执行成对的加法器,并在树的每一层之后包含一个管道寄存器阶段。下载188bet金宝搏当用于FIR滤波器时,这个选项可以在原始滤波器对象产生的结果和优化的HDL代码的模拟结果之间产生数值差异。
生成HDL对话框现在如图所示。
选择全局设置选项卡。然后选择一般选项卡的附加的设置部分
在里面标题评论文本框,键入教程-优化FIR滤波器
.编码器在每个生成的文件中将注销注释块的末尾添加到标题注释块的末尾。
选择港口选项卡的附加的设置ui的一部分。
更改输入和输出端口的名称。在里面输入端口文本框、替换滤入
具有data_in
.在里面输出端口文本框、替换过滤掉
具有data_out
.
的复选框清除添加输入寄存器选择。这港口窗格现在看起来如图所示。
单击试验台“生成HDL”对话框中的。在文件名称文本框中,将默认名称替换为optfir_tb.
. 此选项命名生成的测试台文件。
在“测试台”窗格中,单击“配置标签。注意误差容限(位)选择启用。启用此选项是因为先前选择的优化选项(例如添加管道寄存器)可能产生与原始筛选器对象产生的结果不同的数值结果。您可以使用此选项来调整测试台在生成警告之前进行比较时忽略的最低有效位的数目。
在“生成HDL”对话框中,单击产生开始代码生成过程。代码生成完成后,单击关闭关闭对话框。
编码器在MATLAB命令窗口中显示以下消息,因为它生成过滤器和测试工作台Verilog文件:
###启动Verilog代码生成过程for filter:OptFir ###生成:C:\ HDLFilter_tutorials \ HDLSRC \ OPTFIR.v ###开始生成OPTFIR VERILOG模块###开始生成OPTFIR VERILOG模块BODY ### HDL延迟是8个样本###成功完成Verilog代码生成过程的过滤器:OPTFIR ###开始生成Verilog测试Bench ###生成输入刺激###完成产生输入刺激;长度3429样品。###生成测试台:C:\ HDLFilter_tutorials \ HDLSRC \ OPTFIR_TB.v ###请等待... ###完成生成Verilog测试台
当消息表明时,编码器会创建文件夹hdlsrc
在当前工作文件夹下并放置文件optfir.v
和optfir_tb.v
在那个文件夹。
观察到消息包括生成的代码和测试台文件的超链接。通过单击这些超链接,您可以将代码文件直接打开到MATLAB编辑器中。
生成的Verilog代码具有以下特征:
Verilog模块命名optfir
.
当复位信号高电平(1)时使用异步复位的寄存器。
生成优化数据类型使用并消除冗余操作的代码。
系数乘数用CSD技术进行优化。
使用流水线技术优化的最终求和。
端口名称如下:
Verilog港口 | 的名字 |
---|---|
输入 | data_in |
输出 | data_out |
时钟输入 | 时钟 |
时钟使能输入 | clk_enable |
复位输入 | 重置 |
用于处理过滤器输出的额外寄存器。
命名系数co
,在那里N
N
是系数数,从1开始。
当零连接时使用类型安全表示:' 0 ' & ' 0 '
......
后修复""过程"
被追加到sequential (开始
)块名称。
生成的测试台:
是一个可移植的Verilog文件。
强制时钟、时钟启用和重置输入信号。
强制时钟使输入信号高电平有效。
驱动时钟输入信号高(1)为5纳秒,低(0)持续5纳秒。
强制复位信号两个周期加上2纳秒的保持时间。
对数据输入信号应用2纳秒的保持时间。
应用4位的误差范围。
对于FIR滤波器,应用脉冲、步进、斜坡、啁啾和白噪声刺激类型。
通过打开和浏览文件,熟悉优化生成的Verilog代码optfir.v
在ASCII或HDL模拟器编辑器中:
打开生成的Verilog筛选器文件optcfir.v
.
搜索optfir
. 此行使用您为指定的值标识Verilog模块的名字选项在目标窗玻璃请参阅中的步骤3配置并生成优化的Verilog代码.
搜索辅导的
.该代码段是编码器放置您输入的文本的地方标题评论选项请参阅中的步骤9配置并生成优化的Verilog代码.
搜索硬体描述语言程式码
.本节列出了您修改的编码器选项配置并生成优化的Verilog代码.
搜索过滤器设置
.本节的VHDL代码描述滤波器设计和量化设置,如您在在过滤器设计器中设计FIR滤波器和量化FIR滤波器.
搜索模块
.属性指定的值将用于命名Verilog模块的名字选项在目标窗格。的选项定义的端口列表港口“生成HDL”对话框的窗格。属性指定的值命名用于数据输入和输出的端口输入端口和输出端口网上期权港口选项卡中的“生成HDL”对话框。参见步骤3和11配置并生成优化的Verilog代码.
搜索输入
.此行和以下四条线路声明每个端口的方向模式。
搜索常量
.此代码定义了系数。它们使用默认命名方案命名,co
,在那里N
N
是系数数,从1开始。
搜索信号
.这段代码定义了过滤器的信号。
搜索SUMVector1.
.该代码区域声明了用于实现流水线最终加法器的实例的信号。还包括四个额外的流水线最终添加剂的信号声明。这些信号用于实现使用的流水线灭火加法器样式优化添加管道寄存器选择。请参阅第7步配置并生成优化的Verilog代码.
搜索过程
.这块
的名字Delay_Pipeline_process
包括默认块
后缀""过程"
.
搜索重置
.此代码断言复位信号。默认,有效高(1)已指定。还要注意过程
在为寄存器生成代码时应用默认的异步重置样式。
搜索posedge
. 当过滤器在寄存器上运行时,该Verilog代码检查上升沿。
搜索sumdelay_pipeline_process1
. 此块实现您在的步骤7中指定的流水线FIR加法器样式的流水线寄存器级配置并生成优化的Verilog代码.
搜索output_register
.这段代码将过滤器输出写入输出寄存器。此寄存器的代码是默认生成的。在第12步配置并生成优化的Verilog代码,你清除了添加输入寄存器选项,但留下了添加输出寄存器挑选出来的。还要注意,进程名Output_Register_process
包括默认过程
后缀""过程"
.
搜索data_out
.此代码驱动过滤器的输出数据。
本节介绍如何使用生成的Verilog测试台验证FIR筛选器的优化生成的Verilog代码。本教程使用导师图形®ModelSim®作为编译和模拟Verilog代码的工具。您可以使用其他HDL模拟工具包。
要验证筛选器代码,请完成以下步骤:
开始你的模拟器。当你开始导师图形模型在模拟器中,将出现与以下类似的屏幕显示。
将当前文件夹设置为包含生成的Verilog文件的文件夹。例如:
cd hdlsrc
如果需要,创建一个设计库来存储编译的Verilog模块。在导师图形模型控件,可以创建一个设计库vlib.
命令。
vlib工作
编译生成的过滤器和测试台Verilog文件。在导师图形模型模拟器,您可以使用视频博客
命令。以下命令编译过滤器和过滤测试台verilog代码。
视频博客optfir。v视频博客optfir_tb.v
下面的屏幕显示了这个命令序列和编译期间显示的信息消息。
加载试验台进行仿真。加载测试台的过程因所使用的模拟器而异。在里面导师图形模型模拟器,加载试验台,以便使用vsim
命令例如:
vsim optfir_tb
以下显示显示了加载的结果optfir_tb.
与之vsim
命令。
打开一个显示窗口,以便在测试台运行时监视模拟。在导师图形模型模拟器,可以使用以下命令打开一个波窗口,并以HDL波形的形式查看仿真结果。
加波*
下列波窗口打开:
要开始运行模拟,请为模拟器发出启动模拟命令。例如,在导师图形模型模拟器,您可以使用运行
命令。
下面的显示显示了运行-
用于启动模拟的命令。
在测试台模拟运行时,注意错误消息。如果出现错误消息,请将其解释为与过滤器设计和所选HDL代码生成选项相关。根据生成筛选器Verilog代码时指定的自定义设置,确定是否预期结果。
下列波窗口将模拟结果显示为HDL波形。