一般來說,基于PCI總線的板卡可以分成信號處理板與數(shù)據(jù)采集板。對于二者的設計思想以及相應的PCI接口芯片的選擇也有所不同。數(shù)據(jù)采集系統(tǒng)一般為了采集數(shù)據(jù)流而設計。由于PCI總線是一個共享總線,仲裁算法一般是公平競爭,事實上132Mbytes/s的峰值速率僅僅是一個理想值。實際中要想穩(wěn)定可靠地采集數(shù)據(jù)流,采集卡上必須有大小合適的緩存。數(shù)據(jù)采集系統(tǒng)從數(shù)據(jù)源到PC的整個體系是一個先進先出結(jié)構(gòu),核心問題是如何經(jīng)濟有效地設計出盡可能大的先進先出的緩存系統(tǒng)。最簡單的實現(xiàn)方式是直接使用FIFO器件作為系統(tǒng)的緩存,當然這也是最昂貴的方案。也可以使用雙口RAM來實現(xiàn)FIFO結(jié)構(gòu)。最廉價的方案是使用SRAM與雙路選擇器以及地址發(fā)生器實現(xiàn)大FIFO陣列。付出的代價使整個系統(tǒng)設計的復雜程序提高。
一般的PCI總線信號處理卡(顯示卡,聲卡等)的總線部分設計重點在于如何將卡上的設備映射到系統(tǒng)的內(nèi)存空間中云。常見的PCI接口芯片提供了PCI端總線與卡上局部端總線相互轉(zhuǎn)換的能力。而在數(shù)據(jù)采集卡的設計中,卡上的FIFO顯然只能作為一個端口訪問,設計得的任務是實現(xiàn)一個恰當?shù)目刂七壿,使?FIFO可以被PCI接口芯片的DMA控制器訪問。在現(xiàn)有的PCI接口芯片里面,AMCC5933直接提供了FIFO接口,實現(xiàn)數(shù)據(jù)流采集的控制邏輯最為簡單。PLX等公司的PCI接口芯片則沒有提供特定的引腳來提供外部FIFO訪問能力,需要一個專門的接口邏輯來進行邏輯轉(zhuǎn)換。下面的例子是 PLX9054與FIFO的接口邏輯連接圖,可以幫助理解這種系統(tǒng)的設計(見圖2)。
選擇PLX公司的芯片的好處是價格查對于AMCC5933便宜,型號眾多,可以根據(jù)不同的需求選擇適當?shù)男吞,比較靈活,而且提供了SDK幫助工發(fā) Windows下的驅(qū)動程序。但是FIFO的接口邏輯部分添加了一定的工作量,不如AMCC5933來得簡便易用。設計者應該根據(jù)自己具體項目的要求來選擇。
高速率的數(shù)據(jù)采集系統(tǒng)在采集數(shù)據(jù)流時最常見的問題是數(shù)據(jù)丟失,采集后數(shù)據(jù)流不完整。為了在系統(tǒng)調(diào)試中檢驗這個問題,在系統(tǒng)設計時加入一個自校正碼源,使各系統(tǒng)自檢功能。
在系統(tǒng)中,為了驗證多大的緩存可保證數(shù)據(jù)流的連續(xù)采集,讓數(shù)據(jù)源發(fā)送端發(fā)送自增長的測試碼流。經(jīng)過反復測試表明,在接收一個連續(xù)的數(shù)據(jù)流時, 10Kbytes左右大小的FIFO緩存可以穩(wěn)定不丟失地采集10Mbytes/s左右的數(shù)據(jù)流。但是為了整個計算機系統(tǒng)的穩(wěn)定性考慮,建議在可能的情況下盡量用大的緩存。當然,對于數(shù)據(jù)的實時分析要求較高的領域,太大的緩存會引入延時的問題,這時候就要求權(quán)衡使用了。
3 主機主控軟件
主控程序核心分為兩個工作線程。一個線程負責管理PCI數(shù)據(jù)采集設備的驅(qū)動,調(diào)用PLX SDK函數(shù)將DMA中斷采集來的數(shù)據(jù)核心態(tài)的小緩存中以乒乓方式拷貝到用戶層的兩個大的緩存中;一個線程則從用戶支的緩存中讀取數(shù)據(jù)送入SCSI硬盤。采用這種管理機制,可以效地實現(xiàn)海量數(shù)據(jù)的實時硬盤存取。
高速遠程數(shù)據(jù)傳輸系統(tǒng)在特定的工程中有廣泛的應用,如航空航天、核物理數(shù)據(jù)采集等等。這種應用領域的特殊性決定了不可能形成一個普適方案,設計者必須根據(jù)具體項目要求加以選擇設計。合理地加以選擇,可以在特定的應用領域中快速有效地完成系統(tǒng)設計。目前整個系統(tǒng)達到了設計的預期目標,工作穩(wěn)定。





