HDL-Coder详细教程

上传人:206****923 文档编号:91573271 上传时间:2019-06-30 格式:DOCX 页数:22 大小:755.50KB
返回 下载 相关 举报
HDL-Coder详细教程_第1页
第1页 / 共22页
HDL-Coder详细教程_第2页
第2页 / 共22页
HDL-Coder详细教程_第3页
第3页 / 共22页
HDL-Coder详细教程_第4页
第4页 / 共22页
HDL-Coder详细教程_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《HDL-Coder详细教程》由会员分享,可在线阅读,更多相关《HDL-Coder详细教程(22页珍藏版)》请在金锄头文库上搜索。

1、生成代码前准备工作在从模型生成HDL代码前,你应该作如下工作: 在生成代码前,用hdlsetup功能(详见Initializing Model Parameters with hdlsetup)来对你要生成HDL代码的模型进行设置。 用hdllib功能来创建目前支持HDL代码生成的模块库(详见Show Blocks Supported for HDL Code Generation)通过用这个库里的模块来构建模型,你的模型就会兼容HDL。支持的模块集合在今后的版本会改变,所以你每次安装新版本的本产品时应该重建支持的模块库。 用Run Compatibility Checker选项(详见Sele

2、cting and Checking a Subsystem for HDL Compatibility)来检查你模型或者DUT的HDL兼容性并生成HDL Code Check Report。你也可以调用chekhdl函数(见checkhdl)来运行兼容性检查器。练习简介 HDL Coder支持生成代码,用户可以选择以下环境:1. MATLAB命令窗口支持用makehdl,makehdltb和其他函数生成代码2. Simulink GUI (配置参数对话框和/或模型浏览器) 提供模型仿真参数/代码生成参数和函数的集成视图这个实践练习通过在以上两种环境使用中相同的模型,介绍HDL代码的生成和仿真

3、机制。在这一系列步骤中,你将:1. 构建一个简单模型用于生成代码2. 从模型中的子系统生成代码3. 生成适用于Mentor Graphics ModelSim仿真器的VHDL测试台来实现模型的仿真4. 在仿真器中编译和执行模型和测试台5. 用同样的模型生成并仿真Verilog代码6. 检查模型和HDL Coder的兼容性stir_fixed模型 这些练习用sfir_fixed模型作为HDL代码生成源。该模型模拟一对称有限脉冲响应滤波器算法,通过定点数计算实现。 该模型里的模块支持HDL代码生成,并且模型参数已进行配置以适于代码生成。想了解更多关于模型准备以进行代码生成,参考Prepare Si

4、mulink Model For HDL Code Generation. 下图为模型的顶层级别描述。 该模型采用了任务分解,有助于HDL设计: 用于执行滤波算法的symmetric_fir子系统是被测器件。一个HDL实体将从这个子系统被创建、测试,最终综合。 驱动该子系统的顶层模型元件是测试台。 顶层模型生成symmetric_fir子系统的16位定点输入信号。Signal From Workspace模块生成一个用于滤波器的测试输入(激励)信号。四个常数模块提供滤波器系数。Scope模块仅用来仿真,这些虚拟的模块不会生成HDL代码。下图描述了symmetric_fir子系统。 定点数数据类

5、型在子系统里传递。输入继承了被送过来的信号的数据类型。在需要的地方,给定输入的数据类型并采取操作后,模块的内部规则决定了输出的数据类型。 滤波器在y_out管脚输出一个定点数结果,并在delayed_x_out复制其输入(在经过若干个延迟阶段后)。 在接下来的例程里,你将会生成将symmetric_fir当成一个实体实现的VHDL代码。然后你会从顶层级别模型生成一个测试台。这个测试台用从Signal From Workspace产生的激励数据驱动生成的实体完成指定的时钟步数。用HDL Workflow Advisor生成代码(该法不能生成测试台代码) 这个例程展示了如何用HDL Workflo

6、w Advisor从Simulink模型生成HDL代码。 本例程中的模型,stir_fixed已经被准备好用于代码生成。 本例程采用Xilinx ISE综合工具,我们假设你的工具路径已设置好。你也可以用Altera Quartus II来进行本例程。 创建工作文件夹并复制模型 用HDL Workflow Advisor生成代码 执行FPGA综合和分析创建工作文件夹并复制模型1. 启动MATLAB2. 创建一名为sl_hdlcoder_work的文件夹。比如:sl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDL Coder生成的文件夹及代码。这个文件夹的位置不重要,但是不能

7、在MATLAB的文件夹树下。3. 将sl_hdlcoder_work文件夹设置为工作文件夹。比如:4. 打开sfir_fixed模型。5. 将sfir_fixed复制到sl_hdlcoder_work文件夹下。用HDL Workflow Advisor生成代码1. 右键点击symmetric_fir子系统,选择HDL Code HDL Workflow Advisor。2. 在步骤Set Target Set Target Device and Synthesis Tool, 在Synthesis tool 选择Xilinx ISE并点击 Run This Task。3. 右键点击Prepar

8、e 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 标签下的可用选项。

9、这些选项可以用来修改所生成代码的实现和格式。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的勾选

10、并点击Apply。2. 右键点击Annotate Model with Synthesis Result并选择Run to Selected Task。3. 观察模型中被注释的关键步骤。关键步骤以青色显示。 用命令行生成代码 概览 创建一文件夹和本地模型文件 用hdlsetup 初始化模型参数 从子系统生成VHDL实体(VHDL Entity) 生成VHDL测试台代码(Test Bench Code) 检验生成的代码 生成一个Verilog Module 和测试台概览 这一例程提供代码和测试台生成指令、其参数和代码生成器创建的文件的详细步骤介绍。该例程假设读者已经熟悉了例程模型(参见The s

11、fir_fixed Model)。创建一文件夹和本地模型文件 创建案例模型的一本地拷贝并将其保存在工作文件夹下,如下所示:1. 启动MATLAB。2. 创建一名为sl_hdlcoder_work的文件夹。比如:mkdir C:worksl_hdlcoder_work sl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDL Coder生成的文件夹及代码。这个文件夹的位置不重要,但是不能在MATLAB的文件夹树下。3. 将sl_hdlcoder_work文件夹设置为工作文件夹。比如:cd C:worksl_hdlcoder_work4. 打开例程模型,在MATLAB命令行下输入

12、如下指令:sfir_fixed5. 在Simulink中,选择FileSave As,将sfir_fixed模型另存一本地拷贝到工作文件夹中。6. 保持sfir_fixed打开,继续下面的进程。用hdlsetup 初始化模型参数 在生成代码前,模型必须进行配置。你可以使用hdlsetup指令从而避免手动配置模型。Hdlsetup指令使用set_param函数来配置模型以快速并可靠地生成HDL代码。配置模型以进行代码生成:1. 在MATLAB命令行,输入:hdlsetup(sfir_fixed)2. 在File菜单下选择Save,从而保存模型及其新的设置。在继续进行代码生成前,考虑hdlsetu

13、p在模型中应用的设置。Hdlsetup配置HDL Coder推荐或要求的求解器(Solver)选项,它们是: 类型(Type): 固定步长(Fixed-step)。 (HDL Coder目前支持特定条件下的可变步长求解器。参见 hdlsetup) 求解器(Solver): 离散(Discrete,无连续状态)。也可以选择其他的固定步长求解器,但用于仿真离散系统这一选项通常是最佳的。 任务模式(Tasking mode): 单任务(SingleTasking)。 HDL Coder目前不支持执行多任务的模型。不要将Tasking mode 设置为Auto。Hdlsetup也配置模型开始和结束时间

14、以及固定步长,如下所示: 开始时间(Start Time): 0.0 s 结束时间(Stop Time): 10 s 固定步长(Fixed step size) (基本采样周期时间): auto 如果Fixed step size被设置为自动(auto),步长大小就根据模型中指定的采样时间被自动选择 。在示例模型中,只有Signal From Workspace模块指定了明确的采样时间(1s);其余模块继承这一采样时间。 模型的开始和结束时间决定了测试台仿真总时长。这也进一步决定了产生的用于为生成的测试台提供激励和输出数据的数据阵列的大小。对于例程模型,10秒的测试数据计算不会花费很多时间。更

15、加复杂的模型的采样值的计算可能很费时间。在这种情况下,就需要考虑减少仿真时间。经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 表格。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号