完整的AHB協議:1)可以多個master,並且需要外加一個Arbiter,和write multiplexor。為了保證每一時刻只有一個master擁有訪問權。
2)為了增強pipeline的能力,允許Arbiter將一個未完成的burst中斷,grant給另外一個transfer。所以還有兩種
transfer;RETRY/SPLIT。
Arbitration:主要是確保每個時間點,都從master的req中選擇一個priority最高的訪問bus;
從slave端接收req,來完成SPLIT操作。
Arbitration signals:
HBUSREQ,從master到Arbitration的總線請求信號。
HLOCK,從master到Arbitration的原子操作請求,與AHB-Lite中的lock信號類似。為了保證transfer的完整性。
HGRANT,從Arbitration到master的總線應答信號。
HMASTER,4bit,由master驅動,表示當前擁有總線的master。方便支持SPLIT transfer的slave record此時的master。
HMASTLOCK,由Arbitration發送給slave的lock信號。
HSPLIT,16bit,由slave發出,表示要進行SPLIT transfer,通知Arbitration哪一個bus master要繼續進行操作。
以下是一個Arbitration的響應過程。在GRANT和HREADY都為高時,才表示總線賦予成功.
HRESP信號,2bit,表示OKAY、ERROR外,還可以表示RETRY、SPLIT。同樣的RETRY、SPLIT也是2-cycle response。
RETRY和SPLIT的主要區別是,RETRY只是表示這個transfer還沒有結束,
但並不會改變Arbitration接下來的調度。
SPLIT會將當前transfer的優先級調低,在slave准備好之后,通過SPLIT信號通知Arbitration,
而后再將優先級調高。
RETRY和SPLIT的會增加slave和Arbitration的設計復雜性,但是對master並沒有影響,master應該始終req bus。
SPLIT機制最大限度的利用AHB的總線帶寬。卻增加了slave和Arbitration的設計復雜性。