当前位置:首页 > 新闻资讯 > FPGA之家动态 >

xilinx FPGA在线调试方法总结(vivado+ila+vio)

时间:2024-07-30      来源:网络搜集 关于我们 0

本文主要介绍xilinx FPGA开发过程中常用的调试方法,包括ILA、VIO和TCL命令等等,详细介绍了如何使用。

一、FPGA调试基本原则

根据实际的输出结果表现,来推测可能的原因,再在模块中加ILA信号,设置抓信号条件,逐步定位问题模块和原因,最终解决bug。

二、FPGA常用调试方法

1、调用IP

(1)ILA

第1步:在vivado中,打开IP核目录(IP Catalog),在搜索框中输入ILA(不区分大小写),按图示方式进行选择即可。

第2步:设置ILA参数

探针数根据需要采集的信号数设定,或者直接设定一个信号;

采样数据深度可根据实际需要和资源消耗情况进行设置,一般选择默认的1024即可;

第3步:测量信号的位宽进行设置

第4步:在IP source区,打开ILA,添加例化模板, 在代码中插入例化,把VIO的输出口连接到模块的输入。

ila_0 u_ila(

.clk(clk),

.probe0(probe0),

.probe1(probe1),

.probe2(probe2)

);

(2)VIO IP

VIO的输出可以控制测试模块的输入,VIO的输入可以显示模块的输出值。

第1步: 例化一个VIO核,根据需要设定输入输出的数目

第2步:设置vio输出端口的位宽与初始值:

第3步:在代码中插入例化,把VIO的输出口连接到模块的输入。

vio_0 u_vio(

.clk(clk),

.probe_out0(probe_out0)

);

2、添加调试信号

(1)在Verilog HDL文件中直接添加,特点是防止信号被优化,最大可能保留信号原本的名称。

  在input/output前或在声明变量前添加(* mark_debug = “true” *)

(* mark_debug = "true" *) wire done;(* mark_debug = "true" *) reg cnt;

(2)标记Debug mark方法,可以在原理图(block design)或在综合后的网表(Netlist)中添加。

A、在原理图(block design)右击添加“Mark Debug”,工程综合后,在SYNTHESIS > Open Synthesized Design,在Netlist窗口中选择需要调试的网络节点,进行调试。

右键单击任意网络节点,点击Mark Debug,该网络节点会出现小甲虫标记。

对于已经选中Mark Debug的网络节点,也可以取消调试。右键单击该网络节点,选择Unmark Debug即可

B、在综合后,Flow Navigator > SYNTHESIS > Open Synthesized Design > Schematic下打开的原理图(Schematic)中通过右键单击选中线路,添加Mark Debug信号,和Unmark Debug信号

点击 Windows > Debug,即可出现Debug窗口,在这里可以观察到已经mark debug的信号。

(3)使用Tcl命令,直接修改*.xdc文件,和添加ILA( Integrated Logic Analyzer) IP核完成.

set_property MARK_DEBUG true [get_nets [list {control_reg[0]} {control_reg[1]} \

{control_reg[2]} {control_reg[3]} {control_reg[4]} {control_reg[5]} \

{control_reg[6]} {control_reg[7]} {control_reg[8]} {control_reg[9]} \

{control_reg[10]} {control_reg[11]} {control_reg[12]} {control_reg[13]} \

{control_reg[14]} {control_reg[15]} {control_reg[16]} {control_reg[17]} \

{control_reg[18]} {control_reg[19]} {control_reg[20]} {control_reg[21]} \

{control_reg[22]} {control_reg[23]} {control_reg[24]} {control_reg[25]} \

{control_reg[26]} {control_reg[27]} {control_reg[28]} {control_reg[29]} \

{control_reg[30]} {control_reg[31]}]]

create_debug_core u_ila_0 ila

set_property port_width 1 [get_debug_ports u_ila_0/CLK]

connect_debug_port u_ila_0/CLK [get_nets [list wbClk ]]

set_property port_width 32 [get_debug_ports u_ila_0/PROBE0]

connect_debug_port u_ila_0/PROBE0 [get_nets [list {control_reg[0]}

{control_reg[1]} {control_reg[2]} {control_reg[3]} {control_reg[4]} \

{control_reg[5]} {control_reg[6]} {control_reg[7]} {control_reg[8]} \

{control_reg[9]} {control_reg[10]} {control_reg[11]} {control_reg[12]} \

{control_reg[13]} {control_reg[14]} {control_reg[15]} {control_reg[16]} \

{control_reg[17]} {control_reg[18]} {control_reg[19]} {control_reg[20]} \

{control_reg[21]} {control_reg[22]} {control_reg[23]} {control_reg[24]} \

{control_reg[25]} {control_reg[26]} {control_reg[27]} {control_reg[28]} \

{control_reg[29]} {control_reg[30]} {control_reg[31]} ]]

以上就是本次分享的xilinx FPGA调试方法总结,希望大家阅读完后,有所收获。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言