首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于硬件协同仿真(续)

关于硬件协同仿真(续)

上一次简单的说了一下关于硬件协同仿真的问题,现在我们继续。
要想利用硬件来加速仿真,或者说实际验证我们的设计,首先我们得有一块开发板。有Xilnx官方的开发板如ML402、ML506、Spartan-3A DSP 3400A等最好了,因为这些硬件SG中默认就有了,很容易安装。如果没有官方的,只有第三方的开发板,那么也可以,只是自己需要配置Compilation Target.下面我就以我手中的Spartan3e 入门开发板介绍如何使用硬件协仿。

(1)建立mdl文件,双击SG图标,点击Compilation——>Hardware Co-simulation——>New Compilation Target,填写板子信息如下所示:

设置完成后,点击save zip,SG提示安装插件,然后退出。重新启动SG模块,点击Compilation——>Hardware Co-simulation,这时就看到了刚刚建立的Spartan3e_board了。
(2)下面我们就来对比一下硬件协同仿真的实际效果,我先做一个最简单的开方运算电路如下:

输入的数据通过这个CORDIC SQRT模块后得到其开方值。
(3)双击SG模块,Compilation项选择我们的目标板Spartan3e_board,再点击Generate,等待一段时间后生成了用于硬件协同仿真的仿真库,里面有我们需要的hwcosim模块,新建一个mdl文件,将原来文件中的输入输出复制进来,与hwcosim模块的对应端口连接好后如下图所示:

(4)对比仅靠PC机的仿真时间与硬件协同仿真的仿真时间
将开发板与PC连接好,通电源。设定simulink的仿真时间为5000,我用秒表测得在我的电脑上仿真大概需要66秒。
对于硬件协仿同样设定仿真时间为5000,双击hwcosim模块,有两种模式可供选择:Single stepped,Free running.
对于第一种模式,硬件仿真与Simulink仿真同步进行,每个Simulink仿真周期产生同步信号驱动硬件仿真。因为硬件和主机同步,所以通信开销很大,硬件协仿真速度有明显降低,但如果FPGA内部运算的时间占据主导,则硬件协仿真速度仍然远远快于PC机仿真。我用秒表测得在我的系统上仿真大约为6秒。
对于后一种模式,硬件仿真与Simulink仿真不同步,即FPGA内部的硬件运行不再受到Simulink的触发,因此Simulink采样FPGA IO口得到的数据可能不是正确的,必须添加一定的同步机制(满足一定条件时,Simulink读取FPGA的数据),否则可能后一种模式不仅仿真结果不正确而且运行时间的长短也不稳定。而理论上说Free running模式的运行时间应该是最少的,因为它的通信开销要小。我用秒表测得仿真时间大约为5秒多一点。
我再将仿真时间设为10000,前后两种模式的仿真时间分别为11秒,12秒。
显然硬件协同仿真大大缩短了冗长的仿真时间,加快了开发速度。
当然有一点需要注意,硬件协同仿真模块在生成时,添加了主机与硬件通信的机制,这需要一定的资源。有时,就这一点改动总是不成功,单纯的mdl文件生成HDL netlist并在ISE中综合布局布线生成bitstream都没有问题,但直接在SG中就是无法生成硬件协仿模块,错误报告说时序不收敛,说建议调整逻辑或增加布局布线的力度,很是烦人。关于硬件协同仿真还有许多很深的内容,需要不断摸索实践,具体可以仔细学习Xilinx SysGen的文档。

附件大小Compilation_Target.JPG41.28 KBsqrt.JPG13.6 KBHwcosim.JPG13.69 KB
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表