王代華,賈鵬程,趙志國,馬竹新
( 1.中北大學 儀器科學與動態(tài)測試教育部重點實驗室,太原 030051;2.中北大學 電子測試技術國家重點實驗室,太原 030051;3.晉西工業(yè)集團有限責任公司防務裝備研究院,太原 030051)
在航空航天及各類工業(yè)作業(yè)中,各類信息常需通過串口進行現(xiàn)場傳輸存儲以便后續(xù)準確分析[1]。但隨著各類控制系統(tǒng)規(guī)模的不斷增大,串口采集的信息種類也越來越多[2]。對大容量多通道串口數(shù)據的采集存儲方案也提出了關鍵數(shù)據的優(yōu)先定位和讀取、小體積、低誤碼率及環(huán)境適應等要求。
近年來NAND Flash以其非易失性、高可靠性、寬溫度范圍成為大容量存儲介質的首選[3]。通常在Flash作為多通道系統(tǒng)存儲單元的場合中,多通道數(shù)據需按照一定的幀格式順序寫入Flash,離線分析時也按此幀格式進行通道區(qū)分和處理[4]。這種方法需遍歷存儲器的所有地址數(shù)據,在取出數(shù)據后再進行二次區(qū)分處理。而實際經驗表明:各類信息的數(shù)據輸出并非持續(xù)整個采集時段,甚至關鍵數(shù)據只是全部數(shù)據的某一段或幾段;當只有少量通道工作時,幀格式存儲的方案在讀取時仍需遍歷全部地址和數(shù)據,造成存儲資源的不均衡使用且降低工作效率;當多通道同時工作時,若因某通道故障或者數(shù)據包流速不規(guī)則,幀結構存儲方法易造成數(shù)據的覆蓋或NAND Flash以默認的高電平邏輯填補,給數(shù)據分析造成困擾[5]。
在某機載慣導系統(tǒng)6路RS232串口數(shù)據的存儲系統(tǒng)設計中,要求4路波特率為 115 200 bps,2路波特率 230 400 bps,持續(xù)采集時長不低于4 h,且需低誤碼率與可選數(shù)據段讀取。根據以上要求該系統(tǒng)采取了以FPGA(現(xiàn)場可編程門陣列)為控制核心,以NAND Flash為存儲單元作為實施方案,并設計了以查找頁為核心的讀取方案,用戶只需指定通道和時間區(qū)間即可將目標數(shù)據取出,給數(shù)據的高效處理及目標定位提供下位機方案。
串口數(shù)據采集存儲系統(tǒng)主要由接口模塊、FPGA數(shù)據處理模塊、存儲模塊組成,系統(tǒng)總體設計如圖1所示。其中接口模塊包括RS232串口與USB接口,RS232串口負責邏輯電平的轉換與數(shù)據傳輸,USB接口負責上下位機的通信;FPGA模塊起到數(shù)據的串并轉換、通道地址分配、NAND Flash控制和人機交互的作用;存儲模塊以NAND Flash為介質,按采集對象的數(shù)據量選取芯片為鎂光公司的MT29F16G08AB,其結構由4 096個連續(xù)塊構成,每塊分128頁,單頁可存儲4 kB數(shù)據量。
其整體操作流程如下:首先系統(tǒng)安裝并上電,采集存儲系統(tǒng)執(zhí)行初始化和自檢操作;操作完成后,系統(tǒng)處于待記錄狀態(tài),此時前端多通道串口總線接收的數(shù)據由FPGA處理并導入Flash存儲單元;飛行任務結束后,上位機通過USB將數(shù)據回讀至計算機。
圖1 系統(tǒng)總體設計框圖
為滿足機載環(huán)境下串口數(shù)據的可靠性和靈活性要求,本系統(tǒng)主要從軟件層面展開研究,結合FPGA并行處理數(shù)據的優(yōu)勢,從串口數(shù)據的采集、傳輸、存儲邏輯和數(shù)據段的選讀角度進行關鍵技術設計。
在外界環(huán)境擾動的影響下,串行總線上的數(shù)據傳輸可能發(fā)生誤比特情況,通常這種誤比特表現(xiàn)為總線上串入浪涌或毛刺。在串口數(shù)據的捕獲處理上,雖然可在硬件上采取隔離式接口轉換芯片,防范電壓尖峰和接地回路的影響,但保險起見,也需要在軟件設計加入防抖措施,以提高串口的抗干擾能力,降低誤比特率[6]。
如圖2所示,通常串口數(shù)據捕獲采用滑窗的形式,即在固定波特率條件下,對總線上流過的每位數(shù)據進行判斷采樣[7]。若數(shù)據位寬為TW,則采用高出很多倍的采樣時鐘采集該位寬中間的極性電平,并將此電平進行串并轉換解析為易于存儲和傳輸?shù)牟⑿袛?shù)據。本系統(tǒng)在捕獲單位串口數(shù)據時,多次采集并統(tǒng)計所有采集到的電平樣本的數(shù)量,通過分析樣本的高低電平分布情況,判斷該數(shù)據位為高邏輯電平,還是低邏輯電平。
從統(tǒng)計原理出發(fā),收集的樣本量越大,結論推斷的可置信程度越高。同理,在采樣系統(tǒng)中,若提高了接口的采樣率,增加單位時間內接口采樣的樣本數(shù),通過樣本數(shù)的概率分布情況就可以很有效地揭示數(shù)據的真實性,準確判斷串口極性電平[8]。
圖2 串口數(shù)據捕獲處理示意圖
6通道波特率最高為230 400 bps,20 MHz的主控時鐘下Flash的全速寫入速度為4.07~10.11 MB/s,遠高于6路RS232串口的數(shù)據量115 KB/s。但為避免多個串口主動同時“搶占”Flash接口而導致數(shù)據丟幀,本文引入2級緩存結構,將主動“搶占”轉換為被動入棧方式。
在FPGA內部有豐富的塊RAM資源和IP核供使用,利用IP核生成FIFO(先入先出的雙端口緩沖器)有助于提高代碼的穩(wěn)定性和效率[9]。二級FIFO緩存結構如圖3所示,各級FIFO深度為8k,分配工作如下:各通道第1級FIFO緩存來自串并轉化后的8位并行數(shù)據,當有第1級FIFO空間半滿時,將該FIFO內4k數(shù)據全部取出并寫入第2級FIFO緩存。在Flash處于可頁編程狀態(tài)時,數(shù)據立即寫入Flash,2級FIFO清空。由于Flash頁編程繁忙時間tPROG為200~600 μs,F(xiàn)IFO的半滿操作可保證在寫入Flash期間不會有任何一級FIFO溢出,避免了競爭,實現(xiàn)了Flash寫操作的緩存處理。
圖3 二級FIFO緩存結構示意圖
針對多通道數(shù)據的讀寫與Flash管理機制,系統(tǒng)主要從以下三方面展開對NAND Flash存儲邏輯設計。
1) Flash地址指定通道方法。如表1所示,該方法將通道號與頁地址建立映射,并將頁地址指定給通道,即一頁只存儲一個通道的數(shù)據,可以形象的描述為按“頁格式”進行存儲。在寫操作時,當二級FIFO接收到某通道的4K數(shù)據時,F(xiàn)PGA按此格式進行頁地址指定。在讀操作時,單通道數(shù)據可根據該映射關系從對應空間內取出。MT29F16G08AB內每塊分128頁,每8頁即可完成一個循環(huán),單塊構成16次循環(huán),按此方式便將塊內地址劃分為6個空間,各通道數(shù)據互不影響,相當于每個通道都有一個獨立的空間[10]。
表1 頁查找
2) 數(shù)據附屬信息記錄。在多路數(shù)據按對應空間讀寫時,為保證可靠性和靈活性,分空間內的數(shù)據起始位置、空間大小以及Flash壞塊信息等作為附屬信息也需一并記錄。由于Flash第一塊在出廠時認定合格,故將該塊單獨設置為標記塊以記錄數(shù)據附屬信息。當?shù)谝粔K因多次擦除成為無效塊時,則尋找下一個好塊設為標記塊。系統(tǒng)中NAND Flash操作流程如圖4所示。
圖4 Flash操作流程框圖
當存儲系統(tǒng)進入上電準備狀態(tài)時,需執(zhí)行必要的復位和初始化操作,隨后FPGA讀出標記塊內的附屬信息,F(xiàn)lash進入工作狀態(tài)并等待指令。在自檢命令下達后,執(zhí)行無效塊檢測、擦除操作與更新壞塊信息。在讀寫操作時,數(shù)據需經過ECC校驗處理后方可寫入Flash;讀寫結束后,各通道附屬信息開始更新。
3) 地址更新控制。由于NAND Flash讀寫操作以頁為基礎單位、擦除操作以塊為單位,系統(tǒng)針對不同需求建立了Flash的地址更新控制器,圖5為地址更新控制器結構框圖,主要由頁地址控制、塊地址控制、和壞塊判斷構成。
圖5 地址更新控制器結構框圖
頁地址控制主要用于數(shù)據與附屬信息的讀寫,無論是記錄附屬信息還是讀寫數(shù)據,初始地址都為上電時設置的對應頁。在讀寫階段,若當前頁操作完畢,則準備好下一個對應頁繼續(xù)執(zhí)行; 塊地址控制用于塊地址更新,在自檢階段需順序檢測、擦除所有塊;在Flash讀寫階段,若當前塊操作完畢后,則順序開辟下一個好塊以做準備。壞塊判斷作用于塊地址需要更新的場合,讀寫階段的每一塊都需要與讀出的壞塊表進行對比,直到判斷為好塊方可繼續(xù)執(zhí)行。
為實現(xiàn)關鍵數(shù)據的快速定位與靈活讀取,除按通道順序讀數(shù)外,系統(tǒng)另設計了數(shù)據包尋址法和頁地址直接尋址法作為數(shù)據段的快速選讀手段。數(shù)據的讀取流程如圖6所示,在每次數(shù)據回讀時,存儲系統(tǒng)都會判斷所選讀取方式和通道,再通過計算起始頁地址將對應數(shù)據段導出。
圖6 數(shù)據段讀取流程框圖
數(shù)據快速選讀的核心為根據回讀參數(shù)計算關鍵數(shù)據的起始頁地址。如圖7串口數(shù)據讀取軟件所示,在數(shù)據包尋址法中,需輸入數(shù)據包的波特率、容量、頻率和起始時間參數(shù),其中波特率、包容量、頻率可計算出平均寫入速率,結合輸入的起始時間便可得出起始地址。在頁地址直接尋址法中,直接輸入起始地址即可將對應地址的數(shù)據段讀出。
圖7 串口數(shù)據讀取軟件
多通道寫入功能測試是為驗證各通道的數(shù)據寫機制是否正常,同時也是對系統(tǒng)設計原理以及地址指定通道邏輯的綜合考量。在多通道數(shù)據寫入機制測試中,用FPGA分頻得出的相應波特率發(fā)送正弦波數(shù)字信號(16位)、用系統(tǒng)6通道同時記錄該信號并順序從第一頁開始讀出,結果如圖8所示: 其中CH1~CH4數(shù)據一致,CH5與CH6波形一致且數(shù)據量為前4通道的兩倍,符合波特率設定。在地址指定通道的方式下,各通道各司其職,F(xiàn)lash地址空間分區(qū)正常,數(shù)據存儲機制按表1格式正常執(zhí)行。
圖8 寫入機制測試結果曲線
在驗證各通道數(shù)據存儲系統(tǒng)數(shù)據的完整性實驗過程中,為清晰檢測數(shù)據存儲和傳輸過程的丟幀現(xiàn)象,用FPGA循環(huán)生成1~255遞增隨后遞減至1的508bytes數(shù)字鋸齒波傳輸給6各通道并寫入Flash,并用USB接口將第1通道數(shù)據讀出。打開上位機接收到的數(shù)據,圖9為某塊前兩頁的鋸齒波形,圖10為該波形在跨頁銜接部分的數(shù)據,可知:在單位頁的空間內,該函數(shù)共產生8個周期余32byte,地址為與理論計算結果一致;且數(shù)據的跨頁銜接未發(fā)生溢出或丟失現(xiàn)象,數(shù)據完整可靠。
圖9 局部鋸齒波形
整體數(shù)據檢驗測試是測試存儲系統(tǒng)全通道長時間工作的整體誤碼率,同時也是對采集存儲系統(tǒng)可靠性與穩(wěn)定性的綜合考量。為達到驗證目的,搭建了如圖11所示的測試平臺:其中PC端與采集存儲系統(tǒng)的某通道采用串口總線連接,PC端調試助手以4 096字節(jié)為一組不斷向采集存儲系統(tǒng)發(fā)送隨機數(shù)據。采集系統(tǒng)其他通道按該隨機數(shù)據自發(fā)送與自接收。數(shù)據發(fā)送停止后,調試助手同樣以4 096字節(jié)為一組讀取任一通道存儲單元內數(shù)據,并與預置隨機數(shù)據對比。
圖10 鋸齒波數(shù)據完整性分析界面
圖11 測試實驗平臺示意圖
為對照測試結果,調試助手保留了源隨機數(shù)據記錄,并與讀出數(shù)據進行對比分析,圖12為某頁測試結果。可知:采集系統(tǒng)經長時間工作后,源數(shù)據與接收數(shù)據仍保持一致,該通道無出現(xiàn)誤比特的現(xiàn)象,滿足了預期要求,達到多路串口同時采集及存儲的目的,并驗證了存儲模型的正確性。
圖12 整體數(shù)據檢驗測試界面
本系統(tǒng)以多通道串口系統(tǒng)的新存儲要求展開研究,以FPGA為主控核心設計了6通道RS232串口數(shù)據的采集、緩存及存儲系統(tǒng)。同傳統(tǒng)寫入方法相比,系統(tǒng)通過地址指定通道的思想將單片F(xiàn)lash空間分區(qū),實現(xiàn)了各通道地址上的相互獨立。最后通過數(shù)據寫入機制測試、完整性測試和整體數(shù)據檢驗測試驗證了存儲模型的可行性,測試結果表明該系統(tǒng)采集和存儲數(shù)據的準確率高,處理多通道大容量數(shù)據靈活、簡便。