硬件协仿真的基本操作
硬件协仿真的基本操作1.编译硬件模型
一旦安装了硬件协仿真平台,接下来的基本操作就是建立能在硬件板中实际运行的System Generator模型或子系统。能进行协仿真的模型必须要包括一个System Generator模块,该模块定义了如何将模型编译成硬件。其制作的典型步骤如下:
1)选择编译目标
在设计中双击打开System Generator模块,在“Compilation”栏单击,选择“Hardware Co-Simulation”命令,如果用户使用Xilinx相关的开发板(ML402、ML506),可直接选择;若使用用户板,则选择“New Compilation Target..”,如图7-36所示。
图7-36 硬件协仿真编译目标选择界面
选择了“New Compilation Target..”命令后,会弹出开发板参数配置界面。需要填入开发板的名称、系统时钟的频域与管脚约束、JTAG选项、开发板上FPGA芯片的型号以及非存储器映射端口;如果用户已具有电路板的SBDBuilder描述文件(后缀为.xml),则直接点击“Load”键加载即可。输入电路板信息后,点击 “Save Zip”按键,保存当前设置到相关目录,且后缀为.zip。需要注意的是:要保证.zip的存放路径和MATLAB的当前路径一致。如加载了Spartan3E开发板的.xml文件后,配置页面如图7-37所示。
图7-37 目标板配置界面示意图
完成上述步骤后,System Generator会提示用户安装Plugin,也可取消后在MATLAB命令行输入xlInstallPlugin('s3e_starter.zip'),会自动弹出图7-38所示的提示界面,单击“OK”确认。
图7-38 用户板安装完成提示界面
2)调用代码生成器
在编译过程中,System Generator不仅生成了HDL代码和网表,还运行了下载工具将网表转化成可配置比特文件。因此,点击图7-13中的“Generator”按键,即可调用代码生成器生成适合硬件协仿真的配置比特流文件。该文件不仅包含了模型设计的硬件代码,还包括附加的额外逻辑,在PC和硬件平台之间建立一个物理接口,保障System Generator和平台之间的双向通信。此外,设计中的特殊电路也包含在其中,如DCM模块、外部读写组件等。
2.硬件协仿真模块
硬件协仿真模块也是一类专用模块,一旦将设计编译成FPGA比特流文件,System Generator会自动创建一个新的硬件协仿真模块,同时还会生成一个Simulink库来存储生成的模块。此外,用户可将该模块从库中复制到其余的Simulink设计中使用。硬件协仿真模块会自动指定驱动其模块或子系统的外部端口,而且它的端口名和类型都与原始设计的端口一致,其原理如图7-39、7-40所示。
图7-39 硬件协仿真PC端网络配置界面示意图 图7-40 PC属性值选择界面示意图
硬件协仿真模块在Simulink设计中和普通模块的使用方法一样的。在仿真期间,该模块和所使用的FPGA平台交互,自动完成芯片配置、数据传输和时钟等任务。一旦输入端口写入数据,协仿真模块会自动将相应的数据发送到硬件中合适的位置。同样,如果数据输出端口有变化,模块自动将数据从硬件中取回。
协仿真模块可以被Xilinx定点信号类型、Simulink定点信号类型以及Simulink双精度类型驱动。输出信号类型则取决于和其级联的模块,如果输出端口驱动了System Generator模块,则其输出数据为Xilinx定点信号类型;如果输出端口驱动了Simulink模块,则输出数据为Simulink数据类型。需要注意的是:一旦输入、输出数据为Simulink类型,则所有数据通过四舍五入的方法来量化,溢出则采用饱和处理。
同样,协仿真模块也可具备参数化配置的能力,这是由FPGA平台决定的,不同的平台提供不同的参数化模型。
3.硬件协仿真时钟
1)确定目标板时钟频率
在电路板上,一般只有单一系统时钟,到了FPGA内部,可通过DCM模块得到不同的频率,但是在协仿真中只能使用不高于系统时钟的某些特定频率值。例如Xilinx公司的ML402开发板,系统时钟为100MHz,但可用的硬件协仿真频率只能为100MHz、66.7MHz、50MHz以及33.3MHz。
在System Generator中,点击协仿真模块的“Settings…”按键,在弹出配置对话框的“Clock Frequency”栏的下拉框中选择相应的频率,如图7-41所示。
图7-41 用户板安装完成提示界面
2)时钟模式
协仿真模块和相关联的FPGA芯片建立同步时钟的方法有两种:单步时钟(Signal-Step Clock)和自由运行时钟(Free-Running Clock)。在前一种模式下,FPGA的时钟受Simulink控制,数据是同步采样的;在后一种模式下,FPGA由自身内部提供时钟,当Simulink启动硬件仿真时,数据是通过异步采样得到的。其时钟模式配置界面如图7-42所示。
图7-42 协仿真模块的时钟模式配置界面
硬件协仿真的基本操作 在单步时钟模式下,硬件通过一个时钟脉冲在每个仿真阶段和软件同步,从而保证了硬件协仿真模块和原始模型是真正意义上的比特一致或周期一致。但由于硬件协仿真模块只在Simulink调用它时,才产生硬件工作所需的时钟信号,因此它与Simulink模块的通信开销以及FPGA芯片和Simulink的开销是比较大的,在一定程度上限制了硬件的性能。从经验上来讲,只要FPGA内部的计算量远大于通信开销时,就能明显起到硬件加速的功能。
和单步时钟模式不同的是,在自由运行模式中,硬件运行和软件仿真是异步的,且不受软件控制,其时钟是连续运行的。这样,FPGA的端口不再同步于Simulink仿真端口的事件,协仿真模块和原始模型就不是比特一致的。例如,当Simulink端口有事件发生时,需要硬件平台在此时将数据读进或写出到相应的端口上,但是由于延迟了未知的时钟周期后,硬件的状态已不能接收或发送数据,就会造成仿真出错。因此,在自由运行模式中,必须在原始模型中就加入严格的同步机制。
4.指定板级IO端口
在实际的电路板中,一般都有多个芯片和FPGA通信,如外部存储器、ADC以及DAC等。如果在协仿真中直接利用这类硬件资源,将会得到更高的仿真性能。在System Generator中可通过指定板级IO(board-specific I/O)端口来实现与FPGA外部芯片交互的功能。板级特殊IO端口在编译时将被指定到FPGA的端口上,它与标准的硬件协仿真端口是不同的,是通过特殊的non-memory mapped gateway模块来实现的。non-memory mapped gateway模块在Simulink中常用来描述被包括在Simulink子系统或库中的器件,包括LED、按键以及外部存储器等。
当System Generator将板级IO模块编译成硬件代码时,IO端口将通过外部器件接口模块连接到FPGA管脚上。常见的接口模块如图7-43所示。
图7-43 协仿真模块板级IO接口示意图
注意:如果使用了“Gateway In”或“Gateway Out”模块,在编译时,不会将信号连接到FPGA管脚上,而是相应的Simulink端口上。
页:
[1]