趙俊江++張會新



摘 要: 針對高速圖像采集存儲要求,設計一種高速大容量存儲裝置。該裝置以FPGA為主控芯片,以FPGA內部集成的高速串行收發器Rocket I/O GTP作為圖像數據接收單元,通過FPGA控制MCB硬核操作2片DDR2 SDRAM構成兵乓緩存單元,以32片NAND FLASH組成的陣列為存儲單元,采用交叉雙平面頁編程技術對FLASH進行數據存儲。實現了對3個速率為50 MB/s的圖像通道數據實時采集存儲。通過對FLASH陣列中的圖像數據進行回讀分析,測試結果無誤,驗證了系統功能的有效性和可靠性。
關鍵詞: 圖像存儲; Rocket I/O GTP; DDR2 SDRAM; 乒乓緩存; 交叉雙平面頁編程
中圖分類號: TN911.73?34; TP274 文獻標識碼: A 文章編號: 1004?373X(2017)12?0144?04
Abstract: Aiming at the high?speed image acquisition and storage requirements, a high?speed and large?capacity storage device was designed. The FPGA is regarded as the main?control chip of the device. The high?speed serial transceiver Rocket I/O GTP integrated into FPGA is taken as the image data receiving unit. The MCB hard?core is controlled with FPGA to operate two chips of DDR2 SDRAM to compose the ping?pong buffer unit. The array composed of 32 NAND FLASHs is employed as the memory cell. The interleave two?plane page programming technology is used to storage data in FLASH. The real?time data acquisition and storage of three image channels in the speed of 50 MB/s were realized.. The read?back analysis is performed for image data in FLASH array to verify the validity and reliability of the system with correct test results.
Keywords: image storage; Rocket I/O GTP; DDR2 SDRAM; ping?pong buffer; interleave two?plane page programming
隨著數字化信息時代的到來,高速信息采集存儲的要求越來越高,尤其是在航空、航天領域。在飛行器的試驗、改進過程當中,需要對環境模擬量、飛行狀態做出準確分析,這就需要對試驗過程中大量的視頻圖像進行采集和存儲,通過大量的視頻圖像和試驗數據分析來對飛行器改進提供可靠的依據。如今由于對飛行器的各項性能指標參數要求越來越高,需要記錄的視頻圖像數據越來越大,速度越來越快,因此設計一種具有接收速度快、容量大、體積小數據存儲裝置勢在必行[1]。
本文旨在設計一種高速圖像數據存儲裝置。以FPGA作為主控芯片,采用FPGA內部集成的高速串行收發器Rocket I/O GTP作為接收單元,相較于使用LVDS串化芯片,集成度更高、速度更快,單個鏈路的數據速率可達3.125 Gb/s,同時,Aurora協議 IP 核集成在Rocket I/O中,也使得可靠性更高,提高了開發效率[2];流水線操作實現2片DDR2 SDRAM的乒乓操作也使得緩存高速圖像數據流成為可能。32片NAND FLASH構成的存儲陣列,實現了大容量存儲。該裝置具有很好的發展前景,能夠滿足航空、航天及工業等領域的大數據量記錄要求。
1 總體設計方案
結合本系統圖像數據傳輸要求以及當前存儲器的發展趨勢,圖像接收部分采用Rocket I/O GTP為解決方案,高速緩存單元對2片DDR2 SDRAM進行乒乓操作,實現高速數據流的緩存。32片FLASH存儲陣列作為圖像數據存儲單元,對8片FLASH進行并行操作,通過流水線設計對4組存儲芯片同時進行并行讀、寫和擦除操作,讀寫速率約可達240 MB/s實現高速存取。總體設計思路為:從接收單元采集高速圖像數據,將數據進行串并轉換轉化成并行數據寫入到高速緩存單元;緩存單元通過乒乓操作對高速數據流進行緩存,保證數據流在存儲單元中的實時性和完整性;并行操作32片FLASH組成的存儲陣列,對緩存單元輸出的高速數據流進行存儲,實現圖像的實時高速存儲。總體功能組成原理框圖如圖1所示。
本系統要求實現對三路高速圖像數據的采集存儲,圖像傳輸接口采用LVDS接口,速率達393.216 Mb/s,圖像像素為640×480,速率為80 f/s。每一路圖像的帶寬為50 MB/s,總的存儲量達到128 GB,滿足連續存儲和超閾值存儲兩種模式要求。本系統用到的關鍵技術主要有:高速圖像的接收單元設計;高速數據流的乒乓緩沖;大數據量的實時存儲。
2 關鍵技術
2.1 圖像接收單元
通常的LVDS解串芯片增加了系統功耗以及布線難度。本方案中選用的FPGA內嵌了Rocket I/O GTP的硬核IP模塊,采用CML,CDR,8 B/10 B線路編碼和預加重等技術,最大限度地減小信號的衰減、時鐘扭曲,簡化同步轉化輸出,保證信號完整性。Rocket I/O支持多種通信協議標準,包括Aurora、PCI?E、光纖通道、千兆以太網等。本系統中通過預設的Aurora協議實現通用標準接口,其鏈路結構圖如圖2所示。
Aurora IP 核內嵌在Rocket I/O 模塊中,IP核的參數化設計使得用戶調用更加方便,提高了信號的可操作性。通過調用IP核改變Rocket I/O 中復雜的控制結構,硬核控制模塊通過ISE中的CORE Generator 進行創建和配置,包括8 B/10 B編碼選擇、COMMA字符對齊等參數設置[3?4]。本系統用verilog HDL硬件描述語言對Rocket I/O GTP收發器進行封裝,封裝后的模塊類似于一個FIFO接口,封裝后的模塊原理框圖如圖3所示。
圖3中gtp_module為頂層模塊,內部分為兩個模塊:tx_module(發送模塊)和rx_module(接收模塊)。tx_module內部包含TCFIFO和TXFIFO,TCFIFO功能是接收并解析命令,TXFIFO則接收將要發送的數據。rx_module負責緩存接收到的數據。發送數據時,首先判斷TCFIFO和TXFIFO滿標志,非滿則發送數據,并寫入命令,通信協議中規定了發送數據的長度、接收類型,然后寫入將要發送的數據。接收數據與發送數據過程類似,命令解析之后用戶可以從RXFIFO讀出接收的數據。
2.2 高速緩存單元設計
本系統中的存儲器接收的圖像速率較快,必須通過大容量高速緩存單元對數據進行緩存。該存儲器還要求超閾值采集模式,即要記錄超閾值時刻前后1 s的數據,三個圖像通道總數據量為150 MB/s,那么存儲器就必須要有大于150 MB的緩存單元。本文中由2片容量為256 MB的DDR2 SDRAM構成乒乓緩存,通過流水線設計完成FPGA對2片DDR2 SDRAM的乒乓操作。通過流水線操作可以充分利用電路之間的等待時間,高效完成海量實時數據的無縫緩沖和傳輸[5]。DDR2 SDRAM乒乓緩存單元結構如圖4所示。
FPGA中集成了控制DDR2 SDRAM的硬核控制器MCB(Memory Controller Bank),通過MIG生成的IP核對MT47H256M8進行控制。然后用Verilog HDL硬件描述語言對該控制器進行封裝,封裝后的模塊近似于標準的FIFO接口,分為讀通道、寫通道和命令通道,用戶只要根據空、滿信號對這兩個通道進行操作即可[6]。
系統上電后,DDR2 SDRAM控制器首先發送指令完成DDR2 SDRAM的初始化,然后進入空閑狀態。當有圖像數據流輸入時,數據邏輯控制器先將數據寫入FIFO1并等待SDRAM1控制器寫標志位觸發,一旦觸發就開始向SDRAM1控制器中寫數據,并對寫地址進行計數,同時向SDRAM1控制器發出讀請求,當達到設定的存儲容量時,控制器向數據邏輯控制器發送滿信號暫停寫入;在開始讀取SDRAM1中的數據的同時向SDRAM2發出寫請求,一但收到SDRAM2非空的信號,則開始將數據寫入到FIFO2中,同時等待SDRAM2的讀請求;當從SDRAM2中讀取數據時,數據邏輯控制器向SDRAM1發送寫請求,這樣通過流水線設計思想保證數據連續地輸入/輸出,實現數據的無縫緩沖。
2.3 圖像數據存儲
NAND FLASH寫速度和擦除速度遠高于NOR FLASH,且數據保存時間可達10年,存儲高速大容量數據首選NAND FLASH。本文中選用的NAND FLASH芯片K9WBG08U1M內部有4 GB的存儲plane,每個plane包含2 048塊和4 KB的寄存器,每塊為64頁,這就允許芯片在頁編程的同時進行塊擦除操作[7],內部結構見圖5。
NAND FALASH有頁編程(Page Program)、交叉雙平面頁編程(Interleave Two?plane Page Program)等存取方式。頁編程方式中,典型的頁編程時間為200 μs,最大需要700 μs。每頁為4 KB,寫周期最小為25 ns,寫完一塊的時間約為102 μs。寫完之后還需要200 μs的等待時間才能把數據寫入到FLASH中,平均寫入速度不超過12 MB/s,無法達到本系統要求。因此采用交叉雙平面編程方法,該方法是寫入數據速度最快的編程方法。這種編程方式基于流水線的工作原理,對K9WBG08U1M不同平面按節拍、時序進行操作,增大了數據流的吞吐量,加快緩存速度[8?9],具體的操作時序如圖6所示。進行交叉雙平面頁編程時,首先將FLASH內部分為4組, chip1中的plane0和plane1為第0組,plane2和plane3為第1組,chip2中的plane0和plane1為第2組,plane2和plane3為第3組,用Verilog編程過程中,定義了一個flag信號對4組存儲平面按照流水線操作思想進行平面切換,特別要注意的是,在使用交叉雙平面頁編程方法中,平面操作必須嚴格按照本文中的分組進行,不能出現如plane0與plane2或者plane0與plane3為一組的情況。當對第0組平面進行頁編程操作時,可以對另外3組的平面進行寫命令、數據和地址等操作,測試單片K9WBG08U1M的存儲速度最快為30 MB/s,對3組平面進行頁編程完成數據寫入時間為:
(6×4 096 B)÷30 MB/s=819.2 μs>700 μs
FLASH的最大頁編程時間為700 μs,在完成另外3組的寫命令、數據和地址操作以后,第0組的頁編程必然結束,這樣不同操作的時間恰好錯開,縮短了數據寫入FLASH的時間 ,提高了寫入速度[10?12]。存儲單元存儲數據時對8片FLASH進行同樣的寫操作,整體寫入速度約為240 MB/s,完全能夠滿足設計的要求。交叉雙平面頁編程如圖7所示。
3 系統功能測試及結果分析
本系統首先通過上位機軟件下發數據,模擬圖像格式發送數據給該存儲裝置,進行存儲,并通過USB 3.0讀取裝置獲取數據[13],并回傳給PC機用上位機軟件進行分析,構成一個閉環測試系統。下發的數據幀格式為:首先是2個字節的幀頭“14 6F”,中間為“01~FF”遞增數據,數據體結束后緊接著是4個字節的幀計數,幀尾是“EB 90”。每幀數據共263 B,部分數據如圖8(a)所示。
將NAND FLASH存儲陣列中的數據讀取并通過USB 3.0回傳給上位機同時將數據保存至計算機的硬盤。回讀的部分數據如圖8(a)所示,分析結果如圖8(b)所示,由軟件分析可得,共讀取了2 048 MB數據,總幀數為0x7C97D9,無誤碼及丟數情況,數據完全正確。
4 結 論
本文設計的高速圖像存儲裝置采用高速串行收發器Rocket I/O GTP的解決方案,進行圖像數據采集。Rocket I/O集成在FPGA中,高集成度也使得該存儲裝置的體積更小;通過FPGA內的硬核對2片DDR2 SDRAM進行乒乓操作實現高速數據流緩沖;而32片NAND FLASH存儲器構成存儲陣列進一步擴大了存儲量,也使得該存儲裝置的應用范圍進一步得到擴展,完成了數據接收、實時緩存和存儲,實現了預定設計目標。
參考文獻
[1] 趙林.大容量高速數據記錄器的設計與實現[D].太原:中北大學,2014.
[2] 張守將.基于Rocket I/O的高速數據傳輸系統研究[D].西安:西安電子科技大學,2013.
[3] 林振華.基于PCI?X和Rocket I/O的高速數據傳輸系統設計[J].現代雷達,2011,33(6):49?52.
[4] 李維明,陳建軍,陳星锜.基于Aurora協議的高速通信技術的研究[J].電子技術應用,2013,39(12):37?40.
[5] 劉杰,賽景波.基于DDR2 SDRAM乒乓雙緩沖的高速數據收發系統設計[J].電子器件,2015,38(3):650?654.
[6] 庾志衡,葉俊明,鄧迪文.基于FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計[J].微型機與應用,2011,30(4):34?36.
[7] 安航行,孟令軍,趙林,等.圖像數據遠距離傳輸及高速實時存儲技術[J].電視技術,2013,37(3):175?178.
[8] 魏敏,劉文怡,王金陵.基于交叉雙平面技術的圖像采集存儲系統[J].電視技術,2013,37(15):63?66.
[9] 朱知博.基于NAND FLASH的高速大容量存儲系統設計[J].現代電子技術,2011,34(8):170?173.
[10] 嚴帥.雙通道高速數據記錄器中關鍵技術的研究[D].太原:中北大學,2012.
(上接第147頁)
[11] WANG Lifeng, HU Shanqing, LIU Feng, et al. Design of high speed and large capacity storage module based on flash memory [J]. Computer engineering, 2011, 37(7): 255 ?261.
[12] 徐永剛,任國強,吳欽章.NAND FLASH高速圖像記錄壓力測試系統[J].紅外與激光工程,2013,42(10):2859?2864.
[13] 孟令軍,周之麗,文波,等.基于USB 3.0的LVDS高速圖像記錄系統的設計[J].電子器件,2015,38(4):812?816.