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