您的位置:首页 > 其它

AHB总线协议整理

2017-08-11 22:57 375 查看
这位博注总结的很好啊,

http://blog.163.com/qixin_william/blog/static/240217035201491133626819/

http://blog.163.com/qixin_william/blog/static/240217035201491425318830/

拿过来分析下



T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个新的burst的开始,所以transfer的类型是NONSEQ的。 T2上升沿,slave采集到master发出的控制信号。

控制信号包括(haddr,htans,hburst)。 slave就是基于这一控制信号,考虑是否在下个周期(T2时刻后的周期,把自己的data放上供给master读取)

NONSEQ是single模式和burst模式第一拍的必要条件。

这里的hburst发出为INCR模式,即为次数不限的递增burst传输。地址根据每拍数据的大小递增,可以传输任意次数。唯一的限制是地址不能超过1K边界.

由于master不能在第二个周期里处理第二拍,T2时刻后,所以master使用BUSY transfer来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是master需要给出第二个transfer的地址和控制信号。在T3时刻Slave的控制信号htrans busy被slave抓到。

在T3的上升沿,实际上第一个tranfer(读或者写)完成。

这里实际上完成了一次握手,master说我下个周期会很busy,发不出来数据,slave你就不要采了

对于无效的周期,实际上和busy一同发出的busy信号也没什么意义了(反正下个周期也不会在完成tranfer了)。

slave在T3时刻采集到了master发来的BUSY transfer,知道master需要等待一拍,所以,slave会忽略这个BUSY transfer。

也就是说,T4时候,总线上 的数据信号是无效的。T4这个时刻只是为了获取下一周期的控制信号

虽然master在busy的周期数据是无效的,但是控制还必须有效,这样的话实际上控制信号只是在准备通知slave下一周期,我是否还是无效的,如果有效,我的地址是啥。

在等待了一个周期之后,T5时刻完成第二个transfer。一切正常

在第五个周期里,slave很忙,将HREADY信号拉低,告诉master需要等待一个周期。然后再T6时刻,master 感受到slave的不ready,就会保持字的状态。

。。。。。。。

列表内容最后在T8时刻完成最后个transfer。

需要注意的 虽然slave会忽略掉BUSY transfer,但是master也需要给出下一拍的地址可控制信号。

这里没反应出来的是hresp信号,这一信号包含ok,error,retry, split,正常情况下,都会是ok状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: