• J1—Vivado调试技巧VIO IP


    1.简介

    VIO(Virtual Input/Output)IP核是一种用于FPGA设计的IP核,它可以模拟输入/输出设备的功能,如键盘、鼠标、显示器等。VIO IP核可以在FPGA设计中用于调试和验证,帮助工程师快速定位问题并进行调试。如图所示,VIO通过JTAG接口与芯片内部互换信息,其中output指VIO IP的输出对于FPGA内部逻辑是输入信号。Input指VIO IP的输入对于FPGA内部逻辑是输出信号,用来监测信号变化,与ILA相比,VIO无需占用ram资源。

    2.使用场景

    调试:VIO IP核可以模拟输入设备的信号,帮助工程师验证设计的正确性,快速定位问题并进行调试。验证:VIO IP核可以用于验证设计的功能是否符合预期,提高设计的可靠性和稳定性。监控:VIO IP核可以监控设计中的信号变化,帮助工程师了解设计的工作状态。

    3.调试技巧

    1. 使用VIO IP核连接到设计中的信号,观察信号的变化和波形。
    2. 设置断点和触发条件,可以在特定条件下暂停设计的运行,方便调试。
    3. 使用VIO IP核的时钟控制功能,可以控制信号的采样速率,帮助调试设计中的时序问题。
    4. 结合其他调试工具如逻辑分析仪、仿真工具等,可以更加全面地进行调试。

    总之,通过VIO IP核的使用,工程师可以更加高效地进行FPGA设计的调试和验证工作。

    4.快速使用

           创建一个场景是多路选择器,输入不同的2bit值,输出不同的8bit的值,实现多选一的功能,场景中通过VIO output通道向程序输入2bit值,同时通过VIO input通道检测程序的输出值。

    代码如下:

    1. module vio_top(
    2. input sys_clk_p,
    3. input sys_clk_n//200M
    4. );
    5. wire sys_clk;
    6. wire [1:0] mux_sel;
    7. reg [7:0] mux_val;
    8. localparam O1 = 8'd1;
    9. localparam O2 = 8'd2;
    10. localparam O3 = 8'haa;
    11. localparam O4 = 8'hee;
    12. //clk差分转单端
    13. IBUFDS #(
    14. .DIFF_TERM("FALSE"), // Differential Termination
    15. .IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE"
    16. .IOSTANDARD("DEFAULT") // Specify the input I/O standard
    17. ) IBUFDS_inst (
    18. .O(sys_clk), // Buffer output
    19. .I(sys_clk_p), // Diff_p buffer input (connect directly to top-level port)
    20. .IB(sys_clk_n) // Diff_n buffer input (connect directly to top-level port)
    21. );
    22. //多路选择器
    23. always @(*) begin
    24. case(mux_sel)
    25. 2'b00: mux_val = O1;
    26. 2'b01: mux_val = O2;
    27. 2'b10: mux_val = O3;
    28. 2'b11: mux_val = O4;
    29. default: mux_val = 8'bx; // 'x'表示不确定值,用于表示非法选择
    30. endcase
    31. end
    32. //VIO
    33. vio_0 vio_instance (
    34. .clk(sys_clk), // input wire clk
    35. .probe_in0(mux_val), // input wire [7 : 0] probe_in0
    36. .probe_out0(mux_sel) // output wire [1 : 0] probe_out0
    37. );
    38. endmodule

    IP配置如下:可在输出页配置输出信号的默认值,当前为0。

    结果如下:双击vio ip显示dashboard信息

    可以看到输入不同的数,input端将检测到不同的结果

  • 相关阅读:
    配电房监测系统:智能化电力管理的关键
    星戈瑞Sulfo-CY5 maleimide应用于流式细胞术
    安卓真机无root环境下的单机游戏修改-IL2CPP
    大数据学习1.0-目录
    软件过程与建模学习之:Quality Management
    计算机网络-谢希仁-第7版 第6章 应用层
    用python找出400多万次KDJ金叉死叉,胜率有多高?附代码
    02 Java虚拟机的结构
    Android快速滑动条/快速滑块/快速滚动条标准实现,Java
    【JavaEE】锁策略
  • 原文地址:https://blog.csdn.net/weixin_40615338/article/details/136377467