微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > axi3/axi4总线握手协议

axi3/axi4总线握手协议

时间:10-02 整理:3721RD 点击:
各位大牛:
我现在在研究axi3/axi4总线协议,在握手信号这块,有点问题,想请教你们一下;
对于写操作的握手信号,协议中是这么描述的:
1.the master must not wait for the slave AWREADY or WREADY before asserting AWVALID or WVALID;(这句话的意思应该是:主设备的AWVALID 或者 WVALID信号有效是一定不要等从设备发送AWREADY 或者 WREADY)
2.the slave can wait for AWVALID or WVALID,or both before asserting AWREADY,(这句话的意思应该是:从设备信号AWREDY信号有效可以等(也可以不等)主设备中的AWVALID 或者 WVALID 或者两者)
我的问题是:需要这样握手,否则会造成死锁,对于第一条,为什么一定不要等,一旦等就会造成死锁?

顶一个

从这些信号的功能上去理解, 就知道协议为什么这样去描述等于不等
AWVALID/WVALID : 这组信号是用来告知slave,master已经准备好了数据传输。因此这组
信号只是说明master自身的状态,它不依赖于slave,所以不需要等slave的AWREADY/WREADY。
但是master发出AWVALID/WVALID后,就需要等AWREADY/WREADY。
AWREADY/WREADY : 这组信号说明slave已经接受了来自master的AWALID/WVALID的传输请求,
但是同时它也是用来表明slave当前是否可以接受新的传输请求。从这一点讲,slave并不需要去等
AWVALID/WVALID后才发出AWREADY/WREADY。比如,系统刚刚初始化,AWREADY/WREADY
一般是初始化为有效的,用于说明slave已经准备就绪。
一旦slave发出AWREADY/WREADY,自己一定要保证能够及时响应接下来的AWVALID/WVALID请求。
"master must not wait for" 这个是出于总线效率的考虑, 是出于总线效率的考虑。
AXI的传输非常灵活,独立的数据、地址控制通道都是为了能够为传输获得更大的效率和响应速度。
因此传输也被设计的并不依赖于当前的状态,而是依赖于对请求的反馈。
特别是当系统中存在多个master和slave后,如果master被设计为等待AWREADY/WREADY,
很可能会让多个slave和一个master之间的传输变得毫无效率甚至锁死。

各位,我也有一个关于写事务握手的问题,就是这个握手并没有规定,究竟先地址通道握手还是先数据通道握手,要是数据通道先握手了,这时都还没有地址,数据应该写往哪儿呢?



    肯定是要地址通道先握手呀,你去翻协议里面channel handshake那一章




   AXI3协议里也没有明确说必须先地址握手,再数据通道握手啊,请问你找到了相关的描述没有呢?



   谁先握手都行,slave都得等,
   以master写slave  signle为例,
   slave先收数据,数据缓存在slave的数据buffer,再收地址,根据地址处理刚才缓存的对应数据
   slave先收地址,地址缓存在slave的地址buffer,再收数据,根据地址处理刚接受到得对应数据数
   地址数据都收到,slave才能完成这次操作

ganxie shang mian de jiang jie !

学习来的,这个以后是主流的互联接口啊



   这个几年前感觉就是主流接口了!

fine, thx

上一篇:带宽与FFT点数
下一篇:ddr与flash的区别

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top