《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于DMA的并行數(shù)字信號(hào)高速采集系統(tǒng)
基于DMA的并行數(shù)字信號(hào)高速采集系統(tǒng)
王 俊,鄭 焱,王 紅,楊士元
清華大學(xué) 自動(dòng)化系,北京100084
摘要: 本系統(tǒng)采用基于FPGA的DMA技術(shù)高速緩存多路并行數(shù)據(jù),通過(guò)數(shù)據(jù)重組將數(shù)據(jù)有序發(fā)送給處理系統(tǒng),用于數(shù)據(jù)的顯示與分析。系統(tǒng)采用了嵌入式技術(shù),達(dá)到了便攜效果,從而更好地適應(yīng)設(shè)備的工作環(huán)境。并行數(shù)字信號(hào)采集實(shí)驗(yàn)結(jié)果表明,系統(tǒng)能以5 MHz、2.5 MHz、500 kHz、50 Hz 4檔采樣頻率進(jìn)行62路并行數(shù)字信號(hào)采集,各路采集結(jié)果正確,并保存了各路之間的同步信息。
中圖分類(lèi)號(hào): TP391.5
文獻(xiàn)標(biāo)識(shí)碼: 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ù)字電路的比例越來(lái)越大[1]。為便于故障診斷,一些電子設(shè)備(如雷達(dá)系統(tǒng))預(yù)留了大量的數(shù)字信號(hào)檢測(cè)口[2]。采用示波器采集此類(lèi)測(cè)試接口的信號(hào)時(shí),由于示波器采集通道數(shù)的限制,無(wú)法保留同步信息;采用邏輯分析儀或ATE設(shè)備不但價(jià)格昂貴,而且不便于攜帶,不適宜廣泛使用。因此,設(shè)計(jì)一款便攜式并行數(shù)字信號(hào)高速同步采集系統(tǒng),為大型電子設(shè)備的維護(hù)提供支持是十分必要的。
    此類(lèi)檢測(cè)口信號(hào)采集中多通路、高采樣率的特性要求瞬時(shí)大量數(shù)據(jù)的高速緩存實(shí)現(xiàn)方法。文獻(xiàn)[3]以硬盤(pán)為存儲(chǔ)介質(zhì),采用DMA技術(shù)實(shí)現(xiàn)了接近6 MB/s的存儲(chǔ)速率。文獻(xiàn)[4],文獻(xiàn)[5],基于SoPC技術(shù)采用SDRAM作為存儲(chǔ)介質(zhì),相對(duì)硬盤(pán)存儲(chǔ)速度有了很大的提高。但是當(dāng)通道數(shù)超過(guò)SDRAM數(shù)據(jù)位數(shù)時(shí),SoPC的處理速度就會(huì)影響數(shù)據(jù)的存儲(chǔ)速度,適用于多通路同步采集。本文采用讀寫(xiě)速度最高的SRAM作為存儲(chǔ)介質(zhì),并利用虛擬多個(gè)DMA通道的技術(shù)極大地提高了數(shù)據(jù)存儲(chǔ)速度,實(shí)現(xiàn)多路并行數(shù)字信號(hào)的高速同步采集。
1 系統(tǒng)整體設(shè)計(jì)
    采集系統(tǒng)采用了嵌入式技術(shù)達(dá)到便攜性的目的,由FPGA子系統(tǒng)和ARM子系統(tǒng)兩部分組成,如圖1所示。

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

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

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

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

    依此可知,各通道采集結(jié)果與輸入信號(hào)對(duì)應(yīng),說(shuō)明個(gè)通道采集結(jié)果正確,本采集系統(tǒng)可靠。
    以某型雷達(dá)做為被測(cè)對(duì)象,系統(tǒng)進(jìn)行了實(shí)際工作測(cè)試。采集性能如表2所示。

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

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

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