AXI Lite总线说明和测试
1 AXI Lite总线介绍
本节主要介绍AXI Lite总线的端口定义和数据传输流程。
1.1 AXI Lite总线端口定义
本节主要介绍AXI Lite总线各个端口的定义(从Master的角度看,Slave则相反)
1.时钟和复位
信号 | 方向 | 说明 |
---|---|---|
aclk | input | 时钟,上升沿有效 |
aresetn | input | 复位, 低电平有效 |
2.写通道
2.1 写地址通道
信号 | 方向 | 说明 |
---|---|---|
awready | input | slave写地址就绪信号 |
awvalid | output | master写地址有效信号 |
awaddr | output | master写地址 |
awprot | input | master写入写保护 awprot [0] 特权属性:0-正常写入;1-特权写入 awprot [1] 安全属性:0-安全性写入;1-无安全性写入 awprot [2] 访问属性:0-数据写入;1-指令写入 |
2.2 写数据通道
信号 | 方向 | 说明 |
---|---|---|
wready | input | slave写数据就绪信号 |
wvalid | output | master写数据有效信号 |
wdata | output | master写入数据 |
wstrb | output | 写入数据的有效字节 |
2.3 写响应通道
信号 | 方向 | 说明 |
---|---|---|
bready | output | master写响应就绪信号 |
bvalid | input | slave写响应有效信号 |
bresp | input | slave写响应,2‘d0表示写入正常 |
3.读通道
3.1 读地址通道
信号 | 方向 | 说明 |
---|---|---|
arready | input | slave读地址就绪信号 |
arvalid | output | master读地址有效信号 |
araddr | output | master读地址 |
arprot | input | master写入读保护 |
3.2 读数据通道
信号 | 方向 | 说明 |
---|---|---|
rready | output | master读数据就绪信号 |
rvalid | input | master读数据有效信号 |
rdata | input | master读入数据 |
3.3 读响应通道
信号 | 方向 | 说明 |
---|---|---|
rresp | input | slave读响应,2‘d0表示读数据正常 |
1.2 AXI Lite数据传输流程
1.写数据流程
slave在准备好接收数据后,将awready和wready拉高。master在准备好写地址和写数据后,拉高awvalid和wvalid,并给awaddr和wdata赋值,地址和数据的先后顺序任意。slave接收到地址和数据后,将数据写入存储空间的相应地址中。master在写入数据后,拉高bready,准备好接收写响应信号。slave在完成数据写入后,拉高bvalid信号,反馈写数据结果bresp,2’d0表示成功,2’d1表示失败,2‘d2表示slave错误,2’d3表示编码错误。
2.读数据流程
slave在准备好读出数据后拉高arready。master在准备好读地址后,拉高arvalid,并给araddr赋值,同时准备接收数据,拉高rready。slave在接收到地址后,从相应地址的存储空间中读出数据反馈给master,同时反馈读数据结果rresp。
2 AXI Lite总线测试
本节主要介绍对AXI Lite总线所做的测试和对测试结果的分析。
工程源文件:AXI Lite总线测试工程
2.1 测试工程说明
为了加深对AXI Lite协议的理解,使用Vivado创建测试工程,测试工程的框图如下图所示。data generator模块按AXI Lite协议的要求生成写地址和写数据,通过axi interconnect模块和axi bram controller模块将数据写入BRAM中。data generator模块也可以生成读地址和读指令,从BRAM中读出数据,复位和读写操作的切换通过vio模块完成。ila模块监控数据的传输过程。
2.1.1 写状态机
状态机复位后处于idle状态,在准备传输数据后,进入ready状态,拉高awvalid和wvalid信号,并给awaddr和wdata赋值。如果awready和wready信号同时有效,表明slave成功接收了地址和数据,状态机进入resp状态。如果wready信号先来,表明slave先接收数据信号,进入waddr状态,当awready信号到来后进入resp状态。如果awready信号先来,表明slave先接收地址信号,进入wdata状态,当wready信号到来后进入resp状态。在进入resp状态前,master拉高bready信号,接收slave的写反馈。在接收到写反馈信号bvalid后,进行写反馈信息bresp,然后进入susp状态。如果完成了一帧数据的传输,则地址归0,准备发送下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。
2.1.2 读状态机
状态机复位后处于idle状态,在准备传输数据后,进入ready状态,拉高awvalid信号,并给awaddr赋值。slave在准备好接收地址信息后,拉高awready信号,同时将数据从存储空间的指定地址读出。状态机进入rdata状态,在rvalid信号有效后接收slave传过来的数据,然后状态机进行resp状态,接收读反馈的信息,之后进入susp状态,如果接收完了一帧数据,则地址归0,准备接收下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。