FPGA开发使用硬件分析仪调试——VIO

  1. 前言
    学习FPGA的路上,相信很多人都有做过按键控制之类的程序,即通过按键来控制某一项功能的实现。在实际项目中,这一方法也经常被使用,比如我做完一个模块,仿真通过了,但是上层模块还没有完成,无法给我一些实际的激励,从而触发模块工作,于是工程便会卡在实际验证这一块了。所以很多人会选择使用外部按键来代替,通过一次按键给予一次脉冲激励,如果多个激励就使用多个按键来执行。不过理想很美好,现实很骨感呀,一旦模块需要大量的激励信号或者数据的时候,就会出现按键不够用或者无法代替激励的情况了。我如果需要一个10bit的输入数据,不可能拿10个按键来用吧,灵活度也不好哪;所以这时候另一调试助手VIO就能很好的处理这一问题了(基于Xilinx平台开发)。

  2. VIO概述
    VIO即虚拟输入/输出(Virtual Input/Output),可以实时监测和驱动FPGA内部信号,与ILA不同,它不需要片上RAM。下图是VIO的结构图。

由图可以知道,它有三种类型接口,即时钟,输入,输出。输入信号会在时钟的驱动下存入寄存器中并且通过活动检测器进行监控;输出会在时钟的驱动下从寄存器打出去。并且输入输出数据会通过JATG传输,显示在软件界面上,供设计者查看。这里大家要明确一点,输入输出信号是相对于VIO核本身,它的端口对应的是测试模块的输出输入。
所以VIO核就是一个虚拟的调试核,它根据你设计的需要设置输入输出接口,然后你可以随时随地的改变你模块的激励信号,并且也可以随时随地看到你模块输出的数据。

  1. VIO核调用
    说了这么多,口都干了,我们还是直接看它的庐山真面目吧。还是老步骤,给工程添加一个VIO核。

调出VIO核后,会出现如下界面,第一个设置是“ General Options”,它可以用来设置VIO的输入和输出端口数量,但是最大的数量是256。比如我们都设置为3,从左边的界面就可以看到有3个输入和输出。

第二个设置是“PROBE_IN Ports”,它用于配置输入端口,可以看到它只能配置位宽,且最大宽度是256。假设我们把PROBE_IN2设置为位宽5,从左边界面能够发现,"probe_in2[0:0]“变为"probe_in2[4:0]”。

第三个设置是“PROBE_OUT Ports”,它用于配置输出端口,除了能够配置位宽外,它还能配置默认值。假设我们把"PROBE_OUT1"初始值设置为“0x5”(16进制),那么下载工程后,只要你不改变这个接口的值,那么它会一直输出"0x5"这个数据。

设置完这三个步骤后,点击“OK”选项,坐等IP核生成就行了~~~

  1. 总结
    VIO的设置是不是很简单,有了它我们根本就不需要头疼得用多少按键之类的来作为驱动,而且使用按键还得考虑消抖,多麻烦啊,不干不干。现在神器在手,天下我有了,下节我们就来实践一下!

你可能感兴趣的:(FPGA)