摘 要:基于FPGA" title="FPGA">FPGA開發(fā)的機器人" title="機器人">機器人VGA視頻監(jiān)視系統(tǒng)。該系統(tǒng)可將經(jīng)模擬攝像頭得到的數(shù)據(jù)通過處理后直接送到顯示器,節(jié)省了計算機的處理過程;系統(tǒng)預(yù)留出外部接口和程序空間,有很好的再開發(fā)性。根據(jù)輸入視頻信號和輸出視頻信號的不同格式,討論了用Verilog硬件描述語言設(shè)計從YcrCb到RGB格式的轉(zhuǎn)換器的方法。
關(guān)鍵詞:可編程器件 硬件描述語言 實時圖像 VGA顯示器
工業(yè)機器人往往在無人現(xiàn)場監(jiān)視的情況下工作,這就要求工作人員能在控制室中實時監(jiān)視機器人的運動狀態(tài),了解機器人周圍的工作環(huán)境,及時發(fā)現(xiàn)機器人運動時出現(xiàn)的故障。最好的監(jiān)視手段就是實時視頻監(jiān)視。隨著計算機、多媒體和集成電路等技術(shù)的發(fā)展,各種大規(guī)模集成電路的出現(xiàn)為視頻信號數(shù)字化處理提供了有效手段。利用可編程器件FPGA實現(xiàn)的VGA彩色顯示控制器已有很多的實際應(yīng)用。本設(shè)計采用先進的FPGA芯片,通過硬件描述語言Verilog設(shè)計模塊控制器實現(xiàn)各個系統(tǒng)模塊間的通信及控制,通過Modelsim軟件對系統(tǒng)功能模塊進行仿真綜合,在VGA顯示器" title="VGA顯示器">VGA顯示器上得到十分清晰的圖像。系統(tǒng)預(yù)留出一定的程序空間,可根據(jù)不同現(xiàn)場需要對圖像進行諸如小波變換、圖像增強等處理。
1 系統(tǒng)整體結(jié)構(gòu)
系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。
目前數(shù)字監(jiān)視系統(tǒng)已在某些領(lǐng)域取代了模擬監(jiān)視系統(tǒng),但與數(shù)字?jǐn)z像頭相比,模擬攝像頭在高分辨率和變焦方面仍占有優(yōu)勢。根據(jù)機器人實際工作情況,本設(shè)計選用高性能的模擬攝像頭來采集視頻信號。
模擬攝像頭輸出的視頻信號中除了圖像信號外,還有場同步、行同步、開槽脈沖等信號,它們和圖像信號混合在一起,所以不能直接對其進行A/D轉(zhuǎn)換。要得到圖像數(shù)據(jù),就要對視頻信號進行必要的同步分離。本系統(tǒng)采用Philips公司的增強型可編程視頻解碼器SAA7113,通過FPGA配置其寄存器,使其輸出標(biāo)準(zhǔn)ITU 656 YUV4:2:2格式(8位)VPO數(shù)據(jù);通過Verilog語言設(shè)計的I2C總線控制器,控制兩個多功能實時輸出端口,并可以用來校驗是否寫入操作正確;通過I2C總線對地址02H進行配置可以得到想要的片內(nèi)信號源[1][2]。
系統(tǒng)選用EP1C20為FPGA主芯片,作為Cyclone系列芯片中功能最強大的芯片,其運算速度快,具有20 060個邏輯單元,F(xiàn)PGA內(nèi)部有PLL,可以用50MHz的時鐘產(chǎn)生SRAM及VGA控制器所需要的時鐘。FPGA內(nèi)部結(jié)構(gòu)非常適合數(shù)字視頻處理,同時技術(shù)成熟,完全可以用來實現(xiàn)對機器人運動的視頻監(jiān)視。
幀存是圖像處理器與顯示設(shè)備之間的數(shù)據(jù)通道,因此要顯示的圖像數(shù)據(jù)首先存放在幀存中,然后再輸出顯示。幀存的設(shè)計是圖形顯示系統(tǒng)設(shè)計的關(guān)鍵。采集的一幀圖像是800×600像素,每像素用2字節(jié)表示,每幀圖像800×600×16bit=7500kbit,分成奇數(shù)場和偶數(shù)場分別存儲在兩片SRAM中,則每片SRAM存儲3750kbit的圖像數(shù)據(jù),因此選用兩片256K×16bit=4Mbit的靜態(tài)存儲器(SRAM)ISSI IS61LV25616-10T芯片作為圖像幀存,并用FPGA設(shè)計幀存控制器,從而大大減小電路板的尺寸,增加系統(tǒng)的可靠性和設(shè)計靈活性。FPGA作為邏輯控制芯片, 負責(zé)識別源信號, 將圖像數(shù)據(jù)按照一定的格式寫入幀緩存, 同時以固定的速率從幀緩存中讀出數(shù)據(jù)并產(chǎn)生相應(yīng)的同步信號,一同送往DAC。
視頻輸出模塊采用ADI公司的VGA DAC ADV7125KST50,其與FPGA間的接口為標(biāo)準(zhǔn)的數(shù)字VGA信號,同時可配置為8位輸入。ADV7125KST50包括三路8位D/A轉(zhuǎn)換器并與RS-343A/RS-170接口輸出兼容。
ADV7125KST50在本系統(tǒng)中的硬件設(shè)計如圖2。
2 系統(tǒng)功能模塊
2.1 各功能模塊設(shè)計
系統(tǒng)通過Verilog硬件描述語言設(shè)計的I2C總線控制器與SAA7113芯片完成原始圖像的處理與傳輸。I2C控制核的設(shè)計采用自頂而下的方法,分為三個模塊:I2C_top模塊是頂層管理模塊,用來生成當(dāng)前I2C控制核的工作狀態(tài),把命令字信號送到I2C_cmd模塊;I2C_cmd模塊的核心部分是命令狀態(tài)機,該模塊的主要功能有兩個:一是把I2C_top模塊發(fā)送的start、write、read、stop四個命令信號轉(zhuǎn)化命令碼發(fā)送到I2C_controller模塊,二是實現(xiàn)接收數(shù)據(jù)的串并轉(zhuǎn)換;I2C_controller模塊負責(zé)I2C接口,最終實現(xiàn)I2C總線信號SCL和SDA的啟動、停止、讀、寫、確認等具體操作的時序關(guān)系[5]。
SRAM控制器完成對幀存的數(shù)據(jù)存儲和讀取,SRAM控制器的結(jié)構(gòu)包括系統(tǒng)控制接口模塊、CMD命令解析模塊、命令響應(yīng)模塊、數(shù)據(jù)通路模塊共四個模塊。系統(tǒng)控制接口模塊用于接收系統(tǒng)的控制信號,進而產(chǎn)生不同的CMD命令組合;CMD命令解析模塊用于接收CMD命令并解碼生成操作指令;命令響應(yīng)模塊用于接收操作指令并產(chǎn)生SRAM的操作動作;數(shù)據(jù)通路模塊則用于控制數(shù)據(jù)的有效輸入輸出。
當(dāng)FPGA向SRAM存儲數(shù)字視頻信號時,用SAA7113的LLC2作為FPGA內(nèi)部同步時鐘信號;當(dāng)FPGA傳輸數(shù)字視頻信號時,讀選通信號Clk作為內(nèi)部同步時鐘信號。當(dāng)有VS上升沿時,如果RTS0為低電平,則表明奇數(shù)場即將到來,產(chǎn)生Pin高電平信號,對Pin取反作為SRAM(ODD)的寫信號WE1;如果RTS0為高電平,則表明偶數(shù)場即將到來,產(chǎn)生PinEven高電平信號,對PinEven取反后作為SRAM(Even)的寫信號WE2,WE1和WE2經(jīng)過與門后產(chǎn)生兩個SRAM的寫選通信號WE。此外,由Pin和PinEven產(chǎn)生PinAll信號作為選擇內(nèi)部同步時鐘的控制信號。由FPGA芯片產(chǎn)生的Ramodd(OE1)和RamEven(OE2)信號,分別用作SRAM(ODD)和SRAM(EVEN)的讀信號,OE1和OE2經(jīng)過與門后產(chǎn)生兩個SRAM讀選通信號OE。當(dāng)PinAll為高電平時,表示FPGA正在向SRAM存儲數(shù)據(jù),此時用WE1作為SRAM(ODD)的片選信號CE1,用WE2作為SRAM(EVEN)的片選信號CE2;當(dāng)Pin為低電平時,表示正在從SRAM讀取數(shù)據(jù),此時用OE1作為SRAM(ODD)的片選信號CE1,用OE2作為SRAM(EVEN)的片選信號CE2。
VGA控制器實現(xiàn)視頻信號的處理,并將圖像顯示在VGA顯示器上。在VGA中,水平同步脈沖在光柵掃描線需要回到水平開始位置,即在屏幕左邊時插入,垂直同步脈沖在光柵掃描線需要回到垂直開始位置,即在屏幕上方時插入。復(fù)合同步脈沖是水平同步脈沖和垂直同步脈沖的組合。RGB為像素數(shù)據(jù),當(dāng)消隱有效時,RGB信號無效。VGA主要參數(shù)的工業(yè)標(biāo)準(zhǔn)為:像素輸出頻率為25.175MHz;行頻(線頻率)為31.469kHz;場頻(刷新率)為59.941Hz[4]。圖3是VGA行掃描、場掃描的時序圖。
2.2 YCrCb到RGB格式的轉(zhuǎn)換器設(shè)計
在SAA7113 所提供的多種數(shù)據(jù)輸出格式中,ITU656 格式在8位輸出管腳上直接輸出與像素時鐘相對應(yīng)的像素灰度值。由于SAA7113是YUV輸出,而目前所有的顯示器都采用RGB 值驅(qū)動,這就要求在顯示每個像素之前,必須把彩色分量值轉(zhuǎn)換成RGB 值。根據(jù)SAA7113數(shù)據(jù)手冊的輸入標(biāo)準(zhǔn)以及系統(tǒng)的時鐘,需要對輸入的數(shù)據(jù)做一個延時,調(diào)整Y、Cb、Cr的順序,有效視頻信號延遲一個周期,而對準(zhǔn)信號要延遲兩個周期。本系統(tǒng)通過Verilog語言設(shè)計了一個從YCrCb到RGB格式的轉(zhuǎn)換器。
YCrCb轉(zhuǎn)換到RGB(注意到0.299+0.587+0.114=1.0,三原色的系數(shù)之所以不同是因為人的眼睛對不同波長的顏色有不同的敏感度):
Y=0.299R+0.587G+0.114B
CB=-0.1687R-0.3313G+0.5B
CR=0.5R-0.4187-0.0813
RGB轉(zhuǎn)換回YCRCB:
R=Y+1.402CR
G=Y-0.34414CB-0.71414CR
B=Y+1.772CB
2.2.1 YcbCr到RGB 變換器接口說明
module yuvrgb(
clk, //時鐘輸入
rst, //復(fù)位輸入
y_in, //變換前Y分量輸入
cb_in, //變換前Cb分量輸入
cr_in, //變換前Cr分量輸入
ena_in, //待變換數(shù)據(jù)使能,當(dāng)它為高時,輸入數(shù)據(jù)有效
R_out, //變換后R分量輸出
G_out, //變換后G分量輸出
B_out, //變換后B分量輸出
ena_out //變換后數(shù)據(jù)使能輸出
);
2.2.2 YcbCr到RGB變換器測試方法
在Quartus Ⅱ下通過調(diào)用Modelsim軟件對該變換器進行仿真,將YCbCr 輸入轉(zhuǎn)換成RGB 輸出,時序圖如圖4所示。
在Quartus Ⅱ下調(diào)用Modelsim的方法簡單、直觀,并且易于修改。根據(jù)得到的仿真結(jié)果,可以看到變換器滿足時序要求。
本文設(shè)計開發(fā)了一套基于FPGA的機器人圖像監(jiān)視" title="圖像監(jiān)視">圖像監(jiān)視系統(tǒng),該系統(tǒng)成功地應(yīng)用于對機器人的視頻圖像傳輸,并可通過Verilog硬件描述語言設(shè)計各種控制模塊并實現(xiàn)模塊間的通信。這個平臺可以對視頻信號進行高質(zhì)量的傳輸,還可以根據(jù)現(xiàn)場需要在今后的設(shè)計中對視頻信號進行一系列的圖像處理,具有很好的再開發(fā)性。
參考文獻
[1] 張曉健.視頻解碼芯片SAA7113的初始化與控制[J].電子設(shè)計應(yīng)用,2003,(8).
[2] PHILIPS Corporation.SAA7113 DATA SHEET[Z].1999-7-1.
[3] 陳海燕.I2C串行通訊的軟件實現(xiàn)[I].國防科技大學(xué)學(xué)報,1996,(4).
[4] ROBIN M,POULIN M.視頻和音頻系統(tǒng)的設(shè)計與安裝.人民郵電出版社,2003.