基于FPGA的PCI總線接口設(shè)計(jì)
| 范建衛(wèi) |
| (西安電子工程研究所, 陜西西安710100) |
| 摘要 介紹了一種基于FPGA的PCI總線接口的設(shè)計(jì)方法,這種方法不僅使得目標(biāo)電路簡(jiǎn)潔、靈活、高效,而且其設(shè)計(jì)代碼具有可重用性,可降低新設(shè)計(jì)的復(fù)雜度。利用現(xiàn)有的硬件平臺(tái)進(jìn)行了基于FPGA的主控模塊的設(shè)計(jì)與功能仿真,實(shí)現(xiàn)了PCI的主要工作模式。 |
| 關(guān)鍵字 PCI;FPGA;總線接口設(shè)計(jì) |
| Design of PCI Bus Interface based on FPGA |
| Fan Jianwei |
| (Xi’an Electronic Engineering Rebbbbbb Institute, Xi’an ShaanXi 710100) |
| Abstract A design bbbbbb of implementing the PCI bus interface is introduced based on FPGA. Not only does this bbbbbb make the target circuit simple, flexible and efficient, but also can reduce the complexity of new design due to its reused code. Utilizing the hardware, it gives the design architecture and the simulation of the main module. The main PCI work modes are implemented in the design. |
| Keywords PCI; FPGA; bus interface design |
|
0 引言 在現(xiàn)代數(shù)據(jù)采集及處理系統(tǒng)中ISA,EISA、MCA 等擴(kuò)展總線已無(wú)法適應(yīng)高速數(shù)據(jù)傳輸?shù)囊?,而PCI 局部總線以其優(yōu)異的性?xún)r(jià)比和適應(yīng)性成為大多數(shù)系統(tǒng)的主流總線。目前開(kāi)發(fā)PCI 接口大體有兩種方式,一是使用專(zhuān)用的PCI 接口芯片,可以實(shí)現(xiàn)完整的PC1主控模塊和目標(biāo)模塊接口功能,將復(fù)雜的PCI 總線接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的用戶(hù)接口,用戶(hù)只要設(shè)計(jì)轉(zhuǎn)換后的總線接口即可。雖然縮短了開(kāi)發(fā)周期,但缺點(diǎn)是可能只用到部分PCl接口功能,這樣就造成了一定的邏輯資源浪費(fèi),而且也缺乏靈活性,還可能增加板上的組件,導(dǎo)致產(chǎn)品成本的增加和可靠性的降低。二是使用可編程器件FPGA。 采用FPGA 的優(yōu)點(diǎn)在于其靈活的可編程性。 首先PCI 接口可以依據(jù)插卡功能進(jìn)行最優(yōu)化,而不必實(shí)現(xiàn)所有的PCI 功能,這樣可以節(jié)約系統(tǒng)的邏輯資源。并且用戶(hù)可以將PCI 插卡上的其他用戶(hù)邏輯與PCI 接口邏輯集成在一個(gè)芯片上,實(shí)現(xiàn)緊湊的系統(tǒng)設(shè)計(jì)。當(dāng)系統(tǒng)升級(jí)時(shí),只需對(duì)可編程器件重新進(jìn)行邏輯設(shè)計(jì),而無(wú)需更新PCB 電路板。 現(xiàn)在已經(jīng)有越采越多的用戶(hù)使用可編程器件如FPGA、CPLD等進(jìn)行PCI設(shè)備的開(kāi)發(fā)。本文所論述的PCI 從設(shè)備接口控制器是作為一個(gè)轉(zhuǎn)換接口工作干PCI 總線與用戶(hù)設(shè)備之間,其主要功能是完成用戶(hù)設(shè)備與PC1總線間的信息傳送。 1 PCI簡(jiǎn)單介紹 PCI 總線接口信號(hào)如圖1 所示。 其中CLK_p 是系統(tǒng)時(shí)鐘,時(shí)鐘頻率有33 MHz和66 MHz 兩種。RSTn_p 是系統(tǒng)復(fù)位信號(hào),AD_p(31:0)是地址、數(shù)據(jù)復(fù)用總線。PCI 總線傳輸采用命令驅(qū)動(dòng)的方式,總線命令的作用是用來(lái)規(guī)定主、從設(shè)備之間的傳輸類(lèi)型,出現(xiàn)在地址期的CBE_p(3:0)上。在這個(gè)時(shí)期,主設(shè)備通過(guò)驅(qū)動(dòng)PCI 地址/數(shù)據(jù)總線上分配范圍的起始地址來(lái)識(shí)別從設(shè)備,同時(shí)主設(shè)備通過(guò)驅(qū)動(dòng)傳輸類(lèi)型給4 位寬PCI 命令/字節(jié)使能信號(hào)線而識(shí)別傳輸類(lèi)型。由于主設(shè)備僅在PCI 一個(gè)時(shí)鐘周期內(nèi)發(fā)出起始地址和傳輸類(lèi)型,所以每個(gè)PCI 從設(shè)備都有責(zé)任在時(shí)鐘的下一個(gè)上升沿鎖存地址線上的地址和命令/字節(jié)信號(hào)以便順序譯碼,通過(guò)對(duì)已被鎖存的地址和命令/字節(jié)使能信號(hào)進(jìn)行譯碼目標(biāo),設(shè)備能夠確定自己是否是主設(shè)備所要進(jìn)行傳輸?shù)脑O(shè)備。假如某個(gè)從設(shè)備發(fā)現(xiàn)自己正是主設(shè)備所要求的進(jìn)行數(shù)據(jù)傳輸?shù)哪莻€(gè)從設(shè)備,就必須通過(guò)有效DEVSELn_p 設(shè)備選擇信號(hào)線進(jìn)行數(shù)據(jù)傳輸。假如主設(shè)備在一個(gè)規(guī)定的時(shí)間段沒(méi)有采樣到有效的DEVSELn_p,那么這次的傳輸請(qǐng)求失敗。假使主設(shè)備采樣到有效的DEVSELn_p,在地址期結(jié)束后進(jìn)入數(shù)據(jù)期,即地址/數(shù)據(jù)總線成為數(shù)據(jù)總線,用于在每個(gè)數(shù)據(jù)期傳送數(shù)據(jù),則從設(shè)備負(fù)責(zé)鎖存起始地址并在每個(gè)后繼數(shù)據(jù)傳送中自動(dòng)遞增。

PCI 總線的突發(fā)傳輸方式是PCI 總線的基本傳輸方式,也是其特點(diǎn)之一。突發(fā)傳輸周期由一個(gè)地址期和一個(gè)或多個(gè)數(shù)據(jù)期組成,PCI 支持存儲(chǔ)器空間和I/O 空間的突發(fā)傳輸方式。突發(fā)傳輸方式由PCI 橋來(lái)實(shí)現(xiàn),在不產(chǎn)生副作用的前提下它可以把對(duì)存儲(chǔ)器的多次訪問(wèn)合并為一次訪問(wèn),PCI橋可利用初始化軟件配置時(shí)所提供的地址范圍來(lái)區(qū)別能不能合并。一個(gè)PCI 設(shè)備可以將自己的基址寄存器預(yù)取為1,表明允許PCI橋進(jìn)行預(yù)讀和合并寫(xiě)數(shù)據(jù)。對(duì)于PCI 橋來(lái)說(shuō)當(dāng)遇到要寫(xiě)的數(shù)據(jù)是不可預(yù)取的時(shí),則在PCI 橋緩沖器的數(shù)據(jù)合并操作必須停止,并將以前的合并結(jié)果清除,進(jìn)行正常的非突發(fā)傳輸方式。實(shí)際上只要處理器發(fā)出的一系列寫(xiě)數(shù)據(jù)所隱含的地址順序相同,主橋總是可以將它們組合成為突發(fā)數(shù)據(jù)傳輸方式。其他具體要求可參考PCI2.2版本的協(xié)議。 2 基于FPGA 的設(shè)計(jì) 本文所實(shí)現(xiàn)的PCI 主要控制有I/O 的讀/寫(xiě)、內(nèi)存的讀/寫(xiě)、配置讀/寫(xiě)、突發(fā)傳輸模式等16項(xiàng)操作,模塊設(shè)計(jì)框圖如圖2 所示。

利用Aldec 的Active-HDL8.1 軟件,采用框圖設(shè)計(jì)頂層文件,實(shí)現(xiàn)結(jié)果如圖3 所示。 其中,極性產(chǎn)生器包含在接口模塊里,關(guān)于PCI 寄存器的配置參數(shù)利用PACKAGE 進(jìn)行統(tǒng)一設(shè)置。 3 硬件仿真 依據(jù)設(shè)計(jì)圖,對(duì)其中的部分設(shè)計(jì)進(jìn)行仿真。關(guān)于命令寄存器與地址計(jì)數(shù)器模塊,根據(jù)CBE_p(3:0)來(lái)設(shè)定工作模式,其中突發(fā)工作模式主要由Din(1:0)來(lái)確定,各種工作模式的設(shè)定時(shí)刻由FRAMEnd來(lái)確定。工作時(shí),F(xiàn)RAMEnd由高向低變化產(chǎn)生命令判斷信號(hào),然后根據(jù)CBE_p 的值譯碼出工作模式,送給相應(yīng)的信號(hào)。本次仿真是由內(nèi)存讀命令到內(nèi)存寫(xiě)命令,然后是配置寫(xiě)命令的仿真過(guò)程。在FRAMEnd 變低的下一個(gè)時(shí)鐘上升沿進(jìn)行判斷,并把命令字付給Command 信號(hào)。仿真結(jié)果如圖4 所示。 極性產(chǎn)生器主要是根據(jù)ADo 和CBEi 產(chǎn)生極性標(biāo)志信號(hào)NEW_PARo。其中RESET 是復(fù)位信號(hào),CE_Ado是使能信號(hào)。仿真波形如圖5 所示。 極性校驗(yàn)器主要用來(lái)做接口配置、配置寄存器設(shè)置信號(hào),邏輯相對(duì)復(fù)雜。極性校驗(yàn)器仿真波形如圖6所示。其中DET_PERR、SIG_SERR送給配置寄存器模塊,NEW_OTPERR、NEW_PERRno、NEW_SERRno送給I/O接口模塊。

4 結(jié)語(yǔ) 基于FPGA的PCI接口設(shè)計(jì)經(jīng)驗(yàn)證是可行的,同時(shí)可以充分利用原系統(tǒng)中FPGA 的資源,這對(duì)減少系統(tǒng)的組件,提高系統(tǒng)可靠性有很大益處。通過(guò)這次嘗試,對(duì)PCI 接口協(xié)議有了深入的認(rèn)識(shí),為了使基于FPGA 的PCI 接口設(shè)計(jì)實(shí)用化,后續(xù)還需要進(jìn)行用戶(hù)邏輯與接口的封裝等工作,以及驅(qū)動(dòng)程序等應(yīng)用軟件的編寫(xiě)。


|
|
作者簡(jiǎn)介: |
|
范建衛(wèi)(1977-),男,漢族,2001 年畢業(yè)于西安電子科技大學(xué)應(yīng)用電子技術(shù)專(zhuān)業(yè),助理工程師,現(xiàn)工作于西安電子工程研究所,主要從事雷達(dá)總體技術(shù)方面工作。 |
|
參考文獻(xiàn): |
|
[1] PCI local bus specification Rev2.2,PCISIG,www.pcisig.com. [2] 李貴山,戚德虎.PCI局部總線開(kāi)發(fā)者指南[M].西安:西安電子科技大學(xué)出版社,1997. [3] 曾繁泰,馮保初.PCI 總線與多媒體計(jì)算機(jī)[M].北京:電子工業(yè)出版社,1998. [4] 彭衛(wèi).基于PCI 總線控制卡的研究與實(shí)現(xiàn)[D].電子科技大學(xué),2003. |
本文標(biāo)簽:基于FPGA的PCI總線接口設(shè)計(jì)
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《基于FPGA的PCI總線接口設(shè)計(jì)》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“基于FPGA的PCI總線接口設(shè)計(jì)”的更多資訊