使用 JTAG-to-AXI Master 调试核进行硬件系统通信
JTAG-to-AXI Master 调试核为可自定义核 , 可在运行时生成 AXI 传输事务并驱动 FPGA 内部的 AXI 信号。该核支持所
有存储器映射型 AXI 接口和 AXI4-Lite 接口 , 并且可支持位宽为 32 或 64 的数据接口。
您添加到自己的设计中的 JTAG-to-AXI Master (JTAG-AXI) 核会显示在“硬件 (Hardware) ”窗口中的目标器件下。如果
未显示这些 JTAG-AXI 核 , 请右键单击器件并选择“ Refresh Hardware ”。这样将重新扫描 FPGA 器件并刷新
“ Hardware ”窗口。
注释 : 如果编程和 / 或刷新 FPGA 器件后仍未显示 ILA 核 , 请检查并确保已使用正确的 .bit 文件完成器件编程 , 并确
认已实现的设计包含 ILA 核。
单击并选中此 JTAG-AXI 核 ( 下图中名为 hw_axi_1 的核 ), 以在“ AXI 核属性 (AXI Core Properties) ”窗口中查看其属
性。
与硬件中的 JTAG-to-AXI Master 调试核进行交互
只能使用 Tcl 命令来与 JTAG-to-AXI Master 调试核进行通信。您可使用 create_hw_axi_txn 命令和 run_hw_axi
命令来分别创建并运行 AXI 读取和写入传输事务。
复位 JTAG-to-AXI Master 调试核
创建并发出传输事务之前 , 重要的是使用以下 Tcl 命令来复位 JTAG-to-AXI Master 核 :
reset_hw_axi [get_hw_axis hw_axi_1]
创建并运行读取传输事务
用于创建 AXI 传输事务的 Tcl 命令为 create_hw_axi_txn 。如需了解有关如何使用此命令的更多信息 , 请在 Vivado
IDE 的 Tcl 控制台 (Tcl console) 中输入“ help create_hw_axi_txn ”。以下是有关如何从地址 0 创建 4 字 AXI 读
取突发传输事务的示例 :
create_hw_axi_txn read_txn [get_hw_axis hw_axi_1] -type READ -address
00000000 -len 4
其中 :
• read_txn 是用户定义的传输事务名称
• [get_hw_axis hw_axi_1] 会返回 hw_axi_1 对象
• -address 00000000 是起始地址
• -len 4 会将 AXI 突发长度设置为 4 个字
下一步是运行刚使用 run_hw_axi 命令创建的传输事务。操作方式如下 :
run_hw_axi [get_hw_axi_txns read_txn]
最后一步是获取通过运行该传输事务所读取的数据。您可使用 report_hw_axi_txn 或 report_property 命令在屏幕
上打印此数据 , 或者也可以使用 get_property 命令来返回值 , 以供在别处使用。
report_hw_axi_txn [get_hw_axi_txns read_txn]
0 00000000 00000000
8 00000000 00000000
report_property [get_hw_axi_txns read_txn]
Property Type Read-only Visible Value
CLASS string true true hw_axi_txn
CMD.ADDR string false true 00000000
CMD.BURST enum false true INCR
CMD.CACHE int false true 3
CMD.ID int false true 0
CMD.LEN int false true 4
CMD.SIZE enum false true 32
DATA string false true 00000000000000000000000000000000
HW_AXI string true true hw_axi_1
NAME string true true read_txn
TYPE enum false true READ
创建和运行写入传输事务
以下是有关如何从地址 0 创建 4 字 AXI 写入突发传输事务的示例 :
create_hw_axi_txn write_txn [get_hw_axis hw_axi_1] -type WRITE -address
00000000 \
-len 4 -data {11111111_22222222_33333333_44444444}
其中 :
• write_txn 是用户定义的传输事务名称
• [get_hw_axis hw_axi_1] 会返回 hw_axi_1 对象
• -address 00000000 是起始地址
• -len 4 会将 AXI 突发长度设置为 4 个字
• -data {11111111_22222222_33333333_44444444} - 数据方向为左侧 LSB ( 即 , 地址 0 ) 和右侧 MSB
( 即 , 地址 3 ) 。
下一步是运行刚使用 run_hw_axi 命令创建的传输事务。操作方式如下 :
run_hw_axi [get_hw_axi_txns write_txn]
重要提示 ! 如果您对器件进行重新编程 , 那么将删除所有现有 jtag_axi 传输事务。您可能需要重新创建这些传输
事务。
提示 : run_hw_axi Tcl 命令的可选实参 -queue 允许您以队列模式指定 hw_axi 传输事务。排队操作允许在 JTAG
to AXI Master FIFO 中对最多 16 项读取和 16 项写入传输事务进行排队 , 并发出连续执行指令 , 以便降低传输
事务之间的时延并提升性能。非排队传输事务则直接在提交时运行。