ARM架构(三)——AMBA和总线②

本文参考
ARM文档“Introduction to AMBA AXI4 - Arm Developer”
手册可以在ARM官方文档中下载ARM.con,也可以访问我的百度网盘资源 提取码:1234

目录

  • 1. AXI协议概述
    • 1.1 多主系统中的AXI
    • 1.2 AXI通道
    • 1.3 AXI的主要特点
  • 2. 通道传输和事务( transfers and transactions)
    • 2.1 Channel handshake(通道握手)
    • 2.2 transfers和transactions的区别
    • 2.3 通道传输示例(Channel transfer examples)
    • 2.4 写传输:单数据项(Write transaction: single data item)
    • 2.5 写事务:多数据项(Write transaction: multiple data item)
    • 2.6 读事务:单个数据项(Read transaction: single data item)
    • 2.7 读事务:多数据项(Read transaction: multiple data item)
  • 3.通道信号Channel signals
    • 3.1 写通道信号(Write channel signals)
      • 3.1.1 写地址(Write Address)通道信号
      • 3.1.2 写数据(Write Data)通道信号
      • 3.1.3 写回应(Write Response)通道信号
      • 3.1.4 小结
    • 3.2 Read channel signals
      • 3.2.1 读地址通道信号
      • 3.2.2 读数据通道信号
      • 3.2.3 小结
    • 3.3 Data size, length, and burst type
    • 3.4 支持访问权限信号
    • 3.5 Cache support
    • 3.6 Response signaling
    • 3.7 Write data strobes写数据频闪信号
    • 3.8 带有锁信号的原子访问( Atomic accesses with the lock signal)
    • 3.9 服务质量Quality of service
    • 3.10 区域信号(Region signaling)
    • 3.11 User signals
    • 3.12 AXI协议不同通道的依赖关系(AXI channel dependencies)

1. AXI协议概述

1.1 多主系统中的AXI

1、下图显示了一个SoC系统的简化示例,它由主、从和连接它们的互连组成。
在这里插入图片描述
上图显示,每个AXI主接口连接到单个AXI从接口。当涉及多个主从时,需要一个互连结构(如上图中的深蓝色Inter-connection archtecture)。这种互连结构还实现了从接口和主接口,其中实现了AXI协议。AXI协议定义了主从之间点对点连接的信号和定时。
AXI协议是点对点规范,而不是总线规范。因此,它只描述接口之间的信号和时序。

2、多Master多Slave的Sample总线传输模型
下图显示的是一个较为复杂的互连,它需要自己的AXI主接口和从接口与外部功能块通信:
在这里插入图片描述
下图显示了一个具有各种处理器和功能块的SoC示例(是前面2.0中的那个示例图):
在这里插入图片描述
这个图显示了使用AXI的所有连接。在同一个SoC中使用了AXI3和AXI4,这是比较常见的做法。在这种情况下,互连执行不同AXI接口之间的协议转换。

1.2 AXI通道

AXI规范描述了两个接口之间的点对点协议:主接口和从接口。下图显示了每个AXI接口用于通信的五个主要通道:
在这里插入图片描述

  • 写操作使用以下通道:
    (1)主设备在写地址(Write address, AW)通道上发送一个地址
    (2)地址发送之后,主设备在写数据(Write data, W)通道上向从服务器传输数据。
    (3)slave将接收到的数据写到指定的地址。一旦从服务器完成了写操作,它就在写响应(write Response, B)通道上用一条消息响应主服务器。
  • 读操作使用以下通道:
    (1)主设备在读地址(AR)通道上发送它想要读取的地址。
    (2)从设备通过读取数据( R )通道将数据从请求地址发送到主设备。 从设备也可以在读数据( R )通道上返回一个错误消息。例如,如果地址无效,或数据损坏,或访问没有正确的安全权限,则会发生错误。

每个通道都是单向的,因此需要一个单独的写响应通道来将响应传递回主机。但是,不需要读取响应通道,因为读取响应是作为读取数据通道的一部分传递的。

使用单独的地址和数据通道进行读写传输有助于最大限度地利用接口带宽。读写通道组之间没有时序关系。这意味着读序列可以与写序列同时发生。
这五个通道中的每一个都包含几个信号,每个通道中所有这些信号的前缀如下:

前缀含义
AW表示 Write Address写地址通道的信号;
AR表示 Read Address读地址通道的信号;
W表示 Write Data写数据通道的信号;
R表示Read Data 读数据通道的信号;
B表示Write Response写响应通道的信号
B代表缓冲的,因为从服务器的响应发生在所有写操作完成之后

1.3 AXI的主要特点

AXI协议有几个关键特性,旨在改善数据传输和事务的带宽和延迟,如下所示:

  1. 独立的读写通道。 AXI支持两组不同的通道,一组用于写操作,另一组用于读操作。拥有两组独立的信道有助于提高接口的带宽性能。读和写操作可以同时发生。
  2. 多个未完成地址。 AXI允许存在多个未完成地址。主设备可以在不等待先前事务完成的情况下发出事务。这可以提高系统性能,支持并行处理事务。
  3. 地址和数据操作之间没有严格的定时关系。 使用AXI,地址和数据操作之间没有严格的时间关系。例如,主设备可以在写地址通道上发出写地址,但是对于主设备何时必须提供相应的数据以在写数据通道上写入没有时间要求。
  4. 支持不对齐数据传输。 对于任何由大于一个字节的数据传输组成的突发,访问的第一个字节可以与自然地址边界不对齐。例如,从字节地址0x1002开始的32位数据包不与自然32位地址边界对齐。
  5. 乱序事务完成。 AXI可以实现乱序事务完成。AXI协议包括事务标识符,并且对使用不同ID值完成事务没有限制。这意味着单个物理端口可以通过充当多个逻辑端口来支持乱序事务,每个逻辑端口按顺序处理其事务。
  6. 基于起始地址的突发事务。 AXI主设备只会为第一次传输发出起始地址。对于任何后续传输,slave将根据突发类型计算下一个传输地址。

2. 通道传输和事务( transfers and transactions)

transfer对应一次传输,transaction是对应一次或多次传输操作,或者说一个传输包。通常一个transaction由一个或者多个transfer组成。

2.1 Channel handshake(通道握手)

AXI4协议定义了五个不同的通道,如AXI通道中所述。所有这些通道都共享基于VALID和READY信号的相同握手机制,如下图所示。
在这里插入图片描述

VALID信号 从【源】发送到【目的】,【源】使用VALID信号来指示何时可用有效信息。VALID信号必须保持断言状态,即设置为高电平,直到【目的】接收该信息。以这种方式保持断言的信号称为sticky signals(粘性信号)。
READY信号 从【目的】发送到【源】。 【目的】指示何时可以使用READY信号接受信息。

源端或目的端是主端还是从端取决于使用的是哪个通道。例如,主机是读地址通道的源端,但却是读数据通道的目的端。
这种机制不是异步握手,而是需要时钟的上升沿来完成握手。

2.2 transfers和transactions的区别

  1. 通道传输是一次信息交换,只有一次VALID和READY握手。下图显示了一个传输:
    在这里插入图片描述

2.事务是一连串的传输,包括一次地址传输、一次或多次数据传输,对于写序列,还包括一次响应传输。下图显示了一个事务:
在这里插入图片描述
一个transactions是一个完整的突发传输

2.3 通道传输示例(Channel transfer examples)

例子都是先是一个时钟信号,然后是一个信息总线,然后是VALID和READY信号

例1
在这里插入图片描述
(1)在时钟周期2中,VALID信号上升高电平,表明信息通道上的数据是有效的。
(2)在时钟周期3中,READY信号上身高电平,表明READY信号有效。
(3)握手在时钟周期4的上升沿完成,因为READY和VALID信号都被断言。
文档中总是提到这个断言,我目前理解的断言就是上升高电平

例2
在这里插入图片描述
(1)在时钟周期1,READY信号被断言。
(2)在时钟周期3,VALID信号被断言。
(3)当VALID和READY都被断言时,在时钟周期4的上升沿完成握手。

例3
在这里插入图片描述
(1)在时钟周期3,READY信号被断言。
(2)在时钟周期3,VALID信号被断言。
(3)当VALID和READY都被断言时,在时钟周期4的上升沿完成握手。

小结:在所有三个示例中,当时钟信号的上升沿上断言READY和VALID时,信息将沿着通道传递
READY可以在VALID之前或之后断言,并且可以同时断言

2.4 写传输:单数据项(Write transaction: single data item)

本小节描述:单个数据项的写事务的过程,以及用于完成该事务的不同通道。
此写事务涉及以下通道:写地址(AW)、写(W)、写响应(B)

  1. 首先,在写地址(AW)通道上有一个握手,如下图所示:
    在这里插入图片描述
    这个握手是主向从发送写地址。握手的事件顺序如下:
    主将地址发送在AWADDR上,并在时钟周期2中断言AWVALID,从在时钟周期3中断言AWREADY,表示它有能力接收地址值。 握手在时钟周期4的上升沿完成。
  1. 其次,在第一次握手之后,主通过写(W)通道将数据传输到从,如下图所示:
    在这里插入图片描述
    数据传输的事件顺序如下:从在时钟周期n中等待WREADY设置为高电平的数据。 主将数据放在WDATA总线上,并在时钟周期n+2中断言WVALID。 握手在时钟周期n+3的上升沿完成
  1. 最后,从使用写响应(Write Response, B)通道,在接收到所有WDATA后确认写事务已经完成。该响应如下图所示:
    在这里插入图片描述
    写响应的事件顺序如下:主断言BREADY。 从驱动BRESP来指示写事务的成功或失败,并断言BVALID。握手在时钟周期n+3的上升沿完成。

2.5 写事务:多数据项(Write transaction: multiple data item)

AXI是一种基于突发的协议,这意味着可以在单个事务中传输多个数据。我们可以在AW信道上传输单个地址来传输多个数据,并带有相关的突发宽度和长度信息。

一个多数据传输的例子如下所示:
在这里插入图片描述
在这种情况下,AW通道表示三个传输序列,在W通道上,我们看到有三个数据传输。
(1)主端驱动WLAST信号为高电平来表示最后的WDATA信号。这意味着从端可以计算数据传输次数,或者说可以监视WLAST信号(就是通过监视到WLAST信号为高的时候,表明是最后一个数据传输)。
(2)一旦从端接收到所有WDATA传输,从端在B通道上给出一个BRESP值(图中是Okey)。这一个单一的BRESP值覆盖了整个突发传输。如果从端认为任何传输包含错误,它也必须等到整个突发事件完成后才能通知主端发生了错误。

2.6 读事务:单个数据项(Read transaction: single data item)

本小节将详细介绍单个数据项的读事务处理过程。此写事务涉及以下通道:读地址(AR)和读( R )

  1. 首先,在读地址(AR)通道上进行握手,如下图所示:
    在这里插入图片描述
    握手的事件顺序如下:(1)在时钟周期2中,主通过ARADDR向从服务器发送读数据的地址并断言ARVALID。(2) 在时钟周期3中,从断言ARREADY,表示它已准备好接收地址值。(3)握手在时钟周期4的上升沿完成。
  1. 接下来,在读( R )通道上,从将数据传输到主。数据传输过程如下图所示:
    在这里插入图片描述
    数据传输握手的事件顺序如下:
    (1)在时钟周期n中,主断言RREADY信号,表示它正在等待接收数据。
    (2)在时钟周期n+2,从将要发送的数据放在RDATA上。由于这是单个数据事务,所以从也将RLAST信号设置为高(第一个数据就是最后一个数据)。同时,从断言RVALID,并使用RRESP信号向主端表明读事务的成功或失败(图中是Okey)
    (3)握手在时钟周期n+3的上升沿完成。

2.7 读事务:多数据项(Read transaction: multiple data item)

AXI协议允许在同一事务中读取多个数据传输。这类似于写事务中描述的写突发。

下图显示了一个突发读传输的例子:我们在AR通道上传输单个地址,在这个地址传输多个数据项,并附带相关的突发宽度和长度信息。
在这里插入图片描述
AR通道表示三个传输序列的握手。
在R通道上,我们看到从向主传输三个数据。主将RREADY信号设置为高电平,表示主正在等待从的数据。从将每次传输断言RVALID,之后将数据传输给RDATA,完成数据传输。RLAST信号在第三次数据传输时候为高电平表示这是最后一次数据传输。

小结:
1. 读事务和写事务之间区别:对于读事务,事务中的每个传输都有一个RRESP响应。在写事务中,从服务器必须在B通道上作为单独的传输发送响应。在读事务中,从服务器使用相同的通道将数据发送回主服务器,并指示读操作的状态。
2. 如果事务中的任何传输显示错误,必须完成事务的全部指定长度之后才显示,并不能提前终止信号传输。

3.通道信号Channel signals

AXI协议定义了五个通道:三个用于写信号,两个用于读信号。

3.1 写通道信号(Write channel signals)

用于写事务的通道有:写地址、写数据、写响应

3.1.1 写地址(Write Address)通道信号

下表显示了写地址通道信号:

Write Address (AW) channel signalsAXI version
AWVALIDAXI3 and AXI4
AWREADYAXI3 and AXI4
AWADDR[31:0]AXI3 and AXI4
AWSIZE[2:0]AXI3 and AXI4
AWBURST[1:0]AXI3 and AXI4
AWCACHE[3:0]AXI3 and AXI4
AWPROT[2:0]AXI3 and AXI4
AWID[x:0]AXI3 and AXI4
AWLEN[3:0] - AWLEN[7:0]AXI3 only - AXI4 only
AWLOCK[1:0] - AWLOCKAXI3 only - AXI4 only
AWQOS[3:0]AXI4 only
AWREGION[3:0]AXI4 only
AWUSER[x:0]AXI4 only

3.1.2 写数据(Write Data)通道信号

Write Data通道信号如下表所示:

Write Data (W) channel signalsAXI version
WVALIDAXI3 and AXI4
WREADYAXI3 and AXI4
WLASTAXI3 and AXI4
WDATA[x:0]AXI3 and AXI4
WSTRB[x:0]AXI3 and AXI4
WID[x:0]AXI3 only
WUSER[x:0]AXI4 only

3.1.3 写回应(Write Response)通道信号

下表显示了Write Response通道信号:

Write Response (B) channel signalsAXI version
BVALIDAXI3 and AXI4
BREADYAXI3 and AXI4
BRESP[1:0]AXI3 and AXI4
BID[x:0]AXI3 and AXI4
BUSER[x:0]AXI4 only

3.1.4 小结

  1. 每个通道中的所有信号都有相同的前缀:
    •AW表示写地址通道
    •W表示写数据通道
    •B表示写响应通道
  2. AXI3协议和AXI4协议中写通道的差异:
    (1)AWLEN信号对于AXI4协议来说更宽。因此,AXI4能够生成比AXI3更长的突发。
    (2)由于不支持锁定传输,因此axis4将AWLOCK信号减少到单个bit位。
    (3)AXI4将AWQOS信号添加到AW通道。该信号支持axis4协议中的服务质量(QoS)概念。
    (4)AXI4将AWREGION信号添加到AW通道。这个信号支持从区,它允许从一个物理从接口有多个逻辑接口。
    (5)AXI4从W通道移除WID信号。这是因为写入数据重新排序不再被允许。
    (6)AXI4向每个通道添加用户定义的信号。

3.2 Read channel signals

用于读事务的通道有:读地址和读数据

3.2.1 读地址通道信号

读地址通道信号如下表所示:

Read Address (AR) channel signalsAXI version
ARVALIDAXI3 and AXI4
AREADYAXI3 and AXI4
ARADDR[31:0]AXI3 and AXI4
ARSIZE[2:0]AXI3 and AXI4
ARBURST[1:0]AXI3 and AXI4
ARCACHE[3:0]AXI3 and AXI4
ARPROT[2:0]AXI3 and AXI4
ARID[x:0]AXI3 and AXI4
ARLEN[3:0] - ARLEN[7:0]AXI3 only - AXI4 only
RLOCK[1:0] - ARLOCKAXI3 only - AXI4 only
ARQOS[3:0]AXI4 only
ARREGION[3:0]AXI4 only
ARUSER[x:0]AXI4 only

3.2.2 读数据通道信号

读数据通道信号如下表所示:

Read Data ( R) channel signalsAXI version
RVALIDAXI3 and AXI4
READYAXI3 and AXI4
RLASTAXI3 and AXI4
RDATA[x:0]AXI3 and AXI4
RRESP[1:0]AXI3 and AXI4
RID[x:0]AXI3 and AXI4
RUSER[x:0]AXI4 only

3.2.3 小结

  1. 每个通道中的所有信号都具有相同的前缀:AR表示读地址通道、R表示读数据通道
  2. AXI3协议和AXI4协议中读通道的差异:
    (1)对于AXI4协议,读地址长度信号ARLEN更宽。因此,AXI4能够生成比AXI3更长的读突发。
    (2)由于不支持锁定传输,AXI4将ARLOCK信号减少到单个bit位。
    (3)与写通道信号一样,服务质量和从区概念也适用于读事务。它们使用AR通道中的ARQOS和ARREGION信号。
    (4)AXI4向两个读通道添加用户定义的信号。

3.3 Data size, length, and burst type

每个读写事务都可以指定该事务的数据长度、大小和突发信号属性。在下面的属性列表中,x代表写和读,因此它们既适用于写地址通道,也适用于读地址通道:

  1. AxLEN
    AxLEN用传输数描述事务的长度。表示在一次transation中,有多少次transfers。
    对于ax3, AxLEN[3:0]有4bit位,它指定了一个事务中可以传输1-16次数据传输。
    对于ax4, AxLEN[7:0]有8bit位,它指定了一个事务中可以传输1-256次数据传输。

  2. AxSize
    AxSize[2:0] 描述每次数据传输中要传输的最大字节数。
    3个bit位可以表示每次传输1、2、4、8、16、32、64或128字节。

  3. AxBURST
    AXBURST[1:0]描述事务的突发类型 fixed, incrementing, or wrapping
    下表显示了这些突发类型的不同属性:

突发类型使用说明长度(传输次数)对齐
0x00FIXED重复读取相同的地址。对fifo很有用。1-16固定字节通道仅由起始地址和大小定义
0x01INCRIncrementing burst.。前一次传输的地址为每次传输增加地址。增量值取决于传输的大小,由AxSIZE属性定义。用于块传输AXI3: 1-16/AXI4: 1-256支持未对齐传输。
0x10WRAPWrapping burst.类似于一个递增的突发,如果达到一个上限地址限制,地址包装到一个较低的地址。通常用于缓存线路访问2, 4, 8, or 16起始地址必须与传输大小对齐
0x11RESERVEDNot for use.--

3.4 支持访问权限信号

AXI提供访问权限信号,AWPROT和ARPROT,可以防止系统非法访问。例如,如果事务没有正确的保护级别,内存控制器可以通过使用这些信号拒绝读或写访问。
这对于像Arm TrustZone这样的安全解决方案很有用,其中处理器有两个独立的状态,安全和非安全。
AxPROT定义了三个级别的访问保护,如下图所示:
在这里插入图片描述
AxPROT位属性如下表所示:

AxPROTFunction
[0]AxPROT[0] (P )将访问标识为非特权或特权:1 indicates privileged access;0表示非特权访问
[1]AxPROT[1] (NS)将访问标识为安全或非安全:1表示非安全事务;0表示安全事务。
[2]AxPROT[2] (I)表示该事务是指令访问还是数据访问:1表示指令访问;0表示数据访问

3.5 Cache support

现代SoC系统通常包含放置在系统几个点上的缓存。例如,2级缓存可能位于处理器外部,或者3级缓存可能位于内存控制器里面。为了支持使用不同缓存策略的系统**,AWCACHE和ARCACHE**信号指示事务如何在系统中进行。
下图显示了AxCACHE位分配:
在这里插入图片描述
AxCACHE位属性如下表所示:

AxCACHEFunction
AxCACHE [0]AxCACHE [0] (B)是可缓冲位。 表示这是可以delay的transaction,transaction可能是没有到达最终的目的地的。
AxCACHE [1]AxCACHE[1]是AX13中的可缓存位,或者是AX14中的可修改位modifiable。如果是modifiable,那么表示多个不同的写可以合并到同一个transactions中,读也是如此。
AxCACHE [2]AxCACHE[2]是RA位 。 读分配cache
AxCACHE [3]AxCACHE[3]是WA位。写分配cache

小结:如果没有断言可缓存位AxCACHE[1],则不能断言AxCACHE[2]和AxCACHE [3]

3.6 Response signaling

AXI为读和写事务提供响应信号。
对于读事务,从的响应信息使用RRESP在读数据通道上发出信号。
对于写事务,响应信息使用BRESP在写响应通道上发出信号。
RRESP和BRESP都是由两位组成的,对这两种信号的编码可以传递四种响应,如下表所示:

响应码说明
00 - OKAY正常访问成功或独占访问失败。
01 - EXOKAYOKAY是用于大多数事务的响应。OKAY表示正常访问已经成功 ;此响应还可以指示排他性访问失败。独占访问是指多个主服务器可以同时访问一个从服务器,但这些主服务器不能访问相同的内存范围。
10 - SLVERR独占访问,成功;EXOKAY表示独占访问的读或写部分已经成功。当访问成功到达从,但从想要返回一个错误条件给始发主时,使用SLVERR。这表示一个不成功的事务。例如,当尝试不支持的传输大小时,或者尝试对只读位置进行写访问时。
11 - DECERR解码错误。DECERR通常由互连组件生成,表示在事务地址处没有找到从。

OKEY: 表示访问成功,或表示独占访问失败。
EXOKEY: 表示独占访问成功
SLVERR: 表示slave返回了错误,如错误的transfer size或去写了一个只读的地址。
DECERR:去访问了一个不存在的slave

3.7 Write data strobes写数据频闪信号

WSTRB表示写的哪些字节是有效的。 例如,考虑一个64位写数据总线。WSTRB信号有8位,每个字节一个。下图显示了示例WSTRB值如何指定哪些字节通道是有效的:
在这里插入图片描述
假设有效数据仅位于数据总线的前六个有效字节中,从字节7到字节2。主需要用十六进制值0xFC来控制WSTRB信号。
eg:
仅在数据总线的字节2,3,4,5中有效的数据需要WSTRB信号值为0x3C。
仅在数据总线的字节0和7中的有效数据需要WSTRB信号值为0x81。
仅在数据总线的字节3,5,6,7中有效的数据需要WSTRB信号值0xE8。

3.8 带有锁信号的原子访问( Atomic accesses with the lock signal)

AxLOCK信号用于指示何时执行原子访问。
AXI协议提供了两种机制来支持原子性:

  1. 锁定访问
    锁定的传输将通道锁定,该通道将保持锁定状态,直到生成未锁定的传输。
    锁定事务应该只用于遗留设备。只有AXI3支持锁定访问。AXI4不支持锁定访问。

  2. 独占访问
    独占访问比锁定事务更有效,并且它们允许多个主服务器同时访问一个从服务器

  3. 在AXI3中,AxLOCK信号由两个位组成,其值如下
    0b00 - Normal
    0b01 - Exclusive
    0b10 - Locked
    0b11 - Reserved

  4. 在 AXI4中,AxLOCK信号由1位组成,其值如下:
    0b0 - Normal
    0b1 - Exclusive

3.9 服务质量Quality of service

服务质量就是对优先级进行排序,通过确保更重要的事务得到更高的优先级来提高系统性能
服务质量信号有两种:

  1. AWQOS在每个写事务的写地址通道上发送。
  2. ARQOS在每个读事务的读地址通道上发送。

两个信号都是4位宽,其中0x0表示最低优先级,0xF表示最高优先级。

下图显示了一个带有直接内存控制器(DMC)的示例系统,下图是DMC-400。这个控制器管理到DRAM的事务:
在这里插入图片描述
实际应用中,CPU需要内存访问远比其他组件(如GPU或VPU)多,DMC重新排序事务以确保给出正确的优先级。

3.10 区域信号(Region signaling)

这个是AXI4中的新特性。
使用区域标识符时,表示从端上的单个物理接口可以提供多个逻辑接口。每个逻辑接口在系统地址映射中可以有不同的位置。
当使用区域标识符时,从端可以不支持不同逻辑接口之间的地址解码。
区域信号使用两个4位区域标识符,AWREGIONARREGION。这些区域标识符可以唯一地标识最多16个不同的区域。

3.11 User signals

AXI4接口信号集可以选择包含一组用户定义的信号,称为User信号。用户信号可以在每个通道上用于在主从组件之间传输额外的自定义控制信息。这些信号是可选的,不必在所有通道上都支持。如果使用它们,则User信号的宽度由用户自己实现定义。

3.12 AXI协议不同通道的依赖关系(AXI channel dependencies)

AXI协议定义了不同通道之间的依赖关系。
三个主要依赖项如下:

  1. WLAST传输必须在断言BVALID之前完成。
    在主服务器可以看到写响应之前,主服务器必须发送所有的写数据。AXI3中不存在这个依赖项,在AXI4中新引入的。
    (1)在AXI3中,在发送写响应之前不必看到地址。
    (2)在AXI4中,所有的数据和地址必须在主看到写响应之前被传输。
  2. 在ARADDR被传输之前不能断言RVALID。
    从端在没有看到地址的情况下不能传输任何读数据。(从服务器不知道读取数据的地址,它就不能将数据取出用于读或写。)
  3. WVALID可以在AWVALID之前断言。
    在发送地址之前,slave应该把数据先发出数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础IO(重定向与缓冲区)

一、重定向 1、stat() 与 read() 函数 (1)stat() 函数 path:文件路径 buf:输出型参数,用于返回文件的各种属性。 函数成功返回 0 ,失败返回 -1 (2)read() 函数 fd:文…

使用minio cllient(mc)完成不同服务器的minio的数据迁移和mc基本操作

minio client 前言使用1.拉取minio client 镜像2.部署mc容器3.添加云存储服务器4.迁移数据1.全量迁移2.只迁移某个桶3.覆盖重名文件 5.其他操作1.列出所有alias、列出列出桶中的文件和目录1.1.列出所有alias1.2.列出桶中的文件和目录 2.创建桶、删除桶2.1.创建桶2.2.删除桶 3.删…

Android APK混淆处理方案分析

这里写目录标题 一、前言1.1 相关工具二、Apk 分析2.1 apk 解压文件2.2 apk 签名信息2.3 apk AndroidManifest.xml2.4 apk code三、Apk 处理3.1 添加垃圾文件3.2 AndroidManifest.xml 处理3.3 dex 混淆处理3.4 zipalign对齐3.5 apk 重新签名3.6 apk 安装测试四、总结一、前言 提…

顺序表和单链表的经典算法题

目录 前言 一、基础思想(数组) 1. 移除元素 2.删除有序元素的重复项 3.合并两个有序数组 二、单链表算法 1.移除链表元素 2.翻转链表 3.合并两个有序的链表 前言 Hello,小伙伴们,今天我们来做一个往期知识的回顾,今天我将…

C++ 设计模式(五)——状态模式

状态模式 序言理解源码 序言 设计模式只是一个抽象的设计模式方法,并不是一个固定使用的搭配,就算是普通switch语句,Map,乃至状态机都是状态模式的其中一种实现方法 状态模式看起来好像和策略模式差不多,主要是其的侧…

【vluhub】log4j注入漏洞 CVE-2021-44228

LOG4介绍 是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布 log4j存在远程代码执行漏洞、受影响版本2.x 部署环境 攻击机环境:192.168.3.180 kail环境:192.168.203.12【NAT…

深入理解 OSPF NSSA “P-bit”

** 注:机翻,未校对。** OSPF NSSA P-bit Explained OSPF Forward Address Filtering OSPF 转发地址过滤 In this lesson we’ll take a closer look at the OSPF NSSA “P-bit”. When we redistribute something into an OSPF NSSA area then these …

数据开发/数仓工程师上手指南(一)数仓概念总览

前言 笔者毕业最开始从事的就是大数据开发和数据仓库建设工作,途中曾担任过人工智能工程师和计算机视觉工程师,没想到最后兜兜转转还是回到了最原本的工作数据开发工程师。但很少有写关于本职工作的技术内容输出。 之前笔者撰文内容大部分都是关于算法…

C++入门基础:C++中的循环语句

循环语句是编程语言中用来重复执行一段代码直到满足特定条件的一种控制结构。它们对于处理需要重复任务的场景非常有用,比如遍历数组、累加数值、重复执行某项操作直到满足条件等。 但是在使用循环语句的时候需要注意下哈,有时候一不小心会构成死循环或者…

Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)

之前都是在Windows桌面版进行深度学习的环境部署及训练,今天尝试了一下在Ubuntu上进行环境部署,踩了不少坑,提供一些解决办法给大家避雷。 目录 一、下载和安装anaconda 1. 下载 2. 安装 二、创建虚拟环境 一、下载和安装anaconda 1. …

uniapp入门超详细教程:如何从零开始搭建项目

目录 一、介绍 二、环境搭建 2.1.需要下载的软件 2.1.1 HBuilderX 2.1.2 下载微信开发者工具 2.2 创建uniapp项目 2.2.1 新建项目 2.2.2 项目基本结构 2.2.3 在微信开发者工具上运行 2.2.4 发布微信小程序 三、pages.json 页面路由 四、组件 4.1 视图容器 4.1.1 v…

RabbitMQ入门详解

前言 本篇文章将详细介绍rabbitmq的基本概念知识,以及rabbitmq各个工作模式在springboot中如何使用。 文章目录 介绍 简介 RabbitMQ 核心 生产者与消费者 Exchange Queue 工作模式 简单模式 工作队列模式 发布订阅模式 路由模式 主题模式 SpringBoot中…

扭蛋机潮玩小程序搭建,扭蛋机行业的创新

在当下潮玩市场中,扭蛋机具有盲盒的未知性和惊喜体验感,商品丰富,并且价格相对低廉,获得了极高的人气。年轻人开始对扭蛋机逐渐“上头”,为了扭到喜欢的商品不断地进行复购下单,在这场随机性的扭蛋游戏中&a…

【故障排查】Docker启动Nacos报错:No DataSource set 问题解决

Nacos报错内容 Nacos Server did not start because dumpservice bean construction failure : No DataSource set原因分析 Nacos 配置的是单机模式,使用mysql 进行存储配置文件,Nacos的启动脚本已经配置了MySQL的连接方式,根据错误提示&a…

Window下安装Zookeeper

一、下载 地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/ 解压:非中文、没有空格目录下 新建data目录,用于存放数据文件 二、配置 进入conf目录,复制zoo_sample.cfg 为zoo.cfg 打开zoo.cfg 修改dataDir&…

江苏科技大学24计算机考研数据速览,有专硕复试线大幅下降67分!

江苏科技大学(Jiangsu University of Science and Technology),坐落在江苏省镇江市,是江苏省重点建设高校,江苏省人民政府与中国船舶集团有限公司共建高校,国家国防科技工业局与江苏省人民政府共建高校 &am…

层次分析模型

一、算法简介 决策问题:面临多种方案,需要根据一定的标准选择某一种方案 归一化处理(让指标在同一数量级,且保证在同一指标下其差距不变): 给指标加上权重(加权) 科学地设定权重? 二、python…

2. 深度学习的项目流程(批量化打包数据、构建模型、训练模型、波士顿房价预测、激活函数、多层感知机)

深度学习流程 1. 深度学习基本流程1.1 流程图1.2 代码实现1.3 基本概念 2. 深度学习项目流程2.1 批量化打包数据2.2 构建模型2.3 训练模型(1)筹备训练(2)开始训练 2.4 模型推理 3. 深度学习实现波士顿房价预测3.1 数据读取、切分、…

数据库之PHP联动

目录 一、软件安装 二、软件讲解 三、搭配环境 四、编辑软件配置 五、成果展示 如果有人问:为什么非要用xampp、VS code编辑软件?不用phpstudy等其他工具。 那么我只想说:因为xampp、VS code编辑软件免费(ಡωಡ)hiahiahia 一、软件安装 下载连…

Java语言程序设计基础篇_编程练习题**15.19 (游戏:手眼协调)

**15.19 (游戏:手眼协调) 请编写一个程序,显示一个半径为10像素的实心圆,该圆放置在面板上的随机位置,并填充随机的顔色,如图15-29b所示。单击这个圆时,它会消失,然后在另一个随机的位置显示新的随机颜色的…