關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于Wishbone片上總線(xiàn)的PCI Bridge核的研究和應(yīng)

基于Wishbone片上總線(xiàn)的PCI Bridge核的研究和應(yīng)

作者: 時(shí)間:2005-08-08 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:討論了主橋的應(yīng)用和片上技術(shù),詳細(xì)介紹了 核的功能、內(nèi)部結(jié)構(gòu)和操作方式。實(shí)驗(yàn)證明,在系統(tǒng)中使用PCI 核進(jìn)行開(kāi)發(fā)設(shè)計(jì),電路簡(jiǎn)潔,使用方便靈活。

關(guān)鍵詞:PCI主橋;片上;PCI橋核

自PCI協(xié)議問(wèn)世以來(lái),PCI總線(xiàn)應(yīng)用越來(lái)越廣泛,現(xiàn)已成為事實(shí)上的計(jì)算機(jī)總線(xiàn)標(biāo)準(zhǔn)。隨著PCI應(yīng)用和開(kāi)發(fā)的深入,往往需要在復(fù)雜的PCI系統(tǒng)中使用PCI橋來(lái)完成設(shè)計(jì)工作,包括使用主/PCI橋來(lái)完成整個(gè)系統(tǒng)的初始化配置過(guò)程。PCI橋的使用已從傳統(tǒng)的PC機(jī)領(lǐng)域拓展到更多的電子應(yīng)用系統(tǒng)中。

1 PCI主橋簡(jiǎn)介

在復(fù)雜的PCI系統(tǒng)中,往往擁有不只一條PCI總線(xiàn)。為了提高PCI系統(tǒng)的負(fù)載能力,可用PCI-PCI橋把各條PCI總線(xiàn)連接起來(lái),同時(shí)在處理器總線(xiàn)與PCI總線(xiàn)之間使用主/PCI橋來(lái)完成總線(xiàn)轉(zhuǎn)換,以形成完整的PCI系統(tǒng)。常用的PCI系統(tǒng)結(jié)構(gòu)如圖1所示。

系統(tǒng)上電時(shí),主CPU(處理器)對(duì)PCI目標(biāo)設(shè)備的初始化也稱(chēng)為配置訪問(wèn)。由于PCI目標(biāo)設(shè)備所定義的配置空間通常不在CPU的存儲(chǔ)器和I/O空間中,所以需要一種特殊的機(jī)制來(lái)執(zhí)行配置訪問(wèn)。這種機(jī)制通常由主/PCI橋來(lái)完成。配置軟件在上電后能夠掃描PCI總線(xiàn),以確定現(xiàn)有哪些PCI設(shè)備,并根據(jù)它們的配置要求分別進(jìn)行配置。配置完成后,各個(gè)PCI目標(biāo)設(shè)備就可以在PCI總線(xiàn)控制器的協(xié)調(diào)仲裁下正常工作。

在PC兼容系統(tǒng)中,主/PCI橋也稱(chēng)為北橋,用于連接主處理器總線(xiàn)和基礎(chǔ)PCI局部總線(xiàn)(第一級(jí)PCI總線(xiàn))。北橋芯片內(nèi)通常集成有主存儲(chǔ)器控制器,因此處理速度很快。南橋芯片內(nèi)一般集成有IDE控制器、USB和其它速度較慢的I/O控制器,因此處理速度相對(duì)較慢。南北橋構(gòu)成芯片組。

2 Wishbone片上總線(xiàn)技術(shù)

片上系統(tǒng)SOC(System-On-Chip)技術(shù)近兩年發(fā)展迅速,越來(lái)越多的廠商開(kāi)始開(kāi)發(fā)自己的IP核,然后提供給系統(tǒng)集成者。而各廠商采用自己定義的IP核接口規(guī)范來(lái)開(kāi)發(fā)產(chǎn)品,使得系統(tǒng)集成成為一個(gè)棘手的問(wèn)題。為了提供IP核的可重用性,實(shí)現(xiàn)眾多廠商IP核的有效互連,片上總線(xiàn)OCB(On-Chip-Bus)技術(shù)就應(yīng)運(yùn)而生了。目前在SOC領(lǐng)域較有影響的三種片上總線(xiàn)標(biāo)準(zhǔn)為:IBM公司的Core-connect、ARM公司的AMBA和SilicoreCorp公司的Wishbone總線(xiàn)。其中Wishbone總線(xiàn)已經(jīng)被全球最大的開(kāi)放IP組織(Opencores)列為主要支持的SOC內(nèi)部互連總線(xiàn)協(xié)議。遵循Wishbone總線(xiàn)協(xié)議的IP核可以很快有效地集成到SOC中。目前,Opencores上很多開(kāi)放的IP核接口都采用Wishbone總線(xiàn)設(shè)計(jì)。而且越來(lái)越多的IP核商用廠商也宣布支持Wish-bone總線(xiàn)協(xié)議。

Wishbone總線(xiàn)最大的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單靈活,需要邏輯門(mén)少;同時(shí)完全免費(fèi)、完全公開(kāi)。Wishbone規(guī)范支持完整的普通數(shù)據(jù)傳輸協(xié)議,包括單個(gè)讀寫(xiě)周期、塊傳輸?shù)?。?shù)據(jù)總線(xiàn)寬度為8~64位(寬度仍然可以擴(kuò)展),地址總線(xiàn)可以達(dá)到64位;最快時(shí)一個(gè)時(shí)鐘周期就可進(jìn)行一次數(shù)據(jù)傳輸;支持握手協(xié)議,速率可以調(diào)整;支持出錯(cuò)重試等。在Wishbone總線(xiàn)規(guī)范中,可使用Master/Slave結(jié)構(gòu)實(shí)現(xiàn)非常靈活的系統(tǒng)設(shè)計(jì)。Master和Slave有四種互連方式,分別為:點(diǎn)對(duì)點(diǎn)、數(shù)據(jù)流、共享總線(xiàn)和交叉互連。其中點(diǎn)對(duì)點(diǎn)方式是連接一個(gè)Master和一個(gè)Slave最簡(jiǎn)單的方式,使用起來(lái)非常方便。圖2給出了采用點(diǎn)對(duì)點(diǎn)互連方式的Wishbone主/從接口圖。其中SYSCON為產(chǎn)生RST復(fù)位和CLK時(shí)鐘信號(hào)的模塊,TAGN為用戶(hù)自定義信號(hào)。

Wishbone 在Master和Slave之間使用的握手協(xié)議如圖3所示。當(dāng)準(zhǔn)備好傳輸數(shù)據(jù)時(shí)?Master使STB O信號(hào)有效,STB O狀態(tài)將一直保持到Slave的結(jié)束信號(hào)ACK O、ERR O 或 RTY O?對(duì)Master而言是ACK I?ERR I和RTY I? 之一聲明有效。Master在每一個(gè)CLK I的上升沿對(duì)結(jié)束信號(hào)采樣?如果該信號(hào)有效?STB O信號(hào)變低。此外,Wishbone接口的兩邊都能夠完全控制數(shù)據(jù)傳送的速率。

3 PCI

開(kāi)放IP組織Opencores提供的PCI Bridge Core提供了Wishbone片上系統(tǒng)總線(xiàn)和PCI邏輯總線(xiàn)的接口。PCI Bridge Core由兩個(gè)相對(duì)獨(dú)立的單元組成:一個(gè)單元處理由PCI總線(xiàn)方啟動(dòng)的數(shù)據(jù)交易,另一個(gè)單元?jiǎng)t處理由Wishbone總線(xiàn)方啟動(dòng)的交易。它是一個(gè)PCI總線(xiàn)和Wishbone總線(xiàn)之間真正的橋。

PCI 橋核支持32位PCI總線(xiàn)接口,并完全兼容PCI2.2協(xié)議(支持66MHz規(guī)范);它含有獨(dú)立的主橋、從橋功能模塊和完整的命令/狀態(tài)寄存器;支持Wishbone SOC互連協(xié)議B版本(包括B1和B3);此外,它可通過(guò)Wishbone接口支持32位總線(xiàn)操作;并可配置片上FIFO。

3.1 PCI Bridge內(nèi)部結(jié)構(gòu)

PCI橋核由兩個(gè)相對(duì)獨(dú)立的單元模塊組成:PCI目標(biāo)單元和Wishbone從單元。每個(gè)單元自身都有一套完整的功能來(lái)支持Wishbone和PCI總線(xiàn)之間的交易。Wishbone從單元可作為PCI橋中Wish-bone側(cè)的從設(shè)備和PCI側(cè)的主設(shè)備啟動(dòng)交易;PCI目標(biāo)單元?jiǎng)t可作為PCI橋中PCI側(cè)的目標(biāo)設(shè)備和Wishbone側(cè)的主設(shè)備啟動(dòng)交易。兩個(gè)單元互相獨(dú)立。PCI目標(biāo)單元用于實(shí)現(xiàn)PCI總線(xiàn)從設(shè)備接口和Wishbone總線(xiàn)的主設(shè)備接口;而Wishbone從單元?jiǎng)t用于實(shí)現(xiàn)Wishbone總線(xiàn)從接口和PCI總線(xiàn)的主設(shè)備接口。

圖4是PCI橋核的內(nèi)部結(jié)構(gòu)。

3.2 PCI Bridge的操作

PCI橋核有兩種應(yīng)用方式:主、從橋(相對(duì)PCI總線(xiàn)而言)。作為從橋時(shí),當(dāng)PCI橋連到擁有PCI總線(xiàn)的主機(jī)系統(tǒng)上電后,主機(jī)系統(tǒng)軟件將掃描PCI總線(xiàn)上連接的PCI總線(xiàn)設(shè)備(包括PCI橋),然后配置PCI橋空間寄存器,即由配置軟件來(lái)完成PCI橋的初始化配置過(guò)程。之后,PCI橋進(jìn)入正常工作狀態(tài)。

PCI橋核作為主橋時(shí),PCI橋完全控制PCI總線(xiàn)。PCI橋的Wishbone代理設(shè)備完全負(fù)責(zé)連接到PCI總線(xiàn)上的PCI設(shè)備的初始化配置過(guò)程。運(yùn)行在Wishbone代理設(shè)備上的固件(設(shè)備無(wú)關(guān)軟件)在上電后掃描PCI總線(xiàn),以確定有哪些PCI設(shè)備,并分別有什么配置要求。然后在Wishbone映象0空間內(nèi)配置各個(gè)PCI設(shè)備的配置空間。配置完成即可加載各個(gè)PCI設(shè)備的驅(qū)動(dòng)程序。此時(shí)PCI設(shè)備也可以通過(guò)PCI橋的PCI目標(biāo)單元訪問(wèn)Wishbone總線(xiàn)。

PCI橋的配置空間包括兩個(gè)部分:一個(gè)部分為Wishbone從單元的配置、狀態(tài)和控制寄存器;另一個(gè)部分為PCI目標(biāo)單元的配置、狀態(tài)和控制寄存器(包括PCI協(xié)議要求實(shí)現(xiàn)的256字節(jié)標(biāo)準(zhǔn)配置空間)。PCI橋通過(guò)相應(yīng)的地址映像空間(PCI映像0和Wishbone映像0)來(lái)實(shí)現(xiàn)PCI橋兩側(cè)代理設(shè)備訪問(wèn)PCI橋的配置空間。作為從橋時(shí),主機(jī)系統(tǒng)的主橋可以使用普通的存儲(chǔ)器讀寫(xiě)指令來(lái)訪問(wèn)PCI橋的配置空間,也可以通過(guò)配置讀寫(xiě)指令來(lái)訪問(wèn)PCI橋配置空間的低256字節(jié)。作為主橋時(shí),PCI橋本身就可以產(chǎn)生配置周期。如同PC機(jī)X86系統(tǒng)的主橋配置機(jī)制0一樣,PCI橋的Wishbone代理主設(shè)備可以通過(guò)訪問(wèn)PCI橋配置空間的CNF_ADDR和CNF_DATA寄存器來(lái)產(chǎn)生配置讀寫(xiě)命令,從而實(shí)現(xiàn)對(duì)其它PCI設(shè)備的上電初始化過(guò)程。

由于PCI橋核是一個(gè)軟核,在PCI橋核中有一個(gè)參數(shù)頭文件??梢酝ㄟ^(guò)更改PCI橋核頭文件的參數(shù)來(lái)改變PCI橋的操作方式(如主橋或從橋設(shè)置、PCI或Wishbone映像空間的定義等),因而使用非常方便。

4 使用PCI Bridge核來(lái)訪問(wèn)PCI設(shè)備

PCI橋作為從橋一般用在PCI擴(kuò)展卡上(或稱(chēng)PCI周邊卡),如數(shù)據(jù)采集,圖像傳輸?shù)?。而作為主橋一般用在PCI總線(xiàn)的主控板上(或稱(chēng)PCI系統(tǒng)卡),但需要初始化PCI總線(xiàn)上的功能設(shè)備,并控制PCI總線(xiàn)的操作。

為了調(diào)試主/從橋的應(yīng)用,筆者設(shè)計(jì)了三塊電路板來(lái)協(xié)調(diào)控制PCI總線(xiàn)的操作。一塊為FPGA板(Xilinx公司的Spartan II芯片,設(shè)計(jì)有PCI接口),一塊為微控制器板(51單片機(jī)),一塊為普通PCI擴(kuò)展卡。

作為從橋時(shí),只需要FPGA板就可以完成整個(gè)實(shí)驗(yàn)過(guò)程。即用Verilog語(yǔ)言實(shí)現(xiàn)一個(gè)Wishbone從接口,并連接到FPGA內(nèi)部的BlockRAM上(可由ISE的CORE generator產(chǎn)生),然后選擇PCI Bridge核的應(yīng)用方式為GUEST(從橋方式),并連同自己的程序一起編譯下載到FPGA的配置芯片上。這樣,把FP-GA板插入PC機(jī)的PCI插槽,就可在PC機(jī)上開(kāi)發(fā)驅(qū)動(dòng)程序來(lái)訪問(wèn)FPGA板上的資源(如RAM等)。如果要進(jìn)行數(shù)據(jù)采集,可以把Wishbone從接口連接到數(shù)據(jù)采集模塊上。從橋?qū)崿F(xiàn)的功能模塊圖如圖5所示。

作為主橋時(shí)(選擇PCI Bridge核的應(yīng)用方式為HOST),由于FPGA板上沒(méi)有微控制器,所以需要把FPGA板上的I/O口與51單片機(jī)電路板上的I/O擴(kuò)展口連接起來(lái)一起形成PCI主控板。FPGA板和普通PCI擴(kuò)展板都插到獨(dú)立的PCI底板的PCI插槽上,然后在FPGA板上和單片機(jī)板上進(jìn)行編程以實(shí)現(xiàn)對(duì)普通PCI擴(kuò)展板的初始化配置和正常讀寫(xiě)操作。其電路功能模塊框圖如圖6所示。

由于單片機(jī)的接口是8位,讀寫(xiě)時(shí)序也和PCI橋中的Wishbone時(shí)序不同,所以需要在PCI橋和單片機(jī)擴(kuò)展I/O口之間用軟件實(shí)現(xiàn)一個(gè)Wishbone主接口。該Wishbone主接口的工作過(guò)程為:?jiǎn)纹瑱C(jī)發(fā)出讀操作時(shí),先傳送4次8位地址數(shù)據(jù)到FPGA中,再將由Wishbone主接口組成的32位地址存儲(chǔ)在一個(gè)32位地址寄存器中,隨后單片機(jī)發(fā)出讀命令,以啟動(dòng)Wishbone主接口進(jìn)行Wishbone總線(xiàn)的讀時(shí)序,當(dāng)Wishbone主接口把從PCI總線(xiàn)上讀來(lái)的32位數(shù)據(jù)存放在一個(gè)32位讀數(shù)據(jù)寄存器中后,單片機(jī)將分4次讀出32位數(shù)據(jù);單片機(jī)進(jìn)行寫(xiě)操作如同讀一樣,依次傳送32位地址和32位數(shù)據(jù),最后發(fā)送寫(xiě)命令啟動(dòng)Wishbone主接口以進(jìn)行Wishbone總線(xiàn)的寫(xiě)時(shí)序。Wishbone的讀寫(xiě)時(shí)序可由Verilog語(yǔ)言描述的同步狀態(tài)機(jī)實(shí)現(xiàn)。

在51單片機(jī)上用C語(yǔ)言編程實(shí)現(xiàn)主控板固件的完整軟件過(guò)程為:上電后,固件先按順序依次掃描PCI總線(xiàn)上存在的PCI設(shè)備,掃描的目的之一是為總線(xiàn)和設(shè)備編號(hào)。當(dāng)掃描結(jié)束后,設(shè)備類(lèi)型、拓?fù)湮恢玫刃畔⒁栽O(shè)備為單位被存放在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,并按實(shí)際掃描的順序組成一個(gè)鏈表。同時(shí),設(shè)備的配置要求也依次存放在這個(gè)數(shù)據(jù)鏈表中。固件得到系統(tǒng)的設(shè)備拓?fù)鋱D后,分別按照設(shè)備的配置要求一一進(jìn)行配置,也就是分配地址資源給設(shè)備的基地址寄存器。配置完成后,各個(gè)PCI設(shè)備即可進(jìn)入正常工作狀態(tài)。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉