介绍FPGA在线调试的一大利器—VIO

可编程逻辑

1343人已加入

描述

之前的文章介绍了FPGA在线调试的方法,包括选定抓取信号,防止信号被优化的方法等等。

当存在多种参数的场景时,意味着我们需要多次综合布局布线,这十分浪费时间,虽然只是修改一个数值。

而本文将介绍FPGA在线调试的一大利器,VIO(Xilinx), In-System Memory Content Editor(Altera);使用这个利器,可以节省很多的综合布局布线时间,并且对故障重现等场景有很大的帮助。

在某些场景下,需要多次在线调试测量参数取其中最佳的参数,在这种测试场景下,推荐使用VIO,In-System Memory Content Editor;

以Xilinx的VIO为主要内容介绍:

首先,在Vivado的IP Catalog里找到VIO IP,VIO全称为Virtual Input Output,IP核配置界面如下:

触发器

‪其中Input Probe Count是输入端口的数量,Output Probe Count是输出端口的数量。根据自己的需要去定义。

进入PROBE_IN Ports界面设置输入端口的信号位宽,如下图:

触发器

进入PROBE_OUT Ports界面设置输出端口的信号位宽,以及输出的初始值如下图

触发器

设置完成后,将其例化进项目,与对应的输入和输出信号相连。注意,时钟要与输入输出数据对应上。

等到综合,布局布线,比特流跑完,将bit文件和ltx文件下载进FPGA,Vivado会出现一个dashboard,如下图

触发器

VIO有一个好,就是会显示出信号名称,例如输入端口的信号名是reg_rd_data,输出端口是aux_rst,都显示出来了,此外还包括位宽,Input/Output等信息。

做个简单实验,通过修改Output方向的aux_rst值,使整体FPGA复位,修改完成后如下图:

触发器

可以看到,reg_rd_data被复位到0。

然后我们再取消复位,将aux_rst设置为全0状态,如下图:

触发器

最近的VIO调试案例中,我们使用VIO去控制SPI模块向某芯片写入和读取数值,以测试芯片的部分功能;使用VIO修改DDS IP的频率控制字,使得DDS IP输出的频率做到实时更改,以此测试后续功能。

此外,除了Xilinx家的工具有这个功能,Altera家的工具也有,如下:

触发器

首先,我们需要在Quartus II中例化一个LPM_CONSTANT模块,如下图,设置好常数的位宽及初始值

触发器

选中那个复选框,然后给这个Instance ID取个名字,限制为4个字符。

同样在项目中例化这个LPM_CONSTANT,然后经过综合等一系列过程,最后将sof文件下载到FPGA,打开In-System Memory Content Editor,如下图

触发器

红框内会出现例化的Instance ID,选中后就可以修改对应的值(手边没有Altera的板子,没办法截完整图)。

由于Vivado的版本比Quartus新,VIO的功能看起来更加强大,不知道新版的Quartus是不是也与时俱进了。

最后,在线修改值的方法会占用FPGA内部的存储资料和触发器资源,请适量使用,不要浪费资源。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分