


摘要: 針對彈載記錄系統大容量、 高速率數據的記錄需求, 設計了一種基于Flash芯片的彈載記錄系統。 該系統以FPGA芯片為控制核心, 通過并行總線操作、 流水線操作等技術實現數據的高速存儲, 并利用下載軟件的多線程功能實現數據的快速下載。 具有存儲速率高、 可靠性高、 擴展性好等優點。
關鍵詞: 記錄系統; Flash芯片; USB接口; 無效塊管理
中圖分類號: TJ760.3; TP216.2文獻標識碼: A文章編號: 1673-5048(2016)05-0077-04
Abstract: In order to meet the requirement of recording system used in airtoair missile such as large capacity and high rate data, the design method of recording system for airtoair missile based on flash chip is introduced. The system takes the FPGA chip as the control core, through the parallel bus operation, pipeline operation and other technologies to achieve highspeed data storage, and the download software is used to achieve the fast download of data. This system has the advantages of high storage rate, high reliability and good expansibility.
Key words: recording system; flash chip; USB interface; invalidblock management
0引言
隨著空空導彈的發展, 彈載記錄系統在空空導彈研制過程中的作用越來越重要, 對彈載記錄系統的要求也越來越高, 高速、 大容量是目前彈載記錄系統的發展趨勢。 已應用到彈載記錄系統中的控制電路有PC104 CPU控制板、 FPGA和單片機(MCU), 存儲器有EEPROM、 DOC(Disk on Chip)、 CF卡存儲器和電子硬盤[1]。 但受采樣速率、 存儲容量、 價格成本等限制, 已無法滿足未來彈載記錄系統的需要。
近年來, 閃速存儲器(Flash Memory)作為固態存儲器以其獨有的特點得到越來越廣泛的應用, 其具有抗振動、 存儲密度大、 可擦寫、 非易失、 環境適應能力強以及命令、 地址、 數據線復用和接口便利等特點[2], 并且還有擦寫速度快、 單位存儲容量價格低和可靠性高等優點。
基于上述原因, 設計了一種基于Flash芯片的彈載記錄系統, 采用高速大容量Flash Memory芯片作為存儲器, 通過FPGA芯片作為控制和緩沖, 完成高速大容量數據的存儲, 并通過高速USB接口進行數據下載。
1系統組成
某項目對記錄系統的采集要求如下:
(1) 采集信號: 圖像信號、 模擬信號、 422信號;
(2) 采集速率: 不小于13.5 MB/s;
(3) 記錄時間: 不小于1 h;
(4) 下載速度: 不小于10 MB/s。
記錄系統主要由輸入接口電路、 二次電源電路、 FPGA芯片、 Flash存儲陣列、 USB下載接口電路和下載軟件等組成, 系統原理框圖如圖1所示。
航空兵器2016年第5期王暉: 基于Flash芯片的彈載記錄系統設計FPGA芯片是記錄系統的核心, 其產生的控制時序控制交換子、 A/D轉換器和Flash存儲陣列等協調有序工作, 準確采集數據并按照規定的幀格式將數據寫入Flash芯片。 在數據下載時將Flash芯片中的數據寫入USB接口芯片的FIFO中, 通過USB接口傳輸給計算機。
2主要技術
由于NAND型Flash芯片本身存在寫入帶寬低、 寫入速度慢、 存在無效塊等缺點, 因此必須通過合理設計和有效控制邏輯來克服上述缺點。 可以采用并行總線技術、 流水線編程技術來增加帶寬、 寫入速度和容量; 通過建立無效塊管理表, 避免對無效塊的操作; 通過USB接口設計、 多線程數據下載技術來提高數據下載速度, 從而實現高速、 大容量數據的可靠存儲。
2.1并行總線處理技術[3]
采用Micron公司的NAND型高速大容量固態存儲芯片MT29F64G08AJABA[4], 該芯片單片容量為8 GB, 頁面(Page Size)大小為(4 K+224)Byte, 頁面編程時間 (Page Program Time)典型值為230 μs, 塊大小(Block Size)為(5 124 K+8 K)Byte, 塊擦除時間(Block Erase Time)典型值為700 μs, 單片芯片的數據寫入速度約為5 MB/s。 該芯片只有8個I/O管腳, 命令、 地址和數據是通過分時復用來完成不同操作的, 通過控制信號區分命令和地址。
Flash芯片的傳統操作方式是存儲完一片Flash芯片后, 再進行下一片Flash芯片的操作, 存儲速度約為5 MB/s, 無法滿足高速數據的存儲要求。 通過并行總線處理技術可以很直觀地提高存儲速度, 即將N片Flash芯片并聯起來, 使用相同的控制線、 片選線和讀寫信號線, 構成Flash存儲陣列, 以此來提高系統讀寫帶寬和讀寫效率。
所設計的Flash存儲陣列采用4片Flash芯片并聯, 使用相同的控制線、 片選線和讀寫信號線, 構成一個32位帶寬的芯片組, 將4個芯片組串聯構成一個存儲速度20 MB/s以上、 容量128 GB的存儲陣列, 能夠滿足彈載記錄系統高速、 大容量數據存儲要求。
2.2流水線編程技術
MT29F64G08AJABA的內部由2片4 GB的Target(Target1, Target2)構成, 通過片選信號CE1/CE2進行選擇控制, 為提高Flash芯片的存儲速度, 可以采用流水線操作技術, 即時間復用。 數據存儲時對Target1, Target2進行乒乓操作, 當Target1加載完一頁數據后, 即進入自動編程狀態, 這期間不能進行其他操作, 只有當編程結束后, Target1恢復空閑狀態, 才能進行下一頁數據的加載。 在Target1編程期間, 同時對Target2執行下一頁數據的命令、 地址和數據加載。 當Target2編程期間, 同時對Target1執行一頁數據的命令、 地址和數據加載。 依次遞推, 可以實現對頁編程時間復用, 提高存儲速度。
在設計中, 單片Flash芯片的存儲速度約為5 MB/s, 運用流水操作技術的Flash芯片存儲速度將是單片Flash芯片存儲速度的2倍, 可達10 MB/s以上, 同時結合并行總線處理技術, 能夠滿足彈載記錄系統高速數據的存儲要求。
2.3Flash芯片無效塊管理
無效塊是指包含一位或者多位無效位信息的存儲塊[5], Flash芯片在出廠時就可能存在無效塊, 無效塊不允許進行擦除和編程操作, 因此在Flash芯片操作過程中, 需要建立一個無效塊管理列表, 將芯片內部的所有壞塊信息寫入列表中。 出廠時本身含有的無效塊廠家已經標明, 通過讀取每塊第一頁和第二頁的第4 096個字節來進行判斷, 如果均是“FFh”, 則認為是有效塊, 否則認為是無效塊[6]。 無效塊的判斷邏輯見圖2。
無效塊管理是在FPGA芯片內部開辟一個專門存儲無效塊信息的RAM, RAM的每個數據位與Flash芯片的每塊一一對應, “1”代表有效塊, “0”代表無效塊。 在對Flash芯片的每一塊進行操作之前, 需要先讀取RAM中對應此塊地址單元的信息, 如果發現是無效塊就跳過不進行操作, 然后再進行下一塊的判斷, 直至找到有效塊時再進行操作。 無效塊判斷流程見圖3。
設計中, Flash存儲陣列的無效塊信息存儲在Flash芯片第一塊第一頁中, 記錄系統加電后, 將無效塊信息讀出并寫入RAM中, 可以避免系統斷電后無效塊信息丟失。
2.4USB接口設計
記錄數據的下載、 清除通過計算機、 數據處理軟件和USB接口進行。 設計采用Cypress公司的通用USB2.0接口芯片CY7C68013A[7], 其內部包括USB2.0收發器、 串行接口引擎(SIE)和增強型51內核, 遵從USB2.0協議, 可提供高達480 Mbps的傳輸率。 CY7C68013A與外設有主/從兩種接口方式, Slave FIFO是從機方式, 外部控制器可以像對待普通FIFO一樣對芯片內的FIFO進行讀寫[8]。 主機向記錄系統發出讀無效塊信息、 讀工作信息、 讀數據、 擦除等操作命令, FPGA芯片根據命令進行相應的操作, 命令及其描述如表1所示。
2.5多線程數據下載
數據下載中首次使用多線程技術完成USB緩沖區的數據讀寫功能, 數據下載時, 調用讀線程下載USB緩沖區的數據, 通過信號量控制寫線程處于等待狀態; 當下載的記錄數據量達到預先設定的存儲文件大小時, 運行寫線程完成存儲文件的功能, 同時繼續讀線程完成數據下載。 和單線程讀寫數據文件相比, 讀線程和寫線程可同時運行, 節約了單線程讀寫文件時需要等待完成寫數據的時間, 減少了數據下載時間, 提高了程序運行效率。
3FPGA設計
FPGA芯片選擇Altera公司StratixⅡ系列的EP2S60F484I4, 該芯片有48 352個ALUTs, 334個I/O管腳, 內存總量2 544 192 bits, 12個PLL, 36個DSP blocks[9], 既作為控制器產生所需的邏輯和時序, 又作為輸入數據的緩存, 最后通過計算機USB接口實現人與系統的通信[10]。 輸入接口數據總線、 Flash存儲陣列的地址數據總線和控制總線、 USB接口的數據和控制總線都連接在FPGA芯片的I/O管腳上, 大大簡化了硬件電路。
3.1緩存FIFO的實現
由于輸入數據是突發式, 一段時間發送數據, 一段時間空閑, 因此需要利用EP2S60內部的M4K[11]存儲塊設置FIFO, 用于緩存輸入數據和編排幀格式。 Flash芯片是基于頁來讀寫的, 在每次通電寫入數據前需先寫入4個字節的包頭, 用于區分每次通電的起始位置, 用FIFO緩存數據。
在FPGA內部開辟五塊內存, 分別用于緩存模擬數據(緩存A)、 422數據(緩存B)、 圖像數據(緩存C)、 合并后的數據(緩存D)以及包頭數據(緩存E)。 當緩存D的數據達到預定值時, 產生標志信號, 數據存儲模塊根據標志信號從緩存D中讀取數據, 在第一組數據前添加包頭(表示每次加電的起始位置, 后續數據不加)存入緩存E, 然后再將數據寫入Flash存儲陣列。 當數據讀完后, 標志信號消失, 直至下一個標志信號出現, 數據存儲模塊繼續從緩存D中讀取數據, 存入緩存E并寫入Flash存儲陣列, 如此循環。 當寫滿一個有效塊后, 數據寫入下一個有效塊; 當寫滿一組Flash芯片后, 數據寫入下一組Flash芯片, 當所有Flash芯片寫滿后, 系統停止記錄。 在寫數據的過程中, 系統自動屏蔽Flash芯片的所有壞塊。 FPGA內部緩存如圖5所示。
3.2Flash的控制時序
Flash存儲陣列的控制時序由FPGA芯片產生, 通過片選信號選擇不同組的Flash芯片, 通過讀信號、 寫信號、 命令使能信號、 地址使能信號控制Flash芯片進行寫、 讀、 擦除等操作, 以完成數據記錄、 數據下載、 數據清除等功能。
Flash芯片的寫操作是以頁為單位進行, 首選寫入命令字80 h, 隨后寫入5個時鐘周期的地址, 并在WE的上升沿將4 096個字節的數據寫入數據存儲器中, 最后寫入頁編程確認命令字10 h以啟動存儲操作, 然后進入等待狀態(R/B=0), 當R/B=1時表示數據寫入成功, 可以進行下一次寫操作。
Flash芯片的讀取操作時序、 擦除操作時序與寫操作時序類似, 即依次寫入命令字、 地址、 確認命令字以啟動相應操作, 此處不再細述。
4系統實現
設計實際實現的彈載記錄系統采用4片Flash芯片(MT29F64G08AJABA)并聯構成1個芯片組, 4個芯片組串聯形成Flash芯片陣列, FPGA芯片采用EP2S60F484I4, USB接口采用通用接口芯片CY7C68013A, 輔以外圍信號的接口電路, 系統實現的主要指標如下:
(1) 準確采集圖像信號、 模擬信號、 422信號等;
(2) 存儲容量: 128 GB;
(3) 存儲速率: 不小于40 MB/s;
(4) 記錄時間: 不小于2 h;
(5) 下載速度: 不小于20 MB/s。
5結論
簡要介紹了Flash芯片在彈載記錄系統的應用, 以FPGA、 Flash芯片、 USB接口芯片構成了新型彈載記錄系統的核心, 設計中的記錄系統具有良好的擴展性, 通過增加Flash芯片的并聯數和位寬, 可以進一步提高存儲速度; 通過增加Flash芯片的串聯數, 可以擴展記錄系統的存儲容量, 以滿足未來記錄系統的要求。 隨著NAND型Flash芯片的發展, 其在彈載記錄系統中的應用將會越來越廣泛。
參考文獻:
[1] 王暉, 高先鋒. 彈載記錄系統的發展趨勢[J]. 遙測遙控, 2009(4): 69-72.
[2] 胡世明, 康懷祺, 滕云龍. 高速大容量存儲系統的應用設計[J].火控雷達技術, 2012(1): 34-38.
[3] 雷磊. NAND型Flash海量存儲系統的設計與實現[D].北京: 北京理工大學, 2008.
[4] Micron. 16Gb, 32Gb, 64Gb Asynchronous/Synchronous NAND Flash Memory Data Sheet[Z].Boise, Idaho:Micron Technology, Inc., 2011.
[5] 陸浩, 王振占.高速大容量固態存儲器設計[J].計算機工程, 2011, 37(15): 226-227.
[6] 朱知博. 基于NAND Flash的高速大容量存儲系統設計[J].現代電子技術, 2011(8): 170-173.
[7] Cypress Semiconductor Corporation. CY7C68013A EZUSB FX2LP USB Microcontroller[Z].San Jose, California: Cypress Semiconductor Corporation, 2005.
[8] 李強, 伍堅, 姚冬蘋. CY7C68013芯片的USB接口固件設計[J].單片機與嵌入式系統應用, 2006(10): 70-72.
[9] Altera Corporation. Stratix Ⅱ Device Handbook[Z]. San Jose, California: Altera Corporation, 2005.
[10] 韓茜, 羅豐, 吳順君. 高速大容量固態存儲系統的設計[J].雷達科學與技術, 2005(2): 110-114.
[11] 王誠, 吳繼華, 范麗珍. Altera FPGA/CPLD設計(基礎篇) [M].北京: 人民郵電出版社, 2011.