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按钮,将当前文件夹重新设置为你的工作文件夹。


本文标签: 模型 生成 代码 文件夹 测试台