謝利軍,陳瑜軒
(1.海軍裝備部 陜西 西安 710043;2.中國航空計算技術(shù)研究所 陜西 西安 710068)
PCI(Peripheral Component Interconnect)[1]總 線 是 目 前 被普遍設(shè)計采用的局部總線之一。PCI接口模塊多用于各種高速、大數(shù)據(jù)量的處理系統(tǒng)中,可以提高外設(shè)間以及外設(shè)與主機間高速數(shù)據(jù)傳輸,解決標(biāo)準(zhǔn)總線數(shù)據(jù)傳輸率低等問題。PCI協(xié)議芯片實現(xiàn)了PCI總線規(guī)范要求的所有硬件接口信號和配置空間寄存器,可以用來實現(xiàn)模塊總線轉(zhuǎn)換的功能,本文介紹使用PCI協(xié)議芯片設(shè)計實現(xiàn)模塊設(shè)計的方法。
本文介紹的設(shè)計方法以PLX[2]公司的PCI9054為例。
PCI9054是PLX公司生產(chǎn)的PCI總線通用接口芯片,其設(shè)計符合PCI總線V2.1和V2.2規(guī)范,支持PCI雙地址周期,地址空間高達(dá)4GB。
PCI9054 的本地端(Local Bus)可以編程實現(xiàn) 8,16,32 位的數(shù)據(jù)寬度,本地總線速率高達(dá)50 MHz,支持3種數(shù)據(jù)傳輸模式:直接主模式(PCI Initiator)、直接從模式(PCI Target)和DMA模式,在PCI總線和本地總線間的數(shù)據(jù)傳送速率高達(dá)132MB/S。
PCI9054提供了PCI總線、本地總線和可選的SE2PROM(Serial EEPROM)3個接口。PCI9054傳遞PCI總線和本地總線之間數(shù)據(jù),既可以作為兩個總線的主控設(shè)備去控制總線,也可以作為兩個總線的目標(biāo)設(shè)備去響應(yīng)總線[3]。SE2PROM是可選的接口,設(shè)計可通過PCI主設(shè)備或SE2PROM進(jìn)行內(nèi)部寄存器配置。如果選擇SE2PROM,PCI9054可上電后自動加載配置內(nèi)部寄存器;如果不選擇SE2PROM,設(shè)計者需要通過訪問內(nèi)部寄存器方式來配置內(nèi)部寄存器。
采用PCI協(xié)議芯片實現(xiàn)的接口模塊的功能框圖如圖1所示。
根據(jù)設(shè)計原理可將流程分為協(xié)議芯片與PCI總線接口電路設(shè)計、協(xié)議芯片與本地總線接口電路設(shè)計、參數(shù)配置三部分。
圖1 PCI協(xié)議芯片實現(xiàn)模塊設(shè)計原理框圖Fig.1 PCI protocol chip module design schematic diagram
PCI9054實現(xiàn)了PCI總線規(guī)范要求的所有硬件接口信號,所以在設(shè)計協(xié)議芯片與PCI總線接口時,按照PCI標(biāo)準(zhǔn)規(guī)范將控制、數(shù)據(jù)、地址等信號線對應(yīng)連接[4]。
協(xié)議芯片與本地總線接口的設(shè)計需要根據(jù)硬件需求先選擇本地總線的工作方式。
PCI9054本地總線可工作在M,C,J 3種模式下。
M模式是專為Motorola公司的MCU設(shè)計的工作模式,如果選擇Motorola公司PC850/860芯片可使用M模式[6]。
C模式是PCI9054通過片內(nèi)邏輯控制將PCI的地址線和數(shù)據(jù)線分開,方便地為本地工作時序提供各種工作方式,一般較廣泛應(yīng)用于系統(tǒng)設(shè)計中。
J模式是一種沒有Local Master的工作模式,它的好處是地址數(shù)據(jù)線沒有分開,嚴(yán)格仿效PCI總線的時序。
以上3種工作方式可利用模式選擇引腳加以選擇。一般電路可用C模式或J模式,C模式應(yīng)用較為簡單方便,較為常用[7]。
除數(shù)據(jù)地址信號外,協(xié)議芯片與本地總線接口硬件設(shè)計的關(guān)鍵信號主要包括:
ADS信號:地址數(shù)據(jù)有效信號,表示一個新的訪問周期的開始;
LHOLD信號:表示PCI模塊申請使用本地總線;
LHOLDA信號:主機對PCI模塊申請使用本地總線的應(yīng)答;READY信號:表示數(shù)據(jù)讀寫周期的結(jié)束;BLAST信號:表示總線訪問的last transfer。在PCI模塊的PFGA邏輯設(shè)計中應(yīng)重點關(guān)注和控制好上述信號。
PCI9054的工作方式,數(shù)據(jù)傳輸方式以及空間設(shè)置等功能都是通過配置其內(nèi)部寄存器(Internal Registers)來實現(xiàn)的。PCI9054內(nèi)部提供了5種寄存器:PCI配置寄存器,本地端配置寄存器,運行時間(RUNTIME)寄存器,DMA寄存器和I2O信息寄存器[8]。
2.3.1 數(shù)據(jù)傳輸模式配置
上文提到PCI總線和Local Bus傳輸數(shù)據(jù)有3種模式,是由PCI9054內(nèi)部6個零等待可編程FIFO存儲器(FIFOs)實現(xiàn),這3種模式為:
①PCI Initiator模式:包括PCI發(fā)起讀操作和PCI發(fā)起寫操作;
②PCI Target模式:包括PCI目標(biāo)讀操作和PCI目標(biāo)寫操作;
③DMA模式:包括PCI總線到Local Bus傳輸和Local Bus到PCI總線傳輸。
傳輸模式的選擇根據(jù)PCI模塊的工作模式確定。如果PCI模塊作為總線的從設(shè)備,則傳輸由PCI發(fā)起控制,PCI9054為作PCI總線的工作目標(biāo),這時應(yīng)選擇PCI Initiator模式。當(dāng)模塊設(shè)計是本地端發(fā)起控制,此時PCI9054成為主控設(shè)備,而PCI總線則成為PCI9054的工作目標(biāo),這種情況下應(yīng)選擇PCI Target模式。在數(shù)據(jù)進(jìn)行DMA傳輸時,PCI9054對于PCI總線和Local Bus而言都是主控設(shè)備,PCI9054本身具有DMA控制器,可以完全脫離PC機進(jìn)行DMA傳輸控制,此時PCI9054工作在DMA模式[9]。
數(shù)據(jù)傳輸模式的選擇是通過設(shè)置方式寄存器來實現(xiàn)的。
2.3.2 空間資源配置
對本地地址空間及其本地總線屬性的設(shè)置通過本地配置寄存器的配置來實現(xiàn)的。這些配置要根據(jù)實際開發(fā)的硬件板卡的硬件資源進(jìn)行配置。而配置PCI配置寄存器的任務(wù)就是要把某一段本地地址映射為PCI總線地址,也就是當(dāng)PCI主設(shè)備要訪問本地地址空間時,要知道其對應(yīng)的PCI總線地址。
首先要在PCI總線主控模塊上為PCI9054的內(nèi)部寄存器分配一段空間,這樣我們得出PCI配置寄存器的基址(標(biāo)示為PC_Add)。而本地端配置寄存器的基址是由PCI配置寄存器中的PCIBAR0給出的(標(biāo)示為LCR_Add)。
PCI配置寄存器將本地端的芯片通過本地端地址翻譯成PCI總線的地址,也就是將本地的芯片映射到系統(tǒng)的內(nèi)存或I/O口。這樣使得用程序操作這一段內(nèi)存(或I/O)實際上就是對本地的芯片操作[10]。
PCI9054內(nèi)部寄存器可通過PCI主設(shè)備或SE2PROM進(jìn)行配置。對于有處理器的PCI模塊設(shè)計者還可以通過Local Processor配置。
PCI接口模塊也可使用硬件邏輯來實現(xiàn)總線轉(zhuǎn)換的功能。使用硬件邏輯的設(shè)計比較靈活,設(shè)計人員可以根據(jù)自己的需要設(shè)計適合于特定功能的接口電路,而不必實現(xiàn)PCI總線的全部功能。但由于PCI總線協(xié)議復(fù)雜,設(shè)計PCI控制接口難度較大,對于產(chǎn)品不大又有時限的工程項目來說,耗時長、成本高。相比于邏輯設(shè)計控制接口的設(shè)計方法,協(xié)議芯片的設(shè)計方法成本較低,具有通用性,能夠有效降低接口設(shè)計的難度,縮短開發(fā)時間,是眾多“短平快”項目的最優(yōu)選擇。
[1]PLX技術(shù)公司.V2.1.PLX9054數(shù)據(jù)手冊 [S].美國:[s.n.],2000.
[2]PLX技術(shù)公司.V2.0.PCI9054 RDK-LITE硬件參考手冊[S].美國:[s.n.],.2003.
[3]李貴山,陳金鵬.PCI局部總線及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.
[4]瞿世尊,陳健.PCI9054在PCI總線高速數(shù)據(jù)采集中的應(yīng)用[J].電子技術(shù),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單片機實用軟件與接口技術(shù)-C語言及其應(yīng)用[M].北京:北京航天航空出版社,2002.
[6]張明峰.PIC單片機入門與實踐[M].北京:化京航天航空人學(xué)出版社,2004.
[7]張國華.模擬電路的接地技術(shù)[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實現(xiàn)P IC單片機與PC串行通信[J].電子產(chǎn)品世界,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.