硬件在环(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的库,所以在后面一定会用得到,如下图:

\(\quad\) 这玩意是在安装VIVADO时就是可选的,如果安装VIVADO的时候没安装,那就重新安装一下就好了。

(2)安装办法

\(\quad\) 这个安装教程我就不重复写一遍了,以及system generator与matlab版本的适配问题,给出我参考的的教程里都有详细解决办法:

初识System Generator(安装+使用),这个教程我只看到5,因为后边的暂时还不需要。

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

2、安装板级支持包

(1)干啥用的?

\(\quad\) 得让matlab simulin能够与fpga进行交互,肯定得需要一个媒介,那就是版级支持包。

(2)安装办法?

\(\quad\)如下图:



\(\quad\)如果是破解版的话,应该会出现下面这种情况:



\(\quad\)意思就是需要你登录,但是破解版的没办法,登录也没用,因为压根没买,没在官方那里登记,没法在线安装了,就进行离线安装,解决办法还是参考一篇博客MATLAB获取硬件支持包失败,显示请续订您的软件维护服务,解决办法,保姆教程,我这里用到的是HDL verifier Support Package for Xilinx FPGA Boards,就安装这一个就好了,大概率能遇到的问题就是第7步,因为涉及到网络的问题,可能需要fq上网(还有人说fq上网也没法解决),还可以通过直接卸载人家安装过的包来解决,我是通过fq上网解决的。

3、配置板级支持包

\(\quad\)安装好后,打开:



能够看到这个包就说明成功了。

(1)进行配置

\(\quad\)也就是说要选择自己的板子,点击右边的齿轮按钮。



\(\quad\)翻来翻去发现没有自己的板子,但是官网明确写着支持zynq 7000系列芯片,很无奈,找了很多问题,以为是不支持,最后差点要放弃。

\(\quad\)在交流群里问这个问题,然后有人说可以自定义一个板子,大概意思就是可以自定义一个.xml,让simulink来能够识别自己的板子。那我就知道了,这里找不到板子不是说不支持,而是官方没有加上,所以问题是可以解决的。所以我就继续找资料,翻找官网的文档,找到了这个Download HDL Verifier FPGA Board Support Packages,发现可以自定义板子,它第一步就是教怎么添加一个板子。

(2)自定义板子

\(\quad\)在matlab中输入一个fpgaBoardManager,然后弹出一个框,按照官方的点击Get More Boards,还是出现那个问题(破解版啥也不是),但是可以点击Create Custom Board,终于,看到了自己板子的主控芯片:



JTAG Chain Position我也不知道为啥是2,我是在论坛上看到一个类似的问题解决的matlab论坛,然后点击下一步,把FIL接口打,然后定义一下时钟,复位端口可以先不用管,因为是可选选项:

,继续点击next,出现下图



,有Sum of IR length before与Sum of IR length after这两个选项,根本不知道啥意思,这里也是通过上面那个论坛问题里解决了,它给了一个官方文档FPGA Board Editor,里边明确说了zynq的Sum of IR length before要填4:,继续下一步。

(3)测试板子

来到FIL测试板子这一步:



给板子上电,连接好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.

那一般就是前面自定义板子的选项有些问题,需要继续慢慢分析,查看文档。

如果是这个问题:



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



然后点击finish后会自动出现一个.xml文件,就是自定义板子的xml文件,就自动生成了。

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

FPGA与Simulink联合仿真环境搭建(硬件在环)的更多相关文章

  1. FPGA与simulink联合实时环路系列—开篇

    FPGA与simulink联合实时环路系列—开篇 作为网络上第一个开源此技术,笔者迫不及待地想将此技术分享出来,希望大家多多支持.笔者从2011年接触FPGA以来,从各个方面使用FPGA,无论是控制. ...

  2. 01-SV入门及仿真环境搭建

    1.SV入门 参考书籍<SystemVerilog验证 测试平台编写指南> [美]克里斯·斯皮尔 著 2.仿真环境搭建 仿真工具:modelsim se 2019.2,它不仅支持Veril ...

  3. 多指灵巧手MoveIt!与Gazebo联合仿真框架搭建

    至于为什么叫框架,一是因为灵巧手的3维模型没有按照基本的设计要求画,正常来说,设计机器人机构之前应该设计好机构需要多少个自由度/DOF,每个自由度是旋转/revolute类型还是滑移/prismati ...

  4. FPGA与simulink联合实时环路系列——实验三 按键key

    实验三 按键key 实验内容 在FPGA的实验中,经常涉及到按键的使用,按键是必不可少的人机交互的器件之一,在这些实验中,有时将按键的键值读取显示到数码管.LCD或者是通过串口传送到PC的串口助手上进 ...

  5. FPGA与simulink联合实时环路系列——实验一 测试

    实验一 测试 实验内容 在simulink创建测试模块,通过测试模块产生信号,再传送到FPGA,FPGA读出后再将信号无处理传送回simulink进行显示.由此来测试整个硬件在环的功能是否正常,并且熟 ...

  6. 【探索之路】机器人篇(5)-Gazebo物理仿真环境搭建_让机器人运动起来

    如果完成了前两步,那么其实我们已经可以去连接我们的现实中的机器人了. 但是,做机器人所需要的材料还没有到,所以我们这里先在电脑平台上仿真一下.这里我们用到的就算gazebo物理仿真环境,他能很好的和R ...

  7. quartus2 13.0+modelsim联合开发环境搭建(win10)

    quartus2用于硬件设计代码的综合,检查是否有语法错误:modelsim用于对硬件设计代码进行仿真,观察波形是否与需求一致,需要编写xxx_tb.v才能仿真 一.quartus2安装见这篇文章ht ...

  8. FPGA与simulink联合实时环路系列——实验二LED

    实验二LED 实验内容 在实验一的基础上,将simulink产生的测试信号输出到FPGA开发板上的LED灯进行显示,这里要在生成的硬件模型上进行修改,将传送到FPGA的信号输出到8个LED灯上,并且对 ...

  9. Adams/Car与Simulink联合仿真方法

    必须是Assembly装配体才行,并支持仿真设置.这里使用MDI_Demo_Vehicle模型,输出前缀为test1,输出选择files_only.然后OK输出. 生成的文件如下: 在Plant Ex ...

  10. 基于S7-PLCSIM Advanced搭建S7通信仿真环境

    写在前面: 之前有专门讲过一期如何搭建西门子PLC的S7通信仿真环境,感兴趣的可以点击查看:戳↓ 1.基于TIA搭建西门子PLC仿真环境及通信方案-联合出品 2.手把手教你搭建西门子PLC仿真环境 那 ...

随机推荐

  1. GoRedisLock:Golang保障数据一致性的分布式锁解决方案

    在现代分布式系统中,多个节点之间共享资源是常见的需求.然而,并发访问共享资源可能导致数据不一致性和竞争条件.为了解决这些问题,我们需要引入分布式锁.GoRedisLock是一个出色的分布式锁库,它结合 ...

  2. 查看Nginx是否启动

    查看Nginx进程 ps -ef | grep nginx 输出如下: root 1036 1 0 Jul15 ? 00:00:00 nginx: master process /www/server ...

  3. [python]爬取手机号码前缀和地区信息

    概述 使用python爬取手机号码前缀7位.区号和地区. 小网站不容易,对爬虫也挺友好,就不放链接了. 代码 import requests from lxml import etree from f ...

  4. MySQL配置简单优化与读写测试

    测试方法 先使用sysbench对默认配置的MySQL单节点进行压测,单表数据量为100万,数据库总数据量为2000万,每次压测300秒. sysbench --db-driver=mysql --t ...

  5. qBittorrent如何运行脚本 BT实现自动改名并方便Jellyfin的搜刮器

    qBittorrent如何运行脚本 BT实现自动改名并方便Jellyfin的搜刮器 很多影视网站下载的视频名字大概是为了规避监测,命名非常奇葩,比如:z灼f流,y骨y等等.如果你使用了Jellyfin ...

  6. 【双系统】Win10/Win11 引导 Ubuntu

    目录 纲要 注意 写在最前 1. Win 分区 2. Ubuntu刻盘 3. 安装 Ubuntu 4. 配置引导 纲要 本文主要介绍了如何在已安装 Win10/Win11 前提下安装 Ubuntu 双 ...

  7. Vuetify使用本地图标资源

    Vuetify使用本地图标资源 修改/public/index.html 删除下面两行引用 <link rel="stylesheet" href="https:/ ...

  8. Google Hacking语法总结

    Google Hacking语法总结 Google Hacking是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要的信息.轻量级的搜索可以搜素出一些遗留后门,不想被发现的后台入口,中量级的搜索出 ...

  9. SQL - 5

    Smiling & Weeping ----我本不想和风讨论你,可风说可以替我去见你 第五章:SQL高级处理 5.1 窗口函数 5.1.1 窗口函数概念及基本的使用方法 窗口函数也称为OLAP ...

  10. 领域驱动设计(DDD):DDD落地问题和一些解决方法

    欢迎继续关注本系列文章,下面我们继续讲解下DDD在实战落地时候,会具体碰到哪些问题,以及解决的方式有哪些. DDD 是一种思想,主要知道我们方向,具体如何做,需要我们根据业务场景具体问题具体分析. 充 ...