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