Vivado中VIO IP核的使用
- 一、写在前面
- 二、VIO IP核配置
- 三、VIO联调
- 四、写在后面
一、写在前面
Vivado中的VIO(Virtual Input/Output) IP核是一种用于调试和测试FPGA设计的IP核。它允许设计者通过使用JTAG接口读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与FPGA内部寄存器进行交互。通过使用VIO IP核,用户可以实时监视和修改设计中的信号,以便进行调试和验证。此外,VIO IP核还可以与其他IP核和设计组件配合使用,从而帮助设计者更好地理解和调试整个系统。
总之,VIO IP核是一个非常有用的调试工具,它可以帮助FPGA设计者快速、准确地调试和测试他们的设计,并加快整个开发流程。
二、VIO IP核配置
在Vivado的IP Catalog界面中,搜索VIO,即可找到我们需要使用的VIO IP核,双击对IP核进行配置。
首先是对VIO的虚拟输入/输出引脚的个数的配置
- Input Probe Count:VIO输入探头个数,即输入到VIO,需要查看实时数据值的信号个数;
- Output Probe Count:VIO输出探头个数,即输出给其他模块的信号个数;
- Enable Input Probe Activity Detectors:输入探头变化检测。若勾选,则在后续调试过程中,某个输入信号发生变化时,则会出现数据变化的提示;若不勾选,则无输入数据变化提示(注意,这里输入数据是指输入到VIO模块中的数据);
另外,在这里有一点值得注意:输入/输出探头的最大个数为256,而在该界面下,最多可以生成64个输入/输出探头的VIO IP核,如果要生成大于64的VIO IP核,则需要通过Tcl脚本进行生成。
然后是对输入探头的位宽进行设置,即我们需要观察的信号的位宽。
然后是对输出探头的位宽进行设置,即输出到其他模块,用于计算或者控制的信号的位宽。
对VIO IP核配置完成后,生成IP核。
三、VIO联调
本次以UART发送为例,通过VIO输出串口需要发送的8比特数据data和1比特的发送使能信号,同时将串口发送结束信号tx_done接入到VIO的输入端,观察其值和变换。
首先,在IP Sources窗口下找到vio_0.veo,该文件为生成的VIO IP核的例化模板,将该例化模板复制到UART发送模块的顶层文件中,对例化名称以及VIO的输入输出进行连接。
在这里,对VIO输出的信号tx_signal做边沿检测,当tx_signal发生变化时,则将串口发送信号uart_tx_en拉高一个时钟周期,表示发送1Byte的数据。
对顶层文件综合实现后,生成比特流文件,将生成的.bit文件和.ltx文件下载到FPGA开发板。
此时会出现VIO调试窗口,在该窗口下可以看到接入VIO输入/输出探头的各个信号的信号名称Name、当前值Value、是否发生变化Activity等信息。
同时,打开串口助手,可以看到串口助手中无任何接收信息。
然后,在VIO调试窗口中修改tx_signal的值为1,即给出一个发送信号,可以看到在串口助手中,接收到了8’h00,这是由于我们给uart_tx_data赋的初始值为8’h00。同时,在调试窗口中可以看到uart_tx_done的Activity栏出现一个上下箭头的蓝色标志,表示出现了上升沿和下降沿,在这里由于uart_tx_done只有保持一个时钟的高电平,表示一帧数据传输结束,所以在这里会出现上升沿和下降沿。
然后在VIO调试窗口中修改串口发送的8bit数据uart_tx_data为AA,然后再修改tx_signal的值为0,即给出一个发送信号,可以看到在串口助手中,接收到了8’hAA。
再比如发送数据8’hDD,在串口助手中接收到数据8’hDD。
根据上述实验结果,对UART发送模块的验证通过。
四、写在后面
在本文中,学习了Vivado中VIO IP核的使用,结合串口发送程序进行上板实验,使用VIO产生串口需要发送的8比特数据和控制串口发送的使能信号。在这里,只是对VIO的使用进行简单的演示,在具体设计中应根据项目需求进行配置。
好了,上面就是关于Vivado中VIO IP核的一些学习笔记,如果有疑义的地方欢迎评论区友好探讨学习!!!!!