1 引言 數(shù)據(jù)采集是數(shù)字信號處理過程中的一個重要環(huán)節(jié),已經(jīng)廣泛應(yīng)用于雷達、聲納、瞬態(tài)信號測試、無線探傷等領(lǐng)域。對不同的任務(wù)和應(yīng)用場合數(shù)據(jù)采集系統(tǒng)要求的采樣精度和采樣速率各不相同,系統(tǒng)的實現(xiàn)方法和難度也各異。在低速數(shù)據(jù)采集領(lǐng)域,系統(tǒng)要求的采樣速率低,數(shù)傳輸量小,系統(tǒng)的實現(xiàn)較容易,常用單片機系統(tǒng)完成數(shù)據(jù)采集、串行接口完成數(shù)據(jù)傳輸;在高速數(shù)據(jù)采集領(lǐng)域,系統(tǒng)要求的采樣速率高、采集精度高、數(shù)據(jù)傳輸量大,于是系統(tǒng)的抗干擾、數(shù)據(jù)的傳輸、數(shù)據(jù)的存儲問題就成了系統(tǒng)構(gòu)建必須克服的關(guān)鍵問題。目前,常用的高速數(shù)據(jù)采集系統(tǒng)通常為定時采樣或者固定采樣門數(shù)據(jù)采集系統(tǒng),這種系統(tǒng)數(shù)據(jù)采集的時間和數(shù)據(jù)量已知,待保存的數(shù)據(jù)都是被采樣信號信息,通常通過設(shè)置足夠大的緩沖區(qū),通過PCI總線將緩沖區(qū)的數(shù)據(jù)傳輸?shù)接嬎銠C內(nèi)部總線,從而實現(xiàn)數(shù)據(jù)采集。 隨著高速數(shù)據(jù)采集系統(tǒng)的發(fā)展,提出了變采樣門連續(xù)高速采集的要求。此時系統(tǒng)不但要記錄被采樣信號信息,還要記錄采樣門的變化信息;由于采樣門可變,采集的數(shù)據(jù)量變化、采樣持續(xù)時間和采樣的數(shù)據(jù)量不定,系統(tǒng)的實現(xiàn)難度較高。 本文提出了基于FPGA的四路變采樣門的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的實現(xiàn)方法。 2 系統(tǒng)背景及功能描述 由于雷達重復(fù)掃描周期中,回波信號往往只占很小的時間部分。為了高效地獲取回波數(shù)據(jù),往往采用距離窗口推遲采樣,以便濾除雷達重復(fù)周期中與目標(biāo)無關(guān)的信號,提高數(shù)據(jù)有效率。因此系統(tǒng)觸發(fā)信號、采樣門、采樣距離等都在變化。 本系統(tǒng)被測信號由四路雷達回波信號組成,基本要求:采樣頻率為20MHz;觸發(fā)信號(triger)頻率已知、可變(1KHz"2KHz);采樣門(gate)為頻率同觸發(fā)信號、占寬比可變(5%"95%。 3 系統(tǒng)結(jié)構(gòu)設(shè)計 數(shù)據(jù)采集系統(tǒng)要解決的問題主要是數(shù)據(jù)的采集和傳輸問題。為了增強設(shè)計的靈活性和可擴展性,系統(tǒng)采用FPGA(Field Programmable Logic Array)來實現(xiàn)對AD轉(zhuǎn)換器、數(shù)據(jù)緩沖器、時鐘、數(shù)據(jù)傳輸?shù)倪壿嬁刂啤?br /> 3.1 術(shù)語定義和數(shù)據(jù)組織 一個采樣周期內(nèi)的系統(tǒng)采集的數(shù)據(jù)稱為一幀數(shù)據(jù)。系統(tǒng)設(shè)置的緩存能容納多幀數(shù)據(jù),當(dāng)緩存存儲容量不夠存下一幀數(shù)據(jù)時就要轉(zhuǎn)移數(shù)據(jù),每次轉(zhuǎn)移的數(shù)據(jù)稱為一塊數(shù)據(jù)。數(shù)據(jù)采集的目的是在信號發(fā)生后再現(xiàn)信號,所以為了便于數(shù)據(jù)回放(軟件回放或者硬件回放),必須保存數(shù)據(jù)幀和數(shù)據(jù)塊相關(guān)信息。系統(tǒng)保存的數(shù)據(jù)包括:被采樣信號數(shù)據(jù);采樣門采樣距離、采樣寬度;數(shù)據(jù)幀、數(shù)據(jù)塊相關(guān)信息。 3.2 連續(xù)采集的實現(xiàn)策略 四路0"2V的模擬信號輸入,由四個16位的A/D轉(zhuǎn)換器完成模數(shù)轉(zhuǎn)換,AD0和AD1構(gòu)成一組32位的數(shù)據(jù)(A組),AD2和AD3構(gòu)成另一組(B組)32位的數(shù)據(jù)。對于A組和B組數(shù)據(jù),分別設(shè)置兩個FIFO存儲器FIFOX0、FIFOX1(X為A或B)。每組數(shù)據(jù)先暫存于FIFOX0,當(dāng)FIFOX0的容量不夠存儲一幀數(shù)據(jù)時,F(xiàn)PGA控制數(shù)據(jù)流切換到FIFOX1,同時刷新SGTM表(DMA數(shù)據(jù)鏈指針表),啟動PCI總線的DMA;先傳送數(shù)據(jù)塊信息和控制信息,然后傳送FIFOA0數(shù)據(jù),再傳送FIFOB0數(shù)據(jù),傳送結(jié)束后DMA等待下一次傳送。當(dāng)FIFOX1容量不夠存儲一幀數(shù)據(jù)時,F(xiàn)PGA控制數(shù)據(jù)流切換到FIFOX0,同時控制邏輯刷新SGTM表,啟動PCI總線的DMA;先傳送數(shù)據(jù)塊信息和控制信息,然后傳送FIFOA1數(shù)據(jù),再傳送FIFOB1數(shù)據(jù),如此反復(fù)采樣和傳送數(shù)據(jù),從而實現(xiàn)連續(xù)數(shù)據(jù)采集。 3.3 數(shù)據(jù)傳輸和存儲策略 緩沖區(qū)的數(shù)據(jù)通過PCI總線以DMA方式傳送到硬盤管理卡(SScard),該卡再將數(shù)據(jù)高速保存到硬盤陣列上。該系統(tǒng)硬盤陣列由8個40G硬盤組成(可根據(jù)需要擴展到16個硬盤)。PCI接口的實現(xiàn)方式通常有兩種:通用FPGA實現(xiàn)方式和專用芯片方式。為了簡化設(shè)計和提高系統(tǒng)的可靠性,本系統(tǒng)采用專用芯片方式。由于系統(tǒng)采用速率高,數(shù)據(jù)傳輸量很大,系統(tǒng)選用PCI9056芯片來實現(xiàn)PCI接口。該芯片支持66MHz/32BitsPCI總線,傳輸速率高達256M,支持?jǐn)?shù)據(jù)鏈傳輸方式,便于實現(xiàn)大規(guī)模、多塊數(shù)據(jù)傳輸[9]。本系統(tǒng)采用PCI9056的鏈?zhǔn)絺魉头绞綄崿F(xiàn)數(shù)據(jù)緩存到硬盤管理卡的DMA傳送。為了發(fā)揮DMA的優(yōu)勢在FPGA上設(shè)置SGTM表。FPGA的控制邏輯通過對該表的刷新實時啟動DMA操作。 4 FPGA在系統(tǒng)中的應(yīng)用 FPGA領(lǐng)域的快速發(fā)展使FPGA片上資源大量豐富,尤其使其高速性能和片上RAM使其特別適用于高速數(shù)據(jù)采集系統(tǒng)的設(shè)計。設(shè)計選用Altera公司的FLEX10K30E,該器件含有8個EAB(嵌入式陣列),每個EAB能夠提供4K位存儲位,每個EAB都有雙口RAM實現(xiàn)能力;提供30000邏輯門;支持PCI總線,可提供66MHz的PCI性能;門級延時僅為6.5ns。本系統(tǒng)中FPGA設(shè)計主要包含時鐘網(wǎng)絡(luò)、雙端口RAM、控制邏輯等。 4.1 時鐘及相關(guān)網(wǎng)絡(luò) 時鐘電路是高速時序電路設(shè)計的關(guān)鍵,本系統(tǒng)涉及20MHz和66 MHz高速時鐘,時鐘是系統(tǒng)設(shè)計的一個重要內(nèi)容。系統(tǒng)在一般邏輯控制和數(shù)據(jù)采集時采用20MHz時鐘,存儲電路工作在66MHz時鐘下。為了提高時鐘同步性能、系統(tǒng)工作頻率和系統(tǒng)可靠性,設(shè)計采用如下措施: 1 輸入信號盡量通過鎖存器; 2 保證每路始終負(fù)載相當(dāng),以便減小時鐘漂移; 3 通過異步雙端口存儲器解決異步時鐘匹配問題; 4 大量使用有限狀態(tài)機,提高設(shè)計的可靠性; 5 大量采用流水線技術(shù),提高系統(tǒng)工作主頻。 4.2 雙端口RAM 由于FIFO的容量有限,每塊數(shù)據(jù)包含的數(shù)據(jù)幀數(shù)有限,故必須在適當(dāng)?shù)臅r候進行數(shù)據(jù)切換。切換帶來的塊控制數(shù)據(jù)和對應(yīng)每塊數(shù)據(jù)的采樣門計數(shù)器數(shù)據(jù)的數(shù)據(jù)量相對較小,設(shè)計通過設(shè)置了片上雙端口RAM(control data RAM),實現(xiàn)數(shù)據(jù)的緩沖。 因為系統(tǒng)采樣速率高,數(shù)據(jù)傳輸量大,要求PCI響應(yīng)快速,故本設(shè)計在FPGA上構(gòu)造SGTM,PCI控制器一直查詢SGTM,一旦發(fā)現(xiàn)SGTM傳輸控制字被置起,隨即申請DMA操作,提高了PCI總線的DMA響應(yīng)速度。 FPGA廠商提供的參數(shù)化模塊庫LPM(Library of Parameterized Modules)中的雙端口RAM模塊都是只能一端讀、一端寫的雙端口RAM。設(shè)計采用lpm_ram_dp模塊再外加控制邏輯和仲裁邏輯的方法實現(xiàn)了兩端都能進行讀寫操作的雙端口RAM。每次數(shù)據(jù)切換時FPGA首先刷新SGTM,申請PCI總線進行DMA操作,DMA響應(yīng)后首先傳送雙端口RAM的對應(yīng)半?yún)^(qū)的數(shù)據(jù),然后傳輸對應(yīng)的FIFO上的數(shù)據(jù)。 4.3 控制邏輯 控制邏輯實現(xiàn)對距離計數(shù)器、采樣點計數(shù)器、塊內(nèi)采樣點計數(shù)器、塊內(nèi)幀計數(shù)器等的控制;實現(xiàn)系統(tǒng)的設(shè)置和control data RAM和SGTM的刷新;實現(xiàn)對FIFO的讀操作、寫操作控制和其它控制。 5 應(yīng)用和結(jié)論 本文提出了一種連續(xù)、高速、大容量、多通道的高速數(shù)據(jù)采集系統(tǒng)實現(xiàn)方案,并說明了該方案基于Altera公司的EPF10K30E系列FPGA的實現(xiàn)方法。目前本文實現(xiàn)的數(shù)據(jù)采集系統(tǒng)已經(jīng)應(yīng)用于某雷達數(shù)字信號處理系統(tǒng)中。經(jīng)過實驗室和室外測試,系統(tǒng)工作正常,達到了設(shè)計的要求。 |