基于PCI總線多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
摘 要:基于PCI總線的高速數(shù)據(jù)采集系統(tǒng)是近年來(lái)數(shù)據(jù)采集及其傳輸技術(shù)的一個(gè)發(fā)展方向。文中圍繞PCI總線接口控制器PCI9054,給出系統(tǒng)硬件設(shè)計(jì)方案,并闡明各個(gè)模塊的具體實(shí)現(xiàn)。設(shè)計(jì)出的采集卡具有體積小、速度快、支持突發(fā)性大數(shù)據(jù)量傳輸和抗干擾性強(qiáng)等特點(diǎn),主要應(yīng)用在圖像數(shù)據(jù)采集領(lǐng)域。
?
關(guān)鍵詞:數(shù)據(jù)采集;PCI9054;CPLD;DSP?
Design of a Multi-channel Data Acquisition System Based on PCI
?
LI Runqiu,HE Zhanzhuang?
(No.771 InstituteofChinaAerospace TimesElectronics Corp.,Xi′an,710065,China)
??
Abstract:In recent years,based on PCI bus high speed data collecting system is a developing direction of data gather and transmission technology.This paper encircle with PCI bus interface controller PCI9054,presents the hardware system design scheme,and respectively discusses the modules.The card which we designed have the characteristic of less capacity,high speed,back up the burst transmission of a great number of data,and have strong performance of anti jamming,the mostly application domain of this card is image manipulation.
?
Keywords:data acquisition;PCI9054;CPLD;DSP
1 引 言?
基于PCI總線的多通道數(shù)據(jù)采集卡的工作流程是:計(jì)算機(jī)應(yīng)用程序根據(jù)命令通過(guò)驅(qū)動(dòng)程序啟動(dòng)模數(shù)轉(zhuǎn)換,模擬信號(hào)通過(guò)信號(hào)調(diào)理后進(jìn)入A/D芯片,模數(shù)轉(zhuǎn)換后的數(shù)據(jù)存入FIFO(先進(jìn)先出)存儲(chǔ)器緩存,在數(shù)據(jù)存儲(chǔ)器中存滿一幀時(shí),硬件向主機(jī)發(fā)中斷,主機(jī)響應(yīng)中斷后通過(guò)PCI9054芯片用DMA方式讀出存放在數(shù)據(jù)存儲(chǔ)器中的采樣數(shù)據(jù),然后進(jìn)行后續(xù)處理(如計(jì)算、存儲(chǔ))并將結(jié)果顯示于屏幕。
DSP實(shí)時(shí)處理模塊是在邏輯控制模塊的控制下與計(jì)算機(jī)通過(guò)LOCAL總線接口進(jìn)行通訊,以便交換數(shù)據(jù),執(zhí)行命令。?
2 系統(tǒng)硬件設(shè)計(jì)?
數(shù)據(jù)采集系統(tǒng)硬件由兩大部分組成:一是基于PCI總線的數(shù)據(jù)采集模塊,二是基于DSP擴(kuò)展實(shí)時(shí)處理模塊。下面將分別敘述,系統(tǒng)總體硬件框圖如圖1所示。?
2.1 模擬通道及模數(shù)轉(zhuǎn)換?
本設(shè)計(jì)的模擬通道只對(duì)模擬信號(hào)進(jìn)行簡(jiǎn)單處理,使模擬信號(hào)符合A/D轉(zhuǎn)換芯片的要求即可。針對(duì)該數(shù)據(jù)采集卡的應(yīng)用領(lǐng)域信號(hào)具有信號(hào)相關(guān)性強(qiáng)的特點(diǎn),應(yīng)采用多通道的同步采樣芯片,經(jīng)過(guò)比較,選擇了ADS8364。ADS8364是一款高速、低功耗,具有6通道同步采樣轉(zhuǎn)換,16位高速并行接口的高性能模數(shù)轉(zhuǎn)換芯片。ADS8364的6個(gè)模擬輸入分為3組(A,B和C),每個(gè)輸入端都有一個(gè)ADC保持信號(hào)HOLDX#以用來(lái)保證幾個(gè)通道能同時(shí)進(jìn)行采樣和轉(zhuǎn)換。實(shí)際上,每片ADS8364由?3個(gè)?轉(zhuǎn)換速率為250 ksps(當(dāng)外部時(shí)鐘為5 MHz)的ADC構(gòu)成,每個(gè)ADC有2個(gè)模擬輸入通道,每個(gè)通道都有采樣保持器,3個(gè)ADC組成3對(duì)模擬輸入端,可同時(shí)對(duì)其中的1~2對(duì)輸入信號(hào)同時(shí)采樣保持,然后逐個(gè)轉(zhuǎn)換。由于6個(gè)通道可以同時(shí)采樣,很適合用于需同時(shí)采集多種信號(hào)的場(chǎng)合。?
在設(shè)計(jì)的采集卡上,采用2片ADS8364,每片設(shè)計(jì)成6路單端輸入,共12路模擬輸入。用相同的外部時(shí)鐘來(lái)控制轉(zhuǎn)換,每片ADS8364輸出16位數(shù)據(jù),兩片的輸出拼接成32位數(shù)據(jù),以提高PCI總線的傳輸效率。數(shù)據(jù)傳輸?shù)接?jì)算機(jī)后,再進(jìn)行分路處理。另外,在PCI總線傳輸速度允許范圍內(nèi),還可以通過(guò)擴(kuò)展接口進(jìn)行擴(kuò)展,以處理更多的模擬輸入。?
2.2 數(shù)據(jù)緩存?
因?yàn)镻CI總線接口數(shù)據(jù)傳輸效率非常高而A/D采集數(shù)據(jù)效率較低,所以為了實(shí)現(xiàn)數(shù)據(jù)的高速傳輸,采樣后的數(shù)據(jù)必須經(jīng)過(guò)緩存,再由PCI總線接口控制器讀取,這樣才能處理更多的模擬信號(hào)輸入。緩存的設(shè)計(jì)方案一般有3種:共享RAM方式,雙口RAM方式,F(xiàn)IFO緩存方式。第一種方式因?yàn)樯婕暗絉AM的同時(shí)訪問(wèn),邏輯比較復(fù)雜;第二種方式芯片價(jià)格昂貴;第三種既簡(jiǎn)單性價(jià)比又高。?
設(shè)計(jì)中FIFO采用TI公司生產(chǎn)的SN74V3690芯片是一款具有大深度、高速GMOS工藝的先進(jìn)先出存儲(chǔ)器,有讀寫(xiě)控制和可變的總線匹配*36*18*9數(shù)據(jù)流。時(shí)鐘頻率最高可達(dá)166 MHz,6 ns讀寫(xiě)周期,帶有FIFO狀態(tài)標(biāo)志信號(hào)Empty,Full,Half-Full,可編程的標(biāo)志信號(hào)Almost-Empty和Almost-Full。?
系統(tǒng)FIFO的輸入輸出均被配置為32位,在啟動(dòng)?A/D?采樣后,由邏輯控制部分控制數(shù)據(jù)寫(xiě)入FIFO,當(dāng)FIFO達(dá)到半滿時(shí),半滿標(biāo)志信號(hào)HF#翻轉(zhuǎn)(1變成0),邏輯控制部分根據(jù)他向PCI接口控制器發(fā)出中斷,通知計(jì)算機(jī)啟動(dòng)數(shù)據(jù)傳輸。?
2.3 PCI總線接口?
考慮到硬件的通用性、可升級(jí)性和可擴(kuò)展性,主從處理器方式都可能被用到,所以選用了用主/從控制器PCI9054作為總線接口芯片。他符合PCI V2.2規(guī)范,主要特點(diǎn)為:?
(1) 提供了2個(gè)獨(dú)立的可編程DMA控制器,每個(gè)通道均支持塊和Scatter/Gather的DMA方式,DMA通道0支持請(qǐng)求DMA方式。?
(2) PCI和Local Bus的數(shù)據(jù)傳送速率高達(dá)?132 MB/s?。?
(3) 本地總線速率高達(dá)50 MHz;支持復(fù)用/非復(fù)用的32位地址/數(shù)據(jù);本地總線可為3種模式:M模式、C模式和J模式,可利用模式選擇引腳加以選擇。?
(4) 內(nèi)部有6種可編程的FIFO,以實(shí)現(xiàn)零等待突發(fā)傳輸及本地總線和PCI總線之間的異步操作。?
(5) 提供了一個(gè)串行E?2PROM配置接口,容量2 kB。在配置存儲(chǔ)器中存放了廠家標(biāo)示、設(shè)備標(biāo)示以及本地總線的基地址空間、I/O空間、中斷控制信號(hào)等信息。?
選用的PCI 9054工作在C模式,為便于訪問(wèn),配置PCI9054寄存器,將S2映射在20000000H單元,將S3映射在30000000H單元。將局部地址空間分成3部分,地址高4位為0000時(shí)為FIFO空間,用于DMA傳輸;為0010時(shí)為S2空間,用于FIFO控制為0011時(shí)為S3空間,用于A/D控制;其余空間保留。?
2.3.1 PCI9054與E?2PROM的接口設(shè)計(jì)?
PCI9054的串行E?2PROM配置接口包含以下3個(gè)信號(hào):EECS片選;EESK串行數(shù)據(jù)時(shí)鐘;EEDI/EEDO數(shù)據(jù)輸入/輸出。設(shè)計(jì)選用了PLX公司推薦兼容的串行?E?2PROM?芯片NM93CS56N芯片,他是National Semiconductor公司生產(chǎn)的低電壓串行電可擦除存儲(chǔ)器,采用CMOS工藝制成,容量為2 048位(128*16位),8引腳,支持三線制MicroWare串行總線的E?2PROM,其引腳如下:?
本文原文
CS:片選信號(hào);?
SK:串行時(shí)鐘輸入信號(hào),同時(shí)也是微處理器與?E?2PROM?之間通信的同步信號(hào),數(shù)據(jù)在他的上升沿鎖定有效;?
DI:數(shù)據(jù)輸入;?
D數(shù)據(jù)輸出。?
PCI9054與E?2PROM的接口設(shè)計(jì)如圖2所示。?
2.3.2 PCI9054局部總線設(shè)計(jì)?
由于PCI9054與PCI總線之間實(shí)現(xiàn)了無(wú)縫連接,系統(tǒng)與計(jì)算機(jī)接口的大部分信號(hào)直接連接即可。PCI9054 Local總線部分信號(hào)時(shí)序比較復(fù)雜,因此用邏輯控制部分來(lái)實(shí)現(xiàn)PCI9054 Local端的控制。將PCI9054局部數(shù)據(jù)總線高5位數(shù)據(jù)線接到CPLD引腳上,這5根數(shù)據(jù)線可以接收和發(fā)送數(shù)據(jù),根據(jù)接收到的數(shù)據(jù)對(duì)其譯碼產(chǎn)生控制信息,還可以發(fā)出數(shù)據(jù)使PCI9054產(chǎn)生門鈴中斷和MailBox中斷。PCI總線框圖如圖3所示。?
PCI9054局部總線支持50 MHz時(shí)鐘,為配合A/D工作,選用40 MHz時(shí)鐘。PCI9054的所有地址線和控制信號(hào)都只邏輯控制部分連接,產(chǎn)生邏輯控制的工作狀態(tài)和各種控制信息。?
2.4 實(shí)時(shí)處理模塊?
在數(shù)字信號(hào)處理領(lǐng)域,很多情況下,模擬輸入數(shù)字化后需要進(jìn)行實(shí)時(shí)處理,同時(shí)需要計(jì)算機(jī)的參與(參數(shù)控制、數(shù)據(jù)傳輸?shù)?。這就需要實(shí)時(shí)性很強(qiáng)的DSP參與處理,這里選用TMS320C5416作為DSP處理芯片,他具有一般DSP的特點(diǎn),這里不在贅述。?至于DSP與PCI9054間的接口,考慮到充分發(fā)揮他們的高速優(yōu)勢(shì),采用FIFO緩沖器在二者之間交換數(shù)據(jù),而控制邏輯由CPLD完成,如圖4所示。?
2.5 CPLD邏輯控制?
系統(tǒng)采用ALTERA公司MAX7000A系列的EPM7256A芯片,他的配置程序固化在芯片內(nèi)的?E?2PROM?中,所以該器件不需要專用的配置存儲(chǔ)器,所有MAX7000A系列產(chǎn)品都由ALTERA公司提供的編程硬件和軟件進(jìn)行編程。
利用EPM7256A內(nèi)部邏輯單元設(shè)計(jì)實(shí)現(xiàn)局部總線控制器,用于實(shí)現(xiàn)局部總線的狀態(tài)控制,同時(shí)利用其內(nèi)部邏輯編程形成存儲(chǔ)陣列構(gòu)成SRAM,存放發(fā)往各端口的操作指令。?
2.5.1 狀態(tài)機(jī)設(shè)計(jì)?
在PCI目標(biāo)和DMA傳輸模式下,PCI9054是局部總線的主設(shè)備,通過(guò)設(shè)置PCI9054內(nèi)部配置寄存器可以使能或禁止外部等待輸入控制信號(hào)READY#,以使PCI9054工作于內(nèi)部等待或外部等待狀態(tài)。若READY#信號(hào)被禁止,則在每次傳輸?shù)牡刂泛蛿?shù)據(jù)間插入等待狀態(tài),其數(shù)目由內(nèi)部等待狀態(tài)計(jì)數(shù)器決定。若READY#信號(hào)使能,則READY#信號(hào)的持續(xù)時(shí)鐘周期數(shù)目決定了PCI9054所附加的等待狀態(tài)。系統(tǒng)采用外部READY#信號(hào),以決定等待狀態(tài)。圖5為局部總線狀態(tài)機(jī)轉(zhuǎn)換圖。?
從狀態(tài)圖可以看出,該狀態(tài)機(jī)有3種傳輸狀態(tài),空閑狀態(tài)、等待狀態(tài)和傳輸狀態(tài)。狀態(tài)機(jī)能成功與PCI9054配合完成數(shù)據(jù)傳輸,傳輸性能穩(wěn)定,效果較好,是現(xiàn)在PCI9054局部總線狀態(tài)機(jī)設(shè)計(jì)的一般方法。通過(guò)實(shí)際測(cè)試,在用戶模式下,查詢方式DMA傳輸速度可以穩(wěn)定達(dá)到68 MB/s。?
2.5.2 改進(jìn)的狀態(tài)機(jī)設(shè)計(jì)?
PCI總線峰值速率為132 MB/s,在上述狀態(tài)機(jī)和傳輸狀態(tài)下,DMA速率只有68 MB/s,說(shuō)明其中存在漏洞。
對(duì)比PCI9054技術(shù)資料給出的DMA時(shí)序圖發(fā)現(xiàn),由于狀態(tài)機(jī)設(shè)有3個(gè)狀態(tài),每次啟動(dòng)傳輸都需要有一個(gè)等待狀態(tài)來(lái)配置各種信號(hào)線,所以每次傳輸都要浪費(fèi)1個(gè)時(shí)鐘周期時(shí)間,這在高速數(shù)據(jù)傳輸過(guò)程中特別是DMA傳輸中是非常浪費(fèi)的。?
在LOCAL總線擴(kuò)展器件的速度滿足要求的情況下,PCI9054標(biāo)準(zhǔn)DMA傳輸并不需要等待周期,所以等待周期可以省略,這樣狀態(tài)機(jī)轉(zhuǎn)換過(guò)程得以簡(jiǎn)化。改進(jìn)的狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖如圖6所示。?
通過(guò)實(shí)際測(cè)試,在同一臺(tái)計(jì)算機(jī)同種情況下,改進(jìn)的狀態(tài)機(jī)速率可以比原狀態(tài)機(jī)速率高出10 MB以上,實(shí)際測(cè)得新?tīng)顟B(tài)機(jī)在用戶模式下,查詢方式DMA傳輸速度可以穩(wěn)定達(dá)到88 MB/s。?
3 結(jié) 語(yǔ)?
計(jì)算機(jī)總線擴(kuò)展技術(shù)使得基于計(jì)算機(jī)的數(shù)據(jù)采集技術(shù)迅速得到應(yīng)用,基于計(jì)算機(jī)PCI總線的數(shù)據(jù)采集系統(tǒng)結(jié)合先進(jìn)的數(shù)字信號(hào)處理技術(shù)得到了最為廣泛的應(yīng)用,是科研人員的重要工具,不但廣泛應(yīng)用于電力設(shè)備監(jiān)控、遙測(cè)遙感等測(cè)控領(lǐng)域,在圖像采集、雷達(dá)、通訊、地質(zhì)、醫(yī)療器械等領(lǐng)域中也有著重要的應(yīng)用。?
評(píng)論