陳 序, 卿粼波, 何小海
(四川大學電子信息學院圖像信息研究所,四川成都610064)
圖像采集是圖像處理的基礎,隨著圖像采集的幀頻和分辨率越來越高,對高速圖像處理及顯示的要求也越來越高。大多數高速攝像頭采用Camera Link接口,Full型Camera Link攝像機數據傳輸率可達680MB/s,如何設計并實現一個高速的圖像處理平臺,具有重要意義。多數針對圖像處理的平臺是通過PCI或USB接口將采集到的圖像發送到PC機再進行圖像處理和顯示,系統體積較大,且成本偏高,受到PC機處理速度限制,圖像顯示的實時性會受到影響[1]。少數嵌入式平臺,沒有對采集到的原始圖像進行處理,而直接進行顯示,顯示的圖像質量會受到影響,并采用小容量的SDRAM來緩存數據,不能應用到數據量大的圖像處理中[2]。
設計了一種基于FPGA的高速圖像采集、圖像處理和圖像顯示平臺。FPGA把采集到的圖像按幀緩存到大容量存儲芯片DDR2 SDRAM中,再從DDR2中讀出每幀圖像進行預處理,DSP對圖像進行復雜算法處理,FPGA最后把圖像發送到DVI編碼芯片進行顯示。圖像處理的速度快,顯示實時性好。實現了平臺體積小,成本低,處理數據量大,處理速度快,應用廣泛的目的。
系統硬件架構由Camera Link信號轉換芯片DS90CR288、串口配置芯片、一片FPGA芯片、DVI顯示芯片CH7301C、8片DDR2 SDRAM芯片MT47H64M16、一塊DSP芯片組成。系統的硬件架構框圖如圖1所示。

圖1 系統硬件框圖
FPGA選用Xilinx公司virtex5系列中的lx110t,采用65nm工藝,核心電壓為1.0V,擁有17280個Slice,BRAM容量為5328KB,16個GTP模塊,20個 I/O Bank,最大可用I/O數達680個[3]。DVI發送芯片采用CH7301C,最高顯示分辨率可達1600×1200,像素時鐘最大為165M,使用低抖動鎖相環,I2C端口編程,并為RGB輸出提供10-bit高速視頻DAC,低電壓接口支持圖形設備。DDR2 SDRAM 采用MT47H64M16-37E,單片容量為1Gb,構成為:8Meg×16×8bank,數據速率為533Mhz。設計使用4片DDR2組成一個通道,位寬擴展為64bit,8片組成雙通道。DSP芯片采用TI公司的TMS320C6474,集成了3個1GHz的TMS320C64x+內核,具有3GHz的數字信號處理性能,數據的處理能力為24000 MMACS(16bit)或48000 MMACS(8bit)。
(1)FPGA和DS90CR288的接口設計。DS90CR288共有1位時鐘信號和28位數據信號連接到FPGA,28位數據信號包含24bit圖像數據以及傳輸數據需要的幀信號、行信號和數據有效信號。
(2)FPGA和DDR2 SDRAM的接口設計。MT47H64M16主要有16位數據信號ddr2-dq[15:0],差分數據脈沖信號ddr2-dqs、ddr2-dqs-n,地址總線信號ddr2-address[12:0],行列地址有效信號,片選信號等。
(3)FPGA和DSP的接口設計。通過serial rapidIO接口[4]連接,FPGA用GTP作串并轉換,收發各有一對差分信號。
(4)FPGA和CH7301C的接口設計。CH7301C主要信號線包括,I2C信號線,差分時鐘信號對,行信號線、幀信號線、數據信號線及使能信號線。
Camera Link是一種串行通信協議,設計用于點對點自動視覺應用。是基于國家半導體公司的通道鏈路接口,經過擴展可支持通用LVDS數據傳輸。Camera Link接口標準有Base,Medium,Full 3種配置模式。Base配置使用了24位像素數據(以及3位視頻同步數據)來實現最大255 Mbps的數據量。Medium配置額外增加了另外24位數據,實現最大510 Mbps的數據量。Full配置使用64位數據,實現最大680 Mbps的數據傳輸率。
系統前端圖像采集采用JAI公司的Base型彩色數字攝像機CV-M71CL,CV-M71CL在全讀取模式下采集分辨率為767*576,幀頻為60Hz。DS90CR288芯片將接收到的camera link信號轉換成28位單端信號發送到FPGA,FPGA將接收到的信號分離成24位RGB信號、像素有效信號DVAL、幀信號FVAL、行信號LVAL[5],并將它們傳送到圖像處理系統。在圖像采集前,系統中的串口通信模塊,可以發送串口信號,對攝像機進行配置。
圖像采集系統和處理系統之間由于時鐘不匹配,需要連接一個前端異步FIFO。在向FIFO中傳輸每幀圖像前,處理系統及顯示系統返回的初始化信號init-done需要有效,保證數據位不錯亂。
系統采用FPGA對圖像進行預處理,DSP進行協處理。圖像存儲模塊對每幀圖像進行緩存,圖像處理模塊再讀出圖像進行處理。處理系統包含多種處理方法,可以對圖像進行濾波,轉換,對比度調節,亮度增強等操作。應用中可以在FPGA中根據實際需求設計相應的處理方法。處理的數據可以發送到DSP作進一步的復雜算法處理,也可以直接發送到圖像顯示系統進行圖像顯示。FPGA圖像處理系統模塊框圖如圖2所示。
圖像存儲模塊對采集到的每幀圖像進行緩存。系統使用兩片DDR2 SDRAM進行乒乓操作[6]。采集到的第一幀圖像寫入ddr-controller-0,第二幀圖像寫入到ddr-controller-1的同時去讀取ddr-controller-0中的第一幀圖像,下一幀圖像寫入ddr-controller-0的同時,讀取ddr-controller-1中的圖像,如此循環下去。FIFO解決采集模塊、存儲模塊、顯示模塊時鐘域不同的問題,FIFO設置empty、full標志位保證在寫DDR2芯片數據時前端FIFO不為空狀態,讀取DDR2芯片數據時后端FIFO不能為滿狀態。圖像存儲模塊包含兩個狀態機,一個控制兩片SDRAM的交替讀,另一個控制SDRAM的交替寫。存儲模塊包含兩個DDR2 SDRAM控制器,控制器作為DDR2芯片和乒乓操作之間的接口,為乒乓操作模塊提供數據總線、地址總線及控制信號。

圖2 圖像處理系統模塊框圖
寫DDR2狀態機如圖3所示。在前端FIFO的front-fifo-full標志位為1的時候,進入ddr-controller-0的寫操作等待狀態c0-wr-wait,ddr-controller-0在c0-wr-en有效時進入c0-wr-idle,前端FIFO的empty標志位不為1,則進入c0-write狀態進行數據寫,否則進入c0-wr-idle狀態等待數據到來,直到一幀圖像寫滿。寫滿一幀圖像后進入ddr-controller-1的寫等待狀態c1-w r-wait,同時使能ddr-controller-0的讀能使標志位c0-rd-en。ddr-controller-1的寫操作過程與ddr-controller-0相同。

圖3 DDR2乒乓操作寫狀態機
讀DDR2狀態機如圖4所示。狀態機啟動時處于c0-rd-wait狀態,當ddr-controller-0寫滿一幀后,進入讀空閑狀態c0-rd-idle。在后端FIFO的full標志位部位1時,不停的讀出數據寫入后端FIFO中,直到一幀圖像讀完,然后進入ddr-controller-1的寫操作,同時使能ddr-controller-0的寫使能標志位c0-wr-en,告知DDR2寫狀態機可以對ddr-controller-0寫下一幀數據。ddr-controller-1的讀操作完成后再進入ddr-controller-0的讀操作,如此循環下去。

圖4 DDR2乒乓操作讀狀態機
圖像在采集、傳輸過程中,由于成像設備、傳輸介質、外界環境等影響,信號傳輸會加入有大量的噪聲,得到圖像的質量受到影響。對圖像進行處理可以得到更好的顯示效果和應用。FPGA適合在空間域對圖像進行預處理[7],DSP則適合圖像壓縮、圖像識別等復雜算法的圖像處理。
當一幀圖像存儲完成后,啟動FPGA圖像處理模塊,將process-start信號置1,開始對圖像進行預處理,處理過程中和乒乓操作模塊配合反復對DDR2-SDRAM進行讀寫,處理完成后讀出圖像發送到DVI顯示系統中進行顯示,最后返回完成信號process-end給乒乓操作模塊,接下來對另一塊DDR中的圖像作處理。處理過程中如果需要對圖像作進一步復雜算法的處理,高速串口模塊通過Serial RapidIO協議將數據傳送到DSP,DSP處理完成后再傳回數據。若當前幀圖像處理時間過長,乒乓操作模塊不能寫入下一幀,則丟掉當前幀,保證系統穩定運行。圖像處理模塊工作的狀態機如圖5所示。

圖5 圖像處理模塊狀態機
DVI是基于最小化傳輸差分信號(Transition Minimized Differential Signaling,TMDS)的數字信號傳輸技術。TMDS可以對像素數據進行編碼,然后通過串行接口進行傳遞。圖像顯示系統產生的數字信號發送到CH7301C,CH7301C對信號按照TMDS協議編碼后發送到顯示器。
設計采用CH7301C芯片進行TMDS信號的發送,DVI顯示模塊按照顯示的標準生成差分時鐘、24位RGB數據及數據有效信號、幀信號、行信號,并發送到CH7301C[8]。
系統需要通過I2C接口對CH7301C的寄存器進行配置,I2C信號波形圖如圖6所示。DVI顯示的實時信號波形如圖7所示。

圖6 I2C信號采集波形圖

圖7 DVI顯示信號采集波形圖
平臺完成了高速圖像的采集、發送和顯示,能得到穩定的圖像。基于FPGA的高速圖像的處理平臺制作并調試完成,圖8是高速圖像處理平臺的電路板,圖9是Camera Link采集和DVI實時顯示的效果圖。

圖8 高速圖像處理平臺電路板

圖9 實時采集和顯示的效果圖
文中設計的平臺相比傳統的采集顯示平臺,采集速度更快,最高能達到680MB/s;顯示分辨率更高,達到1600×1200,60幀/s;使用FPGA和高性能DSP進行圖像處理,處理速度更快,滿足實時處理需求;采用8片大容量的DDR2芯片,緩存圖像容量更大。實現了對圖像的高速采集、存儲、處理和顯示,并可替代基于專用采集卡和PC機的數字圖像處理系統,到達了成本低,體積小,攜帶方便,圖像清晰,應用廣泛的目的。
[1] 李寧,汪駿發.基于Camer a Link的高速數據采集系統[J].紅外,2005(7):31-39.
[2] 李飛,劉晶紅,李剛,等.基于FPGA的數字攝像機輸出視頻DVI顯示[J].激光與紅外,2011(11):1258-1261.
[3] Xilinx,Virtex-5 FPGA User Guide,ug190(v5.3)May 17,2010.
[4] LogiCORE IP Serial RapidIO v5.6 User Guide:Inc.XILINX.UG503 July 29,2011.
[5] 王鳴浩,陳濤,吳小霞.基于Camera Link接口的高幀頻數字圖像采集顯示系統[J].微電子學與計算機,2011(3):149-152.
[6] Xuzhi WANG,Yanru MA,Wanggen WAN.Design of DDR2 SDRAM Controller for Video Post Processing Pipeline[J].Wireless Mobile and Computing,2009:117-120.
[7] Rafael C Gonzalez,Richard E woods.阮秋琦,阮宇智譯.數字圖像處理digital Image Processing(第二版)[M].北京:電子工業出版社,2010.
[8] 孫志亮,單金山.基于FPGA的DVI顯示在紅外監視系統中的應用[J].激光與紅外,2008(10):1059-1062.