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