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
    评论
AXI4总线协议和I2C(Inter-Integrated Circuit)协议是两种不同的通信协议,用于在电子设备之间进行数据传输。它们有以下几点区别: 1. 性质和应用领域: - AXI4总线协议是一种高性能、高带宽的总线协议,主要用于连接处理器、内存和外设等硬件模块之间的通信。它广泛应用于现代的系统级集成电路(SoC)设计中。 - I2C协议是一种串行通信协议,主要用于连接低速外设,如传感器、存储器、显示屏等。它通常用于连接较简单的设备,并且可以通过多个设备共享同一条总线。 2. 物理层连接方式: - AXI4总线协议通常使用并行数据传输,需要多条数据线和控制线来进行通信。 - I2C协议使用两根线(SDA和SCL)进行串行通信,其中SDA线用于数据传输,SCL线用于时钟同步。 3. 通信速率: - AXI4总线协议支持高速数据传输,可以达到很高的频率。 - I2C协议通常运行在较低的速率下,最高速率取决于设备的支持能力,一般在几百kHz到几MHz之间。 4. 设备数量和地址分配: - AXI4总线协议可以连接多个设备,每个设备都有唯一的地址。 - I2C协议可以通过地址来区分不同的设备,支持多主机和多从机的连接方式。 5. 性能和复杂性: - AXI4总线协议具有高性能和灵活性,但相对较复杂,需要更多的硬件资源和设计工作。 - I2C协议相对简单,适用于低速、低功耗的应用,但在高速数据传输和大规模系统中的性能可能受限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值