文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.07.009
中文引用格式: 侯絮絮,,馬松齡,,孫晨,等. 基于FPGA的CMOS相機實時數(shù)據(jù)處理設計[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 引言
工業(yè)相機常用的圖像傳感器有CMOS及CCD[1-2]兩種,,CMOS圖像傳感器因其驅動靈活,、編程簡單、功耗低,、成本低等優(yōu)勢已廣泛應用到各種圖像采集系統(tǒng)中[3-5],。由于高速傳輸中采集的圖像數(shù)據(jù)量較大,易產(chǎn)生誤碼,,若不及時校正,,將嚴重影響圖像質量,阻礙CMOS相機的普及應用。
本次相機系統(tǒng)開發(fā)采用CMV2000圖像傳感器,,理論圖像分辨率可達到2 048×1 088[6],。但開發(fā)過程中發(fā)現(xiàn),誤碼問題未得到很好地解決,,致使成像模糊,,圖像最高分辨率僅為1 088×768,遠不能滿足高分辨率的技術要求,。
1 圖像傳輸過程中存在的問題
相機控制系統(tǒng)功能框圖如圖1所示,。系統(tǒng)采用FPGA[7-9],外部晶振向FPGA輸入時鐘信號,,均為固定頻率,,再轉換成驅動CMV2000圖像傳感器、采集像素數(shù)據(jù)及格式編排的時鐘,,同時為各單元提供異步復位信號,;RS422作為系統(tǒng)通訊協(xié)議,將收到的串行數(shù)據(jù)轉換為并行信號發(fā)送給CMV2000的驅動單元[10],;FPGA通過SPI接口對CMV2000進行自動曝光,、采樣模式、復位等工作參數(shù)配置,。
由于傳輸?shù)臄?shù)據(jù)是經(jīng)壓縮算法去除了圖像中大部分內在相關性的已編碼數(shù)據(jù),,即使相對輕微的誤碼,對解碼圖像數(shù)據(jù)也會有嚴重的影響,。編碼圖像序列的一幀之內,,若一個碼字出錯,將會對后面整個編碼序列解碼錯誤,,導致誤碼擴散,。
CMV2000圖像傳感器輸出的16通道數(shù)據(jù)及1通道輸出時鐘的相對位置并未完全對齊,若用時鐘直接采樣會出現(xiàn)誤碼現(xiàn)象,,致使數(shù)據(jù)傳輸錯誤,。基于CMV2000的相機是高速高分辨率相機,,傳輸?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,。
因此,對16通道數(shù)據(jù)進行位和字的校正調整,,將亂序數(shù)據(jù)及時校正是降低誤碼率,、提高圖像分辨率的基本保障,也是數(shù)據(jù)處理的核心內容,。
2 數(shù)據(jù)處理單元設計
數(shù)據(jù)處理單元是驅動控制系統(tǒng)的核心部分,,在FPGA內部完成,主要實現(xiàn)LVDS圖像數(shù)據(jù)的串并轉換,、亂序數(shù)據(jù)之間的順序調整,、高速數(shù)據(jù)的乒乓緩存及Camera Link傳輸協(xié)議進行格式編碼后發(fā)送4項功能。整個數(shù)據(jù)處理過程實現(xiàn)了圖像數(shù)據(jù)的實時傳輸,。
2.1 串并轉換
數(shù)據(jù)在進行串并轉換時,,經(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個時鐘周期內,,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ù)傳輸錯誤,嚴重影響輸出圖像質量,。
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ù)進行位,、字校正調整編程設計。
數(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é),,接收模塊解串后,,通過旋轉解串后的字節(jié),,讓其與訓練字節(jié)匹配,若采集到的10 bit字節(jié)與所期望的字節(jié)不匹配,,則返回到Make_CtrlAlign操作,,使控制進程重新對齊,如此反復,,直到并行數(shù)據(jù)與訓練字匹配為止,,從而實現(xiàn)字對齊。
2.3 乒乓緩存
該模塊的設計是為獲得傳感器最快的輸出模式,,將CMV2000的輸出模式配置成16通道,,但Camera Link接口標準在Base配置模式下僅有8通道,因此將兩路圖像數(shù)據(jù)轉換成一路圖像數(shù)據(jù),。實現(xiàn)與Camera Link協(xié)議Base模式下8個PORT映射對接[11],。因此,本次設計利用XC6SLX150內部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 試驗結果
根據(jù)以上軟件設計,,結合硬件設計,,采用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ù)。
為了驗證本次設計數(shù)據(jù)處理后的成像效果,,采用頻率為48 MHz的主時鐘,,數(shù)據(jù)傳輸速率為480 Mb/s,圖7(a)為數(shù)據(jù)校正后的圖片,,選取相同圖像部分進行3:1放大后對比發(fā)現(xiàn),,圖7(b)中每幢樓層的棱角清晰,顏色分明,,除此之外,,樓層右下角可以清楚地看到幾顆大樹的樹頂。整體圖像無斑點,、無錯誤區(qū)域,,圖像質量明顯提高,分辨率達到2 048×1 088,。
4 結論
通過深入分析圖像數(shù)據(jù)傳輸過程中影響成像質量的原因,,采用VHDL硬件語言,設計基于FPGA的數(shù)據(jù)處理程序,,既充分利用FPGA內部邏輯資源,,避免使用狀態(tài)機處理數(shù)據(jù)校正時過度占用FPGA資源、產(chǎn)生大量毛刺和剩余狀態(tài)問題,,又能很好地解決誤碼問題,。實驗證明經(jīng)過本數(shù)據(jù)處理環(huán)節(jié)后,數(shù)據(jù)傳輸中誤碼率降至5%,,解決了高速傳輸過程中的數(shù)據(jù)校正問題,,使最終顯示到計算機上的圖像質量高、無錯誤區(qū)域,,分辨率達到2 048×1 088,,滿足預期的技術要求。
參考文獻
[1] 孫波,,王曉艷.CCD圖像傳感器和CMOS圖像傳感器的比較研究[J].信息通信,,2015,,156(12):35-36.
[2] 雷蕾.基于CCD與CMOS圖像傳感新技術的研究[J].科技創(chuàng)新導報,2014(14).
[3] 王晗,,李翔,,李忠敏,等.基于OV7670的圖像采集與顯示設計[J].中國科技信息,,2013(11):90-91.
[4] 丁昊杰,,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設計[J].現(xiàn)代電子技術,,2012,,35(14):178-181.
[5] 魏麗玲,朱平,,石永亮.基于FPGA的圖像采集與存儲系統(tǒng)設計[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相機高速率電子學系統(tǒng)設計[J].液晶與顯示,,2016,,31(2):174-178.
[8] 李方寧,王延杰,,張濤,,等.基于AM41V4傳感器的高清高速CMOS相機系統(tǒng)設計[J].液晶與顯示,2015,,30(3):492-498.
[9] 任偉,,張彥軍,白先民.基于LVDS的高速數(shù)據(jù)傳輸裝置的設計[J].科學技術與工程,,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)