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