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