《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的CMOS相機實時數(shù)據(jù)處理設計
基于FPGA的CMOS相機實時數(shù)據(jù)處理設計
2017年電子技術(shù)應用第7期
侯絮絮1,馬松齡1,孫 晨2,郭子靖1
1.西安建筑科技大學 機電工程學院,陜西 西安710055;2.中國科學院 西安光學精密機械研究所,陜西 西安710119
摘要: 針對CMOS圖像傳感器輸出的LVDS串行數(shù)據(jù)在傳輸過程中因數(shù)據(jù)無法對齊引起誤碼率升高,圖像分辨率降低問題,提出一種基于現(xiàn)場可編程門陣列FPGA的CMOS相機實時數(shù)據(jù)處理研究方案。采用VHDL硬件語言,對數(shù)據(jù)處理進行模塊化設計,確保高速數(shù)據(jù)的正確采樣,減少誤碼產(chǎn)生。經(jīng)軟件仿真及實測表明:該方案設計合理,系統(tǒng)運行穩(wěn)定可靠,解決了高分辨率圖像在高速傳輸中的數(shù)據(jù)校正問題,輸出的圖像輪廓清晰、無斑點。
中圖分類號: TN919.3
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.07.009
中文引用格式: 侯絮絮,馬松齡,孫晨,等. 基于FPGA的CMOS相機實時數(shù)據(jù)處理設計[J].電子技術(shù)應用,2017,43(7):36-39.
英文引用格式: Hou Xuxu,Ma Songling,Sun Chen,et al. Real-time data processing design of CMOS camera based on FPGA[J].Application of Electronic Technique,2017,43(7):36-39.
Real-time data processing design of CMOS camera based on FPGA
Hou Xuxu1,Ma Songling1,Sun Chen2,Guo Zijing1
1.Mechanical & Electrical Engineering College,Xi′an University of Architecture and Technology,Xi′an 710055,China; 2.Xi′an Institute of Optics and Precision Mechanics,Chinese Academy of Sciences,Xi′an 710119,China
Abstract: Aiming at the problem that the LVDS serial data error rate rised output by CMOS image sensor due to the data can not be aligned and reduce the image resolution, a research program of CMOS camera real-time data processing based on FPGA is proposed. The design uses VHDL hardware language, the modular design of data processing to ensure the correct sampling of high speed data to reduce the error generated. The simulation results show that the scheme is reasonable and the system runs stably and reliably. It solves the problem of data correction in high speed transmission of high resolution images. The output image has clear contour and no speckle.
Key words : CMOS image sensor;FPGA;data correction;high resolution

0 引言

    工業(yè)相機常用的圖像傳感器有CMOS及CCD[1-2]兩種,CMOS圖像傳感器因其驅(qū)動靈活、編程簡單、功耗低、成本低等優(yōu)勢已廣泛應用到各種圖像采集系統(tǒng)中[3-5]。由于高速傳輸中采集的圖像數(shù)據(jù)量較大,易產(chǎn)生誤碼,若不及時校正,將嚴重影響圖像質(zhì)量,阻礙CMOS相機的普及應用。

    本次相機系統(tǒng)開發(fā)采用CMV2000圖像傳感器,理論圖像分辨率可達到2 048×1 088[6]。但開發(fā)過程中發(fā)現(xiàn),誤碼問題未得到很好地解決,致使成像模糊,圖像最高分辨率僅為1 088×768,遠不能滿足高分辨率的技術(shù)要求。

1 圖像傳輸過程中存在的問題

    相機控制系統(tǒng)功能框圖如圖1所示。系統(tǒng)采用FPGA[7-9],外部晶振向FPGA輸入時鐘信號,均為固定頻率,再轉(zhuǎn)換成驅(qū)動CMV2000圖像傳感器、采集像素數(shù)據(jù)及格式編排的時鐘,同時為各單元提供異步復位信號;RS422作為系統(tǒng)通訊協(xié)議,將收到的串行數(shù)據(jù)轉(zhuǎn)換為并行信號發(fā)送給CMV2000的驅(qū)動單元[10];FPGA通過SPI接口對CMV2000進行自動曝光、采樣模式、復位等工作參數(shù)配置。

wdz3-t1.gif

    由于傳輸?shù)臄?shù)據(jù)是經(jīng)壓縮算法去除了圖像中大部分內(nèi)在相關(guān)性的已編碼數(shù)據(jù),即使相對輕微的誤碼,對解碼圖像數(shù)據(jù)也會有嚴重的影響。編碼圖像序列的一幀之內(nèi),若一個碼字出錯,將會對后面整個編碼序列解碼錯誤,導致誤碼擴散。

    CMV2000圖像傳感器輸出的16通道數(shù)據(jù)及1通道輸出時鐘的相對位置并未完全對齊,若用時鐘直接采樣會出現(xiàn)誤碼現(xiàn)象,致使數(shù)據(jù)傳輸錯誤?;贑MV2000的相機是高速高分辨率相機,傳輸?shù)臄?shù)據(jù)速率高達480 Mb/s,傳輸過程中若數(shù)據(jù)校正問題沒有得到解決必會引起誤碼概率增加。從相機開發(fā)過程中發(fā)現(xiàn),誤碼對實時傳輸?shù)膱D像分辨率影響最大。圖2(a)是數(shù)據(jù)傳輸錯誤圖例,圖2(b)是截取其局部圖像進行3:1放大,圖中出現(xiàn)許多白色的小雪花狀斑點,而且各個樓層的棱角模糊不清,其中某樓層的右下角處圖像不完整,如箭頭所示。圖像分辨率僅為:1 088×768。

wdz3-t2.gif

    因此,對16通道數(shù)據(jù)進行位和字的校正調(diào)整,將亂序數(shù)據(jù)及時校正是降低誤碼率、提高圖像分辨率的基本保障,也是數(shù)據(jù)處理的核心內(nèi)容。

2 數(shù)據(jù)處理單元設計

    數(shù)據(jù)處理單元是驅(qū)動控制系統(tǒng)的核心部分,在FPGA內(nèi)部完成,主要實現(xiàn)LVDS圖像數(shù)據(jù)的串并轉(zhuǎn)換、亂序數(shù)據(jù)之間的順序調(diào)整、高速數(shù)據(jù)的乒乓緩存及Camera Link傳輸協(xié)議進行格式編碼后發(fā)送4項功能。整個數(shù)據(jù)處理過程實現(xiàn)了圖像數(shù)據(jù)的實時傳輸。

2.1 串并轉(zhuǎn)換

    數(shù)據(jù)在進行串并轉(zhuǎn)換時,經(jīng)時鐘倍頻后,在其下降沿開始采集數(shù)據(jù)。圖像數(shù)據(jù)及同步數(shù)據(jù)存儲時選用17個10位移位寄存器。當同步數(shù)據(jù)有效時,若16路并行圖像數(shù)據(jù)也有效,則對其進行存儲。圖3是CMV2000一行數(shù)據(jù)的輸出格式。每5個數(shù)據(jù)時鐘周期中,F(xiàn)PGA接收的16路10 bit數(shù)據(jù)并非順序輸出,務必加大數(shù)據(jù)排序和存儲的難度。每10個時鐘周期內(nèi),F(xiàn)PGA接收到32路10 bit數(shù)據(jù)是連續(xù)的,可將連續(xù)的8個數(shù)據(jù)合并為1個數(shù)據(jù)后再進行數(shù)據(jù)存儲。因此,僅需4個時鐘周期就可以儲存32個數(shù)據(jù)。由于數(shù)據(jù)傳輸芯片TLK2711需要接收16 bit的并行數(shù)據(jù),所以FPGA在存儲數(shù)據(jù)前將每個數(shù)據(jù)高6位補0,并將8個16 bit數(shù)據(jù)合并成一個128 bit數(shù)據(jù)進行存儲。若不補0或少補0,則會導致大量數(shù)據(jù)相繼錯位,數(shù)據(jù)傳輸錯誤,嚴重影響輸出圖像質(zhì)量。

wdz3-t3.gif

2.2 位對齊和字對齊

    常用的方法是使用有限狀態(tài)機對數(shù)據(jù)位、字進行校正設計,但該方法代碼冗長,過程中會產(chǎn)生大量剩余狀態(tài)。若不及時處理,狀態(tài)機可能進入不可預測的狀態(tài),會出現(xiàn)短暫失控;若對其進行處理又會耗用更多的邏輯資源;此外,在對時序進行仿真時,時鐘有效邊沿的輸出端會產(chǎn)生許多毛刺;若加一個寄存器在輸出端,雖可消除毛刺保證輸出信號的穩(wěn)定性,但輸出會延遲一個周期,可能導致誤碼概率增加。

    從節(jié)省邏輯資源、減少毛刺、降低誤碼率方面考慮,本次設計舍棄狀態(tài)機,利用FPGA自身性能,采用VHDL硬件語言對每條通道中的亂序數(shù)據(jù)進行位、字校正調(diào)整編程設計。

    數(shù)據(jù)校正流程如圖4所示,在training模式下,經(jīng)異步復位rstin后,數(shù)據(jù)全部清零(BitCunt<=0),進入眼圖采樣狀態(tài),要實現(xiàn)采樣時鐘恰好在眼圖的中心位置,需通過FPGA的選型,對數(shù)據(jù)傳輸通道進行延時控制;然后將輸出的并行10位數(shù)據(jù)與上次接收數(shù)據(jù)進行比較,若數(shù)據(jù)發(fā)生變化,則表明采樣點不在眼圖的中央位置,記錄此時的延遲拍數(shù),找到延遲邊緣的中間點即為最佳采樣位置,將采樣點移到眼圖中間即完成位對齊。位對齊完成后,進入圖像字對齊(Align_Image Bit),為確保每個通道在同一時鐘沿上采集到第一個字節(jié),在傳感器training模式下,發(fā)送相應的訓練字節(jié),接收模塊解串后,通過旋轉(zhuǎn)解串后的字節(jié),讓其與訓練字節(jié)匹配,若采集到的10 bit字節(jié)與所期望的字節(jié)不匹配,則返回到Make_CtrlAlign操作,使控制進程重新對齊,如此反復,直到并行數(shù)據(jù)與訓練字匹配為止,從而實現(xiàn)字對齊。

wdz3-t4.gif

2.3 乒乓緩存

    該模塊的設計是為獲得傳感器最快的輸出模式,將CMV2000的輸出模式配置成16通道,但Camera Link接口標準在Base配置模式下僅有8通道,因此將兩路圖像數(shù)據(jù)轉(zhuǎn)換成一路圖像數(shù)據(jù)。實現(xiàn)與Camera Link協(xié)議Base模式下8個PORT映射對接[11]。因此,本次設計利用XC6SLX150內(nèi)部IP核創(chuàng)建2個容量為256×128 bit的雙口RAM進行乒乓緩存;然后將讀出的圖像數(shù)據(jù)寬度設定為16 bit,讀出時鐘采用較高頻率。這種在雙RAM中同時進行寫入和讀取操作的方法提高了數(shù)據(jù)之間的存儲速度。

2.4 格式編碼

    Camera Link協(xié)議中,其接口芯片同時接收28 bit TTL/CMOS信號:24 bit數(shù)據(jù)信號、4 bit幀有效FVAL信號及行有效LVAL信號。FPGA僅接收數(shù)據(jù)信號,因此,異步FIFO(First In First Out)要在控制圖像數(shù)據(jù)時序的同時,生成FVAL和LVAL兩個同步控制信號。當前較常用的FIFO器件很難滿足系統(tǒng)要求,本次采用VHDL硬件語言設計了一種既提供數(shù)據(jù)緩存,又匹配Camera Link接口標準的異步FIFO。整個系統(tǒng)使用3個FIFO,分別用于幀號、行號及圖像數(shù)據(jù)的儲存。在發(fā)送的每行圖像數(shù)據(jù)前加8 bit輔助數(shù)據(jù)后,按照規(guī)定的列數(shù)和行數(shù)有序地選擇FIFO并讀取數(shù)據(jù)。此外,在每行、每幀之間的空閑狀態(tài),向TLK2711發(fā)送一個16 bit空閑碼,保證TLK2711發(fā)送端串行數(shù)據(jù)的同步。

3 試驗結(jié)果

    根據(jù)以上軟件設計,結(jié)合硬件設計,采用ISE14.3軟件中自帶的在線邏輯分析儀ChipScope,對本次設計進行板級圖像數(shù)據(jù)和時序抓拍分析,圖5為讀取一行的像素數(shù)據(jù),依次讀取0~7通道,ch_id為相應通道號。圖6為通道6采樣的具體數(shù)據(jù)讀取,addr為相應的地址,其中高低位像素做了重置。由ChipScope捕捉的時序圖可以看出,該系統(tǒng)成功采集到了經(jīng)過數(shù)據(jù)處理后的圖像數(shù)據(jù)。

wdz3-t5.gif

wdz3-t6.gif

    為了驗證本次設計數(shù)據(jù)處理后的成像效果,采用頻率為48 MHz的主時鐘,數(shù)據(jù)傳輸速率為480 Mb/s,圖7(a)為數(shù)據(jù)校正后的圖片,選取相同圖像部分進行3:1放大后對比發(fā)現(xiàn),圖7(b)中每幢樓層的棱角清晰,顏色分明,除此之外,樓層右下角可以清楚地看到幾顆大樹的樹頂。整體圖像無斑點、無錯誤區(qū)域,圖像質(zhì)量明顯提高,分辨率達到2 048×1 088。

wdz3-t7.gif

4 結(jié)論

    通過深入分析圖像數(shù)據(jù)傳輸過程中影響成像質(zhì)量的原因,采用VHDL硬件語言,設計基于FPGA的數(shù)據(jù)處理程序,既充分利用FPGA內(nèi)部邏輯資源,避免使用狀態(tài)機處理數(shù)據(jù)校正時過度占用FPGA資源、產(chǎn)生大量毛刺和剩余狀態(tài)問題,又能很好地解決誤碼問題。實驗證明經(jīng)過本數(shù)據(jù)處理環(huán)節(jié)后,數(shù)據(jù)傳輸中誤碼率降至5%,解決了高速傳輸過程中的數(shù)據(jù)校正問題,使最終顯示到計算機上的圖像質(zhì)量高、無錯誤區(qū)域,分辨率達到2 048×1 088,滿足預期的技術(shù)要求。

參考文獻

[1] 孫波,王曉艷.CCD圖像傳感器和CMOS圖像傳感器的比較研究[J].信息通信,2015,156(12):35-36.

[2] 雷蕾.基于CCD與CMOS圖像傳感新技術(shù)的研究[J].科技創(chuàng)新導報,2014(14).

[3] 王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設計[J].中國科技信息,2013(11):90-91.

[4] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設計[J].現(xiàn)代電子技術(shù),2012,35(14):178-181.

[5] 魏麗玲,朱平,石永亮.基于FPGA的圖像采集與存儲系統(tǒng)設計[J].電子技術(shù)應用.2015,41(11):67-69.

[6] CMOSIS.200 Megapixel Global shutter CMOS image sensor datasheet[J/0L].www.Cmosis.com/producta/product.detail/cmv2000,2013:1-44.

[7] 王征,何云豐,曹小濤,等.基于FPGA的大面陣CMOS相機高速率電子學系統(tǒng)設計[J].液晶與顯示,2016,31(2):174-178.

[8] 李方寧,王延杰,張濤,等.基于AM41V4傳感器的高清高速CMOS相機系統(tǒng)設計[J].液晶與顯示,2015,30(3):492-498.

[9] 任偉,張彥軍,白先民.基于LVDS的高速數(shù)據(jù)傳輸裝置的設計[J].科學技術(shù)與工程,2012,12(29):7759-7763.

[10] 索義芳,高飛,孫磊.基于FPGA的差分RS422串行收發(fā)模塊的設計實現(xiàn)[J].微計算機信息,2010,26(12):125-126.

[11] 王小艷,張會新,孫永生,等.Camera link協(xié)議和FPGA的數(shù)字信號源設計[J].國外電子元件,2008,16(7):59-61.



作者信息:

侯絮絮1,馬松齡1,孫  晨2,郭子靖1

(1.西安建筑科技大學 機電工程學院,陜西 西安710055;2.中國科學院 西安光學精密機械研究所,陜西 西安710119)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。