文獻(xiàn)標(biāo)識(shí)碼: 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ū)動(dòng)靈活、編程簡(jiǎn)單、功耗低、成本低等優(yōu)勢(shì)已廣泛應(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í)鐘信號(hào),均為固定頻率,再轉(zhuǎn)換成驅(qū)動(dòng)CMV2000圖像傳感器、采集像素?cái)?shù)據(jù)及格式編排的時(shí)鐘,同時(shí)為各單元提供異步復(fù)位信號(hào);RS422作為系統(tǒng)通訊協(xié)議,將收到的串行數(shù)據(jù)轉(zhuǎn)換為并行信號(hào)發(fā)送給CMV2000的驅(qū)動(dòng)單元[10];FPGA通過SPI接口對(duì)CMV2000進(jìn)行自動(dòng)曝光、采樣模式、復(fù)位等工作參數(shù)配置。
由于傳輸?shù)臄?shù)據(jù)是經(jīng)壓縮算法去除了圖像中大部分內(nèi)在相關(guān)性的已編碼數(shù)據(jù),即使相對(duì)輕微的誤碼,對(duì)解碼圖像數(shù)據(jù)也會(huì)有嚴(yán)重的影響。編碼圖像序列的一幀之內(nèi),若一個(gè)碼字出錯(cuò),將會(huì)對(duì)后面整個(gè)編碼序列解碼錯(cuò)誤,導(dǎo)致誤碼擴(kuò)散。
CMV2000圖像傳感器輸出的16通道數(shù)據(jù)及1通道輸出時(shí)鐘的相對(duì)位置并未完全對(duì)齊,若用時(shí)鐘直接采樣會(huì)出現(xiàn)誤碼現(xiàn)象,致使數(shù)據(jù)傳輸錯(cuò)誤?;贑MV2000的相機(jī)是高速高分辨率相機(jī),傳輸?shù)臄?shù)據(jù)速率高達(dá)480 Mb/s,傳輸過程中若數(shù)據(jù)校正問題沒有得到解決必會(huì)引起誤碼概率增加。從相機(jī)開發(fā)過程中發(fā)現(xiàn),誤碼對(duì)實(shí)時(shí)傳輸?shù)膱D像分辨率影響最大。圖2(a)是數(shù)據(jù)傳輸錯(cuò)誤圖例,圖2(b)是截取其局部圖像進(jìn)行3:1放大,圖中出現(xiàn)許多白色的小雪花狀斑點(diǎn),而且各個(gè)樓層的棱角模糊不清,其中某樓層的右下角處圖像不完整,如箭頭所示。圖像分辨率僅為:1 088×768。
因此,對(duì)16通道數(shù)據(jù)進(jìn)行位和字的校正調(diào)整,將亂序數(shù)據(jù)及時(shí)校正是降低誤碼率、提高圖像分辨率的基本保障,也是數(shù)據(jù)處理的核心內(nèi)容。
2 數(shù)據(jù)處理單元設(shè)計(jì)
數(shù)據(jù)處理單元是驅(qū)動(dòng)控制系統(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ù)存儲(chǔ)時(shí)選用17個(gè)10位移位寄存器。當(dāng)同步數(shù)據(jù)有效時(shí),若16路并行圖像數(shù)據(jù)也有效,則對(duì)其進(jìn)行存儲(chǔ)。圖3是CMV2000一行數(shù)據(jù)的輸出格式。每5個(gè)數(shù)據(jù)時(shí)鐘周期中,F(xiàn)PGA接收的16路10 bit數(shù)據(jù)并非順序輸出,務(wù)必加大數(shù)據(jù)排序和存儲(chǔ)的難度。每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ù)存儲(chǔ)。因此,僅需4個(gè)時(shí)鐘周期就可以儲(chǔ)存32個(gè)數(shù)據(jù)。由于數(shù)據(jù)傳輸芯片TLK2711需要接收16 bit的并行數(shù)據(jù),所以FPGA在存儲(chǔ)數(shù)據(jù)前將每個(gè)數(shù)據(jù)高6位補(bǔ)0,并將8個(gè)16 bit數(shù)據(jù)合并成一個(gè)128 bit數(shù)據(jù)進(jìn)行存儲(chǔ)。若不補(bǔ)0或少補(bǔ)0,則會(huì)導(dǎo)致大量數(shù)據(jù)相繼錯(cuò)位,數(shù)據(jù)傳輸錯(cuò)誤,嚴(yán)重影響輸出圖像質(zhì)量。
2.2 位對(duì)齊和字對(duì)齊
常用的方法是使用有限狀態(tài)機(jī)對(duì)數(shù)據(jù)位、字進(jìn)行校正設(shè)計(jì),但該方法代碼冗長(zhǎng),過程中會(huì)產(chǎn)生大量剩余狀態(tài)。若不及時(shí)處理,狀態(tài)機(jī)可能進(jìn)入不可預(yù)測(cè)的狀態(tài),會(huì)出現(xiàn)短暫失控;若對(duì)其進(jìn)行處理又會(huì)耗用更多的邏輯資源;此外,在對(duì)時(shí)序進(jìn)行仿真時(shí),時(shí)鐘有效邊沿的輸出端會(huì)產(chǎn)生許多毛刺;若加一個(gè)寄存器在輸出端,雖可消除毛刺保證輸出信號(hào)的穩(wěn)定性,但輸出會(huì)延遲一個(gè)周期,可能導(dǎo)致誤碼概率增加。
從節(jié)省邏輯資源、減少毛刺、降低誤碼率方面考慮,本次設(shè)計(jì)舍棄狀態(tài)機(jī),利用FPGA自身性能,采用VHDL硬件語(yǔ)言對(duì)每條通道中的亂序數(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的選型,對(duì)數(shù)據(jù)傳輸通道進(jìn)行延時(shí)控制;然后將輸出的并行10位數(shù)據(jù)與上次接收數(shù)據(jù)進(jìn)行比較,若數(shù)據(jù)發(fā)生變化,則表明采樣點(diǎn)不在眼圖的中央位置,記錄此時(shí)的延遲拍數(shù),找到延遲邊緣的中間點(diǎn)即為最佳采樣位置,將采樣點(diǎn)移到眼圖中間即完成位對(duì)齊。位對(duì)齊完成后,進(jìn)入圖像字對(duì)齊(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)程重新對(duì)齊,如此反復(fù),直到并行數(shù)據(jù)與訓(xùn)練字匹配為止,從而實(shí)現(xiàn)字對(duì)齊。
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映射對(duì)接[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ù)之間的存儲(chǔ)速度。
2.4 格式編碼
Camera Link協(xié)議中,其接口芯片同時(shí)接收28 bit TTL/CMOS信號(hào):24 bit數(shù)據(jù)信號(hào)、4 bit幀有效FVAL信號(hào)及行有效LVAL信號(hào)。FPGA僅接收數(shù)據(jù)信號(hào),因此,異步FIFO(First In First Out)要在控制圖像數(shù)據(jù)時(shí)序的同時(shí),生成FVAL和LVAL兩個(gè)同步控制信號(hào)。當(dāng)前較常用的FIFO器件很難滿足系統(tǒng)要求,本次采用VHDL硬件語(yǔ)言設(shè)計(jì)了一種既提供數(shù)據(jù)緩存,又匹配Camera Link接口標(biāo)準(zhǔn)的異步FIFO。整個(gè)系統(tǒng)使用3個(gè)FIFO,分別用于幀號(hào)、行號(hào)及圖像數(shù)據(jù)的儲(chǔ)存。在發(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,對(duì)本次設(shè)計(jì)進(jìn)行板級(jí)圖像數(shù)據(jù)和時(shí)序抓拍分析,圖5為讀取一行的像素?cái)?shù)據(jù),依次讀取0~7通道,ch_id為相應(yīng)通道號(hào)。圖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放大后對(duì)比發(fā)現(xiàn),圖7(b)中每幢樓層的棱角清晰,顏色分明,除此之外,樓層右下角可以清楚地看到幾顆大樹的樹頂。整體圖像無斑點(diǎn)、無錯(cuò)誤區(qū)域,圖像質(zhì)量明顯提高,分辨率達(dá)到2 048×1 088。
4 結(jié)論
通過深入分析圖像數(shù)據(jù)傳輸過程中影響成像質(zhì)量的原因,采用VHDL硬件語(yǔ)言,設(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ì)量高、無錯(cuò)誤區(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].中國(guó)科技信息,2013(11):90-91.
[4] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(14):178-181.
[5] 魏麗玲,朱平,石永亮.基于FPGA的圖像采集與存儲(chǔ)系統(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] 王小艷,張會(huì)新,孫永生,等.Camera link協(xié)議和FPGA的數(shù)字信號(hào)源設(shè)計(jì)[J].國(guó)外電子元件,2008,16(7):59-61.
作者信息:
侯絮絮1,馬松齡1,孫 晨2,郭子靖1
(1.西安建筑科技大學(xué) 機(jī)電工程學(xué)院,陜西 西安710055;2.中國(guó)科學(xué)院 西安光學(xué)精密機(jī)械研究所,陜西 西安710119)