??? 摘? 要: 一種基于PCI總線的高速數(shù)據(jù)采集傳輸系統(tǒng)的實(shí)現(xiàn),討論了PCI總線控制器9054 的性能及三種傳輸模式,提供了該系統(tǒng)的硬件實(shí)現(xiàn)和采用DMA傳輸方式實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)。?
??? 關(guān)鍵詞: PCI總線? PCI 9054總線控制器? DMA
?
??? 數(shù)據(jù)采集是數(shù)字信號(hào)處理中非常重要的環(huán)節(jié)。對(duì)于不同的任務(wù),數(shù)據(jù)采集要達(dá)到的技術(shù)指標(biāo)也不相同。對(duì)于瞬態(tài)信號(hào),雷達(dá)信號(hào)和圖像處理都需要幾MB/s甚至幾十MB/s 的超高速采集速率。目前用于PC機(jī)的數(shù)據(jù)采集卡大部分是基于ISA總線的,這種結(jié)構(gòu)的最大缺點(diǎn)是傳輸速率太低,不能實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)高速傳輸。PCI總線推出后,以其突出的性能備受計(jì)算機(jī)和通信業(yè)界的青睞,將取代以往的總線,成為高檔機(jī)及高性能工作站外部部件的基石。PCI作為局部總線,一邊與處理器和存儲(chǔ)器總線接口;另一邊為外設(shè)擴(kuò)展提供了高速通道。33MHz、32位的PCI總線可以實(shí)現(xiàn)132MB/s的數(shù)據(jù)傳輸速率;64位的PCI總線性能加倍。開發(fā)以PCI總線為基礎(chǔ)的數(shù)據(jù)采集設(shè)備是技術(shù)發(fā)展的必然要求。在實(shí)際工作中,利用PCI總線將采集數(shù)據(jù)直接傳到系統(tǒng)內(nèi)存,可有效解決數(shù)據(jù)的實(shí)時(shí)傳輸和存儲(chǔ),為信號(hào)的實(shí)時(shí)處理提供方便。?
1 數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)與功能?
??? 本數(shù)據(jù)采集系統(tǒng)應(yīng)用于雷達(dá)視頻回波信號(hào)的處理。信號(hào)由兩路正交視頻回波信號(hào)組成,故采用雙通道。采集指標(biāo):2路采集信號(hào),采樣率為40M個(gè)樣本,A/D采樣字長(zhǎng)是10位。每路數(shù)字信號(hào)字長(zhǎng)取16位,兩路合成一路共32位,將32位數(shù)據(jù)分別傳入系統(tǒng)內(nèi)存的不同區(qū)域,以便后續(xù)處理。系統(tǒng)設(shè)計(jì)以PCI總線控制器為基礎(chǔ),通過DMA方式分別將32位數(shù)據(jù)傳到系統(tǒng)內(nèi)存的不同區(qū)域。主要功能模塊有:PCI總線控制器、雙口SRAM、采集控制芯片EPLD、A/D部分。系統(tǒng)框圖如圖1所示。?
?
?
2 PCI總線控制器的實(shí)現(xiàn)?
??? PCI總線是一個(gè)地址/數(shù)據(jù)、命令/字節(jié)選擇信號(hào)復(fù)用的總線。它采用主從信號(hào)雙向握手的方式來控制數(shù)據(jù)的傳輸,其接口電路設(shè)計(jì)與傳統(tǒng)總線接口電路設(shè)計(jì)沒有大的區(qū)別。一般來說,一個(gè)PCI接口電路應(yīng)當(dāng)完成以下幾種功能:(1)地址譯碼及命令譯碼,由于PCI總線可以采用正向方式和負(fù)向方式進(jìn)行譯碼。因此用戶應(yīng)視應(yīng)用情況選擇適當(dāng)?shù)淖g碼方式。一般選擇正向譯碼;為保證不會(huì)出現(xiàn)地址沖突,最好采用全地址譯碼;命令信號(hào)線C/BE[0~3]必須參加譯碼。(2)地址產(chǎn)生電路。PCI的突發(fā)傳輸方式包括一個(gè)地址周期和若干個(gè)數(shù)據(jù)周期,因此在PCI接口電路中必須包含高速的地址產(chǎn)生部件,用于向后級(jí)應(yīng)用電路提供連續(xù)的地址。(3)控制信號(hào)的產(chǎn)生。PCI總線上的數(shù)據(jù)傳輸基本上由?4根信號(hào)線控制,因此必須根據(jù)主從設(shè)備的忙閑情況相應(yīng)產(chǎn)生這些控制信號(hào)。另外,PCI接口電路還應(yīng)完成地址鎖存及數(shù)據(jù)分離、命令鎖存及字節(jié)選擇信號(hào)分離的功能。值得注意的是:在設(shè)計(jì)這個(gè)功能時(shí)必須考慮到PCI規(guī)范中信號(hào)的負(fù)載能力。實(shí)現(xiàn)PCI總線控制器大體有兩種方式:使用可編程器件和專用接口芯片。采用EPLD和FPGA等可編程邏輯器件的優(yōu)點(diǎn)在于其靈活的可編程性。專用芯片可以實(shí)現(xiàn)完整的PCI主控模塊和目標(biāo)模塊接口功能,將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的接口。用戶可以集中精力于應(yīng)用設(shè)計(jì),而不是調(diào)試PCI總線的接口,明顯縮短了開發(fā)時(shí)間。本設(shè)計(jì)應(yīng)用PLX公司的PCI9054 實(shí)現(xiàn)總線控制器。?
3 PCI 9054簡(jiǎn)介?
??? PCI 9054是32位/33MHz的通用PCI總線控制器專用芯片。該芯片符合PCI總線規(guī)范2.2版,突發(fā)傳輸速率達(dá)到132MB/s。局部總線支持復(fù)用/非復(fù)用的32位地址/數(shù)據(jù),可為M模式、C模式、J模式中的一種。PCI 9054內(nèi)部有6種可編程的FIFO,以實(shí)現(xiàn)零等待突發(fā)傳輸及局部總線和PCI總線之間的異步操作。9054支持主模式、從模式、DMA傳輸方式,可用于適配卡和嵌入式系統(tǒng)。PCI 9054的結(jié)構(gòu)框圖如圖2所示。?
?
?
??? ·主模式操作?
??? 主模式操作就是允許本地的CPU訪問PCI總線上的內(nèi)存和I/O接口。模式選擇必須在PCI命令寄存器中使能給出,如PCI主設(shè)備存儲(chǔ)器和I/O范圍寄存器、PCI基址寄存器、主設(shè)備配置和命令寄存器等。主模式操作包括PCI主設(shè)備存儲(chǔ)器和I/O譯碼、PCI主設(shè)備存儲(chǔ)器和I/O配置訪問、PCI雙地址周期訪問、PCI主設(shè)備存儲(chǔ)器寫并無效等操作。?
??? ·從模式操作?
??? 從模式就是允許PCI總線上的主控設(shè)備訪問局部總線上的PCI 9054的配置寄存器或內(nèi)存,支持突發(fā)和單周期動(dòng)模式傳輸。PCI 9054通過16字長(zhǎng)的PCI從設(shè)備讀FIFO和32字長(zhǎng)的PCI從設(shè)備寫FIFO來支持從PCI總線到局部總線上的突發(fā)或單周期的存儲(chǔ)器映射訪問和I/O映射訪問。PCI基址寄存器用來設(shè)定PCI存儲(chǔ)器和I/O空間的地址。從模式操作包括延時(shí)讀操作、提前讀操作等。?
??? ·DMA操作?
??? PCI 9054有一個(gè)強(qiáng)大的雙通道分散/收集 DMA控制器,支持PCI主機(jī)和適配器內(nèi)存的高效突發(fā)傳輸。兩個(gè)獨(dú)立的DMA通道能從局部總線到PCI總線和從PCI總線到局部總線傳輸數(shù)據(jù)。每個(gè)通道包括一個(gè)DMA控制器和一個(gè)專用雙向FIFO。兩個(gè)通道都支持塊傳輸、分散/收集傳輸、應(yīng)用或者不用傳輸?shù)?。模式選擇必須在PCI 9054 成為一個(gè)PCI總線主設(shè)備之前由主設(shè)備使能位(PCICR[2])使能。另外,兩個(gè)DMA通道都能編程實(shí)現(xiàn)8、16或32bit局部總線帶寬;使能/使無效內(nèi)部等待周期;使能/使無效局部總線突發(fā)傳輸;執(zhí)行PCI存儲(chǔ)器寫并無效操作;設(shè)置PCI中斷或者是本地中斷等。圖3和圖4分別描述了從PCI到局部總線和從局部總線到PCI總線的DMA數(shù)據(jù)傳輸操作邏輯。?
?
?
?
4 采樣控制和驅(qū)動(dòng)程序設(shè)計(jì)?
??? 基于開發(fā)周期和成本考慮,本設(shè)計(jì)采用DMA傳輸模式。啟動(dòng)采樣后,采用1KB×8的雙口SRAM? IDT7130作為數(shù)據(jù)采集前端與PCI總線的數(shù)據(jù)緩沖,PCI 9054 作為主控設(shè)備,利用其DMA通道進(jìn)行數(shù)據(jù)傳輸。當(dāng)雙口SRAM采滿1KB數(shù)據(jù)之后,通過EPLD(EPM7128)產(chǎn)生局部總線中斷,PCI9054 獲得局部總線的控制權(quán)后,根據(jù)DMA的起始位將1KB的數(shù)據(jù)讀到DMA傳輸?shù)膶S肍IFO中,PCI 9054申請(qǐng)占用PCI總線,獲得PCI總線的控制權(quán)后,將數(shù)據(jù)寫入PCI總線存儲(chǔ)空間,從而實(shí)現(xiàn)一次采樣和傳輸。?
??? 可編程邏輯器件(EPLD)用以實(shí)現(xiàn)PCI 9054 與雙口SRAM的I/O邏輯、傳輸控制邏輯、中斷邏輯以及主機(jī)對(duì)數(shù)據(jù)采集通道的前端控制。?
??? PCI數(shù)據(jù)采集卡的另一關(guān)鍵問題是驅(qū)動(dòng)程序的開發(fā)。設(shè)備驅(qū)動(dòng)程序提供鏈接到PCI板卡的軟件接口,文件擴(kuò)展名為.SYS的動(dòng)態(tài)鏈接庫。在Windows98和Windows 2000中,設(shè)備驅(qū)動(dòng)程序必須根據(jù)Windows驅(qū)動(dòng)程序模型(WDM)設(shè)計(jì)。設(shè)備驅(qū)動(dòng)程序的關(guān)鍵是如何完成硬件操作,基本功能是完成設(shè)備的初始化、對(duì)端口的讀寫操作、中斷的設(shè)置和響應(yīng)及中斷的調(diào)用,以及對(duì)內(nèi)存的直接讀寫。本設(shè)計(jì)應(yīng)用 KRF-Tech公司的Windriver來編寫設(shè)備驅(qū)動(dòng)程序,Windriver 針對(duì)PLX和AMCC的專用接口芯片編寫了API函數(shù)包,降低了開發(fā)難度。?
??? PCI 9054以其強(qiáng)大的功能和簡(jiǎn)單的用戶接口,為PCI總線接口的開發(fā)提供了一種簡(jiǎn)潔的方法。設(shè)計(jì)者只需設(shè)計(jì)局部總線接口控制電路,即可實(shí)現(xiàn)與PCI總線的高速數(shù)據(jù)傳輸。在高速數(shù)據(jù)采集系統(tǒng)中,利用PCI總線的高速特性實(shí)時(shí)傳輸和存儲(chǔ)采集數(shù)據(jù),有效地解決了數(shù)據(jù)傳輸和處理的實(shí)時(shí)性。隨著PCI總線的普及應(yīng)用,基于 PCI總線的采集系統(tǒng)設(shè)計(jì)有十分廣闊的前景。?
參考文獻(xiàn)?
1 PCI 9054 Data Book V2.1 (Plx Technology).2000?
2 Portland PCI SIG (PCI Special Interest Group). PCI?local bus Specification Revision 2.2. 1998?
3 PCI總線接口技術(shù)及其在雷達(dá)數(shù)據(jù)采集通道中的應(yīng)用.微處理機(jī),2000;(2)