《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于DMA的并行數(shù)字信號高速采集系統(tǒng)
基于DMA的并行數(shù)字信號高速采集系統(tǒng)
王 俊,鄭 焱,王 紅,楊士元
清華大學(xué) 自動化系,北京100084
摘要: 本系統(tǒng)采用基于FPGA的DMA技術(shù)高速緩存多路并行數(shù)據(jù),通過數(shù)據(jù)重組將數(shù)據(jù)有序發(fā)送給處理系統(tǒng),用于數(shù)據(jù)的顯示與分析。系統(tǒng)采用了嵌入式技術(shù),達到了便攜效果,從而更好地適應(yīng)設(shè)備的工作環(huán)境。并行數(shù)字信號采集實驗結(jié)果表明,系統(tǒng)能以5 MHz、2.5 MHz、500 kHz、50 Hz 4檔采樣頻率進行62路并行數(shù)字信號采集,各路采集結(jié)果正確,并保存了各路之間的同步信息。
中圖分類號: TP391.5
文獻標(biāo)識碼: B
DMA-based high-speed parallel acquisition system of digital signals
WANG Jun,ZHENG Yan,WANG Hong,YANG Shi Yuan
Department of Automation, Tsinghua University, Beijing 100084,China
Abstract: The proposed FPGA-based system uses DMA technology to cache multi-channel parallel data, and to send data to processing system orderly after data re-organization for display and analysis. Embedded technology is used to make system portable for operation environment of electronic equipment. Parallel digital signal acquisition experiment result shows that this system can acquire 62 channel digital signals correctly and synchronously at four gear sampling frequency of 5 MHz, 2.5 MHz, 500 kHz, and 50 Hz.
Key words : DMA;high-speed parallel acquisition;FPGA;embedded system


    隨著數(shù)字電子技術(shù)的發(fā)展,大型電子設(shè)備中數(shù)字電路的比例越來越大[1]。為便于故障診斷,一些電子設(shè)備(如雷達系統(tǒng))預(yù)留了大量的數(shù)字信號檢測口[2]。采用示波器采集此類測試接口的信號時,由于示波器采集通道數(shù)的限制,無法保留同步信息;采用邏輯分析儀或ATE設(shè)備不但價格昂貴,而且不便于攜帶,不適宜廣泛使用。因此,設(shè)計一款便攜式并行數(shù)字信號高速同步采集系統(tǒng),為大型電子設(shè)備的維護提供支持是十分必要的。
    此類檢測口信號采集中多通路、高采樣率的特性要求瞬時大量數(shù)據(jù)的高速緩存實現(xiàn)方法。文獻[3]以硬盤為存儲介質(zhì),采用DMA技術(shù)實現(xiàn)了接近6 MB/s的存儲速率。文獻[4],文獻[5],基于SoPC技術(shù)采用SDRAM作為存儲介質(zhì),相對硬盤存儲速度有了很大的提高。但是當(dāng)通道數(shù)超過SDRAM數(shù)據(jù)位數(shù)時,SoPC的處理速度就會影響數(shù)據(jù)的存儲速度,適用于多通路同步采集。本文采用讀寫速度最高的SRAM作為存儲介質(zhì),并利用虛擬多個DMA通道的技術(shù)極大地提高了數(shù)據(jù)存儲速度,實現(xiàn)多路并行數(shù)字信號的高速同步采集。
1 系統(tǒng)整體設(shè)計
    采集系統(tǒng)采用了嵌入式技術(shù)達到便攜性的目的,由FPGA子系統(tǒng)和ARM子系統(tǒng)兩部分組成,如圖1所示。

    FPGA子系統(tǒng)接收ARM子系統(tǒng)的指令,完成數(shù)據(jù)的采集、緩存和發(fā)送功能。數(shù)字信號緩沖電路用于數(shù)字信號的電平轉(zhuǎn)換和驅(qū)動。輸入數(shù)字信號可能是TTL或CMOS電平,采用緩沖電路一方面減小對原電路的影響,另一方面將電平轉(zhuǎn)換為FPGA輸入所需的CMOS電平。FPGA子系統(tǒng)以Altera公司EP1C12Q240C6芯片為核心,EP1C12Q240C6擁有12 060個邏輯單元以及173個用戶可使用IO,能充分滿足開發(fā)及調(diào)試中的要求。FPGA搭配SRAM采用DMA的方式實現(xiàn)數(shù)據(jù)的高速緩存,選用SRAM容量為1 MB,訪問時間為10 ns,利用SRAM訪問速度快的特點,可達到200 MB/s的數(shù)據(jù)訪問速率。同時,F(xiàn)PGA還實現(xiàn)了與ARM的通信接口,完成緩存數(shù)據(jù)的打包發(fā)送功能。
    ARM子系統(tǒng)實現(xiàn)數(shù)據(jù)的存儲和人機交互界面。采集到的數(shù)據(jù)可以通過ARM子系統(tǒng)以類似于邏輯分析儀的方式圖形化地呈現(xiàn)給用戶,方便用戶管理數(shù)據(jù)采集過程。
2 DMA高速數(shù)據(jù)緩存
    由于ARM系統(tǒng)通信速度的限制,要想避免數(shù)據(jù)的溢出,采集的數(shù)據(jù)需要先緩存到FPGA子系統(tǒng)的SRAM中。對于62路并行數(shù)據(jù)信號進行同步采集,采集頻率為5 MHz時,數(shù)據(jù)量達310 Mb/s,因而選用了DMA的方式來高速地緩存采集數(shù)據(jù)?;贔PGA系統(tǒng),數(shù)字信號首先在采樣時刻被存放到FPGA的寄存器中,并在2個連續(xù)采樣時刻之間的采樣間隔內(nèi)將FPGA寄存器中的數(shù)據(jù)通過多個虛擬的DMA通道存儲到SRAM中。DMA高速數(shù)據(jù)緩存結(jié)構(gòu)如圖2所示。

    采集系統(tǒng)選用了1片16 bit的SRAM,62路數(shù)字信號需要分為4組緩存入SRAM中,因而構(gòu)建了4個DMA通道分時與SRAM連接。由于SRAM的訪問時鐘是FPGA系統(tǒng)中的最高時鐘,所以SRAM的訪問時鐘選用了系統(tǒng)時鐘。SRAM的訪問時間為10 ns,系統(tǒng)時鐘必須低于100 MHz,才能保證每次能將數(shù)據(jù)完整正確地寫入SRAM中。本FPGA系統(tǒng)選用了50 MHz的系統(tǒng)時鐘,這樣采樣時鐘頻率最高為5 MHz,一個采樣周期內(nèi)的數(shù)據(jù)有10個系統(tǒng)時鐘周期的時間來處理。在FPGA系統(tǒng)的控制下,一個采樣周期內(nèi)的10個系統(tǒng)時鐘有1個用于等待數(shù)據(jù)寫入FPGA寄存器,4個用于向SRAM寫入數(shù)據(jù)。數(shù)字信號并行采集的數(shù)據(jù)緩存時序如圖3所示。

    圖3中‘0’時刻為采樣時鐘上升沿,此時刻FPGA系統(tǒng)將并行的62路數(shù)字信號緩存入62 bit寄存器中。由于傳輸延時時間受系統(tǒng)布線和FPGA內(nèi)部布局的影響,系統(tǒng)時鐘和采樣時鐘上升沿不一定是同步的,圖中‘0’時刻到‘2’時刻之間可能有1~2個系統(tǒng)時鐘周期,這段時間內(nèi),系統(tǒng)不動作等待采集信號可靠地寫入寄存器,這樣可以避免‘0’和‘1’時間間隔過小,采集的數(shù)據(jù)未完全寫入寄存器的情況。在之后的‘2’時刻至下一周期‘0’時刻,系統(tǒng)完成寫入SRAM的工作。其中‘2’時刻至‘3’時刻為第一寫入周期,系統(tǒng)將寄存器中的0 bit~15 bit寫入SRAM中;‘3’時刻至‘4’時刻為第二寫入周期,系統(tǒng)將寄存器中的16 bit~31 bit寫入SRAM中;‘4’時刻至‘5’時刻為第三寫入周期,系統(tǒng)將寄存器中的32 bit~47 bit寫入SRAM中;‘5’時刻至下一周期‘0’時刻為第四寫入周期,系統(tǒng)將寄存器中的48 bit~61 bit寫入SRAM中。這樣,同一采樣時刻的62通路的數(shù)字信號被分時地寫入SRAM中,信號保持真實的同步信息。此時,系統(tǒng)的數(shù)據(jù)緩存速率達310 Mb/s。
    上述方法中,‘5’時刻至下一周期‘0’時刻只進行了一次寫入,實際上這段時間可以容納6個寫入周期,時間并沒有被充分地利用。對其進一步擴展,將系統(tǒng)時鐘周期充分地利用,可以同時采集更多通路的信號,將第六到第十個系統(tǒng)時鐘周期也用于信號緩存,則可以同時緩存16×9=144路數(shù)字信號。這種情況下,系統(tǒng)的數(shù)據(jù)緩存速率可達720 Mb/s。
    考慮采用SRAM的極限訪問速率的情況,可以選用100 MHz的系統(tǒng)時鐘,這時系統(tǒng)的數(shù)據(jù)緩存速率可達1 520 Mb/s。
    選用的SRAM的數(shù)據(jù)寫入極限速率為1 600 Mb/s,此種方法的數(shù)據(jù)緩存速率達SRAM數(shù)據(jù)緩存極限的95%,實現(xiàn)了高速的數(shù)據(jù)緩存。
3 緩存數(shù)據(jù)重組織
    按照上述數(shù)據(jù)緩存的方法,同一通道的數(shù)據(jù)不是連續(xù)地存儲在SRAM中。SRAM中的數(shù)據(jù)存儲順序如圖4所示。圖中第一列表示SRAM地址,offset為數(shù)據(jù)存儲的初始地址偏移;第一行表示數(shù)據(jù)位,選用的SRAM中一個地址對應(yīng)2字節(jié)數(shù)據(jù),有16個數(shù)據(jù)位;剩余每個方格表示一個數(shù)據(jù)存儲單元,方格里的數(shù)字表示該單元用于存儲第幾通道的數(shù)據(jù)。

    定位一個通道的一位數(shù)據(jù)需要知道其對應(yīng)的SRAM地址和位號。假設(shè)通道m(xù)的第i位數(shù)據(jù)由[addr(m,i),bit(m,i)]定位。分析SRAM中的數(shù)據(jù)存儲順序可知:
    addr(m,i)=offset+1+[(m-1)/16]+(i-1)×4;
    bit(m,i)=(m-1)%16。
    其中m=1,2,3,…,64;i=1,2,3,4,…。
    FPGA系統(tǒng)向ARM系統(tǒng)發(fā)送數(shù)據(jù)時,將同一通路的數(shù)據(jù)抽取出來,以一個字節(jié)為單位連續(xù)發(fā)送,所以需要對存儲的數(shù)據(jù)進行重組織。在FPGA系統(tǒng)中,使用6 bit變量dch[5:0]表示通道號,其中000000(b)表示通道1(m=1),000001(b)表示通道2(m=2),依此類推。數(shù)據(jù)位計數(shù)i使用N位變量bitcnt[N-1:0]來表示,其中N由存儲的總數(shù)據(jù)量決定,與通道號類似,全零表示i=1情況,1(b)表示i=2情況,依此類推。因而有:
    [(m-1)/16]=dch[5:4];
    (i-1)×4={bitcnt[N-1:0],00(b)};
    (m-1)%16=dch[3:0]。
    數(shù)據(jù)由FPGA中的變量定位表示為:
    addr=offset+1+{bitcnt[N-1:0],dch[5:4]};
    bit=dch[3:0]。
    FPGA系統(tǒng)根據(jù)以上公式將各個通道數(shù)據(jù)逐位地從SRAM中讀出,并移入移位寄存器中,從而把同一通路的數(shù)據(jù)以字節(jié)為單位連續(xù)地組織起來。
4 采集實驗結(jié)果
    為了進行測試,基于FPGA設(shè)計了專用信號發(fā)生器,產(chǎn)生62路數(shù)字信號用于測試。62路數(shù)字信號中包括4.07 kHz~520.8 kHz(50 MHz的96分頻)的TTL信號及恒高、恒低電平信號。
    由于數(shù)字信號通道數(shù)較多,這里以其中不包含恒高和恒低的9~12通道來說明采集精度,采集結(jié)果如表1。

    依此可知,各通道采集結(jié)果與輸入信號對應(yīng),說明個通道采集結(jié)果正確,本采集系統(tǒng)可靠。
    以某型雷達做為被測對象,系統(tǒng)進行了實際工作測試。采集性能如表2所示。

    本文介紹基于嵌入式技術(shù)的并行數(shù)字信號采集系統(tǒng)的設(shè)計,系統(tǒng)采用DMA技術(shù)實現(xiàn)了62路數(shù)字信號同步采集,用于某型雷達預(yù)留測試接口信號的采集,整體采集速率達310 Ms/s。利用本設(shè)計中提出的DMA方法,系統(tǒng)可以進一步擴展,從而實現(xiàn)128路數(shù)字信號同步采集,并使整體采集速率達1 520 Ms/s,此時SRAM的寫入速度已成為主要的限制。

參考文獻
[1] 唐玉蘭,陶偉,于宗光.一種實現(xiàn)數(shù)?;旌想娐分械腄AC測試的BIST結(jié)構(gòu)[J].電子器件,2006,29(1):231-234.
[2] 張開德.1553B數(shù)據(jù)總線技術(shù)在某艇作戰(zhàn)系統(tǒng)中的應(yīng)用[J].艦船科學(xué)技術(shù),1994,(003):48-51.
[3] 詹艷艷.數(shù)據(jù)采集系統(tǒng)并行存儲的實現(xiàn)[J].科技資訊,2009(4).
[4] 奚素霞.基于SOPC的高速數(shù)據(jù)采集系統(tǒng)的分析與設(shè)計[J].電子元器件應(yīng)用,2009,11(4).
[5] 馮萍,李秀華.基于FPGA的高速高精度數(shù)據(jù)采集系統(tǒng)的研究[J].中國科技信息,2008,(021):105-106.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。