《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 多分辨率圖像實時采集系統(tǒng)的FPGA邏輯設(shè)計

多分辨率圖像實時采集系統(tǒng)的FPGA邏輯設(shè)計

2008-10-06
作者:劉德良1, 姚春蓮1, 李

  摘? 要: 提出了一種基于FPGA的實時、多分辨率圖像采集系統(tǒng)" title="圖像采集系統(tǒng)">圖像采集系統(tǒng)的控制邏輯設(shè)計方案;并對其中的圖像數(shù)據(jù)" title="圖像數(shù)據(jù)">圖像數(shù)據(jù)預(yù)處理和幀存乒乓刷新機(jī)制這兩個關(guān)鍵技術(shù)進(jìn)行了闡述;為了驗證圖像采集系統(tǒng)在整個圖像處理系統(tǒng)中所起的作用,還對圖像壓縮系統(tǒng)" title="壓縮系統(tǒng)">壓縮系統(tǒng)的幀率進(jìn)行了比較實驗。實驗結(jié)果表明,設(shè)計并實現(xiàn)的圖像采集系統(tǒng)不僅運行穩(wěn)定,而且顯著提高了圖像處理系統(tǒng)的整體性能。

  關(guān)鍵詞: FPGA? 圖像采集? 圖像壓縮

?

  隨著數(shù)字多媒體技術(shù)的不斷發(fā)展,數(shù)字圖像處理技術(shù)被廣泛應(yīng)用于可視電話、電視會議、監(jiān)控系統(tǒng)等各種民用、商業(yè)及工業(yè)生產(chǎn)領(lǐng)域中。但在這些數(shù)字圖像處理系統(tǒng)中,一個突出的問題就是數(shù)據(jù)量龐大,特別是在圖像幀率及分辨率要求比較高的場合下,僅用專用的視頻壓縮芯片(Video ASIC)、專用的視頻信號處理器(Video DSP)或通用的高性能數(shù)字信號處理芯片(DSP),均無法獲得令人滿意的效果。為此,人們提出了多種解決方案,其中比較有代表性的方案有以下兩種:

  一是在中央控制器的調(diào)度下,兩片或多片圖像處理主芯片并行對圖像進(jìn)行處理。

  二是整個圖像處理系統(tǒng)由圖像采集系統(tǒng)和圖像壓縮系統(tǒng)組成,其中圖像采集系統(tǒng)負(fù)責(zé)接收原始的圖像數(shù)據(jù)并對其進(jìn)行一定的預(yù)處理;圖像壓縮系統(tǒng)負(fù)責(zé)接收圖像采集系統(tǒng)預(yù)處理后的數(shù)據(jù)并進(jìn)行壓縮。

  本文將基于第二種方案,分析其中圖像采集系統(tǒng)的控制邏輯設(shè)計思路;并結(jié)合圖像壓縮算法的需求,著重介紹圖像數(shù)據(jù)預(yù)處理的控制流程及實現(xiàn)方法;最后通過實驗,對預(yù)處理前后圖像處理系統(tǒng)的效率進(jìn)行比較分析。

1 圖像采集系統(tǒng)的結(jié)構(gòu)及工作原理

  本文以高性能、高集成度、低功耗系列FPGA作為核心部件,利用FPGA的在系統(tǒng)可編程以及控制邏輯實現(xiàn)方式靈活等特點,設(shè)計出圖像采集系統(tǒng)。該系統(tǒng)能夠滿足多分辨率灰度和彩色圖像的實時壓縮處理要求,其硬件結(jié)構(gòu)如圖1所示,主要包括A/D" title="A/D">A/D轉(zhuǎn)換部分、幀存部分和核心控制部分。下面分別對這三個部分進(jìn)行介紹。

?

?

1.1 A/D轉(zhuǎn)換部分

  A/D轉(zhuǎn)換部分即圖1中的視頻解碼器,用來完成模擬視頻信號到數(shù)字信號的轉(zhuǎn)換,產(chǎn)生復(fù)合的YUV數(shù)據(jù)流,并送入采集系統(tǒng)的FPGA中。

  A/D轉(zhuǎn)換部分所選用的視頻解碼器是Philips公司的視頻A/D芯片SAA7111A_4,它不僅具有自動場頻檢測特性,而且其場同步參考信號VREF、行同步參考信號HREF、奇偶場標(biāo)志信號RTS0、像素時鐘信號LLC2均可從芯片的輸出管腳直接得到,從而簡化了時鐘鎖相與同步功能模塊的設(shè)計,使整個系統(tǒng)的性能和穩(wěn)定性均有所提高,同時減少了整個系統(tǒng)的功耗[2]

1.2 幀存部分

  幀存部分采用雙幀存結(jié)構(gòu),包括圖1中的幀存A與幀存B,每個幀存由兩片IDT71V424 SRAM構(gòu)成,能夠存放720×576分辨率的一幀YUV圖像數(shù)據(jù)。由于采用了乒乓機(jī)制,這種結(jié)構(gòu)能夠使圖像數(shù)據(jù)的采集與壓縮并行,從而提高圖像的壓縮幀率。

1.3 核心控制部分

  采集系統(tǒng)的核心控制部分即圖1中的FPGA。首先對A/D轉(zhuǎn)換部分的輸出數(shù)據(jù)流進(jìn)行一定的預(yù)處理;其次將預(yù)處理后的數(shù)據(jù)在幀存乒乓、刷新機(jī)制的控制下寫入適當(dāng)幀存中;最后完成與圖像壓縮系統(tǒng)的接口控制,即適時將幀存的控制權(quán)轉(zhuǎn)交給圖像壓縮系統(tǒng),由圖像壓縮系統(tǒng)將幀存中的數(shù)據(jù)讀出后釋放幀存的控制權(quán)。另外本部分還負(fù)責(zé)接收用戶輸入的圖像分辨率、色彩以及相應(yīng)壓縮碼流傳輸信道的帶寬等控制信息,并在這些信息發(fā)生變化時用中斷的方式通知圖像壓縮系統(tǒng)。

  核心控制部分所選用的FPGA為Xilinx公司的Virtex-100E系列,它具有10萬等效系統(tǒng)門,系統(tǒng)時鐘頻率可達(dá)240MHz,用戶可用的I/O管腳有196個,核電壓為1.8V,峰值功耗較低[3]。

1.3.1 圖像采集系統(tǒng)控制邏輯功能框圖

  圖像采集系統(tǒng)控制邏輯框圖如圖2所示。①作為采集系統(tǒng)核心控制邏輯的主控模塊,用來調(diào)用②~⑥各子功能模塊。子功能模塊②是整個控制邏輯執(zhí)行的起點,它根據(jù)I2C協(xié)議來配置視頻解碼器,并且只有I2C配置過程結(jié)束后,才能啟動其它子功能模塊的運行。子功能模塊③用于完成圖像采集系統(tǒng)與圖像壓縮系統(tǒng)的交互。子功能模塊④~⑥用于完成圖像采集、預(yù)處理、存儲控制等功能。下邊分別介紹各子模塊的設(shè)計思想。

?

1.3.2 基于I2C配置視頻解碼器

  視頻解碼器的初始化配置是由FPGA通過I2C總線完成的,主要包括對視頻解碼器的工作模式、輸出行場同步參考信號的時序關(guān)系以及輸出數(shù)字信號的格式等進(jìn)行的設(shè)置。

1.3.3 與圖像壓縮系統(tǒng)握手

  為了確保圖像壓縮系統(tǒng)與圖像采集系統(tǒng)的同步,需要在FPGA中實現(xiàn)兩者之間的握手機(jī)制,主要是接收圖像壓縮系統(tǒng)請求幀存控制權(quán)和釋放幀存控制權(quán)的信號,并根據(jù)FPGA內(nèi)部邏輯的當(dāng)前運行狀態(tài)進(jìn)行響應(yīng)。

1.3.4 原始圖像數(shù)據(jù)采集

  在一幀圖像數(shù)據(jù)的采集過程中,最重要的就是對一幀圖像數(shù)據(jù)開始和結(jié)束時刻的判斷。在仔細(xì)研究了SAA7111A_4所提供的同步信號(奇偶場標(biāo)識信號RTS0、場同步參考信號VREF、行同步參考信號HREF)的時序關(guān)系的基礎(chǔ)上,用狀態(tài)機(jī)實現(xiàn)了對采集過程起止點的精確控制。圖3所示為一幀圖像采集期間三個同步信號的時序示意圖。

?

?

  RTS0信號的上升沿標(biāo)識一幀新圖像的起點,VREF信號為高電平對應(yīng)圖像場正程掃描時的有效像素行期間,在有效像素行期間,HREF信號為高電平對應(yīng)像素的有效采樣時間?;谶@三個信號確定一幀圖像采集過程起止點的流程如下:

 ?、?若檢測到RTS0信號的電平為低,轉(zhuǎn)到②;

 ?、?若檢測到RTS0信號的電平為高,轉(zhuǎn)到③,同時開始一幀新圖像的采集;

  ③若檢測到VREF信號的電平為高,轉(zhuǎn)到④;

  ④若檢測到VREF信號的電平為低,則表明352×288分辨率模式下的一幀圖像采集過程結(jié)束或720×576分辨率模式下的第一場圖像采集過程結(jié)束,轉(zhuǎn)到⑤,否則在HREF信號的電平為高期間進(jìn)行有效的圖像數(shù)據(jù)采集;

  ⑤若檢測到VREF信號的電平為高,轉(zhuǎn)到⑥;

 ?、奕魴z測到VREF信號的電平為低,則表明720×576分辨率模式下第二場圖像采集過程結(jié)束,轉(zhuǎn)到①,否則在HREF信號的電平為高期間進(jìn)行有效的圖像數(shù)據(jù)采集。

1.3.5 采集圖像數(shù)據(jù)的預(yù)處理及存儲

  圖像壓縮系統(tǒng)所需要的輸入圖像數(shù)據(jù)流是按照宏塊—SLICE—圖像的分層結(jié)構(gòu)組織的,如圖4所示(以720×576分辨率為例)。而在圖像采集系統(tǒng)中,A/D轉(zhuǎn)換后的輸出數(shù)據(jù)流結(jié)構(gòu)如圖5所示。因此,必須對圖5所示的數(shù)據(jù)流進(jìn)行相應(yīng)的預(yù)處理,圖像壓縮系統(tǒng)才能夠直接從圖像采集系統(tǒng)中得到所需要的數(shù)據(jù)格式,從而提高整個圖像處理系統(tǒng)的性能。

?

?

??? 按照圖4所示的分層結(jié)構(gòu),圖像數(shù)據(jù)在幀存中以SLICE為單位順序存儲,其中SLICE的尺寸既要考慮圖像壓縮系統(tǒng)中圖像壓縮算法的要求,又要考慮與圖像分辨率有著密切的關(guān)系。圖6所示為圖像數(shù)據(jù)在幀存中的存儲結(jié)構(gòu)。下面主要以720×576分辨率下的圖像為例討論數(shù)據(jù)存儲地址的計算。

?

  由A/D轉(zhuǎn)換輸出數(shù)據(jù)格式與圖像壓縮系統(tǒng)輸入數(shù)據(jù)格式間的對應(yīng)關(guān)系可知,一幀圖像中的任意像素可以用分層尋址方式準(zhǔn)確定位,并據(jù)此產(chǎn)生此像素所對應(yīng)的三個分量的幀存存儲地址值。首先,從一幀圖像的第一行開始,每連續(xù)的16行作為一個像素塊,稱為行塊,一幀720×576分辨率的圖像可劃分為36個行塊;其次,每一個行塊又在水平方向上平均分為3段,每段稱為一個列組,每個列組的寬度為水平方向上連續(xù)的240個像素,高度為垂直方向上連續(xù)的16行。720×576圖像像素分層尋址示意圖如圖7所示。Y、U、V三個分量在幀存中的存儲地址產(chǎn)生過程如下:首先確定像素所屬行塊在一幀圖像中的偏移量及像素所屬列組在行塊中的偏移量,即確定行塊序號和列組序號;然后確定像素在所屬列組中水平方向上和垂直方向上的偏移量;最后根據(jù)上述4個偏移量計數(shù)器的值即可產(chǎn)生此像素所對應(yīng)的三個分量的幀存存儲地址值。

?

  在720×576分辨率下,一幀圖像中任一像素的Y、U、V分量對應(yīng)的幀存地址計算公式如下:

  y_addr=(C-1)×8640+(E-1)×2880+(D-1)×120+(F-2)/2

  u_addr=(C-1)×8640+(E-1)×2880+((D-1)/2)×60+(F-3)/4+1920

  v_addr= (C-1)×8640+(E-1)×2880+((D-1)/2)×60+(F-4)/4+2400

  式中,y_addr、u_addr、v_addr分別對應(yīng)Y、U、V三個分量的幀存存儲地址;C表示行塊序號,取值范圍為1~36;D表示在列組中垂直方向上的偏移量,取值范圍為1~16;E表示列組序號,取值范圍為1~3;F表示在列組中水平方向上的偏移量,取值范圍為1~240。

  上述地址計算公式在FPGA中實現(xiàn)時,考慮到各乘積項常系數(shù)(8640、2880等)所對應(yīng)的二進(jìn)制數(shù)中“1”較少,可將各乘積運算轉(zhuǎn)化為移位與加法運算的組合,并將加法操作用分組超前進(jìn)位[4]方式實現(xiàn)。

1.3.6 幀存乒乓刷新控制機(jī)制

  兩組幀存的讀寫通過乒乓機(jī)制來管理。為確保在任何時刻,最多只有一個幀存處于圖像壓縮系統(tǒng)的控制下,設(shè)置了一個讀互斥鎖" title="互斥鎖">互斥鎖;同樣,最多有一個幀存可接收預(yù)處理后的數(shù)據(jù),因此又設(shè)置了一個寫互斥鎖。

  因為圖像壓縮系統(tǒng)的壓縮幀率在720×576分辨率下小于25幀/秒,為了保證圖像壓縮系統(tǒng)每次從采集系統(tǒng)所得到的一幀圖像數(shù)據(jù)是最近由FPGA預(yù)處理過的,使得圖像延時較小,設(shè)計了雙幀存刷新機(jī)制[5]。

  在系統(tǒng)初始狀態(tài),幀存A處于等待寫狀態(tài),幀存B處于讀結(jié)束狀態(tài)。采集過程開始,兩個幀存的狀態(tài)轉(zhuǎn)換控制流程完全相同。下邊以幀存A為例介紹基于讀寫互斥鎖的幀存控制機(jī)制。幀存乒乓刷新控制機(jī)制如圖8所示,其設(shè)計思想如下:

?

?

 ?、俨杉^程未開始,幀存A處于等待寫狀態(tài),并獲得寫互斥鎖;

  ②收到一幀新圖像的開始信號,采集過程開始,幀存A進(jìn)入可寫狀態(tài),接收圖像數(shù)據(jù);

 ?、垡粠瑘D像的采集過程結(jié)束后,幀存A進(jìn)入寫結(jié)束狀態(tài),并釋放寫互斥鎖;

 ?、茉趯懡Y(jié)束狀態(tài)下,若此時幀存B擁有讀互斥鎖,則幀存A保持寫結(jié)束狀態(tài),否則幀存A獲得讀互斥鎖,進(jìn)入讀等待狀態(tài),并在下一個控制周期切換到再次讀等待狀態(tài);

  ⑤幀存A在再次讀等待狀態(tài)下,如果幀存B處于寫結(jié)束狀態(tài),則幀存A釋放讀互斥鎖,進(jìn)入讀結(jié)束狀態(tài),否則若圖像壓縮系統(tǒng)請求幀存的控制權(quán),則幀存A進(jìn)入可讀狀態(tài),并處于圖像壓縮系統(tǒng)的控制下,若以上兩個條件均不滿足,則幀存A保持再次讀等待狀態(tài);

  ⑥在可讀狀態(tài)下,若圖像壓縮系統(tǒng)請求FPGA回收幀存控制權(quán),則幀存A進(jìn)入讀結(jié)束狀態(tài),并釋放讀互斥鎖;

 ?、咴谧x結(jié)束狀態(tài)下,若幀存B擁有寫互斥鎖,則幀存A保持讀結(jié)束狀態(tài),否則幀存A進(jìn)入等待寫狀態(tài),并獲得寫互斥鎖。

2 FPGA邏輯設(shè)計中的常見問題討論

  在FPGA內(nèi)部,由于LLC2時鐘驅(qū)動的邏輯非常多,布線尋徑優(yōu)化的選擇余地小,從而導(dǎo)致它到達(dá)每個邏輯模塊驅(qū)動端的時間有一定的差異。在極端情況下這一差異(Skew)會非常大,并導(dǎo)致邏輯執(zhí)行時的時序錯誤。因此在基于FPGA進(jìn)行邏輯設(shè)計時,盡管各邏輯模塊及模塊間的通信信號基本上都是由LLC2驅(qū)動的,但模塊間的通信信號與通信的接收方模塊應(yīng)視為異步,并按異步邏輯的思路實現(xiàn)模塊間的通信機(jī)制[6~7]

  另外本設(shè)計中LLC2的時鐘頻率達(dá)13.5MHz,且FPGA內(nèi)部邏輯資源的使用率已經(jīng)超過了70%。為了確??刂七壿嬙贔PGA中的穩(wěn)定運行,需要對設(shè)計進(jìn)行精心的時序仿真,提高仿真程序的測試覆蓋率,并對實現(xiàn)(Implementation)過程中生成的靜態(tài)時序分析報告仔細(xì)研究,確定設(shè)計中的時序關(guān)鍵路徑,采用先修改設(shè)計、分割關(guān)鍵路徑,后加限制條件的方式,盡量減少關(guān)鍵路徑的個數(shù)、降低關(guān)鍵路徑的延時。

  在對設(shè)計進(jìn)行仿真驗證的過程中,要盡量將所發(fā)現(xiàn)毛刺的發(fā)生條件找出,并用修改源設(shè)計的方法將其去除。

3 實驗結(jié)果

  為了驗證圖像采集系統(tǒng)的作用,進(jìn)行了對比實驗,實驗結(jié)果如表1所示。

?

?

  在兩種分辨率下,經(jīng)過圖像采集系統(tǒng)的預(yù)處理,圖像壓縮系統(tǒng)的幀率有不同程度的提高,尤其是在720×576分辨率下,幀率的提高超過了60%。這主要是由于圖像采集系統(tǒng)預(yù)處理機(jī)制的采用,使得圖像壓縮系統(tǒng)能夠與圖像采集系統(tǒng)并行工作,在很大程度上減少了圖像壓縮系統(tǒng)的等待執(zhí)行時間,從而提高了圖像壓縮系統(tǒng)的壓縮幀率。從表1中可以看到,在352×288分辨率下,整個系統(tǒng)的性能提高不大(甚至沒有變化)。這是因為在此分辨率下,圖像數(shù)據(jù)量較小,僅靠圖像壓縮系統(tǒng)的處理能力即可達(dá)到實時效果,所以圖像采集系統(tǒng)預(yù)處理機(jī)制的采用無法進(jìn)一步提高整個系統(tǒng)的性能。

  當(dāng)然,本采集系統(tǒng)還存在改進(jìn)的余地[8],具體來說有以下兩點:

 ?、倩贔PGA實現(xiàn)的圖像預(yù)處理操作若具有圖像增強(qiáng)、去噪等功能,并對圖像的場景變換進(jìn)行一定的處理,會使圖像采集系統(tǒng)的輸出圖像質(zhì)量得到很大的提高。

 ?、趲嫫古宜⑿聶C(jī)制在實用中還有一定的局限性,圖像的主觀延遲效果不是很理想,而且有時會使圖像壓縮系統(tǒng)的讀數(shù)據(jù)請求不能立即得到響應(yīng)??紤]到系統(tǒng)的性價比,如果用一片高密度的SDRAM作為存儲器,并且將它在物理上分為三個幀存,通過這三個幀存之間的乒乓機(jī)制,相信采集系統(tǒng)所輸出的圖像在主觀效果上會優(yōu)于本文所采用的雙幀存結(jié)構(gòu)。

?

參考文獻(xiàn)

1 沙吉樂,曲興華,關(guān)紅彥.基于FPGA技術(shù)的新型高速圖像采集.電子技術(shù)應(yīng)用,2000;26(9)

2 Ricardo Zebulum,Adrian Stoica,Didier Keymeulen. Experiments on the Evolution of Digital to Analog Converters.IEEE,2001;5:2321~2331

3 The Programmable Logic Data Book. Xlinx Company,2001

4 蔣小龍.算術(shù)邏輯部件設(shè)計.可編程邏輯器件中文網(wǎng)站,2001.7.5(www.FPGA.com.cn)

5 潘志揚,潘俊民.基于雙內(nèi)存的圖形采集卡的設(shè)計.電子技術(shù)應(yīng)用,2000;26(11)

6 樊昌信.數(shù)字專用集成電路設(shè)計. 北京:人民郵電出版社,1993

7 齊懷印,盧 錦.高級邏輯器件與設(shè)計.北京:電子工業(yè)出版社,1996

8 DongLai Xu,Said Boussakta,John P Bentley.AN FPGA BASED LOW-COST FRAME GRABBER FOR IMAGE?PROCESSING APPLICATIONS.IEEE,2000;1:333~336

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。