主要内容

使用触发子系统为异步时钟域

你可以设计一个模型使用触发异步时钟域子系统。异步时钟域设计运行在不同的时钟的时钟频率区域不是整数倍。你可以在仿真软件模型异步时钟域设计万博1manbetx®通过使用多个触发子系统。您可以使用触发器的时钟功能生成单独的时钟信号触发每个子系统。

使用触发子系统和一个触发器时钟,你可以设计一个模型,其中一个特点:

  • 时钟地区受时钟的利率不是整数倍。

  • 时钟以同样的速度运行,但阶段。

  • 多个时钟操作在不同的利率。

  • 多个时钟和重置使用嵌套复位子系统建模。

使用触发生成多个时钟时钟

这个例子展示了如何使用触发模型多个时钟信号子系统。使用触发器触发子系统中的时钟功能使您能够使用触发信号作为时钟HDL代码生成。你可以在仿真软件模型异步时钟域设计®通过使用多个触发子系统和使用触发器作为时钟功能为每个触发子系统生成单独万博1manbetx的时钟信号。

该模型AsynchronousClockUsingTriggerAsClock有一个DUT触发子系统包含两个子系统。装载和打开AsynchronousClockUsingTriggerAsClock模型通过运行这些命令:

load_system (“AsynchronousClockUsingTriggerAsClock”);set_param (“AsynchronousClockUsingTriggerAsClock”,“SimulationCommand”,“更新”)open_system (“AsynchronousClockUsingTriggerAsClock / DUT”);

使用触发信号作为时钟HDL代码生成,使使用触发信号作为时钟选项HDL代码生成>全局设置>港口选项卡的配置设置。然后,生成的HDL代码DUT子系统使用makehdl命令或高密度脂蛋白编码器™应用程序:

makehdl (“AsynchronousClockUsingTriggerAsClock / DUT”)

在生成的HDL代码,高密度脂蛋白编码器为DUT子系统生成两个触发端口作为时钟信号的触发子系统。

模块DUT (Trigger1 Trigger2,数据,着干活);

输入Trigger1;输入Trigger2;输入(1:0)数据;/ /输出ufix2[7:0]着干活;/ / uint8

线[7:0]Triggered_Subsystem1_out1;/ / uint8钢丝[7:0]Triggered_Subsystem2_out1;/ / uint8

Triggered_Subsystem1 u_Triggered_Subsystem1 (.Trigger (Trigger1) .In1(数据),/ / ufix2 .Out1 (Triggered_Subsystem1_out1) / / uint8);

Triggered_Subsystem2 u_Triggered_Subsystem2 (.Trigger (Trigger2) .In1 (Triggered_Subsystem1_out1) / / uint8 .Out1 (Triggered_Subsystem2_out1) / / uint8);

分配着干活= Triggered_Subsystem2_out1;

endmodule / / DUT

每个子系统是由单独的时钟触发的触发端口连接到触发子系统。您可以使用这些操作子系统时钟信号在不同的时钟频率。HDL代码触发子系统,触发信号作为时钟如下面的代码片段所示。

模块Triggered_Subsystem1(三机一体,触发着干活);

输入触发;输入(1:0]三机一体;/ /输出ufix2[7:0]着干活;/ / uint8……总是@ (posedge触发)开始:Delay1_process Delay1_out1 < = Gain_out1;结束

设计一个模型与时钟,以相同的速度运行,但是阶段

可以使用触发器的时钟触发子系统模型设计的时钟,以相同的速度运行,但是阶段。例如,负载和打开PhasedClocksUsingTriggeredSubsystem模型。

load_system (“PhasedClocksUsingTriggeredSubsystem”);set_param (“PhasedClocksUsingTriggeredSubsystem”,“SimulationCommand”,“更新”)open_system (“PhasedClocksUsingTriggeredSubsystem”);

该模型包含了时钟一代子系统输出5时钟信号,以相同的速度运行,但是的阶段。运行仿真模型和视图相控时钟的波形。

这些时钟信号来触发端口相连的子系统放在触发Phased_Clock_DUT子系统。开放Phased_Clock_DUT子系统。

open_system (“PhasedClocksUsingTriggeredSubsystem / Phased_Clock_DUT”);

启用使用触发信号作为时钟选择和生成HDL代码Phased_Clock_DUT子系统。在生成的代码中,触发器触发子系统的港口作为一个时钟是由相应的时钟信号。

生成多个时钟和重置使用触发和复位子系统

这个例子展示了如何使用触发模型多个时钟和复位信号和复位子系统。使用触发器时钟功能,你可以从多个模型多个时钟信号触发子系统。通过将每个触发子系统中的复位子系统,可以模型多个重置信号仿真软件模型。万博1manbetx

该模型AsynchronousClockandResetUsingTriggerAsClock有一个DUT触发子系统包含两个子系统。装载和打开AsynchronousClockandResetUsingTriggerAsClock模型通过运行这些命令:

load_system (“AsynchronousClockandResetUsingTriggerAsClock”);set_param (“AsynchronousClockandResetUsingTriggerAsClock”,“SimulationCommand”,“更新”)open_system (“AsynchronousClockandResetUsingTriggerAsClock / DUT”);

一个复位子系统内触发子系统。使用复位子系统,可以为您的模型模拟一个复位端口。全局重置选项,以便最小化模型从复位复位端口子系统。尽量减少全局重置选项,使减少全球重置HDL代码生成>全局设置>港口选项卡的配置设置。

使用触发信号作为时钟HDL代码生成,使使用触发信号作为时钟选项HDL代码生成>全局设置>港口选项卡的配置设置。然后,生成的HDL代码DUT子系统使用makehdl命令或高密度脂蛋白编码器™应用程序:

makehdl (“AsynchronousClockandResetUsingTriggerAsClock / DUT”)

生成的代码DUT子系统如下面的代码片段所示。高密度脂蛋白编码器生成两个触发端口DUT子系统中作为时钟信号触发子系统和复位子系统两个复位端口。

实体DUT端口(std_logic Trigger1:;在std_logic Trigger2:;数据:在std_logic_vector(1报纸0);——ufix2 Reset1: std_logic;在std_logic Reset2:;Out2: std_logic_vector(7报纸0)——uint8);DUT结束;
……
开始u_Triggered_Subsystem1: Triggered_Subsystem1端口映射(触发= > Trigger1,数据= >数据——ufix2 Reset1 = > Reset1,着干活= > Triggered_Subsystem1_out1——ufix2);
u_Triggered_Subsystem2: Triggered_Subsystem2端口映射(触发= > Trigger2、数据= > Triggered_Subsystem1_out1——ufix2 Reset2 = > Reset2,着干活= > Triggered_Subsystem2_out1——uint8);
Out2 < = Triggered_Subsystem2_out1;
rtl结束;

另请参阅

相关的话题