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