AHB总线协议整理

这位博注总结的很好啊,
http://blog.163.com/qixin_william/blog/static/240217035201491133626819/
http://blog.163.com/qixin_william/blog/static/240217035201491425318830/
拿过来分析下

AHB总线协议整理_第1张图片

  • T1时刻之后,master将第一拍地址和控制信号打入总线,因为是一个新的burst的开始,所以transfer的类型是NONSEQ的。 T2上升沿,slave采集到master发出的控制信号。
    1. 控制信号包括(haddr,htans,hburst)。 slave就是基于这一控制信号,考虑是否在下个周期(T2时刻后的周期,把自己的data放上供给master读取)
    2. NONSEQ是single模式和burst模式第一拍的必要条件。
    3. 这里的hburst发出为INCR模式,即为次数不限的递增burst传输。地址根据每拍数据的大小递增,可以传输任意次数。唯一的限制是地址不能超过1K边界.
  • 由于master不能在第二个周期里处理第二拍,T2时刻后,所以master使用BUSY transfer来为自己延长一个周期的时间。注意,虽然是延长了一个周期,但是master需要给出第二个transfer的地址和控制信号。在T3时刻Slave的控制信号htrans busy被slave抓到。
    1. 在T3的上升沿,实际上第一个tranfer(读或者写)完成。
    2. 这里实际上完成了一次握手,master说我下个周期会很busy,发不出来数据,slave你就不要采了
    3. 对于无效的周期,实际上和busy一同发出的busy信号也没什么意义了(反正下个周期也不会在完成tranfer了)。
  • slave在T3时刻采集到了master发来的BUSY transfer,知道master需要等待一拍,所以,slave会忽略这个BUSY transfer。
    1. 也就是说,T4时候,总线上 的数据信号是无效的。T4这个时刻只是为了获取下一周期的控制信号
    2. 虽然master在busy的周期数据是无效的,但是控制还必须有效,这样的话实际上控制信号只是在准备通知slave下一周期,我是否还是无效的,如果有效,我的地址是啥。
  • 在等待了一个周期之后,T5时刻完成第二个transfer。一切正常
  • 在第五个周期里,slave很忙,将HREADY信号拉低,告诉master需要等待一个周期。然后再T6时刻,master 感受到slave的不ready,就会保持字的状态。
  • 。。。。。。。
  • 列表内容最后在T8时刻完成最后个transfer。

需要注意的 虽然slave会忽略掉BUSY transfer,但是master也需要给出下一拍的地址可控制信号。
这里没反应出来的是hresp信号,这一信号包含ok,error,retry, split,正常情况下,都会是ok状态

你可能感兴趣的:(IC验证)