AXI4总线说明和测试

1 AXI4总线介绍

本节主要介绍AXI4总线的端口定义和数据传输流程。

1.1 AXI4总线端口定义

本节主要介绍AXI4总线各个端口的定义(从Master的角度看,Slave则相反)
1.时钟和复位

信号方向说明
aclkinput时钟,上升沿有效
aresetninput复位, 低电平有效

2.写通道
2.1 写地址通道

信号方向说明
awreadyinputslave写地址就绪信号
awvalidoutputmaster写地址有效信号
awaddroutputmaster写地址
awburstoutput突发类型,2‘d1表示地址递增
awcacheoutput内存类型,4’d3
awlenoutput一次突发传输的长度,8‘d0表示突发传输一次
awsizeoutput突发大小,3’d6表示每次传输26=64Byte,
如果数据位宽为32Byte,则地址会跳跃,即0之后写的是2处的数据
如果突发大小表示的传输数据量小于数据位宽,则需指明哪些位是有效的
awlockinput锁定从机,占用总线,正常传输(1’b0),独有传输(1’b1)
awidinput写请求设备的id,当有多个设备发起写请求时需要进行编号以进行区分
bidoutput写数据反馈的id

2.2 写数据通道

信号方向说明
wreadyinputslave写数据就绪信号
wvalidoutputmaster写数据有效信号
wdataoutputmaster写入数据
wstrboutput写入数据的有效字节
wlastoutput突发传输中的最后一次传输

2.3 写响应通道

信号方向说明
breadyoutputmaster写响应就绪信号
bvalidinputslave写响应有效信号
brespinputslave写响应,2‘d0表示写入正常

3.读通道
3.1 读地址通道

信号方向说明
arreadyinputslave读地址就绪信号
arvalidoutputmaster读地址有效信号
araddroutputmaster读地址
arburstoutput突发类型,2‘d1表示地址递增
arcacheoutput内存类型,4’d3
arlenoutput一次突发传输的长度,8‘d0表示突发传输一次
arsizeoutput突发大小,3’d6表示每次传输26=64Byte,
如果数据位宽为32Byte,则地址会跳跃,即0之后读的是2处的数据
arlockinput锁定从机,占用总线,正常传输(1’b0),独有传输(1’b1)
aridinput读请求设备的id,当有多个设备发起读请求时需要进行编号以进行区分
ridoutput读回数据的id

3.2 读数据通道

信号方向说明
rreadyoutputmaster读数据就绪信号
rvalidinputmaster读数据有效信号
rdatainputmaster读入数据
rlastinput突发传输中的最后一次传输

3.3 读响应通道

信号方向说明
rrespinputslave读响应,2‘d0表示读数据正常

1.2 AXI4数据传输流程

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。

2 AXI4总线测试

本节主要介绍对AXI4总线所做的测试和对测试结果的分析。
工程源文件:AXI4总线测试工程

2.1 测试工程说明

为了加深对AXI4协议的理解,使用Vivado创建测试工程,测试工程的框图如下图所示。data generator模块按AXI4协议的要求生成写地址和写数据,通过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状态。在进行最后一次数据传输时,拉高wlast信号。在进入resp状态前,master拉高bready信号,接收slave的写反馈。在接收到写反馈信号bvalid后,进行写反馈信息bresp,然后进入susp状态。如果完成了一帧数据的传输,则地址归0,准备发送下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。在突发传输中,要注意wdata的位宽与awaddr的起始地址设置,保持地址对齐,不然wstrb会有问题。比如wdata的宽度为32Byte,起始地址设为0x8,就会导致第一个时钟周期的wtrsb低16bit为0。
在这里插入图片描述

2.1.2 读状态机

状态机复位后处于idle状态,在准备传输数据后,进入ready状态,拉高awvalid信号,并给awaddr赋值。slave在准备好接收地址信息后,拉高awready信号,同时将数据从存储空间的指定地址读出。状态机进入rdata状态,在rvalid信号有效后接收slave传过来的数据。在接收完最后一次数据后,即rlast有效,状态机进行resp状态,接收读反馈的信息,之后进入susp状态,如果接收完了一帧数据,则地址归0,准备接收下一帧数据,反之则地址加4(如果数据位宽为32),进行下一次数据的传输。
在这里插入图片描述

2.2 测试结果分析

2.2.1 写数据波形图

在这里插入图片描述

2.2.2 读数据波形图

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值