李 東,崔文超,郭瑞民,董賀偉
(中國(guó)計(jì)量科學(xué)研究院環(huán)境計(jì)量中心,北京 100029)
數(shù)據(jù)采集系統(tǒng)是信息處理系統(tǒng)的重要組成部分[1],其通常由模數(shù)轉(zhuǎn)換器(analog to digital converter,ADC)和控制芯片組成。ADC決定了采樣率和分辨率,控制芯片為ADC提供驅(qū)動(dòng)時(shí)鐘并接收ADC的采集數(shù)據(jù)。傳統(tǒng)數(shù)據(jù)采集系統(tǒng)多采用單片機(jī)或數(shù)字信號(hào)處理芯片(digital signal processing,DSP)作為控制芯片[2-3]。單片機(jī)或DSP芯片提供的時(shí)鐘速率較低,限制了ADC的采集上限。除此之外,采用單片機(jī)或DSP芯片進(jìn)行數(shù)據(jù)采集,成本較高。近年來(lái),現(xiàn)場(chǎng)可編程邏輯門陣列(field programmable gate array,F(xiàn)PGA)芯片由于其內(nèi)部邏輯電路獨(dú)特的可編程性,有效降低了研發(fā)成本,被廣泛用作數(shù)據(jù)采集的控制芯片[4-6]。FPGA片上資源不受固化模塊的占用,可被各個(gè)功能模塊調(diào)用,靈活性高。
本文設(shè)計(jì)了一種基于FPGA的高速模擬信號(hào)觸發(fā)采集系統(tǒng),其電路部分主要由2片A/D芯片、1個(gè)FPGA芯片和1個(gè)USB通信芯片組成。研究中,通過(guò)時(shí)序設(shè)計(jì)控制2片A/D交替工作,并將采集數(shù)據(jù)存儲(chǔ)到DDR2中,采集結(jié)束后由USB通信芯片傳輸?shù)接?jì)算機(jī)(PC)。該采集系統(tǒng)分辨率為12位,采樣率最高達(dá)到130 Msps,可應(yīng)用在μs量級(jí)、0~5 V瞬時(shí)電壓信號(hào)的采集。
本文研究的數(shù)據(jù)采集系統(tǒng)電路原理圖如圖1所示,主要包括模擬信號(hào)調(diào)理電路、A/D轉(zhuǎn)換電路、FPGA控制模塊、USB通信電路和延時(shí)觸發(fā)電路。
圖1 數(shù)據(jù)采集系統(tǒng)電路原理圖
模擬信號(hào)調(diào)理電路主要由運(yùn)放AD8065和比例放大偏置電路組成,將0~5 V的輸入電壓轉(zhuǎn)換為1~3 V電壓,以滿足A/D輸入端的輸入范圍。模數(shù)轉(zhuǎn)換電路主要包括2個(gè)模數(shù)轉(zhuǎn)換器AD9226,其分辨率為12位。在65 MHz時(shí)鐘的驅(qū)動(dòng)下,2個(gè)AD9226交替進(jìn)行信號(hào)采集,并將數(shù)據(jù)通過(guò)12位并行數(shù)據(jù)線輸出給FPGA芯片。
FPGA控制電路由FPGA芯片(型號(hào):EP4CE15F23C8)、DDR2芯片和Flash芯片構(gòu)成。研究中,通過(guò)對(duì)FPGA芯片進(jìn)行編程,設(shè)計(jì)FPGA內(nèi)部邏輯控制電路。DDR2芯片(型號(hào):MT47H64M16)和Flash芯片(型號(hào):M25P64)作為儲(chǔ)存芯片與FPGA相應(yīng)管腳連接。其中,DDR2芯片有1 G的儲(chǔ)存量,用于臨時(shí)存儲(chǔ)采集的數(shù)據(jù)。Flash芯片用來(lái)存儲(chǔ)編寫的控制程序,確保FPGA芯片啟動(dòng)時(shí),能夠正常加載芯片代碼,完成FPGA內(nèi)部控制電路的設(shè)計(jì)。
USB通信電路主要由USB芯片構(gòu)成,并與FPGA相應(yīng)管腳相連。通過(guò)外接USB接口,實(shí)現(xiàn)FPGA與計(jì)算機(jī)的通信。圖1中,延時(shí)觸發(fā)輸出電路通過(guò)緩沖器和電平轉(zhuǎn)換芯片與FPGA的3.3 V電壓輸出管腳相連,其末端輸出1.7 V電壓信號(hào)用于控制觸發(fā)信號(hào)的輸入輸出。
FPGA程序功能圖如圖2所示,主要包括鎖相環(huán)(phase locked loop,PLL)模塊、AD讀取模塊、觸發(fā)模塊、USB通信模塊、控制模塊和DDR2模塊。首先,編寫FPGA程序,并對(duì)編寫的程序進(jìn)行聯(lián)合仿真。
進(jìn)行程序設(shè)計(jì)時(shí),采用外部晶振產(chǎn)生50 MHz信號(hào)作為系統(tǒng)時(shí)鐘,輸入到PLL模塊。PLL主要功能是產(chǎn)生系統(tǒng)所需的3類時(shí)鐘信號(hào),頻率分別為130 MHz、50 MHz和65 MHz。其中130 MHz信號(hào)用作USB模塊及DDR2模塊的寫入信號(hào)源,50 MHz信號(hào)為DDR2模塊的工作信號(hào)源,65 MHz信號(hào)提供給2個(gè)AD9226芯片。
AD讀取模塊劃分為3個(gè)子模塊:信號(hào)-節(jié)拍模塊、信號(hào)-位寬轉(zhuǎn)換模塊和觸發(fā)模塊。在130 MHz時(shí)鐘信號(hào)驅(qū)動(dòng)下,信號(hào)-節(jié)拍模塊將兩路AD交替采集的電壓信號(hào)組合為一路電壓信號(hào),數(shù)據(jù)位寬為12位[7-8]。程序設(shè)計(jì)時(shí),通過(guò)信號(hào)-位寬模塊將該12位數(shù)據(jù)拓展為32位數(shù)據(jù),并輸出給觸發(fā)模塊,其中低12位為有效數(shù)字。在觸發(fā)模塊中,采集的電壓信號(hào)與設(shè)定的閾值電壓相比較,若大于閾值電壓,觸發(fā)模塊則輸出低電平延時(shí)使能信號(hào);若小于閾值電壓,觸發(fā)模塊保持高電平輸出。本研究中,設(shè)定的閾值電壓和觸發(fā)延時(shí)時(shí)間分別為1.5 V和1 ms。
DDR2模塊由先入先出(first input fist out,F(xiàn)IFO)控制模塊和DDR2控制模塊構(gòu)成[9-10]。其中,DDR2控制模塊用來(lái)響應(yīng)FIFO控制模塊發(fā)出的數(shù)據(jù)寫讀請(qǐng)求,并控制DDR2芯片數(shù)據(jù)的讀寫。DDR2芯片的工作頻率為166.7 MHz,PLL輸出給DDR2模塊的時(shí)鐘為130 MHz,兩者速率不匹配。本文采用FIFO控制模塊作為信號(hào)緩沖池,將需要寫入、讀出DDR2的數(shù)據(jù)儲(chǔ)存在FIFO中,實(shí)現(xiàn)外部數(shù)據(jù)與DDR2芯片數(shù)據(jù)讀寫速率的匹配。本研究中,在FIFO控制模塊中建立了一個(gè)數(shù)據(jù)寬度為32位,深度為1024的寫FIFO和讀FIFO。
USB通信模塊用于FPGA芯片與USB芯片(型號(hào):CY7C68013A)之間的通信,接收來(lái)自USB芯片的指令,并傳輸從DDR2中讀取的數(shù)據(jù)[11-12]??刂颇K是整個(gè)系統(tǒng)的核心,用于向每個(gè)模塊發(fā)出工作指令、控制數(shù)據(jù)流的方向以及響應(yīng)PC的控制指令。控制模塊的輸入信號(hào)包括時(shí)鐘信號(hào),復(fù)位信號(hào),啟動(dòng)信號(hào)和觸發(fā)信號(hào)。
采集時(shí)序如圖3所示,讀取時(shí)鐘為130 MHz,AD的工作時(shí)鐘為65 MHz。如圖3所示,2個(gè)AD9226工作在相位完全相反的時(shí)鐘源下,接收數(shù)據(jù)的相位也完全相反。在130 MHz信號(hào)-節(jié)拍模塊的驅(qū)動(dòng)下,2列65 MHz的數(shù)據(jù)等效為1列時(shí)鐘為130 MHz的數(shù)據(jù)。
圖3 等效時(shí)鐘時(shí)序圖
數(shù)據(jù)采集系統(tǒng)的工作流程如圖4所示,主要包括模塊初始化部分、觸發(fā)信號(hào)產(chǎn)生部分、DDR2數(shù)據(jù)寫入/讀出部分和USB芯片到PC的數(shù)據(jù)上傳部分。
圖4 采集系統(tǒng)的工作流程
數(shù)據(jù)采集過(guò)程由圖2所示的控制模塊控制運(yùn)行,首先進(jìn)行系統(tǒng)初始化,并在PC端檢索USB設(shè)備。接著使控制模塊的復(fù)位信號(hào)置低,開(kāi)始信號(hào)置高,使控制模塊處于待觸發(fā)狀態(tài)。此時(shí),記錄使能信號(hào)和輸出使能信號(hào)均為低電平。當(dāng)采集的電壓信號(hào)高于設(shè)置的閾值電壓時(shí),觸發(fā)使能信號(hào)變?yōu)楦唠娖?,記錄使能信?hào)置為高電平,但輸出使能信號(hào)依舊在設(shè)定的延遲時(shí)間內(nèi)保持為低電平。在130 MHz時(shí)鐘的驅(qū)動(dòng)下,控制模塊將2個(gè)65 Msps的AD9226數(shù)模轉(zhuǎn)換器采集的數(shù)據(jù)交叉寫入DDR2芯片,完成觸發(fā)采集過(guò)程。當(dāng)設(shè)定的延遲時(shí)間結(jié)束后,記錄使能信號(hào)置為低電平,輸出使能信號(hào)置為高電平,且保持另一長(zhǎng)度的延遲時(shí)間。
在觸發(fā)延遲信號(hào)與記錄使能信號(hào)為高電平時(shí),控制模塊發(fā)出寫指令,將采集的數(shù)據(jù)寫入DDR2芯片。等觸發(fā)延遲信號(hào)與輸出使能信號(hào)為高電平時(shí),控制模塊發(fā)出讀指令,讀出DDR2中的數(shù)據(jù),并向USB芯片發(fā)出寫指令,將讀出的數(shù)據(jù)寫入U(xiǎn)SB芯片,上傳到PC??刂颇K進(jìn)入待觸發(fā)狀態(tài),等待新一輪的數(shù)據(jù)采集過(guò)程。
本研究中,記錄使能信號(hào)為高電平,同時(shí)輸出使能信號(hào)為低電平的延遲時(shí)間為50 μs。記錄使能信號(hào)為低電平,同時(shí)輸出使能信號(hào)為高電平的延遲時(shí)間為500 μs,以確保DDR2的寫入時(shí)間和讀出時(shí)間之和小于觸發(fā)模塊的觸發(fā)延遲時(shí)間。
為了測(cè)試該采集系統(tǒng)的性能,采用信號(hào)發(fā)生器產(chǎn)生標(biāo)準(zhǔn)信號(hào),同時(shí)利用示波器和該采集系統(tǒng)對(duì)標(biāo)準(zhǔn)信號(hào)進(jìn)行采集并進(jìn)行對(duì)比。信號(hào)發(fā)生器(型號(hào):Agilent,33500B)生成的標(biāo)準(zhǔn)正弦信號(hào)頻率分別為50 kHz、100 kHz、500 kHz和1 MHz,幅值為4 V。示波器(型號(hào):Agilent,DSO5054A)的采樣率為4 GS/s。本文設(shè)計(jì)采集裝置的采樣率為130 Msps,采集結(jié)果如圖5所示,其中連續(xù)直線代表示波器采集的信號(hào),點(diǎn)線為采集裝置采集的正弦波信號(hào)。由圖5可以看到,兩者采集的波形完全重合,且采集的信號(hào)電壓值與實(shí)際信號(hào)電壓值一致性較好。
(a)50 kHz
在光腔衰蕩光譜(CRDS)技術(shù)相關(guān)研究中[13-15],需要利用采集卡收集從衰蕩光腔透射的成指數(shù)衰減的光信號(hào)。以往的CRDS裝置數(shù)據(jù)采樣率低,大多數(shù)在10 Msps以內(nèi)。為了進(jìn)一步評(píng)價(jià)本論文設(shè)計(jì)的采集卡性能,采用信號(hào)發(fā)生器產(chǎn)生標(biāo)準(zhǔn)衰蕩信號(hào),通過(guò)比對(duì)采集卡和示波器的采集結(jié)果,驗(yàn)證該裝置在CRDS裝置中的應(yīng)用潛力。
研究中,信號(hào)發(fā)生器產(chǎn)生時(shí)間長(zhǎng)度為10 μs的標(biāo)準(zhǔn)衰蕩信號(hào),示波器的采樣率為4 GS/s,本文設(shè)計(jì)采集裝置的采樣率為130 Msps。結(jié)果如圖6所示,其中連續(xù)直線為示波器采集的信號(hào),點(diǎn)線為采集卡采集的信號(hào),兩者完全重合。采用指數(shù)衰減函數(shù)分別對(duì)采集卡和示波器采集的數(shù)據(jù)進(jìn)行擬合,所得的衰蕩時(shí)間分別為1.609 9 μs和1.596 6 μs,兩者相差約0.83%,可用于CRDS研究中的衰蕩信號(hào)采集。
圖6 指數(shù)衰減信號(hào)
本文設(shè)計(jì)了一種基于FPGA芯片的高速數(shù)據(jù)采集系統(tǒng)。系統(tǒng)硬件包括模擬信號(hào)調(diào)理電路、模數(shù)轉(zhuǎn)換電路、FPGA控制模塊、USB通信電路和延時(shí)觸發(fā)電路。編寫的FPGA內(nèi)部程序包括鎖相環(huán)模塊、AD讀取模塊、觸發(fā)模塊、USB通信模塊、控制模塊和DDR2模塊。采用等效時(shí)鐘原理,控制2片采樣率為65 Msps的數(shù)模轉(zhuǎn)換器交替工作,實(shí)現(xiàn)了130 Msps的采樣率。利用該系統(tǒng)采集50 kHz~1 MHz的正弦信號(hào)和時(shí)間長(zhǎng)度為10 μs的衰蕩信號(hào),采集結(jié)果與示波器一致。本文設(shè)計(jì)的采集系統(tǒng),可用于CRDS裝置中的衰蕩信號(hào)采集。