基于FPGA的PCI總線接口設(shè)計
| 范建衛(wèi) |
| (西安電子工程研究所, 陜西西安710100) |
| 摘要 介紹了一種基于FPGA的PCI總線接口的設(shè)計方法,這種方法不僅使得目標(biāo)電路簡潔、靈活、高效,而且其設(shè)計代碼具有可重用性,可降低新設(shè)計的復(fù)雜度。利用現(xiàn)有的硬件平臺進(jìn)行了基于FPGA的主控模塊的設(shè)計與功能仿真,實現(xiàn)了PCI的主要工作模式。 |
| 關(guān)鍵字 PCI;FPGA;總線接口設(shè)計 |
| 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ò)展總線已無法適應(yīng)高速數(shù)據(jù)傳輸?shù)囊螅鳳CI 局部總線以其優(yōu)異的性價比和適應(yīng)性成為大多數(shù)系統(tǒng)的主流總線。目前開發(fā)PCI 接口大體有兩種方式,一是使用專用的PCI 接口芯片,可以實現(xiàn)完整的PC1主控模塊和目標(biāo)模塊接口功能,將復(fù)雜的PCI 總線接口轉(zhuǎn)換為相對簡單的用戶接口,用戶只要設(shè)計轉(zhuǎn)換后的總線接口即可。雖然縮短了開發(fā)周期,但缺點是可能只用到部分PCl接口功能,這樣就造成了一定的邏輯資源浪費(fèi),而且也缺乏靈活性,還可能增加板上的組件,導(dǎo)致產(chǎn)品成本的增加和可靠性的降低。二是使用可編程器件FPGA。 采用FPGA 的優(yōu)點在于其靈活的可編程性。 首先PCI 接口可以依據(jù)插卡功能進(jìn)行最優(yōu)化,而不必實現(xiàn)所有的PCI 功能,這樣可以節(jié)約系統(tǒng)的邏輯資源。并且用戶可以將PCI 插卡上的其他用戶邏輯與PCI 接口邏輯集成在一個芯片上,實現(xiàn)緊湊的系統(tǒng)設(shè)計。當(dāng)系統(tǒng)升級時,只需對可編程器件重新進(jìn)行邏輯設(shè)計,而無需更新PCB 電路板。 現(xiàn)在已經(jīng)有越采越多的用戶使用可編程器件如FPGA、CPLD等進(jìn)行PCI設(shè)備的開發(fā)。本文所論述的PCI 從設(shè)備接口控制器是作為一個轉(zhuǎn)換接口工作干PCI 總線與用戶設(shè)備之間,其主要功能是完成用戶設(shè)備與PC1總線間的信息傳送。 1 PCI簡單介紹 PCI 總線接口信號如圖1 所示。 其中CLK_p 是系統(tǒng)時鐘,時鐘頻率有33 MHz和66 MHz 兩種。RSTn_p 是系統(tǒng)復(fù)位信號,AD_p(31:0)是地址、數(shù)據(jù)復(fù)用總線。PCI 總線傳輸采用命令驅(qū)動的方式,總線命令的作用是用來規(guī)定主、從設(shè)備之間的傳輸類型,出現(xiàn)在地址期的CBE_p(3:0)上。在這個時期,主設(shè)備通過驅(qū)動PCI 地址/數(shù)據(jù)總線上分配范圍的起始地址來識別從設(shè)備,同時主設(shè)備通過驅(qū)動傳輸類型給4 位寬PCI 命令/字節(jié)使能信號線而識別傳輸類型。由于主設(shè)備僅在PCI 一個時鐘周期內(nèi)發(fā)出起始地址和傳輸類型,所以每個PCI 從設(shè)備都有責(zé)任在時鐘的下一個上升沿鎖存地址線上的地址和命令/字節(jié)信號以便順序譯碼,通過對已被鎖存的地址和命令/字節(jié)使能信號進(jìn)行譯碼目標(biāo),設(shè)備能夠確定自己是否是主設(shè)備所要進(jìn)行傳輸?shù)脑O(shè)備。假如某個從設(shè)備發(fā)現(xiàn)自己正是主設(shè)備所要求的進(jìn)行數(shù)據(jù)傳輸?shù)哪莻€從設(shè)備,就必須通過有效DEVSELn_p 設(shè)備選擇信號線進(jìn)行數(shù)據(jù)傳輸。假如主設(shè)備在一個規(guī)定的時間段沒有采樣到有效的DEVSELn_p,那么這次的傳輸請求失敗。假使主設(shè)備采樣到有效的DEVSELn_p,在地址期結(jié)束后進(jìn)入數(shù)據(jù)期,即地址/數(shù)據(jù)總線成為數(shù)據(jù)總線,用于在每個數(shù)據(jù)期傳送數(shù)據(jù),則從設(shè)備負(fù)責(zé)鎖存起始地址并在每個后繼數(shù)據(jù)傳送中自動遞增。

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

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

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


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