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