通过 AXI4-Lite 从模块接口执行的读写操作由状态机来控制,如下图所示:
图 1. AXI4-Lite 接口的用户状态机
每个状态的功能描述如下:
- IDLE_STATE
- 默认情况下,FSM 处于 IDLE_STATE 状态。当
user_read_req
信号变为高电平 (High) 时,它会转至 READ_STATE 状态,或者如果user_write_req
信号为 High,那么它会转为 WRITE_STATE 状态,否则它将保持 IDLE_STATE 状态。 - WRITE_STATE
- 在此状态下,您提供
S_AXI_AWVALID
、S_AXI_AWADDR
、S_AXI_WVALID
、S_AXI_WDATA
和S_AXI_WSTRB
以通过 AXI 写入寄存器映射。当来自 AXI 从接口的S_AXI_BVALID
和S_AXI_BREADY
均为 High 时,它会转至 ACK_STATE。如果在任意违规地址中发生任何写入操作,S_AXI_BRESP[1:0]
会指示 2'b10 以断言写入错误信号有效。 - READ_STATE
- 在此状态下,您提供
S_AXI_ARVALID
和S_AXI_ARADDR
以通过 AXI 从寄存器映射读取。当S_AXI_RVALID
和S_AXI_RREADY
均为 High 时,它会转至 ACK_STATE。如果在任意违规地址中发生任何读取操作,S_AXI_RRESP[1:0] 会指示 2'b10 以断言读取错误信号有效。 - ACK_STATE
- 状态将转至 IDLE_STATE。