AXI4协议学习(一):VALID和READY握手信号

建议读者参考"AMBA® AXI™ and ACE™ Protocol Specification:AXI3™, AXI4™, and AXI4-Lite™ ACE and ACE-Lite™"

下载地址链接:https://pan.baidu.com/s/1kHv2pp0FlrPwryrKJEKSZg 密码:2ld3

为了节省时间,可以不读红字~

什么是AXI4协议?

    AXI4协议是一套总线协议,是ARM AMBA(AdvancedMicrocontroller Bus Architecture)的一部分

    其实,AXI4协议就是为了保证数据正确有效传输而定义的一套规则

AXI4协议中最基本的东西

    AXI4协议中最基本的东西就是5种信道

    ★读地址信道(Read Address Channel

    ★写地址信道(Write Address Channel

    ★读数据信道(Read Data Channel

    ★写数据信道(Write Data Channel

    ★写响应信道(Write Response Channel

    还有两种Component

     Master component

    ★ Slave component

    通信由Master发起,Master要么想从Slave中读数据(read),要么想向Slave里写(write)数据。每次读写操作都需要一个地址,读地址信道(Read Address Channel)和写地址信道(Write Address Channel)就用来传输这个地址。在写完数据后,Master需要确认Slave有没有收完数据,Slave收到完整数据后,会通过写响应信道(Write Response Channel)给Master一个反馈(completion),表示写操作已经完成。

AXI协议中用到的一些术语

    AXI Transaction:the complete set of required operations on the AXI bus form the AXI Transaction

    AXI Burst:any required payload data is transferred as an AXI Burst

    AXI Beats:a burst can comprise multiple data transfers, or AXI Beats

    简单来说,AXI Transaction就是传输一段数据(AXI burst)所需要的一整套操作,而AXI burst就是待传数据,AXI burst由AXI Beats组成,一个Beat就是一个transfer。

VALID和READY握手信号

AXI协议的一大特征,就是在五个信道通信之前,都需要使用VALID和READY信号进行握手,其中

    ★VALID表示发送端数据,地址或者控制信息已经准备就绪

    ★READY表示接收端已经准备好接收发送端将要传过来的信息

5个信道的VALID和READY信号表示如下:

AXI4协议学习(一):VALID和READY握手信号_第1张图片

    其中,“A”前缀表示“Address”,“W”前缀表示“Write”,“B”前缀表示“Back(Response)”,“R”前缀表示“Read”。

    在握手中,其实还有一个信号要用到,这个信号就是LAST信号。LAST信号存在于Write Data信道和Read Data信道中,按照上述命名规则,可以分别记为:WLAST和RLAST。LAST用于标记burst的最后一次数据传输,也就是说,只要接受端收到LAST信号,就说明本次transaction的数据已经传输完了。

握手规则

复位

    

        ▼在复位的时候,Master必须把ARVALID,AWVALID,WVALID拉低。

        ▼在复位的时候,Slave必须把RVALID和BVALID拉低

各个信道内的握手规则

★Write Address信道

        ▼一旦Master声明了AWVALID信号,AWVALID必须保持被声明的状态,直到某个上升沿Slave声明了AWREADY信号。

        ▼默认的AWREADY可以为高也可以为低(建议为高)

★Write Data 信道

        ▼一旦Master声明了WVALID,WVALID就必须保持被声明的状态,直到某个上升沿Slave声明了WREADY信号。

        ▼默认的AWREADY可以为高

        ▼每个burst后,WLAST必须被声明

★Write Response 信道

        一旦Slave声明了BVALID后,BVALID就必须保持被声明的状态,直到某个上升沿Master声明了BREADY.

        ▼BREADY可以默认为高。

★Read Address 信道

        ▼一旦Master声明了ARVALID信号,ARVALID必须保持被声明的状态,直到某个上升沿Slave声明了ARREADY信号。

        ▼默认的ARREADY可以为高或者低(建议为高)

    ★Read Data 信道

        ▼一旦Slave声明了RVALID信号,RVALID必须保持被声明的状态,直到某个上升沿Master声明了RREADY信号。

        ▼RREADY可以默认为高。

        ▼在一个burst中的最后一次transfer的时候,Slave必须声明RLAST信号。

信道之间的握手约束:

    ★可以用两幅图来表示:

        读transaction中的握手约束:

        AXI4协议学习(一):VALID和READY握手信号_第2张图片

            图解如下:

            图中有两种箭头:

                AXI4协议学习(一):VALID和READY握手信号_第3张图片

            

            前一个箭头(单头)表示B可以在A前面声明,也可以在A后面声明

            后一个箭头(双头)表示B只能在A后面声明

            也就是说,读的数据必须在跟读的地址后面(对于读操作,没有地址,哪来的数据?)

           ▼写transaction中的握手约束:

            AXI4协议学习(一):VALID和READY握手信号_第4张图片

           也就是说:

            写数据可以比写地址先传

            ◆但是BVALID必须在写地址和写数据都完成后才能被声明


            

你可能感兴趣的:(AXI学习)