开始使用Simulink HDL 万博1manbetxCosimulation
在Simulink®环境中使用Cosimulation Wizard设置HDL Verifier™应用程序。万博1manbetx
协同仿真向导是一个图形用户界面(GUI),指导您完成在MATLAB®或Simulink®和硬件描述语言(HDL)模拟器之间设置协同仿真的过程。万博1manbetx
在本例中,您将使用Simulink和HDL模拟器来万博1manbetx验证用Verilog编写的凸余弦滤波器设计。凸起余弦滤波器是数字通信系统中常用的脉冲整形滤波器。它对调制脉冲的输入不产生符号间干扰(ISI)。
为了验证此凸起余弦滤波器的功能,本文提供了一个Simulink测试平台。万博1manbetx该测试平台为被测HDL设计(DUT)生成输入,并绘制输入和输出的波形。
Cosimulation Wizard将提供的这个提升余弦滤波器的Verilog文件作为其输入。它还收集在每个步骤中设置共同模拟所需的用户输入。在示例的最后,Cosimulation Wizard生成一个Simulink块,该块表示Simulink模型中的HDL设计,一万博1manbetx个编译HDL设计的MATLAB脚本,以及一个启动HDL模拟器进行联合仿真的MATLAB脚本。在仿真过程中,您可以在Simulink中观察该HDL滤波器的输入和输出波形。万博1manbetx
要求和前提条件
这个示例需要Simulink和这些HDL模拟万博1manbetx器中的一个来验证寄存器传输级别(RTL)设计。
Vivado模拟器来自Xilinx®
ModelSim®或Mentor Graphics®的Questa®
Xcelium®来自Cadence®
发射协同模拟向导
要从模型中启动Cosimulation向导,请选择应用程序选项卡,单击万博1manbetx高密度脂蛋白验证器.此操作将添加高密度脂蛋白验证器选项卡到Simulin万博1manbetxk工具条。然后,在模式部分中,选择高密度脂蛋白Cosimulation.点击导入HDL文件在生成Cosim块部分。
使用协同仿真向导配置HDL协同仿真块
在Cosimulation类型页,执行以下步骤:
1.)。如果您正在使用ModelSim或Questa,请离开高密度脂蛋白模拟器选择ModelSim
.
b).如果您正在使用Xcelium,请更改高密度脂蛋白模拟器选项Xcelium
.
c).如果您正在使用Vivado模拟器,请更改高密度脂蛋白模拟器选项Vivado模拟器
.
2.保留默认选项在系统路径上使用HDL模拟器可执行文件选项,如果HDL模拟器可执行文件出现在您的系统路径上。如果这些可执行文件没有出现在路径上,单击浏览按钮指定这些可执行文件的位置。
点击下一个进入HDL文件页面。
在高密度脂蛋白的文件页,执行以下步骤:
点击添加选择其中之一
rcostflt_rtl.v
Verilog或rcosflt_rtl.vhd
硬件描述语言(VHDL)。在文件列表中用您所期望的文件类型检查文件。
点击下一个进入HDL编译页面。
在高密度脂蛋白编译页中,“协同仿真向导”在“编译命令”窗口中列出了默认命令。本教程不需要更改这些命令。
当您使用自己的代码运行Cosimulation Wizard时,您可以在此窗口中添加或更改编译命令。
下图显示了ModelSim的编译命令。
点击下一个进入HDL Modules窗格。这将依次触发编译。MATLAB控制台显示编译日志。如果在编译期间发生错误,则该错误将显示在“状态”区域中。
在模拟选项窗格中,执行以下步骤。
ModelSim或Xcelium
a)指定用于协同仿真的HDL模块/实体名称。在下拉列表中选择
rcosflt_rtl
.这个模块是用于共同模拟的Verilog/VHDL模块。如果你看不见rcosflt_rtl
在下拉列表中可手动输入文件名。b)连接方法中,选择
共享内存
如果您的防火墙策略不允许TCP/IP套接字通信。
Vivado模拟器
缺省情况下,模块名称为
rcosflt_rtl
.这个模块是用于共同模拟的Verilog/VHDL模块。集调试内部信号来
从
而且HDL时间精度来1 ps
对于这个例子。
点击下一个转到“Simulink Ports”万博1manbetx窗格。Cosimulation Wizard使用指定的HDL模块和仿真选项在后台控制台中启动HDL模拟器。在向导启动HDL模拟器之后,向导将填充Verilog/VHDL模块上的输入和输出端口rcosflt_rtl
并在下一步中显示它们。
在指定端口类型的输入和输出端口,Cosimulation向导将显示两个表rcostflt_rtl
,分别。
Cosimulation向导尝试识别每个端口的端口类型。如果向导错误地标识了端口,您可以使用这些表更改端口类型。
对于输入端口,您可以从
时钟
,重置
,输入
,或未使用的
.HDL验证器只连接标记的输入端口输入
到Si万博1manbetxmulink进行联合仿真。HDL验证连接输出端口标记
输出
使用Sim万博1manbetxulink进行联合仿真。向导和Simulink会忽略那万博1manbetx些标记的输出端口未使用的
在cosimulation。您可以更改标识为的信号的参数
时钟
而且重置
在稍后的步骤中。
接受默认端口类型,单击下一个进入“输出端口详细信息”页面。
在输出端口详细信息页,执行以下步骤:
的采样时间
filter_out
来-1
通过反向传播继承。您可以从Verilog代码中看到,Cosimulation Wizard表示了控件中的输出
sfix34_En29
格式。修改以下字段:
数据类型
定点
标志
签署
分数长度
29
点击下一个进入“时钟/重置详细信息”页面。
在时钟/重置页,执行以下步骤。
ModelSim或Xcelium
设置HDL时间单位为
ns
.设置时钟周期为20。
保留或设置活动边缘为
不断上升的
.保留或设置重置初始值为1。
设置复位信号持续时间为15。
Vivado模拟器
将HDL时间单位设置为
ps
.设置时钟周期为20。
保留或设置活动边缘为
不断上升的
.保留或设置重置初始值为1。
设置复位信号持续时间为15。
点击下一个进入“开始时间对齐”页面。
开始时间校准页面显示了时钟和复位信号的波形图。Cosimulation Wizard用红线显示开始Cosimulation的HDL时间。开始时间也是Simulink从HDL模拟器获得第一个输入样例的时间。万博1manbetx
在开始时间对齐页,设置对齐方式。时钟的活动边是上升边。因此,在ModelSim或Xcelium中的时间为20 ns(在Vivado模拟器中为20 ps)时,提升余弦滤波器的注册输出是稳定的。不存在竞争条件,并且开始共同模拟的默认HDL时间正是我们想要的。您不需要对开始时间进行任何更改。
点击下一个继续进行区块生成。
在生成HDL Cosimulation块之前,您可以选择在完成Cosimulation向导之前确定时间刻度。或者,您可以指示HDL验证器稍后计算一个时间刻度。连接生成的HDL Cosimulation块的所有输入/输出端口并开始仿真后,验证软件进行时间刻度计算。
在块一代页,执行以下步骤。
ModelSim或Xcelium
离开在模拟开始时自动确定时间尺度选择(默认)。稍后,在开始模拟之前,您将有机会查看计算出的时间刻度并更改该值。
Vivado模拟器
取消在模拟开始时自动确定时间尺度并通过设置设置时间刻度1秒在Simulink中万博1manbetx对应来2 e-11
年代
在HDL模拟器中。
点击完成完成Cosimulation Wizard会话。
创建测试平台来验证HDL设计
本例中,采用Simulink测试台架模型万博1manbetxrcosflt_tb
已提供。点击之后完成在“协同仿真向导”中,Simulink在模型画布的中心插万博1manbetx入以下项目:
一个HDL Cosimulation块
用于重新编译HDL设计的块(包含到通过双击该块启动的脚本的链接)
用于启动HDL模拟器的块(包含到通过双击该块启动的脚本的链接)(仅适用于Modelsim和Xcelium)
定位HDL Cosimulation块,使常量和转换块排列成HDL Cosimulation块的输入,总线排列成输出。把积木连接起来。您的模型现在看起来类似于下图。
运行Cosimulation并验证HDL设计
ModelSim或Xcelium
通过双击标记的块来启动HDL模拟器启动HDL模拟器.
当HDL模拟器准备好后,返回到Simulink并开始模拟。万博1manbetx
确定时间表。回想一下你所选择的在模拟开始时自动确定时间尺度选项在Cosimulation Wizard的最后一页。当这样做时,HDL Verifier启动时间尺度细节图形界面,而不是启动模拟。HDL模拟器和Simulink都进行了采样万博1manbetx
filter_in
而且filter_out
端口在1秒。然而,它们在HDL模拟器中的采样时间应该与时钟周期(20 ns)相同。的Simulink采样万博1manbetx时间/ rcosflt_rtl clk
到1(秒),按输入.然后向导更新表。下图显示了新的时间刻度:Simulink中的1秒对应于HDL模拟器中的2e-008秒。万博1manbetx
点击好吧关闭“时间刻度详细信息”对话框。重新启动Simu万博1manbetxlink仿真,在试验台模型中验证范围内的结果。
Vivado模拟器
的工具条上万博1manbetx模拟选项卡上,单击运行开始模拟。HDL模拟没有单独的进程,因为Simulink块使用共享DLL执行单个进程。万博1manbetx
作用域同时显示凸起余弦滤波器输入的延迟版本和该滤波器的输出。如果直接对该过滤器输出进行采样,则不会发生符号间干扰。