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

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

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

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


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