FPGA与Simulink联合仿真环境搭建(硬件在环)

发布时间 2023-11-14 15:41:35作者: Xxaj5

硬件在环(HIL)

\(\quad\)官方的一些定义:硬件在环 (HIL) 测试是一种实时仿真,让您无需使用系统硬件即可开始测试嵌入式代码。如果正在开发的代码未按照规范运行,您可以通过此项测试来发现可能损坏硬件的异常和故障情况。

\(\quad\) 非常高大上,我这里呢,就想实现一点功能,因为我是用FPGA做信号处理的,然后就想做一个上位机,然后上位机可以给FPGA输入信号,FPGA接受信号进行处理,将处理结果返回给上位机,然后我们查看结果,经过调研,这个需求可以通过simulink与FPGA联合仿真实现,simulink有各种板级支持包,比如说HDL verifier Support Package for Xilinx FPGA Boards,这个就是专门为Xilinx家的FPGA提供板级验证的支持包,就可以实现上面的功能,就类似于vivado中的逻辑分析仪ila,但是ila不能给FPGA输入一个比较真实的信号,所以选择simulink,就想让simulink与FPGA进行交互。

我的设备信息:
黑金Zynq-7010,主控芯片xc7z010clg400-1。
Vivado version: 2017.4
Matlab:R2022b 9.13

下面进入正题:

1、安装System generator

(1)干啥用的?
\(\quad\) System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,嵌入了Xilinx的一些模块,可以在MATLAB中的Simulink中进行定点仿真,可以设置定点信号的类型等操作。通俗的讲,按上这玩意之后,在matlab的simulink里就会出现两个专门用于Xilinx FPGA的库,所以在后面一定会用得到,如下图:
image

\(\quad\) 这玩意是在安装VIVADO时就是可选的,如果安装VIVADO的时候没安装,那就重新安装一下就好了。
(2)安装办法
\(\quad\) 这个安装教程我就不重复写一遍了,以及system generator与matlab版本的适配问题,给出我参考的的教程里都有详细解决办法:
初识System Generator(安装+使用),这个教程我只看到5,因为后边的暂时还不需要。

\(\quad\)安装好之后就可以在matlab的simulink的库里看到这两个库啦。

2、安装板级支持包

(1)干啥用的?
\(\quad\) 得让matlab simulin能够与fpga进行交互,肯定得需要一个媒介,那就是版级支持包。
(2)安装办法?
\(\quad\)如下图:
image
\(\quad\)如果是破解版的话,应该会出现下面这种情况:
image
\(\quad\)意思就是需要你登录,但是破解版的没办法,登录也没用,因为压根没买,没在官方那里登记,没法在线安装了,就进行离线安装,解决办法还是参考一篇博客MATLAB获取硬件支持包失败,显示请续订您的软件维护服务,解决办法,保姆教程,我这里用到的是HDL verifier Support Package for Xilinx FPGA Boards,就安装这一个就好了,大概率能遇到的问题就是第7步,因为涉及到网络的问题,可能需要fq上网(还有人说fq上网也没法解决),还可以通过直接卸载人家安装过的包来解决,我是通过fq上网解决的。

3、配置板级支持包

\(\quad\)安装好后,打开:
image
能够看到这个包就说明成功了。
(1)进行配置
\(\quad\)也就是说要选择自己的板子,点击右边的齿轮按钮。
image
\(\quad\)翻来翻去发现没有自己的板子,但是官网明确写着支持zynq 7000系列芯片,很无奈,找了很多问题,以为是不支持,最后差点要放弃。
\(\quad\)在交流群里问这个问题,然后有人说可以自定义一个板子,大概意思就是可以自定义一个.xml,让simulink来能够识别自己的板子。那我就知道了,这里找不到板子不是说不支持,而是官方没有加上,所以问题是可以解决的。所以我就继续找资料,翻找官网的文档,找到了这个Download HDL Verifier FPGA Board Support Packages,发现可以自定义板子,它第一步就是教怎么添加一个板子。
(2)自定义板子
\(\quad\)在matlab中输入一个fpgaBoardManager,然后弹出一个框,按照官方的点击Get More Boards,还是出现那个问题(破解版啥也不是),但是可以点击Create Custom Board,终于,看到了自己板子的主控芯片:
image
JTAG Chain Position我也不知道为啥是2,我是在论坛上看到一个类似的问题解决的matlab论坛,然后点击下一步,把FIL接口打✔,然后定义一下时钟,复位端口可以先不用管,因为是可选选项:
image,继续点击next,出现下图
image
,有Sum of IR length before与Sum of IR length after这两个选项,根本不知道啥意思,这里也是通过上面那个论坛问题里解决了,它给了一个官方文档FPGA Board Editor,里边明确说了zynq的Sum of IR length before要填4:image,继续下一步。
(3)测试板子
来到FIL测试板子这一步:
image
给板子上电,连接好JTAG,等待测试结果即可。

如果出现了下边这个问题:
Did not receive version information from hardware. You must have a valid connection, a compatible development board and compatible versions of the block and FPGA programming file.
那一般就是前面自定义板子的选项有些问题,需要继续慢慢分析,查看文档。

如果是这个问题:
image
原因可能有很多种了,可能是3121端口被占用,可以使用命令netstat ano|findstr "3121",如果被占用直接强行关闭;也可能是因为,hw_server在运行,可以在任务管理器中找到hw_server.exe关闭;如果一直这样的话,就得考虑驱动的问题了,F:\Xilinx\Vivado\2017.4\data\xicom\cable_drivers\nt64\digilent,找到install_digilent.exe,重新安装驱动,我是最后一个原因,,驱动有问题,安装好后测试终于通过!
image
然后点击finish后会自动出现一个.xml文件,就是自定义板子的xml文件,就自动生成了。

测试通过后回到配置那一步,发现自定义的板子出现了,选择即可!ok,环境差不多就这样配置好了。可以学习了。