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