加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

AXIprotocol学习记录(3)——通道握手传输机制

(2018-09-09 09:34:11)
标签:

it

分类: IC设计

3.1 READYVALID握手

所有五个通道使用相同的VALID/READY握手方式传输地址、数据、和控制信息。这种双向流控机制意味着masterslave都可以控制它们之间信息的传输速率。发送方向当地址、数据或者控制信息有效的时候VALID置为有效;接受方向可以接受信息的时候READY信号置为有效;当VALIDREADY同时有效的时候才可以传输。

masterslave之间输入输出的信号不能有combinatorial paths

 http://s10/mw690/002pcoHFzy7nubbDpsB69&690

T1的时候VALID有效,T2的时候READY有效,VALID必须保持到T3的时候传输完成。发送方的VALID不容许依赖READY有效才有效。

http://s5/mw690/002pcoHFzy7nubhDnG404&690

T1后,READY有效,指示可以接受发送信息;T2VALID有效,开始传输;T3后,传输完成。

接受方的READY不容许依赖VALID有效才有效。

http://s12/mw690/002pcoHFzy7nublwTSrfb&690


VALIDREADY同时有效,T2时刻完成传输。

3.2.1  write address 通道

master准备好valid addresscontrol information的时候AWVALID置为有效,置为有效后AWVALID必须保持直到时钟上升沿采集AWREADY有效。

AWREADY的默认值可以为高,也可以为低。当AWREADY为高的时候可以接受valid address,然后锁存。

协议不建议AWREADY的默认值为低,这将意味着传输多打两拍,一拍将AWVALID置为有效,一拍将AWRADY置为有效。

3. 2.2  write data 通道

burst的时候,master 只有在valid data的时候将WVALID置为有效;当置为有效后,WVALID必须保持到时钟上升沿采到有效的WREADY信号。

只有slave 总是可以接受一个写数据的时候,才将WREADY的默认值设为1.

burst传输中,master必须在发送最后一个data的时候将WLAST置为有效。

3. 2.3  write response 通道

slave 要发送一个valid write response的时候BVALID置为有效,然后必须保持到时钟上升沿采到BREADY

如果master 总是可以在一个时钟周期内接受一个write response 的时候,BREADY设置默认值为高。


3. 2.4  read address 通道

master 要发送valid addresscontrol information的时候ARVALID置为有效,一直保持到时钟上升沿采集到有效ARREADY信号。

ARREADY可以设置默认值为1或者0. 如果设置为1slave必须可以接受一个valid address,然后锁存。

协议不建议ARREADY的默认值为低,这将意味着传输多打两拍,一拍将ARVALID置为有效,一拍将ARRADY置为有效。

3. 2.5  read data 通道

slave 发送valid read data的时候将RVALID置为有效,然后必须保持到时钟上升沿采集到有效的RREADY

slave 只有在响应返回数据的时候才将RRVALID置为有效。

master 接口使用RREADY表示可以接受数据。

无论何时的读,master 可以立即接受read data 的时候,才将RREADY的默认值设置为高。

slave 在发送burst 读操作的最后一个数据的时候,将RLAST置为有效。

3.3 通道之间的关系

AXI 协议要求以下的关系必须满足:

  • write response 必须在最后一个写操作之后之后;
  • 读数据必须在数据相关的地址之后。

 

其他通道方面的相关性,协议未曾定义。

这也就意味着可能会出现以下情况,写操作中写数据可以出现在写地址之前;写数据通道寄存数据个数大于写地址通道数据个数;或者,写数据和写地址同拍。

为了避免死锁的情况发生,一些依赖规则必须遵守:

  • AXI接口发送信息的VALID信号和接受信息的READY信号必须独立;
  • AXI接口的接受信息端口可以等待直到检测到VALID有效之前,它的READY可以就可以置为有效。在可以接收的时候将READY拉高等待VALID,也可以检测到VALID有效后置为有效。

以下图示中单箭头表示可以遵守,双箭头必须遵守。

读发送的依赖关系:

http://s11/mw690/002pcoHFzy7nubLxcqC2a&690 

  • master ARREADY置为有效之前必须不能等待slaveARVALID置为有效;
  •  slave可以等待ARREADY有效之后将ARVALID置为有效;
  • slave可以在ARVALID之前将ARRADY置为有效;
  •   slave必须等待ARVALIDARREADY都有效后,将RVALID置为有效,指示有效数据;
  •   slave必须不能等待masterRREADY置为有效后,再将RVALID置为有效;
  •   master可以等待RVALID有效之后,将RREADY置为有效;
  • master可以在RVALID之前将RREADY置为有效。

写传输的依赖关系:

http://s10/mw690/002pcoHFzy7nubVSTEd19&690

  • l  masterAWVALID或者WVALID必须不能等待slaveAWREADY或者WREADY
  • l  slave可以等待AWVALID或者WVALID,或者二者有效之后,将AWREADY置为有效;
  • l  slave可以在AWVALID或者WVALID,或者二者有效之前,将AWREADY置为有效;
  • l  slave可以等待AWVALID或者WVALID,或者二者有效之后,将WREADY置为有效;
  • l  slave可以在AWVALID或者WVALID,或者二者有效之前,将WREADY置为有效;
  • l  slave必须等待WVALIDWREADY有效之后将BVALID置为有效;slave必须等待WLAST有效后,因为write response BREAP,只有在写传输的最后一个数据之后才有效;
  • l  slaveBVALID必须不能等待masterBREADY
  • l  masterBREADY可以在slaveBVALID有效之后置为有效;
  • l  masterBREADY可以在slaveBVALID有效之前置为有效。

AXI4response 依赖关系

AXI4新加slave response相互依赖

新加的依赖反应在AXI3的应用中,因为任何设备不希望在接收到所有数据,接收到地址之前就发送write responsewrite response 解决了slave检查写传输的固定检查,而不是接着下一次的传输。

写响应的关系

http://s16/mw690/002pcoHFzy7nuc2f1JZ4f&690

  • l  master AWVALID或者WVALID置为有效之前,必须不能等待从机的AWREADY或者WREADY有效;
  • l  slave AWREADY置为有效,可以等待AWVALID或者WVALID,或者两者;
  • l  slave 可以将AWREADY置为有效,在AWVALID 或者WVALID,或者两者之前;
  • l  slave WREADY置为有效之前,可以等待AWVALID 或者WVALID,或者两者;
  • l  slave 可以将WREADY置为有效,在AWVALID或者WVALID,或者两者有效之前;
  • l  slave BVALID置为有效之前,必须等待AWVALIDAWREADYWVALIDWREADYslave BVALID置为有效之前,必须等待WLAST,因为写响应BRESP必须只有在写传输完最后一个数据时有效;
  • l  slave BVALID置为有效,必须不能等待master BREADY
  • l  master BREADY置为有效,可以等待BVALID
  • l  master 可以将BREADY置为有效,在BVALID之前;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有