文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.07.009
中文引用格式: 侯絮絮,馬松齡,孫晨,等. 基于FPGA的CMOS相機實時數據處理設計[J].電子技術應用,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.
0 引言
工業相機常用的圖像傳感器有CMOS及CCD[1-2]兩種,CMOS圖像傳感器因其驅動靈活、編程簡單、功耗低、成本低等優勢已廣泛應用到各種圖像采集系統中[3-5]。由于高速傳輸中采集的圖像數據量較大,易產生誤碼,若不及時校正,將嚴重影響圖像質量,阻礙CMOS相機的普及應用。
本次相機系統開發采用CMV2000圖像傳感器,理論圖像分辨率可達到2 048×1 088[6]。但開發過程中發現,誤碼問題未得到很好地解決,致使成像模糊,圖像最高分辨率僅為1 088×768,遠不能滿足高分辨率的技術要求。
1 圖像傳輸過程中存在的問題
相機控制系統功能框圖如圖1所示。系統采用FPGA[7-9],外部晶振向FPGA輸入時鐘信號,均為固定頻率,再轉換成驅動CMV2000圖像傳感器、采集像素數據及格式編排的時鐘,同時為各單元提供異步復位信號;RS422作為系統通訊協議,將收到的串行數據轉換為并行信號發送給CMV2000的驅動單元[10];FPGA通過SPI接口對CMV2000進行自動曝光、采樣模式、復位等工作參數配置。
由于傳輸的數據是經壓縮算法去除了圖像中大部分內在相關性的已編碼數據,即使相對輕微的誤碼,對解碼圖像數據也會有嚴重的影響。編碼圖像序列的一幀之內,若一個碼字出錯,將會對后面整個編碼序列解碼錯誤,導致誤碼擴散。
CMV2000圖像傳感器輸出的16通道數據及1通道輸出時鐘的相對位置并未完全對齊,若用時鐘直接采樣會出現誤碼現象,致使數據傳輸錯誤。基于CMV2000的相機是高速高分辨率相機,傳輸的數據速率高達480 Mb/s,傳輸過程中若數據校正問題沒有得到解決必會引起誤碼概率增加。從相機開發過程中發現,誤碼對實時傳輸的圖像分辨率影響最大。圖2(a)是數據傳輸錯誤圖例,圖2(b)是截取其局部圖像進行3:1放大,圖中出現許多白色的小雪花狀斑點,而且各個樓層的棱角模糊不清,其中某樓層的右下角處圖像不完整,如箭頭所示。圖像分辨率僅為:1 088×768。
因此,對16通道數據進行位和字的校正調整,將亂序數據及時校正是降低誤碼率、提高圖像分辨率的基本保障,也是數據處理的核心內容。
2 數據處理單元設計
數據處理單元是驅動控制系統的核心部分,在FPGA內部完成,主要實現LVDS圖像數據的串并轉換、亂序數據之間的順序調整、高速數據的乒乓緩存及Camera Link傳輸協議進行格式編碼后發送4項功能。整個數據處理過程實現了圖像數據的實時傳輸。
2.1 串并轉換
數據在進行串并轉換時,經時鐘倍頻后,在其下降沿開始采集數據。圖像數據及同步數據存儲時選用17個10位移位寄存器。當同步數據有效時,若16路并行圖像數據也有效,則對其進行存儲。圖3是CMV2000一行數據的輸出格式。每5個數據時鐘周期中,FPGA接收的16路10 bit數據并非順序輸出,務必加大數據排序和存儲的難度。每10個時鐘周期內,FPGA接收到32路10 bit數據是連續的,可將連續的8個數據合并為1個數據后再進行數據存儲。因此,僅需4個時鐘周期就可以儲存32個數據。由于數據傳輸芯片TLK2711需要接收16 bit的并行數據,所以FPGA在存儲數據前將每個數據高6位補0,并將8個16 bit數據合并成一個128 bit數據進行存儲。若不補0或少補0,則會導致大量數據相繼錯位,數據傳輸錯誤,嚴重影響輸出圖像質量。
2.2 位對齊和字對齊
常用的方法是使用有限狀態機對數據位、字進行校正設計,但該方法代碼冗長,過程中會產生大量剩余狀態。若不及時處理,狀態機可能進入不可預測的狀態,會出現短暫失控;若對其進行處理又會耗用更多的邏輯資源;此外,在對時序進行仿真時,時鐘有效邊沿的輸出端會產生許多毛刺;若加一個寄存器在輸出端,雖可消除毛刺保證輸出信號的穩定性,但輸出會延遲一個周期,可能導致誤碼概率增加。
從節省邏輯資源、減少毛刺、降低誤碼率方面考慮,本次設計舍棄狀態機,利用FPGA自身性能,采用VHDL硬件語言對每條通道中的亂序數據進行位、字校正調整編程設計。
數據校正流程如圖4所示,在training模式下,經異步復位rstin后,數據全部清零(BitCunt<=0),進入眼圖采樣狀態,要實現采樣時鐘恰好在眼圖的中心位置,需通過FPGA的選型,對數據傳輸通道進行延時控制;然后將輸出的并行10位數據與上次接收數據進行比較,若數據發生變化,則表明采樣點不在眼圖的中央位置,記錄此時的延遲拍數,找到延遲邊緣的中間點即為最佳采樣位置,將采樣點移到眼圖中間即完成位對齊。位對齊完成后,進入圖像字對齊(Align_Image Bit),為確保每個通道在同一時鐘沿上采集到第一個字節,在傳感器training模式下,發送相應的訓練字節,接收模塊解串后,通過旋轉解串后的字節,讓其與訓練字節匹配,若采集到的10 bit字節與所期望的字節不匹配,則返回到Make_CtrlAlign操作,使控制進程重新對齊,如此反復,直到并行數據與訓練字匹配為止,從而實現字對齊。
2.3 乒乓緩存
該模塊的設計是為獲得傳感器最快的輸出模式,將CMV2000的輸出模式配置成16通道,但Camera Link接口標準在Base配置模式下僅有8通道,因此將兩路圖像數據轉換成一路圖像數據。實現與Camera Link協議Base模式下8個PORT映射對接[11]。因此,本次設計利用XC6SLX150內部IP核創建2個容量為256×128 bit的雙口RAM進行乒乓緩存;然后將讀出的圖像數據寬度設定為16 bit,讀出時鐘采用較高頻率。這種在雙RAM中同時進行寫入和讀取操作的方法提高了數據之間的存儲速度。
2.4 格式編碼
Camera Link協議中,其接口芯片同時接收28 bit TTL/CMOS信號:24 bit數據信號、4 bit幀有效FVAL信號及行有效LVAL信號。FPGA僅接收數據信號,因此,異步FIFO(First In First Out)要在控制圖像數據時序的同時,生成FVAL和LVAL兩個同步控制信號。當前較常用的FIFO器件很難滿足系統要求,本次采用VHDL硬件語言設計了一種既提供數據緩存,又匹配Camera Link接口標準的異步FIFO。整個系統使用3個FIFO,分別用于幀號、行號及圖像數據的儲存。在發送的每行圖像數據前加8 bit輔助數據后,按照規定的列數和行數有序地選擇FIFO并讀取數據。此外,在每行、每幀之間的空閑狀態,向TLK2711發送一個16 bit空閑碼,保證TLK2711發送端串行數據的同步。
3 試驗結果
根據以上軟件設計,結合硬件設計,采用ISE14.3軟件中自帶的在線邏輯分析儀ChipScope,對本次設計進行板級圖像數據和時序抓拍分析,圖5為讀取一行的像素數據,依次讀取0~7通道,ch_id為相應通道號。圖6為通道6采樣的具體數據讀取,addr為相應的地址,其中高低位像素做了重置。由ChipScope捕捉的時序圖可以看出,該系統成功采集到了經過數據處理后的圖像數據。
為了驗證本次設計數據處理后的成像效果,采用頻率為48 MHz的主時鐘,數據傳輸速率為480 Mb/s,圖7(a)為數據校正后的圖片,選取相同圖像部分進行3:1放大后對比發現,圖7(b)中每幢樓層的棱角清晰,顏色分明,除此之外,樓層右下角可以清楚地看到幾顆大樹的樹頂。整體圖像無斑點、無錯誤區域,圖像質量明顯提高,分辨率達到2 048×1 088。
4 結論
通過深入分析圖像數據傳輸過程中影響成像質量的原因,采用VHDL硬件語言,設計基于FPGA的數據處理程序,既充分利用FPGA內部邏輯資源,避免使用狀態機處理數據校正時過度占用FPGA資源、產生大量毛刺和剩余狀態問題,又能很好地解決誤碼問題。實驗證明經過本數據處理環節后,數據傳輸中誤碼率降至5%,解決了高速傳輸過程中的數據校正問題,使最終顯示到計算機上的圖像質量高、無錯誤區域,分辨率達到2 048×1 088,滿足預期的技術要求。
參考文獻
[1] 孫波,王曉艷.CCD圖像傳感器和CMOS圖像傳感器的比較研究[J].信息通信,2015,156(12):35-36.
[2] 雷蕾.基于CCD與CMOS圖像傳感新技術的研究[J].科技創新導報,2014(14).
[3] 王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設計[J].中國科技信息,2013(11):90-91.
[4] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統設計[J].現代電子技術,2012,35(14):178-181.
[5] 魏麗玲,朱平,石永亮.基于FPGA的圖像采集與存儲系統設計[J].電子技術應用.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相機高速率電子學系統設計[J].液晶與顯示,2016,31(2):174-178.
[8] 李方寧,王延杰,張濤,等.基于AM41V4傳感器的高清高速CMOS相機系統設計[J].液晶與顯示,2015,30(3):492-498.
[9] 任偉,張彥軍,白先民.基于LVDS的高速數據傳輸裝置的設計[J].科學技術與工程,2012,12(29):7759-7763.
[10] 索義芳,高飛,孫磊.基于FPGA的差分RS422串行收發模塊的設計實現[J].微計算機信息,2010,26(12):125-126.
[11] 王小艷,張會新,孫永生,等.Camera link協議和FPGA的數字信號源設計[J].國外電子元件,2008,16(7):59-61.
作者信息:
侯絮絮1,馬松齡1,孫 晨2,郭子靖1
(1.西安建筑科技大學 機電工程學院,陜西 西安710055;2.中國科學院 西安光學精密機械研究所,陜西 西安710119)