摘要:提出一種基于FPGA的實時視頻信號處理平臺的設計方法,該系統(tǒng)接收低幀率數(shù)字YCbCr視頻信號,對接收的視頻信號進行格式和彩色空間轉(zhuǎn)換、像素和,利用片外SDRAM存儲器作為幀緩存且通過時序控制器進行幀率提高,最后通過VGA控制模塊對圖像信號進行像素放大并在VGA顯示器上實時顯示。整個設計使用Verilog HDL語言實現(xiàn),采用Altera公司的EP2S60F1020C3N芯片作為核心器件并對功能進行了驗證。
關鍵詞:現(xiàn)場可編程邏輯門陣列;同步動態(tài)隨機存儲器;圖像處理;視頻圖形陣列
一般視頻處理后的實時顯示終端不能脫離PC機的束縛,而且數(shù)字圖像傳感器輸出的圖像幀率也比較低,分辨率也隨著半導體行業(yè)的發(fā)展有了很大的提高,因此為了輸出的圖像能直接在VGA顯示器上顯示,需要對圖像進行幀率提升、彩色空間轉(zhuǎn)換等處理。FPGA器件具有可重復編程的靈活性以及并行處理能力,并且隨著微處理器、專用硬件單元、DSP算法以及IP核的嵌入使其功能越來越強大。本系統(tǒng)的設計是基于Altera公司的EP2S60系列的開發(fā)板,板上集成兩片SDRAM存儲芯片、視頻輸入接口和VGA輸出接口。
1 系統(tǒng)方案
設計的實時視頻信號處理顯示平臺總框圖如圖1所示。
CCD數(shù)字圖像傳感器口I輸出分辨率為720×576,幀率為25 Hz的8位YChCr彩色空間信號,進入FPCA后,F(xiàn)PGA內(nèi)部的圖像處理模塊將視頻信號從YChCr信號轉(zhuǎn)換成RGB空間信號,同時分辨率提升到1024*768,存儲控制模塊將幀數(shù)據(jù)存入SDRAM作為緩存,采用“乒乓”存儲機制,然后通過同步VGA顯示控制模塊產(chǎn)生的60 Hz1024×768的行、場掃描時序把每幀圖像的幀頻從25 Hz提高到60 Hz并輸出,經(jīng)過DA和VGA接口后實時的顯示在VGA顯示器上。
2 系統(tǒng)內(nèi)部模塊設計
2.1 圖像處理模塊
圖像處理部分內(nèi)部功能模塊如圖2所示。
輸入的8位圖像信號以YCbCr(4:2:2)格式進入輸入緩存FIFO,然后通過格式轉(zhuǎn)換模塊將8位的YCbCr信號轉(zhuǎn)換為16位的YCbCr信號,方法為在連續(xù)兩個時鐘下讀取兩次8位的數(shù)據(jù)然后合并到一個16位寄存器中,接著將16位的YCbCr(4:2:2)格式信號采用臨近差值算法生成24位的YCbCr(4:4:4)格式信號,再將24位的YCbCr格式信號根據(jù)CCIR-601標準轉(zhuǎn)換到RGB(8:8:8)彩色空間,數(shù)字YCbCr彩色空間到RGB
彩色空間轉(zhuǎn)換的公式為:
其中Y的取值范圍是(16,240),Cb、Cr的取值范圍是(16,235),所有運算均調(diào)用FPGA內(nèi)部自帶的乘法和實現(xiàn)。最后將24位的RGB彩色空間信號輸出到緩存FIFO,供SDRAM存儲使用。圖像處理模塊設計如圖3所示。
2.2 存儲控制模塊
存儲控制部分內(nèi)部功能模塊如圖4所示。
寫SDRAM存儲模塊判斷緩存FIFO中的RGB信號即像素點數(shù)據(jù)長度滿足720個時,向SDRAM控制器發(fā)出啟動存儲請求,然后SDRAM控制器從緩存FIFO中依次讀取數(shù)據(jù)存入片外的SDRAM中,存576次后即為一幀圖像的數(shù)據(jù),在SDRAM的2個Bank中各存入一幀圖像數(shù)據(jù),采用乒乓存儲機制進行對幀數(shù)據(jù)的讀出操作。由于采集到的圖像幀頻為25 Hz,要提高到VGA顯示的刷新頻率60 Hz,因此時序發(fā)生器要控制讀SDRAM存儲模塊對SDRAM的幀數(shù)據(jù)進行讀出,平均每幀圖像數(shù)據(jù)要讀取的次數(shù)為2.4次,規(guī)定每5幀為一次循環(huán),這5幀數(shù)據(jù)共讀取12次,比例為2:3:2:3:2,同時,每幀的數(shù)據(jù)分576行次讀出打入緩存FIFO,但每次均寫入3行,此處是為后級幀放大做準備,只要FIFO中的數(shù)據(jù)為空時,就立刻打入幀圖像的下3行數(shù)據(jù)。SDRAM控制器模塊設計如圖5所示。
2.3 VGA顯示控制模塊
VGA顯示控制部分內(nèi)部功能模塊如圖6所示。
VGA顯示控制模塊主要是產(chǎn)生滿足分辨率為1 024x768的行頻和場頻,因此還要對720x576的分辨率進行放大,采用的方法是選擇2個互質(zhì)的整數(shù)m和n,使其比值m/n與給定的放大比例盡可能接近。720x7≈1 024x5,576x4≈768x3,因此水平方向的5個原始像素點放大為7個新像素點,垂直方向的3個原始像素點放大為4個新像素點,所以前一級每次存入緩存有3行數(shù)據(jù),水平和垂直方向上的像素放大函數(shù)如下所示。
水平:f0=g0
f1=2/7 g0+5/7 g1
f2=4/7 g1+3/7 g2
f3=6/7 g2+1/7 g3
f4=1/7 g2+6/7 g3
f5=3/7 g3=4/7 g4
f6=6/7 g4+1/7 g5
垂直:f0=g0
f1=1/4 g0+3/4 g1
f2=2/4 g1+2/4 g2
f3=3/4 g2+1/4 g3
其中g表示原始輸入的像素數(shù)據(jù),f表示放大處理后輸出的新像素數(shù)據(jù)。分辨率提高后的數(shù)據(jù)再寫入下一級緩存FIFO,然后依次讀入VGA控制模塊,在像素時鐘的同步下輸出給DA進而通過VGA接口顯示在屏幕上。VGA顯示控制模塊設計如圖7所示。
2.4 視頻輸出效果圖
圖8所示為本系統(tǒng)采集處理后分辨率為1 024x768的視頻圖像截圖??梢钥闯鼋?jīng)FPGA處理后的圖像比較清晰,可以滿足一般的使用需求。
3 結論
本項目設計的基于FPGA的實時視頻信號處理平臺實現(xiàn)了輸入圖像的格式轉(zhuǎn)換、彩色空間轉(zhuǎn)換、幀率提高和像素放大等功能,整個數(shù)據(jù)流處理過程均在100 MHz的同步時鐘下完成,達到了視頻采集顯示的實時性,且脫離了原始PC機的束縛,實現(xiàn)了系統(tǒng)的小型化,便于推廣和應用。但是本設計也存在一些可以優(yōu)化的方面,例如可以將圖像輸出分辨率設置成多種模式,通過外部按鍵根據(jù)用戶使用需求來控制分辨率的大小,還可以將視頻輸入端改成多通道輸入,對不同區(qū)域的視頻信息進行切換顯示或同時顯示。