AMBA——slave的HREADY信號

    在前幾天的ARM面試中,被問到總線架構,主要是AMBA那一套東西。對於AMBA之前上課學過一點,但很膚淺。爲了面試上網查了一下、也看了部分協議補充了一下,但是接觸的少,理解的不深入,被問到之前沒遇到的東西,就被難住了。問了我slave有哪兩種HREADY信號,每個都有什麼用,HREADY復位之後是高還是低。

 

slave的HREADY信號共有兩種輸入HREADY和輸出HREADY。

輸出HREADY

  輸出HREADY比較好理解,它表示slave當前是否準備好接受或者發送數據,如果爲高(AHB協議中建議高表示準備好)表示slave準備好了,爲低表示沒準備好。

 

輸入HREADY

當slave沒有準備好進行數據傳輸,如下面這個寫數據操作:

 

   在data phase,master採樣到slave的HREADY爲低,當前的data phase需要延遲到下一個週期。

  但如果有兩個slave要進行數據傳輸,slave1傳輸完之後slave2佔用總線。slave1在寫最後一個數據的時候沒有準備好,輸出的HREADY爲低,那麼master會在下一個週期(slave1的第二個data cycle)繼續把剛纔沒寫過去的數據放在總線上,供slave1採樣。但是在下一個週期(slave1的第二個data cycle)本來是要與slave2進行傳輸的,並且假設此時slave2的HREADY是爲高的,slave2會認爲此時是在與自己傳輸數據。

 

   但是master會在再下一個週期將傳給slave2的數據放在總線上供slave2採樣,但slave2發現這次讀寫的地址和上一次是一樣的,會發生協議錯誤問題。

  

      所以slave2需要知道slave1最後一次傳輸的HREADY爲高才會採樣數據。一般採用的方法是將所有的slave的輸出HREADY做and(與)操作,與後的輸出作爲所有slave的輸入HREADY。

 

  這樣的話,slave2在它的data cycle就知道上一個cycle,也就是slave1的data cycle是否成功傳輸了數據。

  這樣的話,也就知道了在上電覆位之後,slave的輸出HREADY爲高,防止發生死鎖。

 

 

參考:

https://blog.csdn.net/fanyongwinner/article/details/51890908

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章