赞
踩
本节主要介绍AXI4总线的端口定义和数据传输流程。
本节主要介绍AXI4总线各个端口的定义(从Master的角度看,Slave则相反)
1.时钟和复位
信号 | 方向 | 说明 |
---|---|---|
aclk | input | 时钟,上升沿有效 |
aresetn | input | 复位, 低电平有效 |
2.写通道
2.1 写地址通道
信号 | 方向 | 说明 |
---|---|---|
awready | input | slave写地址就绪信号 |
awvalid | output | master写地址有效信号 |
awaddr | output | master写地址 |
awburst | output | 突发类型,2‘d1表示地址递增 |
awcache | output | 内存类型,4’d3 |
awlen | output | 一次突发传输的长度,8‘d0表示突发传输一次 |
awsize | output | 突发大小,3’d6表示每次传输26=64Byte, 如果数据位宽为32Byte,则地址会跳跃,即0之后写的是2处的数据 如果突发大小表示的传输数据量小于数据位宽,则需指明哪些位是有效的 |
awlock | input | 锁定从机,占用总线,正常传输(1’b0),独有传输(1’b1) |
awid | input | 写请求设备的id,当有多个设备发起写请求时需要进行编号以进行区分 |
bid | output | 写数据反馈的id |
2.2 写数据通道
信号 | 方向 | 说明 |
---|---|---|
wready | input | slave写数据就绪信号 |
wvalid | output | master写数据有效信号 |
wdata | output | master写入数据 |
wstrb | output | 写入数据的有效字节 |
wlast | 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读地址 |
arburst | output | 突发类型,2‘d1表示地址递增 |
arcache | output | 内存类型,4’d3 |
arlen | output | 一次突发传输的长度,8‘d0表示突发传输一次 |
arsize | output | 突发大小,3’d6表示每次传输26=64Byte, 如果数据位宽为32Byte,则地址会跳跃,即0之后读的是2处的数据 |
arlock | input | 锁定从机,占用总线,正常传输(1’b0),独有传输(1’b1) |
arid | input | 读请求设备的id,当有多个设备发起读请求时需要进行编号以进行区分 |
rid | output | 读回数据的id |
3.2 读数据通道
信号 | 方向 | 说明 |
---|---|---|
rready | output | master读数据就绪信号 |
rvalid | input | master读数据有效信号 |
rdata | input | master读入数据 |
rlast | input | 突发传输中的最后一次传输 |
3.3 读响应通道
信号 | 方向 | 说明 |
---|---|---|
rresp | input | slave读响应,2‘d0表示读数据正常 |
1.写数据流程
slave在准备好接收数据后,将awready和wready拉高。master在准备写数据后,首先定义传输方式,给awburst、awcache、awlen、awsize赋值。在准备好写地址和写数据后,拉高awvalid和wvalid,并给awaddr和wdata赋值,地址和数据的先后顺序任意,在进行最后一次数据传输时,拉高wlast信号。slave接收到地址和数据后,将数据写入存储空间的相应地址中。master在写入数据后,拉高bready,准备好接收写响应信号。slave在完成数据写入后,拉高bvalid信号,反馈写数据结果bresp,2’d0表示成功,2’d1表示失败,2‘d2表示slave错误,2’d3表示编码错误。
2.读数据流程
slave在准备好读出数据后拉高arready。master在准备读数据后,首先定义传输方式,给awburst、awcache、awlen、awsize赋值。在准备好读地址后,拉高arvalid,并给araddr赋值,同时准备接收数据,拉高rready。slave在接收到地址后,从相应地址的存储空间中读出数据反馈给master,同时反馈读数据结果rresp。
本节主要介绍对AXI4总线所做的测试和对测试结果的分析。
工程源文件:AXI4总线测试工程
为了加深对AXI4协议的理解,使用Vivado创建测试工程,测试工程的框图如下图所示。data generator模块按AXI4协议的要求生成写地址和写数据,通过axi interconnect模块和axi bram controller模块将数据写入BRAM中。data generator模块也可以生成读地址和读指令,从BRAM中读出数据,复位和读写操作的切换通过vio模块完成。ila模块监控数据的传输过程。本次测试不进行突发数据传输,每次进行一次数据传输。
状态机复位后处于idle状态,在准备传输数据后,进入ready状态,拉高awvalid和wvalid信号,并给awaddr和wdata赋值。如果awready和wready信号同时有效,表明slave成功接收了地址和数据,状态机进入resp状态。如果wready信号先来,表明slave先接收数据信号,进入waddr状态,当awready信号到来后进入resp状态。如果awready信号先来,表明slave先接收地址信号,进入wdata状态,当wready信号到来后进入resp状态。在进行最后一次数据传输时,拉高wlast信号。在进入resp状态前,master拉高bready信号,接收slave的写反馈。在接收到写反馈信号bvalid后,进行写反馈信息bresp,然后进入susp状态。如果完成了一帧数据的传输,则地址归0,准备发送下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。在突发传输中,要注意wdata的位宽与awaddr的起始地址设置,保持地址对齐,不然wstrb会有问题。比如wdata的宽度为32Byte,起始地址设为0x8,就会导致第一个时钟周期的wtrsb低16bit为0。
状态机复位后处于idle状态,在准备传输数据后,进入ready状态,拉高awvalid信号,并给awaddr赋值。slave在准备好接收地址信息后,拉高awready信号,同时将数据从存储空间的指定地址读出。状态机进入rdata状态,在rvalid信号有效后接收slave传过来的数据。在接收完最后一次数据后,即rlast有效,状态机进行resp状态,接收读反馈的信息,之后进入susp状态,如果接收完了一帧数据,则地址归0,准备接收下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。