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