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