您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > HDL-Coder详细教程
生成代码前准备工作在从模型生成HDL代码前,你应该作如下工作:在生成代码前,用hdlsetup功能(详见InitializingModelParameterswithhdlsetup)来对你要生成HDL代码的模型进行设置。用hdllib功能来创建目前支持HDL代码生成的模块库(详见ShowBlocksSupportedforHDLCodeGeneration)通过用这个库里的模块来构建模型,你的模型就会兼容HDL。支持的模块集合在今后的版本会改变,所以你每次安装新版本的本产品时应该重建支持的模块库。用RunCompatibilityChecker选项(详见SelectingandCheckingaSubsystemforHDLCompatibility)来检查你模型或者DUT的HDL兼容性并生成HDLCodeCheckReport。你也可以调用chekhdl函数(见checkhdl)来运行兼容性检查器。练习简介HDLCoder支持生成代码,用户可以选择以下环境:1.MATLAB命令窗口支持用makehdl,makehdltb和其他函数生成代码2.SimulinkGUI(配置参数对话框和/或模型浏览器)提供模型仿真参数/代码生成参数和函数的集成视图这个实践练习通过在以上两种环境使用中相同的模型,介绍HDL代码的生成和仿真机制。在这一系列步骤中,你将:1.构建一个简单模型用于生成代码2.从模型中的子系统生成代码3.生成适用于MentorGraphicsModelSim仿真器的VHDL测试台来实现模型的仿真4.在仿真器中编译和执行模型和测试台5.用同样的模型生成并仿真Verilog代码6.检查模型和HDLCoder的兼容性stir_fixed模型这些练习用sfir_fixed模型作为HDL代码生成源。该模型模拟一对称有限脉冲响应滤波器算法,通过定点数计算实现。该模型里的模块支持HDL代码生成,并且模型参数已进行配置以适于代码生成。想了解更多关于模型准备以进行代码生成,参考PrepareSimulinkModelForHDLCodeGeneration.下图为模型的顶层级别描述。该模型采用了任务分解,有助于HDL设计:用于执行滤波算法的symmetric_fir子系统是被测器件。一个HDL实体将从这个子系统被创建、测试,最终综合。驱动该子系统的顶层模型元件是测试台。顶层模型生成symmetric_fir子系统的16位定点输入信号。SignalFromWorkspace模块生成一个用于滤波器的测试输入(激励)信号。四个常数模块提供滤波器系数。Scope模块仅用来仿真,这些虚拟的模块不会生成HDL代码。下图描述了symmetric_fir子系统。定点数数据类型在子系统里传递。输入继承了被送过来的信号的数据类型。在需要的地方,给定输入的数据类型并采取操作后,模块的内部规则决定了输出的数据类型。滤波器在y_out管脚输出一个定点数结果,并在delayed_x_out复制其输入(在经过若干个延迟阶段后)。在接下来的例程里,你将会生成将symmetric_fir当成一个实体实现的VHDL代码。然后你会从顶层级别模型生成一个测试台。这个测试台用从SignalFromWorkspace产生的激励数据驱动生成的实体完成指定的时钟步数。用HDLWorkflowAdvisor生成代码(该法不能生成测试台代码)这个例程展示了如何用HDLWorkflowAdvisor从Simulink模型生成HDL代码。本例程中的模型,stir_fixed已经被准备好用于代码生成。本例程采用XilinxISE综合工具,我们假设你的工具路径已设置好。你也可以用AlteraQuartusII来进行本例程。创建工作文件夹并复制模型用HDLWorkflowAdvisor生成代码执行FPGA综合和分析创建工作文件夹并复制模型1.启动MATLAB2.创建一名为sl_hdlcoder_work的文件夹。比如:sl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDLCoder生成的文件夹及代码。这个文件夹的位置不重要,但是不能在MATLAB的文件夹树下。3.将sl_hdlcoder_work文件夹设置为工作文件夹。比如:4.打开sfir_fixed模型。5.将sfir_fixed复制到sl_hdlcoder_work文件夹下。用HDLWorkflowAdvisor生成代码1.右键点击symmetric_fir子系统,选择HDLCodeHDLWorkflowAdvisor。2.在步骤SetTargetSetTargetDeviceandSynthesisTool,在Synthesistool选择XilinxISE并点击RunThisTask。3.右键点击PrepareModelForHDLCodeGeneration并选择RunAll,HDLWorkflowAdvisor检查模型的代码生成兼容性。4.在步骤HDLCodeGenerationSetCodeGenerationOptionsSetBasicOptions,选择如下选项,然后点击Apply:•在Language,选择Verilog.•使能Generatetraceabilityreport.•使能Generateresourceutilizationreport.5.浏览Optimization和Codingstyle标签下的可用选项。这些选项可以用来修改所生成代码的实现和格式。6.右键点击HDLCodeGenerationGenerateRTLCodeandTestbenchstep,选择RuntoSelectedTask。代码生成报告自动被打开,它包括资源使用和可追溯性报告。资源使用报告描述你的设计对硬件资源的使用情况。可追溯性报告允许你在模型和生成的代码之间操作。执行FPGA综合和分析1.在FPGASynthesisandAnalysisPerformSynthesisandP/RPerformPlaceandRoute任务下,取消对Skipthistask的勾选并点击Apply。2.右键点击AnnotateModelwithSynthesisResult并选择RuntoSelectedTask。3.观察模型中被注释的关键步骤。关键步骤以青色显示。用命令行生成代码概览创建一文件夹和本地模型文件用hdlsetup初始化模型参数从子系统生成VHDL实体(VHDLEntity)生成VHDL测试台代码(TestBenchCode)检验生成的代码生成一个VerilogModule和测试台概览这一例程提供代码和测试台生成指令、其参数和代码生成器创建的文件的详细步骤介绍。该例程假设读者已经熟悉了例程模型(参见Thesfir_fixedModel)。创建一文件夹和本地模型文件创建案例模型的一本地拷贝并将其保存在工作文件夹下,如下所示:1.启动MATLAB。2.创建一名为sl_hdlcoder_work的文件夹。比如:mkdirC:\work\sl_hdlcoder_worksl_hdlcoder_work文件夹将被用于保存例程中模型的拷贝和HDLCoder生成的文件夹及代码。这个文件夹的位置不重要,但是不能在MATLAB的文件夹树下。3.将sl_hdlcoder_work文件夹设置为工作文件夹。比如:cdC:\work\sl_hdlcoder_work4.打开例程模型,在MATLAB命令行下输入如下指令:sfir_fixed5.在Simulink中,选择FileSaveAs,将sfir_fixed模型另存一本地拷贝到工作文件夹中。6.保持sfir_fixed打开,继续下面的进程。用hdlsetup初始化模型参数在生成代码前,模型必须进行配置。你可以使用hdlsetup指令从而避免手动配置模型。Hdlsetup指令使用set_param函数来配置模型以快速并可靠地生成HDL代码。配置模型以进行代码生成:1.在MATLAB命令行,输入:hdlsetup('sfir_fixed')2.在File菜单下选择Save,从而保存模型及其新的设置。在继续进行代码生成前,考虑hdlsetup在模型中应用的设置。Hdlsetup配置HDLCoder推荐或要求的求解器(Solver)选项,它们是:类型(Type):固定步长(Fixed-step)。(HDLCoder目前支持特定条件下的可变步长求解器。参见hdlsetup)求解器(Solver):离散(Discrete,无连续状态)。也可以选择其他的固定步长求解器,但用于仿真离散系统这一选项通常是最佳的。任务模式(Taskingmode):单任务(SingleTasking)。HDLCoder目前不支持执行多任务的模型。不要将Taskingmode设置为Auto。Hdlsetup也配置模型开始和结束时间以及固定步长,如下所示:开始时间(StartTime):0.0s结束时间(StopTime):10s固定步长(Fixedstepsize)(基本采样周期时间):auto如果Fixedstepsize被设置为自动(auto),步长大小就根据模型中指定的采样时间被自动选择。在示例模型中,只有SignalFromWorkspace模块指定了明确的采样时间(1s);其余模块继承这一采样时间。模型的开始和结束时间决定了测试台仿真总时长。这也进一步决定了产生的用于为生成的测试台提供激励和输出数据的数据阵列的大小。对于例程模型,10秒的测试数据计算不会花费很多时间。更加复杂的模型的采样值的计算可能很费时间。在这种情况下,就需要考虑减少仿真时间。经hdlsetup配置的其余参数控制错误严重性级别,数据纪录和模型显示选项。如果想查阅与hdlsetup有关的完整模型参数集合,在MATLABEditor中打开hdlsetup.m。由hdlsetup提供的模型参数默认值是有用的,但对用户的模型来说并不一定是最优的。比如,hdlsetup设置的Simulationstoptime默认值为10s。对例程模型sfir_fixed的测试来说,1000s的仿真时间会更加现实。如果想修改仿真时间,在Simulink窗口中Simulationstoptime区域输入目标值。模型参数概要请参照Smulink资料中ModelandBlockParameters区域的ModelParameters表格。从子系统生成VHDL实体(VHDLEntity)在这一部分,你将使用makehdl函数从例程模型的symmetric_fir子系统生成VHDL实体的代码。makehdl也生成用于第三方HDL仿真和综合工具的脚本文件。makehdl允许你指定多种特征用以控制生成的代码的各种特性。在这一例程中,你将使用makehdl默认的特征参数。在生成代码前,请确定已完成了创建一文件夹和本地模型文件及用hdlsetup初始化模型参数的步骤。生成代码:1.在MATLAB窗口下的桌面菜单选择CurrentFolder。这样会显示Matlab的CurrentFolderbrowser,使你能快速打开工作文件夹和将要在其中生成的文件。2.在Matlab命令行,输入指令:makehdl('sfir_fixed/symmetric_fir')这条指令命令HDLCoder从sfir_fixed模型下的symmetric_fir子系统用默认参数生成代码。3.在代码生成时,HDLCoder显示进程消息。这个进程应该以下面的信息结束:###HDLCodeGenerationComplete.观察到进程消息中生成的文件的名字被超链接。在代码生成完成时,你可以点击这些超链接来查看MATLABEditor里的文件。Makehdl在代码生成前编译模型。代码生成后模型的外观可能发生改变,这取决于模型的显示选项(比如端口数据类型等)。4.Makehdl默认生成VHDL代码。代码文件和脚本被写入目标文件夹。默认的目标文
本文标题:HDL-Coder详细教程
链接地址:https://www.777doc.com/doc-6762199 .html