文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.170310
中文引用格式: 侯天喜,李錦明,馬林,等. 基于eMMC的128路數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2017,43(9):76-79.
英文引用格式: Hou Tianxi,Li Jinming,Ma Lin,et al. Design of 128-channels data acquisition system based on eMMC[J].App-
lication of Electronic Technique,2017,43(9):76-79.
0 引言
當(dāng)今海洋已經(jīng)和太空一樣成為人類探索自然的重要領(lǐng)域,我國水下探測設(shè)備的水平已達(dá)到一個新的高度。隨著我國水下探測技術(shù)的進(jìn)步,對數(shù)據(jù)采集及存儲測試儀器的可靠性、高速、大容量、多通道等技術(shù)參數(shù)提出了更高的要求[1-2]。本文的128路數(shù)據(jù)采集及存儲系統(tǒng)主要完成對水下模擬船艙相關(guān)參數(shù)的高速多次采集存儲任務(wù),以eMMC為存儲單元,解決了傳統(tǒng)的以Flash為存儲模塊的復(fù)雜的壞塊檢測與系統(tǒng)管理等問題。該系統(tǒng)可進(jìn)行多次觸發(fā),采集并存儲采集數(shù)據(jù);通過讀數(shù)盒與上位機(jī)通信并傳輸采集的試驗(yàn)數(shù)據(jù)。
任何測量系統(tǒng)都需要有精度要求,否則測量將失去意義[3-4]。128路數(shù)據(jù)采集的總采樣率達(dá)到1.6 MS/s,采集編碼長度為12 bit,采樣精度0.1%,可重復(fù)觸發(fā),單次記錄時間達(dá)到5 s。
1 系統(tǒng)的整體設(shè)計
基于eMMC的128路數(shù)據(jù)采集系統(tǒng)主要由數(shù)據(jù)采集模塊、FPGA控制模塊、eMMC存儲器模塊、讀數(shù)盒模塊、上位機(jī)5個模塊組成。每進(jìn)行一次觸發(fā)操作,128路電壓范圍在±5 V的模擬信號就會通過運(yùn)放跟隨電路的放大后進(jìn)入8個16通道模擬多路復(fù)用開關(guān)ADG506,經(jīng)多路模擬開關(guān)通道選擇,使接到每一個模擬開關(guān)上的16個模擬信號依次送到AD轉(zhuǎn)換驅(qū)動芯片AD823中,進(jìn)行信號調(diào)理后由AD轉(zhuǎn)換器AD7495進(jìn)行模數(shù)轉(zhuǎn)換操作。轉(zhuǎn)換后的數(shù)字信號在FPGA的控制下依次存儲在eMMC芯片MTFC2GMDEA-0M中。一次觸發(fā)操作會在eMMC中存儲16 MB的數(shù)據(jù),可以連續(xù)觸發(fā)4次。最后可以通過讀數(shù)盒將數(shù)據(jù)回讀到上位機(jī)中,完成采集及存儲的任務(wù)。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
2 系統(tǒng)的硬件構(gòu)成
2.1 電源管理
在本系統(tǒng)中,需要對FPGA XC3S500E芯片進(jìn)行3.3 V、2.5 V和1.2 V供電,因此需要利用電源轉(zhuǎn)換芯片將5 V的電壓轉(zhuǎn)換到所需要的電壓值。系統(tǒng)選用電壓轉(zhuǎn)換器SPX3819將電源電壓轉(zhuǎn)換成所需要的電壓值。
2.2 模擬電路
數(shù)據(jù)采集部分在FPGA的控制下實(shí)現(xiàn)模擬量到數(shù)字量的轉(zhuǎn)化[5-6],主要由運(yùn)放調(diào)理電路、模擬開關(guān)和AD轉(zhuǎn)換芯片構(gòu)成。
2.2.1 放大電路設(shè)計
該128路數(shù)據(jù)采集系統(tǒng)運(yùn)放調(diào)理電路采用的是高精度低噪聲模擬信號放大器OP4177,多路信號放大的芯片OP4177具有4條互不干涉的信號放大通道,可對4路模擬信號進(jìn)行同時放大。
2.2.2 模擬開關(guān)
本系統(tǒng)采用了16通道的模擬多路復(fù)用器ADG506A進(jìn)行模擬通道的選擇。通過FPGA控制ADG506A的4條地址線來決定在某一時刻送到AD轉(zhuǎn)換器之中的信號是哪一位,使16路模擬信號可以依次發(fā)送到AD轉(zhuǎn)換器中,大大提高了系統(tǒng)的集成度。
2.2.3 模數(shù)轉(zhuǎn)換電路設(shè)計
本系統(tǒng)采用的是精度為12 bit的模數(shù)轉(zhuǎn)換芯片AD7495,并采用芯片AD823作為A/D轉(zhuǎn)換器的驅(qū)動芯片。電路上電后,F(xiàn)PGA首先會對A/D轉(zhuǎn)換芯片進(jìn)行參數(shù)設(shè)定,A/D轉(zhuǎn)換器的驅(qū)動電壓由FPGA提供,A/D轉(zhuǎn)換的時鐘由FPGA內(nèi)部的定時器產(chǎn)生。AD7495芯片要求采集模擬量在-2.5 V~2.5 V之間,而考慮到實(shí)際用的模擬量一般在0 V~5 V之間,所以需要進(jìn)行電壓轉(zhuǎn)換,使其滿足AD7495的輸入電壓要求,保證模數(shù)轉(zhuǎn)換的正確性。模數(shù)轉(zhuǎn)換的驅(qū)動電路如圖2所示。
2.3 存儲電路
數(shù)據(jù)存儲部分是整個系統(tǒng)中數(shù)據(jù)的載體,承擔(dān)著存儲由A/D轉(zhuǎn)換芯片產(chǎn)生的數(shù)字?jǐn)?shù)據(jù)的重任。128路數(shù)據(jù)采集及存儲系統(tǒng)選用了鎂光公司的MTFC2GMDEA-0M芯片作為數(shù)據(jù)存儲。該器件將Nand Flash與控制器和MMC接口封裝到一起,控制器負(fù)責(zé)Flash的無效塊檢測、讀寫、ECC校驗(yàn)等[7],大大提高了數(shù)據(jù)的讀寫速度。該芯片對外提供標(biāo)準(zhǔn)MMC接口,接口總線有時鐘線CLK、命令線CMD、8位數(shù)據(jù)線以及復(fù)位信號線,使用起來非常方便,其電路連接圖如圖3所示。
3 數(shù)據(jù)存儲技術(shù)的實(shí)現(xiàn)
在正常無故障的情況下,經(jīng)過觸發(fā),系統(tǒng)啟動數(shù)據(jù)采集后,模擬信號經(jīng)過數(shù)據(jù)采集部分進(jìn)行處理后轉(zhuǎn)換為FPGA可以處理的數(shù)字信號,將轉(zhuǎn)換完的串行數(shù)據(jù)送回FPGA內(nèi)部FIFO進(jìn)行緩存,并由FPGA控制將FIFO內(nèi)的數(shù)據(jù)按照一定的時序?qū)懭雃MMC芯片,完成數(shù)據(jù)的存儲。
eMMC在傳輸模式之前首先進(jìn)行初始化操作,初始化操作主要完成器件識別、模式配置以及擦除操作等[8-9]。具體操作流程為:(1)發(fā)送CMD0命令,復(fù)位設(shè)備;(2)發(fā)送CMD1命令,獲取OCR,進(jìn)入準(zhǔn)備完畢狀態(tài);(3)發(fā)送CMD2命令,獲取器件信息,進(jìn)入器件識別狀態(tài);(4)發(fā)送CMD3命令,進(jìn)行eMMC地址分配,進(jìn)入設(shè)備待命狀態(tài);(5)發(fā)送CMD9命令,獲取設(shè)備寄存器的值;(6)發(fā)送CMD7命令,進(jìn)行狀態(tài)轉(zhuǎn)換,進(jìn)入數(shù)據(jù)傳輸狀態(tài);(7)發(fā)送CMD19命令,發(fā)送總線測試數(shù)據(jù);(8)發(fā)送CMD14命令,回讀總線測試數(shù)據(jù),并檢驗(yàn)測試是否通過,系統(tǒng)返回傳輸狀態(tài)。
3.1 數(shù)據(jù)寫入
eMMC的數(shù)據(jù)傳輸模式是其主要工作模式,其讀寫操作都是在該模式下進(jìn)行的。eMMC有單塊寫和多塊寫兩種寫模式,這里采用單塊寫模式,其對應(yīng)狀態(tài)轉(zhuǎn)化圖如圖4所示。首先,在eMMC進(jìn)入傳輸模式之后發(fā)送CMD16命令,設(shè)置寫數(shù)據(jù)塊長度;接著發(fā)送CMD24命令,開始單塊寫操作,將寫FIFO數(shù)據(jù)寫入eMMC,依次寫入起始位、數(shù)據(jù)位、CRC16校驗(yàn)碼與結(jié)束位。數(shù)據(jù)發(fā)送完畢后,eMMC器件會根據(jù)接收到的數(shù)據(jù)進(jìn)行CRC16校驗(yàn)比對,校驗(yàn)成功后將數(shù)據(jù)存儲到eMMC的Flash存儲區(qū),完成一次數(shù)據(jù)存儲。
3.2 數(shù)據(jù)讀取
要分析eMMC中存儲的數(shù)據(jù),就要通過上位機(jī)將讀數(shù)盒數(shù)據(jù)回讀到計算機(jī),因此eMMC的讀數(shù)過程需要上位機(jī)的配合完成。FPGA在接收到上位機(jī)發(fā)來的讀數(shù)命令后,主動給eMMC控制器發(fā)送讀數(shù)命令。首先判斷eMMC后端FIFO是否寫滿,若寫滿則禁止往后端FIFO里寫數(shù);若未滿,則發(fā)送CMD17命令,開始數(shù)據(jù)讀操作。當(dāng)檢測起始位有效時,開始數(shù)據(jù)讀,并對數(shù)據(jù)進(jìn)行實(shí)時CRC校驗(yàn),并對讀取數(shù)據(jù)進(jìn)行計數(shù)。當(dāng)計數(shù)個數(shù)等于數(shù)據(jù)塊長度時,接收端進(jìn)行數(shù)據(jù)接收,并將接收到的數(shù)據(jù)的CRC校驗(yàn)與eMMC的CRC檢驗(yàn)對比,判斷數(shù)據(jù)接收是否正確,完成一次數(shù)據(jù)的讀取操作。具體數(shù)據(jù)發(fā)送流程圖如圖5所示。
4 測試與驗(yàn)證
為了驗(yàn)證系統(tǒng)的功能實(shí)現(xiàn)及可靠性,分別對eMMC的寫數(shù)據(jù)和讀數(shù)據(jù)操作進(jìn)行了在線調(diào)試。在信號輸入端提供電壓峰值為5 V的正弦波電壓進(jìn)行系統(tǒng)的可靠性測試。通過Chipscope進(jìn)行抓圖。經(jīng)分析,CRC檢驗(yàn)正確,證明數(shù)據(jù)讀寫正確。其數(shù)據(jù)讀與數(shù)據(jù)寫的測試結(jié)果如圖6、圖7所示。
同時,利用讀數(shù)盒將存儲在eMMC中的數(shù)據(jù)讀取到上位機(jī)中,對數(shù)據(jù)進(jìn)行直接的觀察。圖8為128路信號中存儲在eMMC中前4路信號通過上位機(jī)讀取到的信號波形。從圖中可以看出,128路數(shù)據(jù)采集存儲系統(tǒng)可以如實(shí)地反映出系統(tǒng)采集到的電壓范圍為±5 V的正弦波。經(jīng)過標(biāo)定后,128路數(shù)據(jù)采集存儲系統(tǒng)的誤差范圍可控制在0.1%范圍內(nèi)。
5 結(jié)論
本文設(shè)計了一種128路數(shù)據(jù)采集存儲系統(tǒng),以eMMC為存儲單元,解決了傳統(tǒng)的以Flash為存儲模塊的復(fù)雜的壞塊檢測與系統(tǒng)管理等問題。通過在線邏輯分析和上位機(jī)驗(yàn)證,該128路數(shù)據(jù)采集存儲系統(tǒng)讀寫時序正確,誤差范圍可控制在0.1%范圍內(nèi),能夠確保已存儲的數(shù)據(jù)可靠、有效,達(dá)到設(shè)計指標(biāo)。
參考文獻(xiàn)
[1] 李廣志,周卓赟,謝昱勃,等.基于FPGA的陣列信號數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù)應(yīng)用,2016,42(2):71-73,77.
[2] 葛立,李驥,高楓,等.多路模擬開關(guān)在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用與分析[J].電子技術(shù)應(yīng)用,2014,40(12):40-42.
[3] 皇甫堪,陳建文,樓生強(qiáng).現(xiàn)代數(shù)字信號處理(第一版)[M].北京:電子工業(yè)出版社,2003.
[4] 馬明建,周長城.數(shù)據(jù)采集與處理技術(shù)(第一版)[M].西安:西安交通大學(xué)出版社,1999.
[5] 崔迎煒,李猛.基于FPGA的PMC數(shù)據(jù)采集卡的設(shè)計[J].電子技術(shù)應(yīng)用,2014,40(10):27-29.
[6] 王悅凱,馬游春,丁寧.基于MRAM和FPGA的多路數(shù)據(jù)采集存儲系統(tǒng)[J].電子器件,2016,39(3):662-666.
[7] Embedded multi-media card(eMMC) electrical standard(5.0)[S].JEDEC,2012.
[8] 張耀軍,孫銘,王锏.Virtex-6 FPGA的eMMC控制器設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(2):10-13.
[9] 王慶,樓向雄,王維建.基于eMMC大容量存儲U盤的研究[J].杭州電子科技大學(xué)學(xué)報(自然科學(xué)版),2016,36(2):37-41.
作者信息:
侯天喜,李錦明,馬 林,降 帥
(中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原030051)