1 - APB引言:
首先考慮一下以下的場景:
有一個水果店,只賣三種水果,分別是草莓、藍(lán)莓和蘋果。水果店按照客人購買量進(jìn)行 水果的進(jìn)貨 。 廠商根據(jù)水果店的要求 ,提供對應(yīng)數(shù)量的水果并 運送到水果店 。
每次交易如下:
水果店根據(jù)需求使用****大喇叭廣播 自己的訂單需求 ,說出想要訂貨的數(shù)量, 對應(yīng)廠商提供水果上門 ,水果店簽收。
使用這條水果運輸總線類比AMBA總線的APB****總線:
概念1: 主機(Master)
訂單的發(fā)起只能由 水果店發(fā)起 ,所以水果店在這條水果運輸總線里面運輸水果占有主動地位。
類比:
在APB總線里面,數(shù)據(jù)的傳輸只能由主機發(fā)起,其他部分響應(yīng)主機操作。
概念2:從機(Slave)
當(dāng)水果店發(fā)起訂單之后,和訂單匹配的廠家需要 提供對應(yīng)的水果送到水果店 。這里面的廠家 只能根據(jù)要求送水果 ,自己不能隨便向水果店送水果(沒有主動的權(quán)限)。
類比:
在APB總線里面,數(shù)據(jù)的回復(fù)由從機完成,從機 只能完成主機發(fā)起的操作 ,自己不能發(fā)起操作然后完成操作。
概念3:單主機(Single Master)
在這條水果運輸總線里面,當(dāng)前只有一個水果店,也只有這個水果店可以發(fā)起訂單需求,所以在 這條水果運輸總線里面,只有一個主機(按上圖來說)。
類比:
在APB總線里面, 有且只有一個主機可以連接到APB總線接口 ,其他的只能連接從機(外設(shè)),所以 APB總線只支持單主機模式 。
概念4:總線協(xié)議(Bus Protocol)
在這條水果運輸總線里面,水果店按照自己的需求,發(fā)起訂單,廠商提供水果,水果店確認(rèn)收到 。 這一個完整的流程以及順序被稱為水果總線在傳輸水果的協(xié)議。
類比:
在APB總線里面,主機先發(fā)起要訪問的外設(shè)地址,外設(shè)根據(jù)要求返回數(shù)據(jù),主機收到數(shù)據(jù),這一個完整的流程被稱為APB總線協(xié)議。
所以我們可以根據(jù)上面得出 ( 單主機 ) 總線的正式概念 :
總線是被總線上所有的部件所共享的一組通路(連線),對于單主機來說,如果該主機想要與其中的外設(shè)部件進(jìn)行通信(獲得數(shù)據(jù)),需要將地址(廠商名字)、數(shù)據(jù)(水果)、命令(進(jìn)貨還是退貨)放到總線上,其他的從機部件對總線上的數(shù)據(jù)進(jìn)行偵聽,檢查地址數(shù)據(jù)和命令的是否與自己相關(guān),然后 相關(guān)部件做出響應(yīng) 。
概念5: 命令總線、數(shù)據(jù)總線、地址總線
在這條水果運輸總線里面,水果店按照自己的需求,使用大喇叭發(fā)出進(jìn)貨還是退貨(命令)、哪個廠家(地址)、退貨的水果或者進(jìn)貨的水果(數(shù)據(jù))。
類比:
在APB總線中,有地址線(PADDR),命令線(PWRITE、PENABLE、PESEL)和數(shù)據(jù)線(PRDATA、PWDATA)。
PS:舉的例子和APB不是一一完全對應(yīng),但是表達(dá)的意思相同
2 - APB總線協(xié)議詳解:
2-1 APB在SOC內(nèi)使用的部分:
如圖:
CPU : CPU是操作的發(fā)起者,CPU發(fā)起讀寫外設(shè)數(shù)據(jù)的操作。
APB_Interconnect :根據(jù)上文所說的總線協(xié)議和傳輸信號的要求,構(gòu)建出來的設(shè)計實體,該實體接收CPU發(fā)出的數(shù)據(jù)和指令,然后廣播到每一個外設(shè)部件。
**SLAVE:對APB_interconnect輸出數(shù)據(jù)和指令進(jìn)行響應(yīng)。
**
Q1 : 是否可以不需要APB_interconnect,APB_Interconect的作用是什么?
如上圖,當(dāng)CPU只有一個外設(shè),那么直接可以和外設(shè)相連,不需要APB_Interconect。此時CPU的發(fā)出的指令和操作只會發(fā)給URT0,不需要地址來仲裁。如下圖:
但是當(dāng)CPU需要連接多個外設(shè)的時候(CPU只管發(fā)出地址和命令),根據(jù) CPU地址范圍分配表 :
(1)APB_Interconect對每一個外設(shè)設(shè)置地址,然后APB_Interconect根據(jù)CPU發(fā)出的地址,選中對應(yīng)地址的外設(shè),把CPU的地址和指令傳輸?shù)皆撏庠O(shè) [地址路由仲裁]。
結(jié)論: 是否需要APB_interconnect根據(jù)應(yīng)用而定 ,如果只是單個的外設(shè)連接CPU(很少出現(xiàn)),可以直接連接CPU和外設(shè)通過APB總線。不需要APB_Interconect, 但是當(dāng)外設(shè)數(shù)目變多 ,自然而然的就引入了 不同外設(shè)的區(qū)分, 所以當(dāng)多個外設(shè)的時候,需要引入APB_Interconect來做這些相關(guān)的處理。
用水果店類比:水果店用大喇叭發(fā)出訂單,所有的水果廠家進(jìn)行偵聽,然后響應(yīng)訂單,**或者假如水果廠家沒有偵聽裝置,可以在水果店和水果廠家之間加一個Interconect,**這個Interconect的作用是當(dāng)收到某一個廠家的名字時,根據(jù) 廠家名字和地址的關(guān)系 ,把需求 單獨發(fā)送給對應(yīng)的廠家,專門通知供應(yīng)廠家 (也就是選中外設(shè))。
2-2 APB總線接口: (AMBA APB 2.0)
系統(tǒng)信號 |
---|
PCLK |
PRESETN |
地址總線 |
PADDR |
命令總線 |
PSELx |
PENABLE |
PWRITE |
數(shù)據(jù)總線 |
PRDATA |
PWDATA |
根據(jù)上圖,結(jié)合之前的類比和概念我們基本就可以知道APB該怎么運行。
2-3 APB Bridge示意接口(APB_Interconect)
根據(jù)AMBA APB手冊,截取APB Bridge接口:
圖左邊的接口System Bus Slave Interface,連接APB 主機(即上面的CPU),這個接口也是APB完整的接口,包含上面舉例的信號。圖右邊和左下面的接口連接多個SLAVE, 其中PSELn有多個 ,每個對應(yīng)不同的SLAVE。其他信號對于SLAVE是一致的,因為PSELn已經(jīng)可以選中不同的SLAVE來接收傳輸?shù)墓蚕硇盘柫恕?/p>
2-4 APB BUS時序圖(AMBA APB 2.0手冊)
寫傳輸:
如上時序圖,主機在T2時刻把所要訪問的 地址,命令和數(shù)據(jù)全部放到APB總線上 ,沿著組成APB的接口的金屬線 傳播到從機接口處 。在T3時刻, 從機發(fā)現(xiàn)自己的PSEL信號為高 ,就知道 主機選擇它來處理數(shù)據(jù)的寫操作 ,此時從機內(nèi)部準(zhǔn)備好處理數(shù)據(jù)的準(zhǔn)備動作,在T4時刻,從機 完成總線上數(shù)據(jù)采樣并進(jìn)行內(nèi)部數(shù)據(jù)處理 。
WriteEnable = PSEL & (!PENABLE) & PWRTIE ;
或者
WriteEnable = PSEL & PENABLE & PWRTIE ;
always @ (posedge PCLK or negedge PRESETn)
begin
if(~PRESETn)
begin
reg_paddr <= 'h0 ;
reg_pwdata <= 'h0 ;
end
else if(WriteEnable)
bein
reg_paddr <= PADDR ;
reg_pwdata <= PWDATA ;
end
end
TODO:
外設(shè)內(nèi)部處理數(shù)據(jù)
讀傳輸:
如上時序圖,主機在T2時刻把所要訪問的 地址,命令和數(shù)據(jù)全部放到APB總線上 ,沿著組成APB的接口的金屬線 傳播到從機接口處 。在T3時刻, 從機發(fā)現(xiàn)自己的PSEL信號為高 ,就知道 主機需要它內(nèi)部的數(shù)據(jù)(PWRITE ==0) ,此時從機內(nèi)部準(zhǔn)備好 返回數(shù)據(jù)并把返回的數(shù)據(jù)放在數(shù)據(jù)總線上 ,在T4時刻,主機 完成總線上數(shù)據(jù)采樣得到需要的數(shù)據(jù) 。
ReadEnable = PSEL & (!PENABLE) & (!PWRTIE)
always @ (posedge PCLK or negedge PRESETn)
begin
if(~PRESETn)
begin
reg_paddr <= 'h0 ;
reg_prdata <= 'h0 ;
end
else if(ReadEnable)
bein
reg_paddr <= PADDR ;
reg_prdata <= 外設(shè)內(nèi)部產(chǎn)生的數(shù)據(jù) ;
end
end
assign PRDATA = reg_prdata ;
2-5 APB BUS的優(yōu)缺點:
優(yōu)點:設(shè)計簡單,時序簡單,用在不需要高性能總線的外設(shè)上。
**缺點:每個數(shù)據(jù)的傳輸都需要兩個時鐘周期,這樣的話,APB BUS滿載的帶寬也只有50%,帶寬利用率不高。
**
-
主機
+關(guān)注
關(guān)注
0文章
1000瀏覽量
35193 -
總線
+關(guān)注
關(guān)注
10文章
2894瀏覽量
88227 -
apb2
+關(guān)注
關(guān)注
0文章
4瀏覽量
1476
發(fā)布評論請先 登錄
相關(guān)推薦
評論