孫海波,吳瑞斌,王曉斌,邱 偉
(北京強度環(huán)境研究所 北京 100076)
在某些武器、飛行器飛行試驗中,需要對高速圖像進行長時間采集與存儲,同時要求設(shè)備小型化、低功耗,并能夠適應(yīng)高沖擊與振動環(huán)境。美國Vision Research公司研制的高速相機,可以支持分辨率為1920×1080、幀頻為490幀/s的圖像高速、長時間存儲。相比之下,國內(nèi)在該領(lǐng)域的研究還有一定的差距,長春光機所使用FPGA控制2塊IDE固態(tài)硬盤對Camera Link相機進行圖像存儲,實現(xiàn)了分辨率為640×480、幀頻為100幀/s的10位圖像數(shù)據(jù)存儲[1];中科院光電技術(shù)研究所采用PCI總線和SAS總線技術(shù)實現(xiàn)4塊固態(tài)硬盤組成的磁盤陣列,可實現(xiàn)150MB/s的高速圖像存儲,但是結(jié)構(gòu)復雜,功耗較大[2];多家單位采用NAND FLASH陣列存儲高速圖像,雖然能夠達到很高的存儲帶寬,但是設(shè)計復雜,同時需考慮壞塊、糾錯和損耗均衡的問題[3~5]。
本文介紹的高速圖像實時采編存儲系統(tǒng),采用FPGA的LVDS(Low-Voltage Differential Signaling)接口直接采集Camera Link接口工業(yè)相機的圖像數(shù)據(jù),無需采用專用接口芯片,降低了成本、體積和功耗。系統(tǒng)對圖像進行編碼,以便后期恢復圖像并檢驗是否丟幀,最后將編碼后的數(shù)據(jù)通過LVDS接口發(fā)送至數(shù)據(jù)存儲單元,實現(xiàn)高速圖像的長時間存儲。數(shù)據(jù)存儲單元采用文獻[6]介紹的基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng),并對該高速存儲系統(tǒng)進行改進,數(shù)據(jù)輸入端加入大容量DDR3 sdram緩沖數(shù)據(jù),可進一步提高數(shù)據(jù)吞吐量,最高存儲速度可以達到90MB/s。本系統(tǒng)可實現(xiàn)高速圖像的實時、長時間采編與存儲,并且體積小、功耗低,可適應(yīng)高沖擊與振動環(huán)境。
高速圖像實時采編存儲系統(tǒng)的組成如圖1所示。系統(tǒng)由Camera Link接口工業(yè)相機、圖像采編單元和數(shù)據(jù)存儲單元組成。圖像采編單元實現(xiàn)Camera Link接口工業(yè)相機的圖像采集和圖像編碼功能,并通過LVDS接口發(fā)送至數(shù)據(jù)存儲單元。數(shù)據(jù)存儲單元采用成熟的模塊化存儲系統(tǒng)[6],接收LVDS接口的數(shù)據(jù),并按照數(shù)據(jù)幀格式將數(shù)據(jù)存儲至SATA接口固態(tài)硬盤中。數(shù)據(jù)存儲單元通過千兆以太網(wǎng)接口完成存儲控制和數(shù)據(jù)上傳等功能。
圖1 高速圖像采編存儲系統(tǒng)的組成Fig.1 The architecture of high-speed image acquisition-coding and storage system
圖像采編單元的功能為實現(xiàn)圖像采集和編碼:采集Camera Link接口工業(yè)相機的圖像數(shù)據(jù),并將圖像數(shù)據(jù)按照數(shù)據(jù)存儲單元支持的數(shù)據(jù)格式進行編碼,最后通過LVDS接口發(fā)送至數(shù)據(jù)存儲單元。圖像采編單元采用Xilinx Spartan6 FPGA實現(xiàn),由以下幾個模塊組成:Camera Link接口模塊、圖像編碼模塊和LVDS數(shù)據(jù)發(fā)送模塊,如圖2所示。
各模塊的功能如下:Camera Link接口模塊實現(xiàn)Camera Link接口變換功能,將LVDS串行數(shù)據(jù)變換為并行數(shù)據(jù);圖像編碼模塊完成圖像數(shù)據(jù)的采集和圖像幀、數(shù)據(jù)幀的編碼功能;LVDS數(shù)據(jù)發(fā)送模塊將編碼后的數(shù)據(jù)幀通過LVDS接口發(fā)送至數(shù)據(jù)存儲單元。
圖2 圖像采編單元組成Fig.2 The architecture of image acquisition-coding unit
Camera Link是一個工業(yè)高速串口數(shù)據(jù)和連接標準,它是由多家數(shù)碼相機供應(yīng)商和圖像采集公司聯(lián)合推出的,目的在于解決數(shù)據(jù)傳輸速率問題。Camera Link標準定義了配套的標準工業(yè)接口器件,標準化了信號線類型,簡化了相機和圖像采集器的信號傳輸。Camera Link采用LVDS傳輸數(shù)據(jù),速度快,功耗低,抗噪聲效果好。Camera Link有三種傳輸模式:Base、Medium、Full,其中Medium和Full模式是Base模式的并行擴展,傳輸速度更快。目前在Base和Full模式中,最高傳輸速率分別可達2.38Gb/s和7.14Gb/s,其傳輸速率足以滿足當今數(shù)字相機對高數(shù)據(jù)傳輸速率的要求[7]。
目前的Camera Link接口多采用專用接口芯片如DS90CR286和DS90CR287實現(xiàn),其中DS90CR286實現(xiàn)串并轉(zhuǎn)換,把4對LVDS串行數(shù)據(jù)信號轉(zhuǎn)換為28位LVCMOS/LVTTL電平的并行信號。LVDS數(shù)據(jù)信號按照7∶1的比例在驅(qū)動器端占用4路LVDS信號通道并行傳輸,每路LVDS信號在一個時鐘周期內(nèi)串行輸出7位數(shù)據(jù),共28位數(shù)據(jù),有24位是數(shù)據(jù)信號(其中可能有8位或16位為有效數(shù)據(jù)),另外4位則分別代表幀有效信號(FVAL)、行有效信號(LVAL)、數(shù)據(jù)有效信號(DVAL)及保留信號[1,7]。
本設(shè)計中,采用FPGA芯片的LVDS接口直接實現(xiàn)Camera Link接口,無需專用接口芯片,節(jié)省了成本、體積和功耗。Xilinx公司的spartan6系列FPGA最高可支持1050Mb/s的高速LVDS數(shù)據(jù)接收和發(fā)送,利用FPGA內(nèi)部豐富的解串器(ISERDES)、鎖相環(huán)PLL(Phase Locked Loop)和延時(IODELAY)資源,可實現(xiàn)7∶1的數(shù)據(jù)解串[8]。
Camera Link接口模塊的輸入輸出接口如圖3所示。模塊輸入接口為FPGA的LVDS差分管腳:1對差分時鐘信號(clkin_p,clkin_n)和4 對差分數(shù)據(jù)信號(data_p[3:0],data_n[3:0])。輸出信號為時鐘信號LVDS_clk、8位并行數(shù)據(jù)LVDS_data[7:0],以及幀有效信號 FVAL、行有效信號LVAL、數(shù)據(jù)有效信號DVAL,后級模塊可根據(jù)這些信號完成圖像數(shù)據(jù)采集。FVAL、LVAL、DVAL和8位并行數(shù)據(jù)LVDS_data[7:0]在解串后的28位數(shù)據(jù)中的對應(yīng)關(guān)系沒有統(tǒng)一的標準,要根據(jù)相機的技術(shù)手冊而定。
圖3 Camera Link接口模塊輸入輸出接口Fig.3 The input and output interfaces of Camera Link interface module
圖像編碼模塊完成圖像數(shù)據(jù)采集,并對圖像數(shù)據(jù)進行圖像幀編碼和數(shù)據(jù)幀編碼。在圖像編碼模塊中,共對圖像數(shù)據(jù)進行兩次編碼:圖像幀編碼和數(shù)據(jù)幀編碼。圖像幀編碼的目的是標記每一幀圖像,以便后期恢復圖像數(shù)據(jù),并可檢驗是否丟失圖像幀;數(shù)據(jù)幀編碼的目的是使圖像數(shù)據(jù)與數(shù)據(jù)存儲單元的數(shù)據(jù)格式相匹配,方便數(shù)據(jù)存儲單元進行數(shù)據(jù)判讀和接收,并能檢驗是否丟失數(shù)據(jù)幀。
圖像編碼模塊的組成如圖4所示。虛線左側(cè)為LVDS_clk時鐘域,完成圖像采集和圖像幀編碼功能;虛線右側(cè)為數(shù)據(jù)發(fā)送時鐘tx_clk時鐘域(tx_clk來自LVDS數(shù)據(jù)發(fā)送模塊),完成數(shù)據(jù)幀編碼和數(shù)據(jù)發(fā)送功能。兩時鐘域之間采用FIFO傳遞數(shù)據(jù)。
Camera Link接口模塊輸出的圖像信號時序圖如圖5所示。FVAL信號上升沿,表示一幀圖像數(shù)據(jù)到來,系統(tǒng)開始采集圖像數(shù)據(jù)信號;當DVAL信號有效時,在每個LVDS_clk(圖像的時鐘信號)的上升沿,輸出一次有效的圖像數(shù)據(jù)。以SENTECK公司STC-CL338A高速相機為例,其最高分辨率為644×484,在每個FVAL信號有效周期內(nèi),有484個DVAL有效信號,并且在每個DVAL信號有效周期內(nèi),有644個有效像素的數(shù)據(jù)[9]。故每一幀圖像的有效數(shù)據(jù)為484×644=311696字節(jié)。
圖4 圖像編碼模塊組成Fig.4 The architecture of image coding module
圖5 圖像信號時序圖Fig.5 Timing of image signal
圖像編碼模塊的工作流程如下:從Camera Link接口模塊采集一幀完整的圖像數(shù)據(jù);然后添加幀頭、幀計數(shù)、幀長等內(nèi)容,組成一個圖像幀(見表1),并將圖像幀數(shù)據(jù)發(fā)送至FIFO進行緩存;當FIFO的深度達到4096(數(shù)據(jù)存儲單元要求的數(shù)據(jù)幀的幀長度)時,讀取FIFO中的數(shù)據(jù),并添加幀頭、幀計數(shù)、幀長、幀尾等內(nèi)容,組成一個數(shù)據(jù)幀(見表2),同時將數(shù)據(jù)txd[7:0]發(fā)送至LVDS數(shù)據(jù)發(fā)送模塊。在圖像幀格式中,由于一幀圖像的數(shù)據(jù)量為311696字節(jié),故圖像幀格式中數(shù)據(jù)長度為155848字,而為了節(jié)省存儲帶寬,用一個字表示幀長,這里采用總數(shù)據(jù)量除以16,即311696/16=0x4C19。
表1 圖像幀格式Table1 Format of image frame
LVDS的高速、低功耗、低噪聲等特點使其在高速數(shù)據(jù)傳輸中得到廣泛的應(yīng)用。與Camera Link接口模塊的解串功能相反,LVDS數(shù)據(jù)發(fā)送模塊將編碼后的數(shù)據(jù)串行化,并通過LVDS接口發(fā)送至數(shù)據(jù)存儲單元。本系統(tǒng)采用兩對LVDS數(shù)據(jù)線,分別為伴隨時鐘線差分對和數(shù)據(jù)線差分對。通過內(nèi)部的PLL配置LVDS伴隨時鐘的頻率,這里配置為87.5MHz,串行解串因子(SerDes ratio)為8:1,即每個伴隨時鐘周期內(nèi)傳輸8bit數(shù)據(jù),故數(shù)據(jù)碼率為700Mb/s。
LVDS數(shù)據(jù)發(fā)送模塊輸入輸出接口如圖6所示。輸入信號為50MHz的本地時鐘clkin和待發(fā)送的數(shù)據(jù)信號txd[7:0];輸出信號為數(shù)據(jù)信號差分對(dataout_p,dataout_n)和時鐘信號差分對(clkout_p,clkout_n),以及發(fā)送時鐘tx_clk(87.5M Hz,PLL產(chǎn)生,提供給圖像編碼模塊)。在每個tx_clk時鐘的上升沿,接收數(shù)據(jù)txd[7:0],并在tx_clk的8倍頻時鐘下,逐位將txd[7:0]發(fā)送至數(shù)據(jù)信號差分對。
本設(shè)計參照文獻[6]介紹的基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng),文獻[6]中LVDS接收模塊與IDE接口模塊之間使用了32k字的FIFO緩沖數(shù)據(jù),本設(shè)計的數(shù)據(jù)存儲單元做了以下改進:在LVDS接收模塊和IDE接口模塊之間添加大容量DDR3 sdram例化的FIFO(FIFO1和FIFO2,各為2M字節(jié)容量),兩塊FIFO交替向IDE接口模塊寫數(shù)據(jù),實現(xiàn)數(shù)據(jù)緩沖功能,提高數(shù)據(jù)存儲效率,并可防止由于不同型號的固態(tài)硬盤速度不匹配引起的數(shù)據(jù)丟失問題。數(shù)據(jù)存儲單元的組成如圖7所示。
圖7 基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)組成Fig.7 The architecture of high-speed storage system based on SATA interface solid state hard disk
數(shù)據(jù)存儲單元的工作原理如下:FPGA內(nèi)部的LVDS接收模塊接收LVDS數(shù)據(jù)流并按照數(shù)據(jù)幀格式將其轉(zhuǎn)換為并行數(shù)據(jù)。并行數(shù)據(jù)通過大容量FIFO1和FIFO2交替進入IDE接口模塊,在數(shù)據(jù)管理模塊控制下,IDE接口模塊讀取FIFO1或FIFO2的數(shù)據(jù),并通過JMH330S芯片控制固態(tài)硬盤進行高速存儲(每次存儲2M字節(jié));讀取數(shù)據(jù)時,IDE接口模塊將讀出的硬盤數(shù)據(jù)存入CPU_FIFO中,Microblaze通過DMA方式將數(shù)據(jù)讀入其DDR3內(nèi)存,并通過千兆以太網(wǎng)發(fā)送至上位機。
在數(shù)據(jù)存儲單元進行數(shù)據(jù)存儲時,每2M字節(jié)啟動一次寫盤操作,使用示波器觀察忙信號。忙信號的平均有效時間為22.3ms,即最大存儲速度約為90MB/s。使用87.5MB/s的LVDS數(shù)據(jù)源對數(shù)據(jù)存儲單元進行大量測試,數(shù)據(jù)源為累加數(shù)據(jù),沒有出現(xiàn)數(shù)據(jù)誤碼和丟數(shù)情況。在圖像采編與存儲測試中,使用SENTECK公司STC-CL338A高速工業(yè)相機,該相機的最高分辨率為644×484、最高幀率為240幀/s,每秒的數(shù)據(jù)量約為74.3MB,固態(tài)硬盤選擇三星公司840pro-128G,容量為128GB。經(jīng)過多次采集存儲200s數(shù)據(jù),并通過以太網(wǎng)下載至上位機,千兆以太網(wǎng)的平均數(shù)據(jù)下載速度為22MB/s。經(jīng)過上位機軟件數(shù)據(jù)分析,數(shù)據(jù)無誤碼和丟幀現(xiàn)象,存儲的圖像數(shù)據(jù)完整可靠,數(shù)據(jù)幀和圖像幀均連續(xù)沒有丟幀。測試結(jié)果驗證了本文介紹的高速圖像實時采編存儲系統(tǒng)的可靠性。
本文介紹了一種高速圖像實時采編存儲系統(tǒng),它采用FPGA的LVDS接口直接采集Camera Link接口工業(yè)相機的圖像數(shù)據(jù),并使用高可靠性的SATA接口固態(tài)硬盤作為存儲介質(zhì),可以實現(xiàn)高速、實時、長時間、高可靠性的圖像采集與存儲。如果使用多個數(shù)據(jù)存儲單元并行存儲,可以支持更高速的圖像實時采編與存儲。該系統(tǒng)由兩塊2.5寸電路板和一塊2.5寸固態(tài)硬盤組成,結(jié)構(gòu)簡單,體積小,功耗低,高沖擊與振動環(huán)境適應(yīng)性強,可應(yīng)用于航空、航天等高速圖像采集記錄領(lǐng)域,具有廣闊的應(yīng)用前景。
[1] 呂耀文,王建立,曹景太.Base型Camera Link脫機存儲系統(tǒng)設(shè)計[J].光電子技術(shù),2012,32(4):242~45.Lü Yaowen,Wang Jianli,Cao Jingtai.Design of Base Camera Link Video Storage System Independent of Computer[J].Optoelectronic Technology,2012,32(4):242 ~45.
[2] 田 園,任國強,吳欽章.基于SSD硬盤的嵌入式高速圖像存儲技術(shù)[J].光電工程,2009,36(12):138~142.Tian Yuan,Ren Guoqiang,Wu Qinzhang.Embedded Technology of High-speed Image Storage Based on SSD[J].Opto-Electronic Engineering,2009,36(12):138 ~142.
[3] 張 耀,徐智勇,張啟衡,等.小型化高速數(shù)據(jù)記錄器[J].儀表技術(shù)與傳感器,2011,(4):63~65.Zhang Yao,Xu Zhiyong,Zhang Qiheng,et al.Small Sized High Speed Data Recorder[J].Instrument Technique and Sensor,2011,(4):63 ~65.
[4] 吳 萌.一種高速大容量圖像存儲系統(tǒng)設(shè)計[D].西安:中國科學院西安光學精密機械研究所,2009.Wu Meng.Design of High-speed and High-capacity Image Storage System[D].Xi’an:Xi’an Institute of Optics and Precision Mechanics,Chinese Academy of Sciences,2009.
[5] 趙 林.大容量高速數(shù)據(jù)記錄器的設(shè)計與實現(xiàn)[D].太原:中北大學,2014.Zhao Lin.The Design and Implementation of Large-capacity and High-speed Data Recorder[D].Taiyuan:North University of China,2014.
[6] 孫海波,王曉斌,李雅梅.基于SATA接口固態(tài)硬盤的高速存儲系統(tǒng)設(shè)計[J].遙測遙控,2014,35(2):48~52.Sun Haibo,Wang Xiaobin,Li Yamei.Design of High-speed Storage System Based on SATA Interface Solid State Hard Disk[J].Journal of Telemetry,Tracking and Command,2014,35(2):48 ~52.
[7] Basler,Dalsa,et al.Specifications of the Camera Link Interface Standard for Digital Cameras and Frame Grabbers(V2.0)[S].USA,2012.
[8] Nick Sawyer.Application Note XAPP1064:Source-Synchronous Serialization and Deserialization(v1.1)[R].USA:Xilinx Corporation,2010.
[9] SENTECK Corporation.STC-CL338A STC-CLC338A User’s Guide(v1.5)[R].Japan: SENTECK Corporation,2013.