【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议

Chapter.1 AXI4总线协议

作者:齐花Guyc(CAUC)


一、总线介绍

AXI4总线

AXI4总线就像是SoC内部的“高速公路”,负责在不同硬件模块之间高效传输数据。

在这里插入图片描述
在这里插入图片描述

AXI4协议通过 5个独立通道 传输数据和控制信号,每个通道都有自己的信号线,互不干扰。

  1. 写地址通道(Write Address Channel, AW)
    主设备(Master)告诉从设备(Slave)要写入数据的地址和相关信息(如突发长度、数据大小等)。
    信号:
    AWVALID:主设备表示写地址有效。
    AWREADY:从设备表示准备好接收写地址。
    AWADDR:写操作的目标地址。
    AWLEN:突发长度(0表示1次传输,1表示2次,依次类推,最多255)。
    AWSIZE:每次传输的字节数(如2表示4字节)。
    AWBURST:突发类型(固定、递增、环绕)。

  2. 写数据通道(Write Data Channel, W)
    主设备通过这个通道将数据发送到从设备。
    信号:
    WVALID:主设备表示写数据有效。
    WREADY:从设备表示准备好接收数据。
    WDATA:写数据内容。
    WSTRB:字节选通信号,指示哪些字节有效。
    WLAST:表示当前数据是突发传输的最后一个。

  3. 写响应通道(Write Response Channel, B)
    从设备告诉主设备写操作是否成功。
    信号:
    BVALID:从设备表示写响应有效。
    BREADY:主设备表示准备好接收响应。
    BRESP:响应状态(如OKAY、ERROR)。

  4. 读地址通道(Read Address Channel, AR)
    主设备告诉从设备要读取数据的地址和相关信息。
    信号:
    ARVALID:主设备表示读地址有效。
    ARREADY:从设备表示准备好接收读地址。
    ARADDR、 ARLEN、 ARSIZE、 ARBURST:类似写地址通道。

  5. 读数据通道(Read Data Channel, R)
    从设备将读取的数据返回给主设备。
    信号:
    RVALID:从设备表示读数据有效。
    RREADY:主设备表示准备好接收数据。
    RDATA:读数据内容。
    RRESP:响应状态。
    RLAST:表示当前数据是突发传输的最后一个。

AXI4总线时序

1.AXI4写操作时序

突发写操作(burst write),一次写操作传输4个数据 [D(A0)、D(A1)、D(A2)、D(A3)]

AXI4写操作使用3个通道:

  • 写地址通道(AW):AWADDR、AWVALID、AWREADY
  • 写数据通道(W):WDATA、WLAST、WVALID、WREADY
  • 写响应通道(B):BRESP、BVALID、BREADY
    在这里插入图片描述
2.时序图信号解读

时钟(ACLK)
ACLK 是一个周期性的时钟信号,从T0到T10,每周期一个上升沿,用于同步所有信号。

写地址通道(AW)
AWADDR:在T1到T2,主设备(Master)设置写地址为 A,表示目标地址。地址信号在 AWVALID 有效期间保持不变。
AWVALID:在T1,主设备将 AWVALID 置高,表示写地址有效。一直保持高电平直到T2,因为地址传输完成。
AWREADY:在T2,从设备(Slave)将 AWREADY 置高,表示准备好接收地址。
握手:在T2的时钟上升沿,AWVALID 和 AWREADY 同时为高,地址传输完成。

握手机制
VALID:由发送端(主设备或从设备)置高,表示数据或地址有效。
READY:由接收端置高,表示准备好接收数据或地址。
数据传输只有在 VALID 和 READY 同时为高 时才会发生。

写数据通道(W)
WDATA:从T3到T8,主设备依次发送4个数据:D(A0)、D(A1)、D(A2)、D(A3)。每个数据在一个时钟周期内传输。
WLAST:在T8,发送最后一个数据 D(A3) 时,主设备将 WLAST 置高,表示这是突发传输的最后一个数据。
WVALID:从T3到T8,主设备将 WVALID 置高,表示数据有效。每次数据传输都需要 WVALID 和 WREADY 同时为高。
WREADY:从T3到T4,从设备将 WREADY 置高,表示准备好接收数据。但在T5,WREADY 变低,表示从设备暂时未准备好(可能是处理延迟)。在T6到T8,WREADY 再次变高,继续接收数据。
握手:在T3、T4、T6、T7、T8的时钟上升沿,WVALID 和 WREADY 同时为高,数据传输完成。

写响应通道(B)
BRESP:在T9,从设备设置响应状态为 OKAY,表示写操作成功。
BVALID:在T9,从设备将 BVALID 置高,表示响应有效。
BREADY:在T2到T9,主设备将 BREADY 置高,表示准备好接收响应。
握手:在T9的时钟上升沿,BVALID 和 BREADY 同时为高,响应传输完成。

写操作流程

  1. 写地址传输(T1-T2):
    主设备发送地址 A(通过 AWADDR),并通过 AWVALID 和 AWREADY 握手完成地址传输。
  2. 写数据传输(T3-T8):
    主设备发送4个数据 D(A0) 到 D(A3)。
    数据传输在T3、T4、T6、T7、T8完成(因为T5时 WREADY 为低,数据传输暂停了一个周期)。
    在最后一个数据 D(A3) 时,WLAST 置高,表示突发传输结束。
  3. 写响应(T9):
    从设备返回 OKAY 响应,表示写操作成功。
    通过 BVALID 和 BREADY 握手完成响应传输。
2.AXI4读操作时序

突发读操作(burst length=4),主设备(Master)请求4个连续的数据。

AXI4读操作使用2个通道:
读地址通道(AR):ARADDR、ARVALID、ARREADY
读数据通道(R):RDATA、RLAST、RVALID、RREADY

在这里插入图片描述

2.时序图信号解读

时钟(ACLK)
ACLK 是一个周期性的时钟信号,从T0到T13,每周期一个上升沿,用于同步所有信号。

读地址通道(AR)
ARADDR:在T1到T2,主设备设置读地址为 A,表示起始读取地址。地址信号在 ARVALID 有效期间保持不变。
ARVALID:在T1,主设备将 ARVALID 置高,表示读地址有效。一直保持高电平直到T2,因为地址传输完成。
ARREADY:在T2,从设备将 ARREADY 置高,表示准备好接收读地址。
握手:在T2的时钟上升沿,ARVALID 和 ARREADY 同时为高,地址传输完成。

读数据通道(R)
RDATA:从T6到T13,从设备依次返回4个数据:D(A0)、D(A1)、D(A2)、D(A3)。每个数据在一个时钟周期内传输。
RLAST:在T13,发送最后一个数据 D(A3) 时,从设备将 RLAST 置高,表示这是突发传输的最后一个数据。
RVALID:从T6到T13,从设备将 RVALID 置高,表示数据有效。每次数据传输都需要 RVALID 和 RREADY 同时为高。
RREADY:从T4到T6,主设备将 RREADY 置高,表示准备好接收数据。在T7,RREADY 变低,表示主设备暂时未准备好(可能是处理延迟)。在T8到T11,RREADY 再次变高,继续接收数据。在T12,RREADY 变低。在T13,RREADY 再次变高。
握手:RVALID 和 RREADY 同时为高,数据传输完成。

读操作流程

  1. 读地址传输(T1-T2):
    主设备发送地址 A(通过 ARADDR),并通过 ARVALID 和 ARREADY 握手完成地址传输。
  2. 读数据传输(T4-T13):
    从设备在T6到T13返回4个数据 D(A0) 到 D(A3)。
    数据传输在T6、T9、T10、T13完成。
    在最后一个数据 D(A3) 时,RLAST 置高,表示突发传输结束。
<think>好的,用户想了解AXI4协议的时序关系或解决与AXI4时序相关的问题,特别是时序图解释和时序约束设计指导。首先,我需要回忆AXI4协议的基本结构和通道分离的特点。根据引用[1],AXI4有三种协议,这里可能主要关注AXI4AXI4-Lite。AXI4的通道包括读地址、写地址、读数据、写数据和写响应,每个通道都是独立的,这会影响时序设计。 接下来,用户提到时序图解释,我需要参考引用[5]中的示意图,描述主机发送地址控制信号,然后数据传输,最后应答信号的过程。需要分读和写操作分别说明,比如读操作中,主机发送ARVALID,从机回复ARREADY,然后数据通过R通道返回。写操作类似,但涉及AW、W和B通道。 关于时序约束,需要考虑各个通道之间的独立性,比如读和写通道可以并行。关键点包括握手机制(VALID和READY信号)、突发传输的时序(如地址和数据的对齐,引用[4]提到不对齐地址的处理),以及各个信号的时序关系,比如数据信号在地址之后。 用户可能需要具体的设计指导,比如如何设置时钟周期,如何确保VALID和READY的握手不发生冲突,以及如何优化时序路径。需要提到AXI4-Lite和AXI4-Stream的区别,比如AXI4-Lite不支持突发,时序更简单,而AXI4-Stream是单向流,时序可能更连续。 此外,引用[3]提到信号命名规则,比如AR开头是读地址,AW是写地址,这有助于识别各个通道的信号。时序约束中需要注意这些信号组的同步。 可能的问题点包括握手机制的正确实现,突发传输中的时序偏移,以及跨时钟域的处理。需要指导用户如何在这些方面进行约束,比如使用适当的时钟同步策略,设置合理的时序例外(如多周期路径),或者优化逻辑以减少关键路径的延迟。 最后,生成相关问题时,需要考虑用户可能进一步想了解的细节,比如如何验证AXI4时序,常见错误案例,或者不同协议的对比。这有助于用户深入学习和解决问题。</think>### AXI4协议时序关系与设计指导 #### 一、AXI4时序基础 AXI4协议采用**通道分离**机制,通过独立的地址通道、数据通道和响应通道实现并行操作[^1]。关键时序关系如下: 1. **地址与数据通道分离**:地址通道(AR/AW)和数据通道(R/W/B)可独立工作,例如主机可先发送写地址,再延迟发送写数据[^5]。 2. **握手信号时序**:每个通道使用`VALID`和`READY`信号进行握手: - `VALID`由发送方驱动,表示数据有效 - `READY`由接收方驱动,表示准备接收数据 $$ \text{传输完成条件:VALID \&\& READY} $$ 3. **突发传输时序**:支持增量突发(INCR)和回环突发(WRAP),突发长度由`AxLEN`信号指定[^4]。 #### 二、典型时序图解析 **读操作时序示例**(以AXI4-Lite为例): ``` __ __ __ __ CLK |__| |__| |__| |__| ARVALID _______________/ ARREADY ___________ RDATA _______________ RRESP ___________ ``` 1. 主机在T1周期置高`ARVALID` 2. 从机在T2周期响应`ARREADY` 3. 数据在T3周期通过`RDATA`传输,响应信号`RRESP`同步返回 **写操作时序约束要点**: - `AWVALID`与`WVALID`可同时或异步置高 - 写响应通道`BVALID`必须在最后一次写数据传输完成后置高[^3] #### 三、时序约束设计指导 1. **建立/保持时间约束**: ```tcl set_input_delay -clock CLK -max 2 [get_ports AWVALID] set_output_delay -clock CLK -max 1.5 [get_ports WREADY] ``` 2. **跨时钟域处理**: - 异步桥接需插入同步器 - 使用`set_clock_groups -asynchronous`声明异步时钟关系 3. **突发传输优化**: - 保持地址通道相位超前数据通道至少1个周期 - 对齐突发边界:`AxADDR[3:0]`应匹配首字节位置 4. **关键路径优化**: - 将握手信号逻辑保持在单一时钟域 - 使用流水线寄存器分割长组合逻辑 #### 四、常见时序问题解决方案 | 问题现象 | 诊断方法 | 解决方案 | |---------|----------|----------| | 死锁状态 | 检查所有通道的VALID/READY依赖关系 | 添加超时计数器强制释放信号 | | 数据错位 | 验证突发长度与STRB信号对齐 | 使用AXI协议检查器IP核 | | 时序违例 | 分析关键路径报告 | 插入寄存器或优化组合逻辑 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值