新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > OPB總線學(xué)習(xí)日志

OPB總線學(xué)習(xí)日志

作者: 時(shí)間:2016-12-14 來源:網(wǎng)絡(luò) 收藏
OPB總線概述:

在Xilinx EDK的Microblaze軟核中有用到多種總線接口,其中OPB(On-chip Peripheral Bus)是一種將各種外部設(shè)備連接到Microblaze處理系統(tǒng)中的一種總線接口,比如Timer/Counter、Gpio、Uart等,就是通過OPB總線連接到Microblaze處理器內(nèi)核。

本文引用地址:http://butianyuan.cn/article/201612/329942.htm

OPB總線能夠在不影響OPB仲裁器(Arbiter)和總線上已連接的外圍設(shè)備基礎(chǔ)上添加新的外圍設(shè)備,同步于系統(tǒng)時(shí)鐘,共享32位地址總線,以及32位數(shù)據(jù)總線,支持主從設(shè)備之間單一周期數(shù)據(jù)傳送。

(這里要說明下PLB總線,它是PowerPC硬核的高速總線,64位數(shù)據(jù)總線寬度,地址和讀寫數(shù)據(jù)總線分離,具備分別傳輸?shù)哪芰Α,F(xiàn)在最新的ISE11已經(jīng)將Microblaze的OPB總線也搞成PLB總線,目前還不確定是不是僅僅改了名稱而已。問題:地址和讀寫數(shù)據(jù)總線分離怎么理解?是讀和寫操作可以同時(shí)進(jìn)行?)

OPB總線包含4個(gè)組成部分:(1)主設(shè)備 Master Device 最大16個(gè)(可能是受限于仲裁器)

(2)從設(shè)備 Slave Device 無限制,受限于FPGA的硬件資源

(3)仲裁器 Arbiter根據(jù)設(shè)定的優(yōu)先級(jí),判決主設(shè)備的總線占用順序

(4)互聯(lián)器 Interconnect 用OR邏輯將各個(gè)主設(shè)備的地址,數(shù)據(jù)連接起來

總線的結(jié)構(gòu):

總線,是指提供的一個(gè)數(shù)據(jù)通道,使得多個(gè)設(shè)備之間可以進(jìn)行數(shù)據(jù)傳遞。能夠主動(dòng)向總線發(fā)出請(qǐng)求的是主設(shè)備(Master),只能被動(dòng)接收請(qǐng)求的是從設(shè)備(Slave)。所以總線的系統(tǒng)結(jié)構(gòu)一般分為三個(gè)部分:(1)Master

(2)Slave,

(3)總線邏輯,總線邏輯由互連器(Interconnect)和仲裁器(Arbiter)兩部分組成。

總線操作的一般流程是:Master向總線發(fā)出讀寫請(qǐng)求,總線邏輯接受請(qǐng)求并負(fù)責(zé)把這些請(qǐng)求傳送給從設(shè)備;從設(shè)備收到后執(zhí)行讀寫操作,完成后給出確認(rèn)信號(hào),總線邏輯再負(fù)責(zé)把確認(rèn)信號(hào)傳送給主設(shè)備,主設(shè)備收到確認(rèn)后,數(shù)據(jù)傳輸過程完成。
有的總線結(jié)構(gòu)只允許有一個(gè)Master,而有的可以有幾個(gè)Master。OPB總線屬于后者。當(dāng)可以有好幾個(gè)Master時(shí),如果多個(gè)Master都向總線發(fā)出請(qǐng)求,這時(shí)就需要進(jìn)行仲裁,以確定哪個(gè)Master可以占有總線。因此,如果總線上掛有多個(gè)Master,就需要仲裁器(Arbiter);反之,如果只有一個(gè)Master(包括可以有幾個(gè)Master但實(shí)際上只使用一個(gè)Master的情況),就一定不需要仲裁器。
總線上往往有多個(gè)Slave,因?yàn)槿绻挥幸粋€(gè)Master和一個(gè)Slave的話,似乎也就沒有必要采用總線,直接傳輸數(shù)據(jù)就可以了。那么既然有多個(gè)Slave,Master向總線發(fā)出請(qǐng)求時(shí),如何區(qū)分是對(duì)哪個(gè)Slave進(jìn)行操作呢?這是通過地址來分辨的。Master向總線發(fā)出請(qǐng)求時(shí),總是會(huì)將要操作的地址送出來,這個(gè)地址可能是通過單獨(dú)的地址線,也可能是復(fù)用數(shù)據(jù)線。(片上總線往往采用單獨(dú)的地址線,與外部連接的總線則往往復(fù)用以節(jié)省引腳數(shù)。)每個(gè)Slave都被分配有互不重疊的地址空間,根據(jù)這個(gè)地址和自己的地址空間比較,就可以知道Master是不是對(duì)自己進(jìn)行操作,從而可以判斷是否應(yīng)該做出響應(yīng)。

OPB總線信號(hào)命名規(guī)則:
OPB總線中的信號(hào)命有三種:

(1)Mn_打頭的,是Master的輸出;

(2)Sln_打頭的,是Slave的輸出;

(3)OPB_打頭的,是總線邏輯的輸出。

OPB總線的連經(jīng)邏輯采用OR邏輯,因此,當(dāng)一個(gè)Master或者Slave不對(duì)總線輸出時(shí),應(yīng)該將其輸出置為0,就可以不影響總線的正常工作。

總線邏輯一般都是接受Master的輸出后,進(jìn)行一定的或運(yùn)算,變成OPB_打頭的輸出,送給Slave;或者接受Slave的輸出后,進(jìn)行一定的或運(yùn)算,變成OPB_打頭的輸出,送給Master。所以,對(duì)于Master而言,它需要處理的信號(hào)有兩種,Mn_打頭的是它的輸出,OPB_打頭的是它的輸入。對(duì)于Slave而言,它需要處理的信號(hào)也是兩種,Sln_打頭的是它的輸出,OPB_打頭的是它的輸入。

OPB總線的復(fù)位:

OPB總線可以被多種復(fù)位信號(hào)復(fù)位,不過上電復(fù)位優(yōu)先級(jí)最高。當(dāng)FPGA裝載成功后,系統(tǒng)會(huì)自動(dòng)花費(fèi)16個(gè)時(shí)鐘周期來復(fù)位OPB總線,在這期間,OPB不響應(yīng)任何其他復(fù)位信號(hào)的復(fù)位動(dòng)作。其他復(fù)位信號(hào)有:

(1)SYS_Rst 系統(tǒng)復(fù)位 (2)WDT_Rst 看門狗定時(shí)器溢出復(fù)位 (3)Debug_SYS_Rst 通過JTAG接口,在調(diào)試軟件上控制復(fù)位OPB總線(如何操作還需要另外研究研究)

OPB總線事物處理流程:
(1)Master首先發(fā)出Mn_Request信號(hào),要求占用總線;

(2)仲裁器根據(jù)該周期的總線情況和其他Master的請(qǐng)求及優(yōu)先權(quán),可能回復(fù)OPB_Grant信號(hào)告知Master可能使用總線。

(3)Master收到Grant后,發(fā)出Mn_Select占用總線,同時(shí)發(fā)出地址Mn_ABus和讀寫信號(hào)Mn_RNW,如果是寫還會(huì)給出數(shù)據(jù)Mn_DBus??偩€邏輯將這些轉(zhuǎn)化為OPB_Select,OPB_ABus,OPB_RNW,OPB_DBus并送給Slave。

(4)Slave根據(jù)OPB_Select和OPB_ABus來判斷是否應(yīng)該做出響應(yīng)。如果是屬于自己的地址空間,則升高Sln_En占據(jù)總線,同時(shí)完成相應(yīng)的操作,并返回?cái)?shù)據(jù)Sln_DBus和數(shù)據(jù)有效信號(hào)Sln_XferAck。

(5)總線邏輯將Sln_DBus和Sln_XferAck轉(zhuǎn)化為OPB_DBus和OPB_XferAck,并送給Master。Master收到后降低Mn_Select,結(jié)束總線事務(wù)。




關(guān)鍵詞: OPB總線學(xué)習(xí)日

評(píng)論


技術(shù)專區(qū)

關(guān)閉