視頻圖像採集之——VGA接口與時序電路(1)

背景:算法

本系列是爲了學習了圖像處理,視頻採集系統搭建。將本身學過的幾個圖像處理的基礎算法,作過的設計記錄下來,計劃是這樣的:學習

①:理論介紹,spa

②:先搭建一個VGA時序系統,顯示方格圖,豎條紋圖之類的,算是基本入門設計

③:搭建一個固定圖像的VGA顯示,視頻

④:搭建一個使用PC端上位機經過串口發送一幅圖片數據到FPGA開發板,FPGA接收數據並作處理最終發送給VGA顯示屏顯示blog

⑤:基於DDR3的VGA顯示驅動控制實現接口

⑥:OV5640介紹,及其IIC配置進程

⑦:OV5640的視頻圖像顯示圖片

上述均不涉及圖像算法設計開發

 

 

 

 

視頻圖像採集之——VGA接口與時序電路(1)

關於VGA描述:

    VGA在網上介紹已經爛大街了,但仍是決定炒冷飯。VGA掃描顯示其實就是兩條線,一個是行掃描,一個是場掃描,在行有效和場有效的時候把數據發送給VGA便可顯示了。顯示標準就是行分辨率x列分辨率@60hz即一秒屏幕刷新60次,拿640x480@60HZ作例子,即行爲640個像素,場爲480個像素。

顯示器掃描方式分爲逐行掃描和隔行掃描:逐行掃描是掃描從屏幕左上角一點開始,從左像右逐點掃描,每掃描完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT對電子束進行消隱,每行結束時,用行同步信號進行同步;當掃描完全部的行,造成一幀,用場同步信號進行場同步,並使掃描回到屏幕左上方,同時進行場消隱,開始下一幀。隔行掃描是指電子束掃描時每隔一行掃一線,完成一屏後在返回來掃描剩下的線,隔行掃描的顯示器閃爍的厲害,會讓使用者的眼睛疲勞。

 

 

 

關於VGA硬件:

 

 

 

 

 最主要的幾根線:

 

 關於VGA時序分析:

 http://tinyvga.com/vga-timing

 

 

HS時序深刻分析

可見時序的循環,可被劃分爲a,b,c,d4個時期。這四個時期定義以下:

  A~B:行消隱期 即同步,至關於還原掃描座標吧

  B~C:行消隱後肩 至關於準備開始掃描吧

  C~D:行顯示期 掃描中,數據有效區域

  D~E:行消隱前肩 完成掃描,至關於準備同步

 

S時序深刻分析

可見時序的循環,可被劃分爲a,b,c,d4個時期。這四個時期定義以下:

  A~B:場消隱期 即同步,至關於還原掃描座標吧

  B~C:場消隱後肩 至關於準備開始掃描吧

  C~D:場顯示期 掃描中,數據有效區域

  D~E:場消隱前肩 完成掃描,至關於準備同步

 

綜上描述,咱們只要知道每一個時期的時間,即可以表示出VGA的時序。而FPGA的工做是由固定頻率的時鐘觸發的,所以某固定時間能夠用n次觸發來表示。所以咱們很容易就想到了FPGA經常使用的計數方法:好比說行掃描,咱們計數0~H_total-1。用另外一個進程將其劃分爲4個時期,按標註分配。其實這至關於狀態機。

 如下是固定分辨率1280*1024 60fps下HS,VS的標準:

 

有圖可得:

各個時期像素數:

// Horizontal Parameter( Pixel )
H_DISP     = 11'd1280,
H_FRONT = 11'd48,
H_SYNC    = 11'd112,
H_BACK    = 11'd248,
H_TOTAL  = 11'd1688,
// Virtical Parameter( Line )
V_DISP     = 11'd1024,
V_FRONT = 11'd1,
V_SYNC    = 11'd3,
V_BACK    = 11'd38,
V_TOTAL  = 11'd1066;

像素時鐘頻率(即所需的VGA時鐘頻率)

(H_DISP + H_BACK + H_SYNC + H_FRONT)×(V_DISP + V_BACK + V_SYNC + V_FRONT)× REFRESH_RATE

在此爲(1280 + 248 + 112 + 48)×(1024 + 38 + 3 + 1)× 60 = 1688 × 1066 × 60 = 107.964480 MHz (工業標準爲 108.000 MHz ,固然都是能正常顯示的,推薦用工業標準。)

一幀圖像的數據量(以RGB565 格式爲例)

H_DISP × V_DISP × (5 + 6 + 5)bit = [H_DISP × V_DISP × (5 + 6 + 5)bit ] ÷ 8 B =  [H_DISP × V_DISP × (5 + 6 + 5)bit ] ÷ 8 ÷ 1024 K

在此爲 1280 × 1024 × 16 bit = 20971520 ÷ 8 B = 2621440  ÷ 1024 K = 2560  ÷ 1024 M = 2.5 M

相關文章
相關標籤/搜索