孟園,李孟委,張鵬
(1.中北大學 儀器與電子學院,山西太原 030051;2.中北大學電子測試技術國家重點實驗室,山西太原 030051)
飛行器在進行飛行實驗時,需要采集并存儲飛行器的各種數據,因此通常在飛行器中設計有數據采集存儲器,在飛行器飛行實驗結束之后將采集存儲器中的數據讀出,為后續(xù)分析和研究提供數據支撐[1-3]。設計的某飛行器同步數據采集存儲系統(tǒng)主要用于測量飛行器邊界層溫度、壓力等參數,在對被測對象無影響或影響在允許范圍的條件下,開展陣列分布式多參數測試系統(tǒng)一體化協(xié)同設計和高時/空分辨率測試。
在傳統(tǒng)的數據采集存儲系統(tǒng)中,采集通道較少,測量誤差較大,存儲介質主要為Flash,其速度慢、容量小、集成度低,開發(fā)時需要進行復雜的損耗控制、壞塊管理以及降低誤碼率等操作[4-5]。eMMC 是一種內嵌式存儲器,其具有速度快、容量大、集成度高、可擴展性強等優(yōu)點,將Flash 存儲陣列及其內部控制器封裝在一起,在芯片內部完成Flash 存儲陣列的損耗控制、壞塊管理、ECC 校驗等[6-7]。單片eMMC 存儲芯片的容量最大可達256 GB,存儲速度最快可達到400 MB/s,遠大于Flash 存儲芯片。
圖1 系統(tǒng)結構框圖
系統(tǒng)上電啟動后,數據采集模塊將8 路模擬信號調理后通過AD7606 模數轉換芯片轉換成數字信號,轉換后的數字信號在FPGA 主控模塊的控制下緩存在DDR3 芯片中,達到設定的數據量以后,再將DDR3 數據緩存模塊中的數據存儲到eMMC 存儲模塊中,完成數據采集及存儲任務。在采存任務完成后,可通過讀數盒將eMMC 存儲模塊中的數據讀取至上位機中,并顯示出原始信號的波形[11]。
數據采集模塊選用型號為AD7606 的ADC 芯片,該芯片通過5 V 單電源供電,可以同時采集8 通道真雙極性模擬信號,模擬輸入范圍為±5 V或±10 V,且每個通道最高采樣速率可達200 kHz,采樣精度為16 bit,支持高速并行或串行輸出方式[12]。AD7606 引腳簡圖如圖2 所示。
圖2 AD7606引腳簡圖
其中,AVCC 為AD7606 芯片的供電端口,供電電壓為5 V;VDRIVE 為邏輯電源輸入端口,決定總線的邏輯電平,輸入電壓為3.3 V;OS[2:0]為過采樣模式選擇引腳,模塊需要關閉AD7606 的過采樣功能,故邏輯值設置為000;PAR/SER/BYTE SEL 為數據輸出模式選擇端口;RANGE 為前端模擬信號輸入電壓范圍選擇端口,由于前端模擬信號經調理后電壓范圍為±5 V,故該端口設置為低電平;CONVSTAB 為信號模數轉換開始啟動端口,CONVSTA 控制通道1 至通道4,CONVSTB 控制通道5至通道8;RD/SCLK 為數據讀取控制端口,CS 為AD7606 芯片的片選端口,當CS端口為低電平且RD 端口也為低電平時,使能數據輸出總線DB[15:0],使轉換結果輸出在并行總線上。
當AD7606芯片的CONVSTAB 端口接收到FPGA主控模塊發(fā)送的上升沿時,啟動對8 路模擬信號的同步采樣,轉換期間BUSY 信號保持高電平。當FPGA主控模塊檢測到BUSY信號的下降沿時,將CS信號拉低,使AD7606 芯片的數據輸出總線脫離高阻抗狀態(tài),啟動數據幀的傳輸[13]。在CS 信號處于低電平期間,產生8 個RD 的脈沖信號,分別將8 個通道的數據依次讀出至FPGA主控模塊中,其時序圖如圖3所示。
圖3 AD7606時序圖
數據緩存模塊采用DDR3 SDRAM 作為高速緩存單元,完成FPGA 對eMMC 存儲模塊進行寫操作時的數據緩存。該模塊選用Micron 公司型號為MT41 J128M16HA 的DDR3 芯片,其顆粒容量為2 GB,時鐘頻率為200 MHz,突發(fā)長度為8,數據位寬為16 bit。芯片內部由8個Bank組成,Bank的地址總線為BA[2∶0],數據總線為DQ[15∶0]。每個Bank 的行列地址線為A[13∶0],其中行地址復用A0-A13,列地址復用A0-A9,其外圍電路原理圖如圖4 所示。
圖4 DDR3外圍電路原理圖
CLK 為時鐘線,為增強對共模噪聲的抵抗能力,故采用差分時鐘的方式;將DDR3 芯片的地址總線和部分控制總線上拉至VTT;VDD 為DDR3 芯片的電源電壓,采用1.5 V 電源供電,VDDQ 為DDR3 芯片I/O 口的驅動電壓,也采用1.5 V 電源供電;VREFCA為DDR3 芯片地址總線、控制總線的參考電壓,VREFDQ 為DDR3 芯片數據總線的參考電壓,并連接至VREF 且通過0.1 μF 的電容濾波。
為簡化設計,降低開發(fā)周期和工作量,軟件設計采用Xilinx 公司提供的DDR3 控制器MIG IP 核,通過MIG IP 核可以非常方便地讀寫DDR3 芯片。DDR3控制器MIG IP 核包含三部分:用戶接口模塊、存儲器控制模塊、DDR3 物理接口模塊,F(xiàn)PGA 主控模塊只需對接用戶接口模塊就可以完成DDR3 芯片的讀寫控制[14]。邏輯結構圖如圖5 所示。
圖5 數據緩存模塊邏輯結構圖
數據緩存模塊采用讀寫雙FIFO 將DDR3 讀寫分離。當DDR3 讀寫模塊中寫FIFO 的數據量大于或等于128 時,會產生Burst 寫請求信號,F(xiàn)PGA 主控模塊向DDR3 控制器發(fā)送數據寫命令,將寫FIFO 中的數據寫入DDR3 存儲芯片中。數據讀操作與寫操作類似,當FPGA 主控模塊接收到Burst讀請求信號時,將DDR3 存儲芯片中的數據讀出至讀FIFO 中。
雖然百色芒果“農超對接”的經營模式已經在部分農副產品被廣泛應用和推廣,雖然電商、微商、快遞行業(yè)快速發(fā)展,但因破損率高、包裹賠率大,仍沒有快遞企業(yè)愿意承接鮮葡萄散客零買的訂單。但由于葡萄鮮果的特殊性,廣西快遞企業(yè)不受理和接收葡萄快遞包裹的訂單,電商物流在葡萄鮮果產業(yè)中的應用無法獲得有效推廣和實施。
eMMC 存儲模塊選用SanDisk 公司型號為SDINBDA4-128G 的eMMC 存儲芯片,支持eMMC5.1協(xié)議與HS400 總線速度模式,數據讀寫速度最快可達到400 MB/s,eMMC 芯片的外圍電路原理圖如圖6所示。
圖6 eMMC外圍電路原理圖
其中,VCC 為NAND Flash 單元及其I/O 口電源電壓,采用3.3 V 供電;VCCQ 為內存控制器內核及MMC I/O 口電源電壓,采用1.8 V 供電;DAT0-DAT7為eMMC 芯片的雙向數據線,用于FPGA 主控模塊和eMMC 芯片之間的數據傳輸;CMD 為eMMC 芯片的雙向命令線,用于FPGA 主控模塊和eMMC 芯片之間的命令發(fā)送與應答;CLK 為時鐘信號線,由FPGA 產生;RST_n 為eMMC 芯片的硬件復位端口,當FPGA主控模塊發(fā)送低電平信號時,復位eMMC 設備。VCC 和VCCQ 分別通過4.7 μF、100 nF 的電容進行濾波處理,數據線DAT0-DAT7 通過10 kΩ的電阻上拉至VCCQ,命令線CMD 通過4.7 kΩ 的電阻上拉至VCCQ,RCLK 通過10 kΩ的電阻下拉至GND。
4.2.1 初始化
在eMMC 設備讀寫數據之前,首先需要進行初始化操作,匹配eMMC 設備的信息,為其分配相對應的設備地址,并設置其速度模式、數據位寬等[15]。系統(tǒng)選用高速SDR 速度模式進行數據傳輸,數據傳輸過程中時鐘頻率為50 MHz,數據位寬為8位[16]。eMMC 初始化流程圖如圖7 所示。
圖7 eMMC初始化流程圖
eMMC 初始化具體操作流程為:1)發(fā)送eMMC 設備復位命令CMD0,復位eMMC 設備,進入空閑(Idle)狀態(tài);2)發(fā)送OCR 寄存器獲取命令CMD1,匹配工作電壓和尋址模式,進入準備(Ready)狀態(tài);3)發(fā)送CID寄存器獲取命令CMD2,獲取設備信息,進入設備識別(Identification)狀態(tài);4)發(fā)送RCA 分配命令CMD3,對eMMC 設備進行地址分配,進入設備待機(Standby)狀態(tài);5)發(fā)送CMD9 命令,獲取CSD 寄存器的值,得到eMMC 設備的芯片容量、數據塊長度等信息[17];6)發(fā)送設備選定命令CMD7,選中eMMC 設備,進入傳輸(Transfer)狀態(tài);7)分別發(fā)送參數不同的CMD6命令,切換eMMC 芯片的輸入時鐘,設置eMMC 芯片的工作模式、總線寬度等;8)FPGA 主控模塊向eMMC芯片發(fā)送CMD19 命令,對eMMC 芯片開始總線測試,當FPGA 主控模塊接收到eMMC 芯片返回的響應時,發(fā)送總線測試數據;9)FPGA 主控模塊再次向eMMC芯片發(fā)送CMD14 命令,讀取eMMC 芯片返回的數據,然后判斷數據是否正確,若正確則進入傳輸(Transfer)狀態(tài),若錯誤則重新進入空閑(Idle)狀態(tài)。
4.2.2 數據寫操作
eMMC 芯片的數據寫操作包含單塊寫、多塊寫兩種方式,該系統(tǒng)采用單塊寫方式[18]。eMMC 數據寫流程如圖8 所示。數據寫操作開始后,F(xiàn)PGA 主控模塊向eMMC 設備發(fā)送CMD16 命令配置eMMC 設備的數據塊長度為512 B。然后FPGA 主控模塊發(fā)送CMD24 單塊寫命令,若eMMC 設備響應錯誤或超時,F(xiàn)PGA 主控模塊則再次發(fā)送該命令。當命令響應正確時,F(xiàn)PGA 主控模塊往eMMC 設備中寫入數據及CRC 校驗值,eMMC 設備內部同樣會對寫入的數據進行校驗。若FPGA 主控模塊和eMMC 設備的CRC校驗結果不一致,則需要重新發(fā)送CMD24 單塊寫命令,若校驗通過,則發(fā)送設備狀態(tài)查詢命令CMD13。當FPGA 主控模塊檢測到Busy 信號為高電平時,則繼續(xù)發(fā)送設備狀態(tài)查詢命令CMD13,直到FPGA 主控模塊檢測出Busy 信號為低電平時,表示eMMC 設備單塊寫操作完成。
圖8 eMMC數據寫流程圖
4.2.3 數據讀操作
eMMC 設備數據讀操作與寫操作類似。數據讀操作開始后,F(xiàn)PGA 主控模塊向eMMC 設備發(fā)送CMD16 命令配置eMMC 設備的數據塊長度為512 B。然后發(fā)送包含讀起始地址參數的CMD17 單塊讀命令,若響應錯誤或超時,F(xiàn)PGA 主控模塊則再次發(fā)送該命令。FPGA 主控模塊從eMMC 設備中讀取的單塊數據包含CRC 校驗值,F(xiàn)PGA 主控模塊將讀取的數據進行CRC 校驗,然后將FPGA 主控模塊的校驗值與eMMC 設備的校驗值進行比對[19]。若校驗結果一致則表明讀取的數據正確,eMMC 設備單塊讀操作完成;若校驗結果不同,則需要重新發(fā)送CMD17單塊讀命令。
為了驗證系統(tǒng)的功能及可靠性,首先利用Vivado軟件自帶的在線邏輯分析儀分別對數據采集模塊、eMMC 存儲模塊進行了調試與分析,然后對整個系統(tǒng)進行了實驗測試。
將數據采集模塊接入峰值為5 V、頻率為10 kHz的正弦波信號,通過在線邏輯分析儀顯示出各個信號的變化情況以及各個通道的數據波形。數據采集模塊邏輯分析圖如圖9 所示。
圖9 數據采集模塊邏輯分析圖
eMMC 存儲模塊寫入的數據通過計數器生成自加數來模擬產生,有利于發(fā)現(xiàn)數據傳輸中是否出現(xiàn)錯誤。eMMC 存儲模塊的數據寫邏輯分析圖如圖10所示,數據讀邏輯分析圖如圖11 所示。當寫請求信號(wr_burst_data_req)拉高時,eMMC 數據線使能信號(emmc_data_oe_o)拉高,eMMC數據線(emmc_data_o)先變?yōu)榈碗娖皆僖来螌懭霐祿?,寫入數據塊的地址(wr_burst_addr)為0x64。當讀請求信號(rd_burst_data_req)拉高時,eMMC 數據線(emmc_data_i)先變 為低電平,再依次讀出數據。
圖10 eMMC數據寫邏輯分析圖
圖11 eMMC數據讀邏輯分析圖
首先,在8 個通道的輸入端分別接入-1 V、+1 V、-2 V、+2 V、-2.5 V、+2.5 V、-3 V、+3 V 的標準電壓信號,通過采集存儲系統(tǒng)多次測量計算出其實際測量電壓均值,并將測量電壓均值與標準電壓值進行對比,結果如表1 所示。從表中可看出其相對誤差范圍在0.2%以內。
表1 標準值和測量值對比表
然后,利用信號發(fā)生器產生電壓峰值為5 V、頻率為10 kHz 的正弦波信號接入系統(tǒng)的信號輸入端,通過讀數盒將存儲在eMMC 設備中的數據讀取到上位機中,并顯示出采集的模擬信號,其波形如圖12所示。從圖中可以看出,該同步數據采集存儲系統(tǒng)可以準確采集并存儲電壓峰值為5 V、頻率為10 kHz的正弦波信號,表明該系統(tǒng)具有可靠的傳輸性能。
圖12 上位機波形顯示界面
文中介紹了一種基于FPGA 和eMMC 的多通道同步數據采集存儲系統(tǒng),用于采集并存儲某飛行器邊界層溫度、壓力等參數。選用單片多通道同步采樣ADC,實現(xiàn)了8 通道模擬的同步采集,保證了系統(tǒng)通道間的同步性;選用eMMC 作為存儲單元,實現(xiàn)了長時間、大容量的數據存儲,也解決了傳統(tǒng)以Flash為存儲單元的復雜的壞塊檢測與系統(tǒng)管理等問題。該系統(tǒng)具有測量誤差小、存儲容量大、存儲速度快、集成度高、可擴展性強等特點。測試結果表明,該系統(tǒng)能夠同步采集存儲及顯示8 通道模擬信號,采樣頻率為200 kHz,模擬輸入范圍為±5 V,誤差范圍可控制在0.2%以內,具有良好的可靠性和擴展性。