使用触发子系统HDL代码生成
的触发子系统块是一个子系统块,每次执行控制信号触发值。更多地了解,明白了触发子系统。
最佳实践
当使用触发子系统模型中针对HDL代码生成,考虑以下:
合成结果匹配模型万博1manbetx®结果,驱动触发端口与注册逻辑在FPGA(同步时钟)。
是一种很好的做法让单位延迟触发子系统输出信号。这样做可以防止代码生成器插入额外的绕过HDL代码中的寄存器。
触发子系统的使用会影响合成结果在以下方面:
在某些情况下,系统时钟速度可以减少一小部分。
生成的代码使用更多的资源,扩展触发子系统实例的数量和每个子系统的输出端口数。
使用信号编辑器
当你连接输出的信号编辑器块触发子系统,您可能需要使用一个率转换块。运行所有触发子系统港口以同样的速度:
如果触发源信号编辑器块,但是其他触发子系统输入来自其他来源,插入一个率转换块触发输入前的信号通路。
如果所有的输入(包括触发器)来自一个信号编辑器块,他们有同样的速度,所以不需要特殊的行动。
使用触发器时钟
使用触发器的时钟触发子系统允许您设计分割成不同的时钟区域生成的代码。确保时钟边缘设置匹配的配置参数对话框触发类型的触发块内触发子系统。
例如,您可以模型:
设计的时钟,以同样的速度运行,但是阶段。
时钟区域由外部或内部时钟分频器。
时钟地区受时钟的利率不是整数倍。
内部生成的时钟。
时钟控制的低功耗设计。
请注意
使用触发器的时钟触发子系统可以导致一个周期的时间不匹配在testbench模拟。
指定触发器作为时钟
在HDL代码生成>全局设置>港口选项卡上,选择使用触发信号作为时钟。
设置
TriggerAsClock
财产的使用makehdl
或hdlset_param
。例如,生成HDL代码使用触发信号作为触发时钟子系统DUT子系统,myDUT
在模型中,myModel
,输入:makehdl (“myModel / myDUT”TriggerAsClock =“上”)
触发寄存器时钟不同步
当你使用触发器的时钟触发子系统,每个子系统的输入或输出触发需要立即同步延迟外,立即在子系统。这些延迟作为同步运行速度不同区域之间的接口。高密度脂蛋白编码器™可以允许您生成HDL代码而不添加同步延迟通过支持“触发时钟不同步寄存器”选项。默认情况下,此选项在
。
你可以启用或禁用这个选项使用makehdl
或hdlset_param
函数。例如,生成一个HDL代码DUT子系统,myDUT
在一个模型中,myModel
使用触发器的时钟触发子系统不同步延迟,输入:
makehdl (“myModel / myDUT”TriggerAsClockWithoutSyncRegisters =“上”)
模型触发信号作为触发时钟子系统
这个例子展示了如何建模触发端口触发子系统的时钟信号。使用触发器触发子系统中的时钟功能使您能够使用触发信号作为时钟HDL代码生成。
该模型TriggerAsClockSingle
有一个DUT
子系统包含触发子系统。装载和打开TriggerAsClockSingle
模型通过运行这些命令:
load_system (“TriggerAsClockSingle”);set_param (“TriggerAsClockSingle”,“SimulationCommand”,“更新”)open_system (“TriggerAsClockSingle / DUT”);
使用触发信号作为时钟HDL代码生成,使使用触发信号作为时钟选项HDL代码生成>全局设置>港口选项卡的配置设置。然后,生成的HDL代码DUT
子系统使用makehdl
命令或高密度脂蛋白编码器™应用程序:
makehdl (“TriggerAsClockSingle / DUT”)
在生成的HDL代码,高密度脂蛋白编码器将触发器触发子系统的端口映射到时钟。这个代码片段显示了HDL代码触发子系统使用触发
作为一个时钟信号。
Delay1_process:过程(触发器,重置)开始如果重置= ' 1 '然后Delay1_out1 < = to_unsigned (16 # 0000 #、16);ELSIF触发'EVENT和触发= ' 1 '然后Delay1_out1 < = Gain_out1;如果;结束过程Delay1_process;
使用触发和复位子系统模型时钟和复位信号
你可以模拟控制信号,如时钟和复位,通过使用触发和复位子系统。您可以使用触发器作为时钟功能模型触发端口触发子系统时钟和复位端口从仿真软件使用复位子系统模型。万博1manbetx
当你使用触发或复位子系统模型针对HDL代码生成,您可以:
模型一个时钟和复位信号的仿真软件包括一个可重调子系统内部触发子系统。万博1manbetx
使用同步触发子系统语义。
生成代码嵌套和一个时钟和复位复位子系统内部触发子系统使用使用触发信号作为时钟和减少全球重置参数。
生成代码,有多个时钟和复位信号模型组成的多个触发和复位子系统。
使用单位延迟启用同步块内触发子系统。
模型单元延时复位同步块触发子系统通过添加单位延迟块与同步语义和将复位复位子系统子系统内部触发子系统。
模型单元推迟启用复位同步块触发子系统通过添加单位延迟使块与同步语义和将复位复位子系统子系统内部触发子系统。
模型单一时钟和复位信号使用触发和复位子系统
这个例子展示了如何使用触发模型时钟和复位信号和复位子系统。您可以使用触发器作为时钟功能模型触发端口触发子系统时钟和复位端口使用复位子系统模型。
该模型ClockAndResetModellingUsingTriggerAsClock
有一个DUT
子系统包含触发子系统。装载和打开ClockAndResetModellingUsingTriggerAsClock
模型通过运行这些命令:
load_system (“ClockAndResetModellingUsingTriggerAsClock”);set_param (“ClockAndResetModellingUsingTriggerAsClock”,“SimulationCommand”,“更新”)open_system (“ClockAndResetModellingUsingTriggerAsClock / DUT”);
一个复位子系统内触发子系统。使用复位子系统,可以为您的模型模拟一个复位端口。减少全局重置选项,以便从复位子系统模型具有单一的复位信号。尽量减少全局重置选项,使减少全球重置在HDL代码生成>全局设置>港口选项卡的配置设置。
使用触发信号作为时钟HDL代码生成,使使用触发信号作为时钟选项HDL代码生成>全局设置>港口选项卡。然后,生成的HDL代码DUT
子系统使用makehdl
命令或高密度脂蛋白编码器™应用程序:
makehdl (“ClockAndResetModellingUsingTriggerAsClock / DUT”)
在生成的HDL代码,高密度脂蛋白编码器将触发器触发子系统的端口映射到时钟。此外,从复位子系统生成复位信号。触发子系统的HDL代码显示触发的端口映射到复位子系统时钟信号。
模块Triggered_Subsystem(触发器、Reset_1 Input_Data Output_rsvd);
输入触发;输入Reset_1;输入(1:0]Input_Data;/ / ufix2输出(握)Output_rsvd;/ / ufix4
线(握)Resettable_Subsystem_out1;/ / ufix4
Resettable_Subsystem u_Resettable_Subsystem (.clk(触发),.Input_Data (Input_Data) / / ufix2 .Reset_1 (Reset_1) .Output_rsvd (Resettable_Subsystem_out1) / / ufix4);分配Output_rsvd = Resettable_Subsystem_out1;
endmodule / / Triggered_Subsystem
限制
高密度脂蛋白编码器支万博1manbetx持触发HDL代码生成子系统,满足下列条件:
触发子系统不是DUT。
子系统是不这两个触发和启用。
触发信号是一个标量。
如果子系统的输出是一辆公共汽车那么外港的初始值必须是0。
所有触发子系统的输入和输出(包括触发信号)以相同的速度运行。
的显示输出端口触发块的参数设置
从
。的门闩外输入通过延迟信号不选中复选框轮廓尺寸块内触发子系统。
如果DUT包含以下模块,
RAMArchitecture
被设置为WithClockEnable
:双端口RAM
简单的双端口RAM
单独的端口内存
触发子系统不包含以下模块:
离散时间积分器
中投公司大量毁灭
中投插值
冷杉大量毁灭
冷杉插值
Downsample
Upsample
高密度脂蛋白Cosimulation块匹配HDL™
率转换
像素流FIFO(视觉HDL工具箱™)
PN序列发生器,如果使用触发信号作为时钟选项被选中。