admin 管理员组文章数量: 1184232
2024年4月12日发(作者:苹果手机access denied)
生成代码前准备工作
在从模型生成HDL代码前,你应该作如下工作:
• 在生成代码前,用hdlsetup功能(详见 Initializing Model Parameters with hdlsetup)
来对你要生成HDL代码的模型进行设置。
• 用hdllib功能来创建目前支持HDL代码生成的模块库(详见 Show Blocks Supported
for HDL Code Generation)通过用这个库里的模块来构建模型,你的模型就会兼容HDL。
支持的模块集合在今后的版本会改变,所以你每次安装新版本的本产品时应该重建支持的
模块库。
• 用 Run Compatibility Checker选项(详见 Selecting and Checking a Subsystem
for HDL Compatibility)来检查你模型或者DUT的HDL兼容性并生成HDL Code Check
Report。
你也可以调用chekhdl函数(见checkhdl)来运行兼容性检查器。
练习简介
HDL Coder支持生成代码,用户可以选择以下环境:
1.
2.
MATLAB命令窗口支持用makehdl,makehdltb和其他函数生成代码
Simulink GUI (配置参数对话框和/或模型浏览器) 提供模型仿真参数/代码生成参数
和函数的集成视图
这个实践练习通过在以上两种环境使用中相同的模型,介绍HDL代码的生成和仿真机制。
在这一系列步骤中,你将:
1.
2.
3.
真
4.
5.
6.
构建一个简单模型用于生成代码
从模型中的子系统生成代码
生成适用于Mentor Graphics ModelSim仿真器的VHDL测试台来实现模型的仿
在仿真器中编译和执行模型和测试台
用同样的模型生成并仿真Verilog代码
检查模型和HDL Coder的兼容性
stir_fixed模型
这些练习用sfir_fixed模型作为HDL代码生成源。该模型模拟一对称有限脉冲响应滤
波器算法,通过定点数计算实现。
该模型里的模块支持HDL代码生成,并且模型参数已进行配置以适于代码生成。想了
解更多关于模型准备以进行代码生成,参考Prepare Simulink Model For HDL Code
Generation.
下图为模型的顶层级别描述。
该模型采用了任务分解,有助于HDL设计:
• 用于执行滤波算法的symmetric_fir子系统是被测器件。一个HDL实体将从这个子系统
被创建、测试,最终综合。
• 驱动该子系统的顶层模型元件是测试台。
顶层模型生成symmetric_fir子系统的16位定点输入信号。Signal From Workspace
模块生成一个用于滤波器的测试输入(激励)信号。四个常数模块提供滤波器系数。
Scope模块仅用来仿真,这些虚拟的模块不会生成HDL代码。
下图描述了symmetric_fir子系统。
定点数数据类型在子系统里传递。输入继承了被送过来的信号的数据类型。在需要的地
方,给定输入的数据类型并采取操作后,模块的内部规则决定了输出的数据类型。
滤波器在y_out管脚输出一个定点数结果,并在delayed_x_out复制其输入(在经过
若干个延迟阶段后)。
在接下来的例程里,你将会生成将symmetric_fir当成一个实体实现的VHDL代码。
然后你会从顶层级别模型生成一个测试台。这个测试台用从Signal From Workspace产生的激
励数据驱动生成的实体完成指定的时钟步数。
用HDL Workflow Advisor生成代码(该法不能生成测试台代码)
这个例程展示了如何用HDL Workflow Advisor从Simulink模型生成HDL代码。
本例程中的模型,stir_fixed已经被准备好用于代码生成。
本例程采用Xilinx ISE综合工具,我们假设你的工具路径已设置好。你也可以用Altera
Quartus II来进行本例程。
• 创建工作文件夹并复制模型
• 用HDL Workflow Advisor生成代码
• 执行FPGA综合和分析
创建工作文件夹并复制模型
1.
2.
启动MATLAB
创建一名为sl_hdlcoder_work的文件夹。比如:
sl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDL Coder生成的文件夹及
代码。这个文件夹的位置不重要,但是不能在MATLAB的文件夹树下。
3. 将sl_hdlcoder_work文件夹设置为工作文件夹。比如:
4. 打开sfir_fixed模型。
5. 将sfir_fixed复制到sl_hdlcoder_work文件夹下。
用HDL Workflow Advisor生成代码
1.
2.
右键点击symmetric_fir子系统,选择HDL Code > HDL Workflow Advisor。
在步骤Set Target > Set Target Device and Synthesis Tool, 在Synthesis
tool 选择Xilinx ISE并点击 Run This Task。
3. 右键点击Prepare Model For HDL Code Generation并选择Run All,HDL
Workflow Advisor检查模型的代码生成兼容性。
4. 在步骤HDL Code Generation > Set Code Generation Options > Set Basic
Options,选择如下选项,然后点击Apply:
• 在 Language, 选择Verilog.
• 使能 Generate traceability report.
• 使能Generate resource utilization report.
5. 浏览Optimization和Coding style 标签下的可用选项。这些选项可以用来修改
所生成代码的实现和格式。
6. 右键点击HDL Code Generation > Generate RTL Code and Testbench step,
选择Run to Selected Task。
代码生成报告自动被打开,它包括资源使用和可追溯性报告。资源使用报告描述你的设
计对硬件资源的使用情况。可追溯性报告允许你在模型和生成的代码之间操作。
执行FPGA综合和分析
1. 在 FPGA Synthesis and Analysis > Perform Synthesis and P/R > Perform
Place and Route任务下,取消对Skip this task的勾选并点击Apply。
2.
Task。
3.
右键点击Annotate Model with Synthesis Result并选择Run to Selected
观察模型中被注释的关键步骤。关键步骤以青色显示。
用命令行生成代码
• 概览
• 创建一文件夹和本地模型文件
• 用hdlsetup 初始化模型参数
• 从子系统生成VHDL实体(VHDL Entity)
• 生成VHDL测试台代码(Test Bench Code)
• 检验生成的代码
• 生成一个Verilog Module 和测试台
概览
这一例程提供代码和测试台生成指令、其参数和代码生成器创建的文件的详细步骤介绍。
该例程假设读者已经熟悉了例程模型(参见The sfir_fixed Model)。
创建一文件夹和本地模型文件
创建案例模型的一本地拷贝并将其保存在工作文件夹下,如下所示:
1.
2.
启动MATLAB。
创建一名为sl_hdlcoder_work的文件夹。比如:
mkdir C:worksl_hdlcoder_work
sl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDL Coder生成的文件
夹及代码。这个文件夹的位置不重要,但是不能在MATLAB的文件夹树下。
3. 将sl_hdlcoder_work文件夹设置为工作文件夹。比如:
cd C:worksl_hdlcoder_work
4. 打开例程模型,在MATLAB命令行下输入如下指令:
sfir_fixed
5. 在Simulink中,选择File>Save As,将sfir_fixed模型另存一本地拷贝到工作文
件夹中。
6. 保持sfir_fixed打开,继续下面的进程。
用hdlsetup 初始化模型参数
在生成代码前,模型必须进行配置。你可以使用hdlsetup指令从而避免手动配置模型。
Hdlsetup指令使用set_param函数来配置模型以快速并可靠地生成HDL代码。
配置模型以进行代码生成:
1. 在MATLAB命令行,输入:
hdlsetup('sfir_fixed')
2. 在File菜单下选择Save,从而保存模型及其新的设置。
在继续进行代码生成前,考虑hdlsetup在模型中应用的设置。
Hdlsetup配置HDL Coder推荐或要求的求解器(Solver)选项,它们是:
•
类型(Type): 固定步长(Fixed-step)。 (HDL Coder目前支持特定条件下的可变步长
求解器。参见 hdlsetup)
•
求解器(Solver): 离散(Discrete,无连续状态)。也可以选择其他的固定步长求解器,
但用于仿真离散系统这一选项通常是最佳的。
•
任务模式(Tasking mode): 单任务(SingleTasking)。 HDL Coder目前不支持执行
多任务的模型。
不要将Tasking mode 设置为Auto。
Hdlsetup也配置模型开始和结束时间以及固定步长,如下所示:
•
开始时间(Start Time): 0.0 s
•
结束时间(Stop Time): 10 s
•
固定步长(Fixed step size) (基本采样周期时间): auto
如果Fixed step size被设置为自动(auto),步长大小就根据模型中指定的采样时间被自
动选择 。在示例模型中,只有Signal From Workspace模块指定了明确的采样时间(1s);其
余模块继承这一采样时间。
模型的开始和结束时间决定了测试台仿真总时长。这也进一步决定了产生的用于为生成的
测试台提供激励和输出数据的数据阵列的大小。对于例程模型,10秒的测试数据计算不会花费
很多时间。更加复杂的模型的采样值的计算可能很费时间。在这种情况下,就需要考虑减少仿
真时间。
经hdlsetup配置的其余参数控制错误严重性级别,数据纪录和模型显示选项。如果想查阅
与hdlsetup有关的完整模型参数集合,在MATLAB Editor中打开hdlsetup.m 。
由hdlsetup提供的模型参数默认值是有用的,但对用户的模型来说并不一定是最优的。比
如,hdlsetup设置的Simulation stop time 默认值为10s。对例程模型sfir_fixed的测试 来
说,1000s的仿真时间会更加现实。如果想修改仿真时间,在Simulink窗口中Simulation
stop time 区域输入目标值。
模型参数概要请参照Smulink资料中Model and Block Parameters区域的Model
Parameters 表格。
从子系统生成VHDL实体(VHDL Entity)
在这一部分,你将使用makehdl函数从例程模型的symmetric_fir子系统生成VHDL
实体的代码。makehdl也生成用于第三方HDL仿真和综合工具的脚本文件。
makehdl 允许你指定多种特征用以控制生成的代码的各种特性。在这一例程中,你将
使用makehdl默认的特征参数。
在生成代码前,请确定已完成了创建一文件夹和本地模型文件及用hdlsetup 初始化模
型参数的步骤。
生成代码:
1. 在MATLAB窗口下的桌面菜单选择Current Folder。这样会显示Matlab的
Current Folder browser,使你能快速打开工作文件夹和将要在其中生成的文件。
2. 在Matlab命令行,输入指令:
makehdl('sfir_fixed/symmetric_fir')
这条指令命令HDL Coder从sfir_fixed模型下的symmetric_fir子系统用默认参数生成代
码。
3. 在代码生成时,HDL Coder显示进程消息。这个进程应该以下面的信息结束:
### HDL Code Generation Complete.
观察到进程消息中生成的文件的名字被超链接。在代码生成完成时,你可以点击这些超链
接来查看MATLAB Editor里的文件。
Makehdl在代码生成前编译模型。代码生成后模型的外观可能发生改变,这取决于模型的
显示选项(比如端口数据类型等)。
4. Makehdl默认生成VHDL代码。代码文件和脚本被写入目标文件夹。默认的目标文件
夹是工作文件夹下的子文件夹,名称为hdlsrc。
在Current Folder browser中可以看到一个hdlsrc文件的文件夹图标。要看生成的代码
和脚本文件,双击这个hdlsrc文件夹图标。
5. Makehdl在hdlsrc文件夹下生成的文件有:
• symmetric_:VHDL代码。该文件包含一个entity定义和一个用于执行
symmetric_fir 滤波器的RTL架构。
• symmetric_fir_:Mentor Graphics ModelSim编译脚本(vcom
command)用于编译生成的VHDL代码。
• symmetric_fir_:Synplify综合脚本。
• symmetric_fir_:映射文件。这个报告文件将生成的实体(或模块)映射到用
于生成它们的子系统(参照 Trace Code Using the Mapping File)。
6. 要在Matlab Editor中查看生成的VHDL代码,在Current Folder browser中双击
symmetric_文件夹图标。
7. 在进行下一步之前,关闭在编辑器中打开的文件。然后,点击Current Folder browser
中的Go Up One Level按钮来将当前文件夹重新设置为sl_hdlcoder_work文件夹。
8. 保持sfir_fixed model处于打开状态,进行下面的步骤。
生成VHDL测试台代码
在这一部分,你使用测试台生成函数makehdltb来生成VHDL测试台代码。这个测试
台的目的是驱动和验证上一部分生成的symmetric_fir 实体的运行。生成的测试台包括:
• 由信号源产生的连接到被测entity源激励数据。
• 由被测entity生成的输出数据。当测试台运行时,该数据与VHDL模型比较来实现验证
目的。
• 用于驱动被测entity的时钟,复位和信号使能。
• 一个被测entity的部件例示
• 用于驱动被测entity和比较其输出与期望输出的代码
另外,makehdltb生成Mentor Graphics ModelSim脚本来编译和执行测试台。
这个练习假设你的工作文件夹和上一部分使用的相同。这个文件夹现在包含一个之前生
成的代码的文件夹hdlsrc。
生成测试台:
1. 在Matlab命令行输入指令:
makehdltb('sfir_fixed/symmetric_fir')
这个指令生成一个测试台,该测试台用来连接并验证从symmetric_fir(或从有着相同功能
接口接口的子系统)生成的代码。默认地,VHDL测试台代码和脚本一样是在hdlsrs目标文件
夹里被生成。
2. 在测试台的生成进行时,HDL Coder显示进程信息。这一进程应以下面的信息结束:
### HDL TestBench Generation Complete.
3. 要查看生成的测试台和脚本文件,在Current Folder browser双击hdlsrc文件夹。
作为另外一种选择,你也可以点击code test bench generation progress messages下的被
超链接的生成的文件名。
这些被makehdltb生成的文件是:
• symmetric_fir_: VHDL测试台代码和生成的测试和输出数据。
• symmetric_fir_tb_: Mentor Graphics ModelSim编译脚本(vcom指令)。
这个脚本编译并加载要测试的entity(symmetric_)和测试台代码
(symmetric_fir_)。
• symmetric_fir_tb_: Mentor Graphics ModelSim脚本,用于初始化仿真器,设
置波形窗口信号显示和运行仿真。
4. 如果你想要在Matlab Editor中查看生成的测试台代码,双击Current Folder
browser 中的symmetric_fir_文件图标。你在查阅makehdltb参考文件(reference
documentation)时可能想了解代码,这个参考文件介绍了测试台生成器的默认操作。
5. 在进行下一步以前,关闭你在editor中打开的文件。然后,点击Current Folder
browser中的Go Up One Level按钮来将当前文件夹重新设置为sl_hdlcoder_work文件夹。
验证生成的代码
你现在可以将之前生成的代码和测试台放到一个HDL仿真来进行仿真并验证结果。参
考 Simulating and Verifying Generated HDL Code(即下文部分)来查看一个怎么在
Mentor Graphics ModelSim仿真器中用生成的测试台代码和脚本文件的例子。
生成一个Verilog模块和测试台
生成Verilog的步骤和生成VHDL的步骤仅有轻微差别。这一部分提供了指令语法和生
成的文件的概述。
生成一个Verilog模块。默认地,makehdl生成VHDL代码。要修改默认值并生成
Verilog代码,你必须向makehdl传递一特性/数值对,从而将TargetLanguage特性设置成
verilog,如下例所示。
makehdl('sfir_fixed/symmetric_fir','TargetLanguage','verilog')
这条指令在默认目标文件夹hdlsrc下生成Verilog源代码和用于仿真及综合工具的脚本。
生成的这些文件是:
• symmetric_fir.v: Verilog代码。这个文件包括一个Verilog模块用于执行symmetric_fir
子系统。
• symmetric_fir_: Mentor Graphics ModelSim编译脚本(vlog command)
用于编译生成的Verilog代码。
• symmetric_fir_: Synplify综合脚本。
• symmetric_fir_: 这个报告文件将生成的实体(或模块)映射到用于生成它们的子
系统(参照 Trace Code Using the Mapping File)。
生成和执行一个Verilog测试台。用于修改目标语言的makehdltb句法和makehdl完全
一样。下面这个例子在默认目标文件夹下生成Verilog测试台代码来驱动Verilog模块
symmetric_fir。
makehdltb('sfir_fixed/symmetric_fir','TargetLanguage','verilog')
这些生成的文件是:
• symmetric_fir_tb.v: Verilog测试台代码和生成的测试和输出数据。
• symmetric_fir_tb_: Mentor Graphics ModelSim编译脚本(vlog指令)。
这个脚本编译并加载要测试的entity(symmetric_fir.v)和测试台代码(symmetric_fir_tb.v)。
• symmetric_fir_tb_: Mentor Graphics ModelSim脚本,用于初始化仿真器,设
置波形窗口信号显示和运行仿真。
The following listing shows the commands and responses from a test bench
session using the generated scripts:
ModelSim> do symmetric_fir_tb_
# Model Technology ModelSim SE vlog 6.0 Compiler 2004.08 Aug 19 2004
# -- Compiling module symmetric_fir
#
# Top level modules:
# symmetric_fir
# Model Technology ModelSim SE vlog 6.0 Compiler 2004.08 Aug 19 2004
# -- Compiling module symmetric_fir_tb
#
# Top level modules:
# symmetric_fir_tb
ModelSim>do symmetric_fir_tb_
# vsim ric_fir_tb
# Loading ric_fir_tb
# Loading ric_fir
# **** Test Complete. ****
# Break at
C:/work/sl_hdlcoder_work/vlog_code/symmetric_fir_tb.v line 142
# Simulation Breakpoint:Break at
C:/work/sl_hdlcoder_work/vlog_code/symmetric_fir_tb.v line 142
# MACRO ./symmetric_fir_tb_ PAUSED at line 14
用配置参数对话框生成HDL代码
HDL Coder GUI概述
你可以在配置参数对话框或在模型浏览器(Model Explorer)中编辑影响HDL代码生
成的选项和参数。
下面的图展示了配置参数对话框中的第一级HDL Code Generation面板。
下面的图展示了模型浏览器(Model Explorer)中第一级HDL Code Generation选
项。
在下面的代码生成练习中,你使用配制参数对话框来查看和设置HDL Coder选项和控
制。这个练习在基本代码生成和验证步骤使用sfir_fixed模型。
创建一个文件夹和本地模型文件
在这部分中你将设置文件夹和例程模型的本地拷贝。
创建一个文件夹。首先设置工作文件夹。
1.
2.
启动Matlab。
创建一个名为sl_hdlcoder_work的文件夹,如:
mkdir C:worksl_hdlcoder_work
你将使用sl_hdlcoder_work文件夹来保存例程模型的本地拷贝以及HDL Coder生成的文
件夹和代码。这个文件夹的位置不重要,但不能在Matlab的文件夹树下。
3. 将sl_hdlcoder_work设置为工作文件夹,如:
cd C:worksl_hdlcoder_work
创建例程模型的本地拷贝。接着,拷贝sfir_fixed模型:
1. 在Matlab命令行输入下面指令以打开模型:
sfir_fixed
2. 将sfir_fixed模型另存为一本地拷贝到工作文件夹中。
3. 保持sfir_fixed打开状态然后进行下面的部分。
在配制参数对话框中查看代码选项
HDL Coder选项设置在模型的激活的配置设置中以一个类别显示。你可以在配置参数
对话或Model Explorer中查看并编辑这些选项。这个例程采用配置参数对话框。
打开HDL Coder设置:
1.
2.
打开配置参数对话框。
选择HDL Code Generation面板。
HDL Code Generation面板包括用于控制HDL 代码生成进程的第一级选项和按钮。在
HDL Code入口中还有可用的好几个其他的选项类别。这个练习用这些选项的一小部分,其他
的采用默认设置。
用hdlsetup初始化模型参数
在生成代码前,你必须设置模型的一些参数。用hdlsetup指令来避免手动设置。
Hdlsetup指令用set_param函数来快速可靠地设置模型用于HDL代码生成。
设置模型参数:
1. 在Matlab命令行,输入:
hdlsetup('sfir_fixed')
2. 保存模型及其新的设置。
在继续进行代码生成前,考虑hdlsetup在模型中应用的设置。
Hdlsetup配置HDL Coder推荐或要求的求解器(Solver)选项,它们是:
•
类型(Type): 固定步长(Fixed-step)。 (HDL Coder目前支持特定条件下的可变步长
求解器。参见 hdlsetup)
•
求解器(Solver): 离散(Discrete,无连续状态)。也可以选择其他的固定步长求解器,
但用于仿真离散系统这一选项通常是最佳的。
•
任务模式(Tasking mode): 单任务(SingleTasking)。 HDL Coder目前不支持执行
多任务的模型。
不要将Tasking mode 设置为Auto。
Hdlsetup也配置模型开始和结束时间以及固定步长,如下所示:
•
开始时间(Start Time): 0.0 s
•
结束时间(Stop Time): 10 s
•
固定步长(Fixed step size) (基本采样周期时间): auto
如果Fixed step size被设置为自动(auto),步长大小就根据模型中指定的采样时间被自
动选择 。在示例模型中,只有Signal From Workspace模块指定了明确的采样时间(1s);其
余模块继承这一采样时间。
模型的开始和结束时间决定了测试台仿真总时长。这也进一步决定了产生的用于为生成的
测试台提供激励和输出数据的数据阵列的大小。对于例程模型,10秒的测试数据计算不会花费
很多时间。更加复杂的模型的采样值的计算可能很费时间。在这种情况下,就需要考虑减少仿
真时间。
经hdlsetup配置的其余参数控制错误严重性级别,数据纪录和模型显示选项。如果想查阅
与hdlsetup有关的完整模型参数集合,在MATLAB Editor中打开hdlsetup.m 。
由hdlsetup提供的模型参数默认值是有用的,但对用户的模型来说并不一定是最优的。比
如,hdlsetup设置的Simulation stop time 默认值为10s。对例程模型sfir_fixed的测试 来
说,1000s的仿真时间会更加现实。如果想修改仿真时间,在Simulink窗口中Simulation
stop time 区域输入目标值。
模型参数概要请参照Smulink资料中Model and Block Parameters区域的Model
Parameters 表格。
选择和检查子系统的HDL兼容性
HDL Coder要么为当前的模型生成代码,要么为当前模型的根级别的子系统生成代码。使
用Generate HDL for来选择为要生成代码的模型或子系统。菜单中的每个入口显示模型或其
某一子部件的完整路径。
sfir_fixed模型已经配置好选择其sfir_fixed/symmetric用于代码生成。如果不是这种情况,
确保symmetric_fir被选择用于代码生成,如下所示:
1. 从Generate HDL for菜单选择sfir_fixed/symmetric_fir。
2. 点击Apply。
检查该子系统的HDL兼容性。
1. 点击Run Compatibility Checker按钮。
2. HDL兼容性检查器检查Generate HDL for菜单选择的系统的兼容性问题。在该例程
中,选择的子系统完全兼容HDL。兼容性检查器显示如下消息:
### Starting HDL Check.
### HDL Check Complete with 0 errors, warnings and messages.
兼容性检查器也在新窗口中显示一个报告。
生成VHDL代码
第一级HDL Code Generation选项被设置为如下所示:
• Generate HDL for部分指定sfir_fixed/symmetric_fir子系统用于代码生成。
• Language部分指定生成(默认)VHDL代码。
• Folder指定一个用于存储生成的代码和对脚本的目标文件夹。默认的文件夹是工作文件
下的一个名为hdlsrc的子文件夹。
在生成代码前,选择Matlab窗口中的Desktop菜单下的Current Folder。这将显示
Current Folder browser,使你可以进入工作文件夹以及在其中生成的文件。
生成代码:
1. 点击Generate按钮。
2. 在代码生成时,HDL Coder显示进程消息。这个进程应该以下面的信息结束:
### HDL Code Generation Complete.
观察到进程消息中生成的文件的名字被超链接。在代码生成完成时,你可以点击这些超
链接来查看MATLAB Editor里的文件。
Makehdl在代码生成前编译模型。代码生成后模型的外观可能发生改变,这取决于模
型的显示选项(比如端口数据类型等)。
3. 在Current Folder browser中可以看到一个hdlsrc文件的文件夹图标。要看生成的代
码和脚本文件,双击这个hdlsrc文件夹图标。
4. Makehdl在hdlsrc文件夹下生成的文件有:
• symmetric_:VHDL代码。该文件包含一个entity定义和一个用于执行
symmetric_fir 滤波器的RTL架构。
• symmetric_fir_:Mentor Graphics ModelSim编译脚本(vcom
command)用于编译生成的VHDL代码。
• symmetric_fir_:Synplify综合脚本。
• symmetric_fir_:映射文件。这个报告文件将生成的实体(或模块)映射到用
于生成它们的子系统(参照 Trace Code Using the Mapping File)。
5. 要在Matlab Editor中查看生成的VHDL代码,在Current Folder browser中双击
symmetric_文件夹图标。
6. 在进行下一步之前,关闭在编辑器中打开的文件。然后,点击Current Folder browser
中的Go Up One Level按钮来将当前文件夹重新设置为sl_hdlcoder_work文件夹。
生成VHDL测试台代码
在这一部分,Generate HDL for, Language和Folder选项都和上一部分的设置相同。
相应地,你现在可以生成用于驱动之前生成的sfir_fixed/symmetric_fir子系统的VHDL代码的
VHDL测试台代码。该代码会被写入同一目标文件夹。
生成VHDL测试台:
1. 选择HDL Code Generation > Test Bench面板。
2. 选择HDL test bench。
3. 点击Generate Test Bench按旧。
4. 在测试台的生成进行时,HDL Coder显示进程信息。这一进程应以下面的信息结束:
### HDL TestBench Generation Complete.
5. 这些在hdlsrc文件夹中生成的文件是:
• symmetric_fir_: VHDL测试台代码和生成的测试和输出数据。
• symmetric_fir_tb_: Mentor Graphics ModelSim编译脚本(vcom指令)。
这个脚本编译并加载要测试的entity(symmetric_)和测试台代码
(symmetric_fir_)。
• symmetric_fir_tb_: Mentor Graphics ModelSim脚本,用于初始化仿真器,设
置波形窗口信号显示和运行仿真。
验证生成的代码
你现在可以将之前生成的代码和测试台放到一个HDL仿真来进行仿真并验证结果。参
考 Simulating and Verifying Generated HDL Code(即下文部分)来查看一个怎么在
Mentor Graphics ModelSim仿真器中用生成的测试台代码和脚本文件的例子。
生成Verilog模型和测试台代码
生成Verilog代码和生成VHDL代码一样(看 Generating a VHDL Entity from a
Subsystem 和Generating VHDL Test Bench Code),除了在HDL Code Generation 选项
下的Language选择Verilog。
仿真和验证生成的HDL代码
注意:这部分需要使用Mentor Graphics ModelSim仿真器。
这部分假设你已经从下面任意一个练习中用sfir_fixed模型中生成了代码:
•
Generate HDL Code Using the Command Line
•
Generate HDL Code Using the Configuration Parameters Dialog Box
在这个部分你将编译并运行之前生成的模型和测试台代码的仿真。HDL Coder生成的
脚本允许你通过几条指令实现完成这个步骤。不管你是从命令行还是GUI环境中生成的代码,
这一步骤都是相同的。
运行仿真:
1. 启动Mentor Graphics ModelSim软件。
2. 将之前生成代码的文件夹设置为工作空间:
ModelSim>cd C:/work/sl_hdlcoder_work/hdlsrc
3. 用生成的编译脚本来编译和加载生成的模型和。下面的列表展示了命令和响应。
ModelSim>do symmetric_fir_tb_
# Model Technology ModelSim SE vcom 6.0 Compiler 2004.08 Aug 19 2004
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Compiling entity symmetric_fir
# -- Compiling architecture rtl of symmetric_fir
# Model Technology ModelSim SE vcom 6.0 Compiler 2004.08 Aug 19 2004
# -- Loading package standard
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Compiling package symmetric_fir_tb_pkg
# -- Compiling package body symmetric_fir_tb_pkg
# -- Loading package symmetric_fir_tb_pkg
# -- Loading package symmetric_fir_tb_pkg
# -- Compiling entity symmetric_fir_tb
# -- Compiling architecture rtl of symmetric_fir_tb
# -- Loading entity symmetric_fir
4. 用生成的仿真脚本来执行仿真。下面的列表显示了代码和响应。警告信息为良性。
ModelSim>do symmetric_fir_tb_
# vsim ric_fir_tb
# Loading C:ApplicationsModelTech_6_0win32/../rd
# Loading C:ApplicationsModelTech_6_0win32/../_logic_1164(body)
# Loading C:ApplicationsModelTech_6_0win32/../c_std(body)
# Loading ric_fir_tb_pkg(body)
# Loading ric_fir_tb(rtl)
# Loading ric_fir(rtl)
# ** Warning: NUMERIC_STD."<": metavalue detected, returning FALSE
# Time: 0 ns Iteration: 0 Instance: /symmetric_fir_tb
.
.
.
# ** Warning: NUMERIC__INTEGER: metavalue detected, returning 0
# Time: 0 ns Iteration: 1 Instance: /symmetric_fir_tb
# ** Note: **************TEST COMPLETED **************
# Time: 140 ns Iteration: 1 Instance: /symmetric_fir_tb
测试台结束信息显示仿真仿真完成并没有错误。
# ** Note: **************TEST COMPLETED **************
5. 仿真脚本在Mentor Graphics ModelSim的wave窗口显示模型的输入和输出(包括
参考信号y_out_ref和delayed_x_out_ref)。下图展示了wave窗口显示的信号。
6. 看完信号后退出Mentor Graphics ModelSim仿真器。
7. 关闭在Matlab Editor中打开的文件。然后,点击Current Folder browser中的Go
Up One Level按钮,将当前文件夹重新设置为你的工作文件夹。
版权声明:本文标题:HDL Coder详细教程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1712852401a609410.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论