謝利軍,陳瑜軒
(1.海軍裝備部 陜西 西安 710043;2.中國航空計算技術研究所 陜西 西安 710068)
PCI(Peripheral Component Interconnect)[1]總 線 是 目 前 被普遍設計采用的局部總線之一。PCI接口模塊多用于各種高速、大數據量的處理系統中,可以提高外設間以及外設與主機間高速數據傳輸,解決標準總線數據傳輸率低等問題。PCI協議芯片實現了PCI總線規范要求的所有硬件接口信號和配置空間寄存器,可以用來實現模塊總線轉換的功能,本文介紹使用PCI協議芯片設計實現模塊設計的方法。
本文介紹的設計方法以PLX[2]公司的PCI9054為例。
PCI9054是PLX公司生產的PCI總線通用接口芯片,其設計符合PCI總線V2.1和V2.2規范,支持PCI雙地址周期,地址空間高達4GB。
PCI9054 的本地端(Local Bus)可以編程實現 8,16,32 位的數據寬度,本地總線速率高達50 MHz,支持3種數據傳輸模式:直接主模式(PCI Initiator)、直接從模式(PCI Target)和DMA模式,在PCI總線和本地總線間的數據傳送速率高達132MB/S。
PCI9054提供了PCI總線、本地總線和可選的SE2PROM(Serial EEPROM)3個接口。PCI9054傳遞PCI總線和本地總線之間數據,既可以作為兩個總線的主控設備去控制總線,也可以作為兩個總線的目標設備去響應總線[3]。SE2PROM是可選的接口,設計可通過PCI主設備或SE2PROM進行內部寄存器配置。如果選擇SE2PROM,PCI9054可上電后自動加載配置內部寄存器;如果不選擇SE2PROM,設計者需要通過訪問內部寄存器方式來配置內部寄存器。
采用PCI協議芯片實現的接口模塊的功能框圖如圖1所示。
根據設計原理可將流程分為協議芯片與PCI總線接口電路設計、協議芯片與本地總線接口電路設計、參數配置三部分。

圖1 PCI協議芯片實現模塊設計原理框圖Fig.1 PCI protocol chip module design schematic diagram
PCI9054實現了PCI總線規范要求的所有硬件接口信號,所以在設計協議芯片與PCI總線接口時,按照PCI標準規范將控制、數據、地址等信號線對應連接[4]。
協議芯片與本地總線接口的設計需要根據硬件需求先選擇本地總線的工作方式。
PCI9054本地總線可工作在M,C,J 3種模式下。
M模式是專為Motorola公司的MCU設計的工作模式,如果選擇Motorola公司PC850/860芯片可使用M模式[6]。
C模式是PCI9054通過片內邏輯控制將PCI的地址線和數據線分開,方便地為本地工作時序提供各種工作方式,一般較廣泛應用于系統設計中。
J模式是一種沒有Local Master的工作模式,它的好處是地址數據線沒有分開,嚴格仿效PCI總線的時序。
以上3種工作方式可利用模式選擇引腳加以選擇。一般電路可用C模式或J模式,C模式應用較為簡單方便,較為常用[7]。
除數據地址信號外,協議芯片與本地總線接口硬件設計的關鍵信號主要包括:
ADS信號:地址數據有效信號,表示一個新的訪問周期的開始;
LHOLD信號:表示PCI模塊申請使用本地總線;
LHOLDA信號:主機對PCI模塊申請使用本地總線的應答;READY信號:表示數據讀寫周期的結束;BLAST信號:表示總線訪問的last transfer。在PCI模塊的PFGA邏輯設計中應重點關注和控制好上述信號。
PCI9054的工作方式,數據傳輸方式以及空間設置等功能都是通過配置其內部寄存器(Internal Registers)來實現的。PCI9054內部提供了5種寄存器:PCI配置寄存器,本地端配置寄存器,運行時間(RUNTIME)寄存器,DMA寄存器和I2O信息寄存器[8]。
2.3.1 數據傳輸模式配置
上文提到PCI總線和Local Bus傳輸數據有3種模式,是由PCI9054內部6個零等待可編程FIFO存儲器(FIFOs)實現,這3種模式為:
①PCI Initiator模式:包括PCI發起讀操作和PCI發起寫操作;
②PCI Target模式:包括PCI目標讀操作和PCI目標寫操作;
③DMA模式:包括PCI總線到Local Bus傳輸和Local Bus到PCI總線傳輸。
傳輸模式的選擇根據PCI模塊的工作模式確定。如果PCI模塊作為總線的從設備,則傳輸由PCI發起控制,PCI9054為作PCI總線的工作目標,這時應選擇PCI Initiator模式。當模塊設計是本地端發起控制,此時PCI9054成為主控設備,而PCI總線則成為PCI9054的工作目標,這種情況下應選擇PCI Target模式。在數據進行DMA傳輸時,PCI9054對于PCI總線和Local Bus而言都是主控設備,PCI9054本身具有DMA控制器,可以完全脫離PC機進行DMA傳輸控制,此時PCI9054工作在DMA模式[9]。
數據傳輸模式的選擇是通過設置方式寄存器來實現的。
2.3.2 空間資源配置
對本地地址空間及其本地總線屬性的設置通過本地配置寄存器的配置來實現的。這些配置要根據實際開發的硬件板卡的硬件資源進行配置。而配置PCI配置寄存器的任務就是要把某一段本地地址映射為PCI總線地址,也就是當PCI主設備要訪問本地地址空間時,要知道其對應的PCI總線地址。
首先要在PCI總線主控模塊上為PCI9054的內部寄存器分配一段空間,這樣我們得出PCI配置寄存器的基址(標示為PC_Add)。而本地端配置寄存器的基址是由PCI配置寄存器中的PCIBAR0給出的(標示為LCR_Add)。
PCI配置寄存器將本地端的芯片通過本地端地址翻譯成PCI總線的地址,也就是將本地的芯片映射到系統的內存或I/O口。這樣使得用程序操作這一段內存(或I/O)實際上就是對本地的芯片操作[10]。
PCI9054內部寄存器可通過PCI主設備或SE2PROM進行配置。對于有處理器的PCI模塊設計者還可以通過Local Processor配置。
PCI接口模塊也可使用硬件邏輯來實現總線轉換的功能。使用硬件邏輯的設計比較靈活,設計人員可以根據自己的需要設計適合于特定功能的接口電路,而不必實現PCI總線的全部功能。但由于PCI總線協議復雜,設計PCI控制接口難度較大,對于產品不大又有時限的工程項目來說,耗時長、成本高。相比于邏輯設計控制接口的設計方法,協議芯片的設計方法成本較低,具有通用性,能夠有效降低接口設計的難度,縮短開發時間,是眾多“短平快”項目的最優選擇。
[1]PLX技術公司.V2.1.PLX9054數據手冊 [S].美國:[s.n.],2000.
[2]PLX技術公司.V2.0.PCI9054 RDK-LITE硬件參考手冊[S].美國:[s.n.],.2003.
[3]李貴山,陳金鵬.PCI局部總線及其應用[M].西安:西安電子科技大學出版社,2003.
[4]瞿世尊,陳健.PCI9054在PCI總線高速數據采集中的應用[J].電子技術,2004(2):59-61.QU Shi-zhun,CHEN Jian.The application ofPCI9054 in the PCI Bus in high speed data acquisition[J].Electronic Technology,2004(2):59-61.
[5]劉和平.PIC16F87X單片機實用軟件與接口技術-C語言及其應用[M].北京:北京航天航空出版社,2002.
[6]張明峰.PIC單片機入門與實踐[M].北京:化京航天航空人學出版社,2004.
[7]張國華.模擬電路的接地技術[J].電子制作,2005(4):35.ZHANG Guo-hua.Grounding techniques for analog circuits electronic production[J].Electronic Production,2005(4):35.
[8]田軍,羅方.等精度測頻裝置的制作[J].電子制作,2006(1):54.TIAN Jun,LUO Fang.Precision frequency measurement device electronic production[J].Electronic Production,2006(1):54.
[9]李澎.簡易倍頻電路.[EB/OL].[2005-07-19].http://www.eetchina.com/簡易倍頻電路.htm.
[10]黃丙銀,宗建華.利用VB6.0實現P IC單片機與PC串行通信[J].電子產品世界,2002(16):79-80.HUANG Bing-yin,ZONG Jian-hua.Using VB6.0 Jianhua P IC MCU and PC serial communication[J].Electronic Products in the World,2002(16):79-80.