楊翠軍,錢 敏,曹云鵬,朱 靜
(蘇州大學(xué) 微電子系,江蘇 蘇州 215021)
由于大規(guī)模集成電路(VLSI)、計(jì)算機(jī)和通信技術(shù)的迅速發(fā)展與結(jié)合,促進(jìn)了視頻技術(shù)的進(jìn)步與廣泛應(yīng)用[1]。作為逐漸取代模擬視頻的數(shù)字視頻越來越受到人們的關(guān)注,日益成為一種廣泛應(yīng)用的媒體,而其中數(shù)字視頻圖像采集是進(jìn)行數(shù)字視頻處理技術(shù)的關(guān)鍵[2]。本文采用SoPC技術(shù)設(shè)計(jì)了一種嵌入式數(shù)字視頻圖像采集方案??删幊唐舷到y(tǒng)(System on Programmable Chip,SoPC)是Altera公司提出來的一種靈活、高效的SoC解決方案,是一種新的軟硬件協(xié)同設(shè)計(jì)的系統(tǒng)設(shè)計(jì)技術(shù)。它將處理器、存儲(chǔ)器、I/O口、LVDS、CDR等功能模塊集成到一個(gè)可編程器件上,構(gòu)成一個(gè)可編程的片上系統(tǒng)[3]。本文利用該技術(shù)在FPGA芯片上配置NiosⅡ軟核處理器及相關(guān)接口模塊來實(shí)現(xiàn)硬件平臺(tái),并利用Altera公司的軟件集成開發(fā)環(huán)境NiosⅡIDE進(jìn)行軟件設(shè)計(jì),控制整個(gè)采集流程,實(shí)現(xiàn)了數(shù)字視頻圖像的高速A/D轉(zhuǎn)換、存儲(chǔ)及顯示等功能。
目前,世界上采用的電視信號(hào)制式主要有PAL制、NTSC制和SECAM制3種,中國(guó)采用的電視信號(hào)是PAL制。PAL電視制式規(guī)定,場(chǎng)掃描頻率為50 Hz,每幀圖像的掃描行數(shù)為625行。PAL制電視信號(hào)如圖1所示[4-5],圖中H為行同步信號(hào)的周期,標(biāo)稱值為64 μs。
PAL制電視信號(hào)轉(zhuǎn)化為數(shù)字視頻信號(hào)后,數(shù)據(jù)格式一般符合ITU 656 YUV 4∶2∶2標(biāo)準(zhǔn),其主要特征有:
1)25 f/s的幀率,每幀分為奇數(shù)場(chǎng)和偶數(shù)場(chǎng)。每幀掃描625行,其中有效圖像數(shù)據(jù)572行,每行采樣864個(gè)像素,其中有效像素720個(gè)。
2)有3個(gè)正交分量。亮度分量Y、色度分量U(Cb)和V(Cr),Y表示明亮度(灰度值),Cb和Cr表示色度(色彩及飽和度)。其中亮度分量Y每行采樣864次,色度分量Cr和Cb每行采樣432次。
3)8 bit或者10 bit的PCM編碼。量化時(shí)0和255用于同步;1~254表示采樣結(jié)果的PCM碼;對(duì)于亮度分量Y,16表示黑色,235表示白色;對(duì)于色度分量Cb/Cr,128表示沒有色度。
4)有3個(gè)信號(hào)用于同步輸出的數(shù)據(jù)。行同步信號(hào)、場(chǎng)同步信號(hào)和像素同步信號(hào)[6]。
工作原理為:由視頻信號(hào)源輸出PAL制模擬信號(hào),采集開始。首先由I2C配置好后的視頻解碼芯片ADV7181將輸入的模擬視頻信號(hào)進(jìn)行解碼,輸出8 bit格式為YCbCr 4∶2∶2復(fù)合視頻數(shù)字信號(hào),接著利用視頻圖像處理模塊對(duì)視頻數(shù)字信號(hào)進(jìn)行4∶2∶2到4∶4∶4的格式轉(zhuǎn)化,YCbCr到RGB色彩空間的轉(zhuǎn)換等處理,再通過視頻編碼芯片SDA7123進(jìn)行D/A轉(zhuǎn)換,最后在VGA監(jiān)視器上顯示出來。
本文選用Altera CycloneⅡ系列EP2C35型號(hào)的FP?GA芯片。該芯片具有33 216個(gè)邏輯單元、475個(gè)用戶自定義I/O接口、35個(gè)嵌入式乘法器和4個(gè)鎖相環(huán)。在FP?GA中設(shè)計(jì)了以下模塊:PLL、NiosⅡ嵌入式軟核處理器、掛接在Avalon總線上的JTAG UART,PIO,Timer,System ID,SDRAM Controller,F(xiàn)lash(CFI)Controller等內(nèi)核以及用戶定制的邏輯外設(shè)模塊freedev_i2c,serial_segment,freeedev_bt656,freedev_sram。在FPGA外圍有視頻解碼芯片ADV7181,用于存儲(chǔ)的SDRAM,視頻編碼芯片SDA7123等。圖2為系統(tǒng)硬件結(jié)構(gòu)圖。
在系統(tǒng)硬件平臺(tái)中,嵌入到FPGA的處理器和各接口模塊是設(shè)計(jì)的關(guān)鍵。利用Altera公司的QuartusⅡ軟件中集成的SoPC Builder開發(fā)工具來創(chuàng)建設(shè)計(jì)基于處理器、外圍設(shè)備和存儲(chǔ)器的嵌入式系統(tǒng)將大大縮短整個(gè)設(shè)計(jì)周期。下面主要對(duì)NiosⅡ軟核處理器、ADV7181及其I2C配置、視頻圖像采集模塊、視頻圖像解碼及顏色轉(zhuǎn)換模塊等幾個(gè)關(guān)鍵模塊的設(shè)計(jì)進(jìn)行介紹。
NiosⅡ處理器是Altera公司推出的第二代用于可編程邏輯器件的可配置的軟核處理器。由于處理器是軟核形式,具有很大的靈活性,因此,可以在多種系統(tǒng)設(shè)置組合中進(jìn)行選擇,達(dá)到性能和成本的要求[7]。NiosⅡ處理器系列包括三種內(nèi)核:高速內(nèi)核(NiosⅡ/f)、經(jīng)濟(jì)內(nèi)核(NiosⅡ/e)、標(biāo)準(zhǔn)內(nèi)核(NiosⅡ/s)。本文采用的CycloneⅡ系列的EP2C35芯片邏輯資源十分豐富,加上采集系統(tǒng)實(shí)時(shí)處理對(duì)CPU的性能要求較高,因此選用了高性能的NiosⅡ軟核作為本系統(tǒng)的CPU。接著再完成其他外設(shè)模塊的添加,即完成了嵌入式系統(tǒng)的設(shè)計(jì)。圖3為完成配置的SoPC Builder GUI界面。
本文采用ADV7181芯片來完成模擬視頻信號(hào)的A/D轉(zhuǎn)換。ADV7181是Analog Device公司推出的一款高性能的集成視頻解碼芯片,能自動(dòng)檢測(cè)并轉(zhuǎn)換標(biāo)準(zhǔn)NTSC,PAL和SECAM制式的電視信號(hào)為8 bit或16 bit的YCb?Cr 4∶2∶2復(fù)合數(shù)字視頻。
ADV7181支持I2C串行總線接口,通過I2C接口對(duì)芯片內(nèi)部相關(guān)控制寄存器進(jìn)行配置。圖4為I2C總線傳輸時(shí)序。本文中的freedev_i2c模塊是用戶自定制邏輯實(shí)現(xiàn)的,編寫verilog代碼,實(shí)現(xiàn)I2C協(xié)議,并通過Avalon總線接口與NiosⅡ軟核處理器相連。
freeedev_bt656模塊對(duì)ITU-R BT.656 YCrCb 4∶2∶2格式的數(shù)字碼流進(jìn)行采集處理,并作為用戶自定義外設(shè)掛接在Avalon總線上。因此,模塊的端口要符合Avalon接口規(guī)范,分為主端口和從端口。主端口為發(fā)起傳輸?shù)腁valon信號(hào)類型的集合,從端口為響應(yīng)傳輸請(qǐng)求的Ava?lon信號(hào)類型的集合。freeedev_bt656模塊通過slave port來設(shè)置模塊工作參數(shù)和模式,視頻采集部分以輸入視頻時(shí)鐘采集數(shù)據(jù)并緩存到視頻FIFO中,master port部分讀視頻FIFO中的數(shù)據(jù),并支持突發(fā)式傳輸將數(shù)據(jù)存放到內(nèi)存中,從而實(shí)現(xiàn)視頻圖像的采集與存儲(chǔ)。
本文中的Tv_to_VGA模塊完成視頻圖像的解碼及顏色轉(zhuǎn)換功能。從ADV7181輸出數(shù)字碼流的格式為ITU-R BT.656 YCrCb 4∶2∶2,即每采4個(gè)亮度信號(hào),就各采樣2個(gè)色差信號(hào)。因此在顏色變換之前,采用“nearest neighbor”[8]像素縮放方法,即通過復(fù)制相鄰采樣點(diǎn)的色差信號(hào)的方法將其格式轉(zhuǎn)化為YCrCb 4∶4∶4。視頻圖像輸出部分的設(shè)計(jì)采用了SDA7123視頻D/A轉(zhuǎn)換器,實(shí)現(xiàn)數(shù)字RGB轉(zhuǎn)換為模擬RGB(VGA)信號(hào)輸出的功能,因此在Tv_to_VGA模塊中也要完成YCrCb到RGB顏色空間轉(zhuǎn)換的功能,輸出8 bit的數(shù)字RGB信號(hào)、行場(chǎng)同步信號(hào)和VGA時(shí)鐘及消隱等信號(hào),將這些信號(hào)送給SDA7123芯片進(jìn)行D/A轉(zhuǎn)換,最后送給VGA監(jiān)視器。
系統(tǒng)的軟件設(shè)計(jì)是在NiosⅡ集成環(huán)境下完成的,NiosⅡ集成開發(fā)環(huán)境(IDE)是NiosⅡ系列嵌入式處理器的基本開發(fā)工具。設(shè)計(jì)中以C語言的形式并利用IDE集成環(huán)境提供的硬件抽象層(HAL)的函數(shù)來完成軟件程序的編寫。
在采集系統(tǒng)啟動(dòng)后,首先初始化視頻I2C控制器,對(duì)ADV7181進(jìn)行配置初始化以及清空FIFO緩沖器等,接著寫命令寄存器,啟動(dòng)采集。在采集過程中,通過讀FIFO的狀態(tài),并利用printf函數(shù)輸出就可以在IDE界面的Con?sole控制臺(tái)中查看采集過程中FIFO的即時(shí)狀態(tài),程序中幾個(gè)主要部分如下:
1)按照PAL的設(shè)計(jì)要求對(duì)ADV7181B相關(guān)寄存器進(jìn)行配置。
2)在SDRAM中開辟視頻緩存空間,定義其大小,并將其初始化為0。
3)寫命令控制寄存器,禁止采集和存儲(chǔ),并清空FIFO。
在實(shí)驗(yàn)室條件下對(duì)系統(tǒng)進(jìn)行測(cè)試。啟動(dòng)系統(tǒng),開啟視頻源進(jìn)入視頻采集處理過程,并最終在VGA監(jiān)視器上顯示出穩(wěn)定清晰的視頻圖像,圖5為系統(tǒng)調(diào)試結(jié)果。
在采集過程中使用Altera SignalTapⅡ嵌入式邏輯分析儀對(duì)FPGA信號(hào)及狀態(tài)進(jìn)行檢測(cè),圖6為SignalTapⅡ檢測(cè)波形,其中A處的YCrCb 4∶2∶2碼流為連續(xù)的80h10h,表明此時(shí)段正處于視頻消隱階段,B處表明在消隱階段解碼后RGB輸出00h,C處表明一個(gè)行同步信號(hào)的使能,分析得到檢測(cè)波形符合設(shè)計(jì)的要求。
本文采用SoPC技術(shù),通過在CycloneⅡFPGA芯片上配置NiosⅡ軟核處理器及相關(guān)接口模塊來實(shí)現(xiàn)硬件平臺(tái),并利用Altera公司的軟件集成開發(fā)環(huán)境NiosⅡIDE進(jìn)行軟件設(shè)計(jì)來控制整個(gè)采集流程。實(shí)現(xiàn)了數(shù)字視頻圖像的高速A/D轉(zhuǎn)換、存儲(chǔ)及顯示等功能。由于采用SoPC技術(shù),模塊具有設(shè)計(jì)靈活、采集速度快和擴(kuò)展升級(jí)性好等優(yōu)點(diǎn)。
[1]黎洪松.數(shù)字視頻技術(shù)及其應(yīng)用[M].北京:清華大學(xué)出版社,1997.
[2]聶飛,馮宗哲,郭寶林,等.嵌入式視頻采集系統(tǒng)的實(shí)現(xiàn)方法研究[J].電視技術(shù),2003,27(8):46-49.
[3]周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2006.
[4]宋承杰,王景存.基于FPGA的視頻字符疊加的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2009,33(12):24-27.
[5]劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[6]錢敏,李富華,黃秋萍,等.基于HDL的PAL制數(shù)字視頻圖像采集控制器設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2007,24(12):191-194.
[7]王曉迪,張景秀.SOPC系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[8]JACK K.Video demystified[M].Burlington:Newnes,2005.