之前的兩篇文章給大家介紹了APB協議相關的知識點,并結合實際的代碼給大家講解了一下APB slave的設計。并說明了一下APB slave mux這個模塊。
上一篇文章提到:通常而言,APB的interconnect模塊只能連接一個master,多個Slave。因此繼續管它叫interconnect感覺差了點意思。所以一般就叫它slave mux了。巧的是前幾天有個同事碰到了需要多個APB master的情況。本人便幫忙調研APB是否真的只能是一主多從的結構。沒想到還真搜到了一些公司的設計,是支持多主多從的APB Interconnect,這種情況下確實是名副其實的Interconnect了。
首先解釋一下什么是Interconnect,顧名思義,互聯。起作用是把不同的組件連接在一起,包括但不限于:
處理器和處理器
處理器和Memory
處理器和Cache
Cache和Cache
IO設備等
對于SoC工程師,把互聯理解成一個開關即可。它用來管理并指揮所連接的設備之間的通信。
1、一主多從的APB Interconnect
這種情況下Interconnect和mux沒有本質區別,所以很多情況下直接叫它APB mux或者APB slave mux。具體到實際的SoC設計中大概長下面這樣子,可以看到它只有一個Master,AHB2APB的轉接橋。同時有多個Slave模塊。這也是我們在SoC中最常遇到的情況。
我們看一下這個Interconnect的內部具體長什么樣子,如下圖所示,可以看到主要邏輯就是譯碼器+MUX。 對于Master-->Slave的信號而言,PENABLE、PWRITE、PWDATA、PADDR信號直接由Master給所有的Slave。而PSELx信號有SLave數量這么多組,其邏輯應該是PSELx = PSEL & dec[ x] & en[ x];譯碼器根據PADDR選擇拉高某個SLAVE的dec信號,也就是最多選中其中的某一個Slave。此外下面這個圖中有一個默認slave,當沒有任何slave被選擇的話,則會選中默認的slave,用來應對地址越界的錯誤情況。該Slave默認的PRDATA默認為0,PSLVERR默認為1。 對于Slave-->Master的信號而言,PREADY、PRDATA、PSLVERR由MUX進行選擇,從指定的Slave傳給Master。
1.1、Decoder
譯碼器模塊對每一筆傳輸進行地址譯碼,給每一個Slave相應的PSEL信號。Decode邏輯非常簡單,就是根據當前的PADDR選中某一個Slave,如下圖所示。這個模塊功能更加豐富,地址映射可以靜態的配置(工作的時候不能配置),實際上大部分的SoC設計中,地址映射應該是完全固定死的,無法更改的。這個是FPGA提供的IP,所以相對更靈活一點。
1.2、Multiplexor
該模塊基于MUX提供的PSELX信號,從多個Slave中選擇合適的PRDATA、PREADY、PSLVERR信號,設計很簡單,就不多講解了,直接看圖:
2、多主多從的APB Interconnect
上面這套東西和我上一篇文檔的APB slave mux其實沒有本質區別,也非常的好理解。但是如果實際的需求真的需要多個Master怎么辦呢?雖然APB官方沒有提供這種設計示例,但實際上當然是可以實現的。我們只需要在一主多從的Interconnect的基礎上增加一個Arbiter mux即可:
當然這種情況下,只支持一對一的訪問,所以實際上效率還是比較低的。仲裁方式可以使用固定優先級仲裁,也可以使用Round Robin仲裁。
2.1、Arbiter Mux
顧名思義,Arbiter+MUX。Master to Slave Multiplexor對多個PSEL進行仲裁,然后選擇其中的一個PSELX,基于這個PSELX,選擇合適的PADDR、PWRITE、PSELX、PENABLE給Single Master Interconnect模塊。 相應的,Slave to Master Multiplexor將PRDATA、PREADY、PSLVERR路由到相對應的Master。從而完成整個傳輸流程。下圖這些向右的箭頭實際上是雙向的。Master和Slave互相交互,完成傳輸過程。
這篇文章給大家講解了APB Interconnect這個模塊。除了官方說的一主多從,實際上我們也可以實現多主多從的Interconnect。當然這個模塊實際用的很少很少,大家可以根據實際需求決定是否要使用該模塊。
-
處理器
+關注
關注
68文章
19407瀏覽量
231182 -
通信
+關注
關注
18文章
6070瀏覽量
136424 -
AMBA總線
+關注
關注
0文章
35瀏覽量
9612
原文標題:深入理解AMBA總線 — APB interconnect的補充
文章出處:【微信號:IC修真院,微信公眾號:IC修真院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論