调试 AXI 接口通常涉及触发如下三种特定类型的 AXI 事件:地址命令结束、数据节拍结束以及写入响应。通常必须在不同接口通道上触发以上 1 项或多项事件。例如,要实现“读取地址命令结束或写入地址命令结束”的触发条件,需采用如下公式:
Trigger Condition = (((ARVALID == 1) && (ARREADY == 1)) || ((AWVALID == 1) && (AWREADY == 1)))
但这需要“乘积和 (SOP)”式布尔公式,而当所需 AXI 信号(例如 ARVALID 和 ARREADY)驻留在不同探针端口上时,则无法实现此类公式。为帮助完成此类触发,所需的 *VALID、*READY 和 *LAST 控制信号被串联在一起并连接到单一探针端口,如下表所示。
描述 | 探针名称 | 位 2 | 位 1 | 位 0 |
---|---|---|---|---|
读取地址通道控制信号 | *ar_ctrl[1:0] | 不适用 | ARREADY | ARVALID |
读取数据通道控制信号 | *r_ctrl[2:0] | RLAST | RREADY | RVALID |
写入地址通道控制信号 | *aw_ctrl[1:0] | 不适用 | AWREADY | AWVALID |
写入数据通道控制信号 | *w_ctrl[2:0] | WLAST | WREADY | WVALID |
写入响应通道控制信号 | *b_ctrl[1:0] | 不适用 | BREADY | BVALID |
下表显示了如何使用单一 AXI 控制信号探针和 AXI 通道控制探针来实现实用的基本触发和捕获控制公式。下图显示了如何使用基本触发器设置 GUI 来实现“读取地址命令结束或写入地址命令结束”事件。
AXI 事件 | 各 AXI 控制信号 | 组合的 AXI 通道控制探针 |
---|---|---|
读取地址命令结束 | ((ARVALID == 1) && (ARREADY == 1)) | (*ar_ctrl == 2'b11) |
最后一个读取数据节拍结束 | ((RVALID == 1) && (RREADY == 1) && (RLAST == 1)) | (*r_ctrl == 3'b111) |
(非最后一个)读取数据节拍结束 | ((RVALID == 1) && (RREADY == 1) && (RLAST == 0)) | (*r_ctrl == 3'b011) |
写入地址命令结束 | ((AWVALID == 1) && (AWREADY == 1)) | (*aw_ctrl == 2'b11) |
写入读取数据节拍结束 | ((WVALID == 1) && (WREADY == 1) && (WLAST == 1)) | (*w_ctrl == 3'b111) |
(非最后一个)读取数据节拍结束 | ((WVALID == 1) && (WREADY == 1) && (WLAST == 0)) | (*w_ctrl == 3'b011) |
图 1. “读取地址命令结束或写入地址命令结束”事件的基本触发器设置