VGA全稱是Video Graphics Array,即視頻圖形陣列,是一個使用模擬信號進行視頻傳輸?shù)臉?biāo)準。分辨率高,顯示速度快。
一、傳輸協(xié)議
VGA接口15個引腳,除去地線,我們一般會用到5個引腳:1(RED)、2(GREEN)、3(BLUE)、13(HSYNC)、14(VSYNC)。
如圖1:
1、2、3指的是傳輸?shù)募t、綠、藍三色的模擬信號,范圍為0-0.714V,0代表無色,0.714V代表滿色,需要注意的這是模擬信號,因此前面還需要進行一個數(shù)模轉(zhuǎn)換。HSYNC(行同步信號)和VSYNC(場同步信號)分別是指傳輸一行和傳輸一幀的時序,下面看一下他們的時序圖:
a:行同步時期,掃描地址的復(fù)位
b:行消隱后肩,掃描地址轉(zhuǎn)移后的穩(wěn)定等待準備期
c:行顯示時期,數(shù)據(jù)有效區(qū)域
d:行消隱前肩,掃描地址轉(zhuǎn)移的準備
e:行掃描總時間,一行掃描的總時間
o:場同步時期,掃描地址的復(fù)位
p:場消隱后肩,掃描地址轉(zhuǎn)移后的穩(wěn)定等待準備期
q:場顯示時期,數(shù)據(jù)有效區(qū)域
r:場消隱前肩,掃描地址轉(zhuǎn)移的準備
s:場掃描總時間,一場掃描的總時間
可以看出,行同步時序和場同步時序類似,分別經(jīng)歷4個階段:拉低、顯示后沿、有效數(shù)據(jù)傳輸和顯示前言。
FPGA硬件測試時要將sys_pll中的輸出頻率改為25MHZ。
三、驅(qū)動電路的verilog設(shè)計(lcd_driver)
目前液晶顯示器普及,而高于 60Hz 的刷新率對于液晶來說,沒有任何意義,所以我們以 640*480 在 60Hz 的刷新率下為例。
本次我們采用的是ADV7123視頻轉(zhuǎn)換芯片來實現(xiàn)。
1)為便于移植,根據(jù)640*480 60hz分辨率下的參數(shù),宏定義相關(guān)數(shù)據(jù)。
2)行掃描單位hcnt計數(shù)
3)列掃描單位vcnt計數(shù)
每掃描完一行,即hcnt完成H_TOTAL次計數(shù)后,vcnt進行自加。
4)ADV7123控制信號輸出
為了實現(xiàn)數(shù)據(jù)在lcd_dclk上升沿有效,我們將clk翻轉(zhuǎn)輸出,已實現(xiàn)上升沿采樣 。
lcd_blank作為顯示空白信號,低電平有效。
設(shè)計中不需要lcd_sync信息,可以直接接地。
5)有效顯示使能信號輸出
當(dāng)使能信號有效時,接收外部輸入的RGB數(shù)據(jù)lcd_data.
6)外部數(shù)據(jù)請求控制信號
為了保證數(shù)據(jù)穩(wěn)定,lcd_request要提前一個時鐘請求外部輸入數(shù)據(jù) 。
同時,設(shè)計中實時顯示下一時刻的掃描地址lcd_xpos、lcd_ypos,也要提前一個時鐘輸出,以保證外部數(shù)據(jù)輸入的同步化。
lcd_xpos、lcd_ypos是顯示器有效顯示區(qū)域的行列坐標(biāo)計數(shù)值。
四、模擬VGA圖像數(shù)據(jù)的輸入
1)宏定義三原色組合的顏色如下
這里要注意所用的VGA驅(qū)動電路是RGB888還是RGB565,如果是RGB565,三原色要改成下面樣式,并把其他程序中l(wèi)cd_data的位數(shù)改為16位:
筆者曾在這里犯過錯誤。
2)根據(jù)輸入的行、列地址信號,輸出三原色組合后得到的8條彩色。
五、不同分辨率的VGA驅(qū)動
lcd_para文件定義了四種VGA分辨率驅(qū)動,這里只需修改定義的注釋就行,并把PLL鎖相環(huán)中的頻率改為相應(yīng)的頻率。
PLL修改方法為直接修改下面參數(shù)中的乘法除法因子:
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1620文章
21510瀏覽量
598932 -
Verilog
+關(guān)注
關(guān)注
28文章
1333瀏覽量
109714 -
模擬信號
+關(guān)注
關(guān)注
8文章
1082瀏覽量
52246 -
驅(qū)動電路
+關(guān)注
關(guān)注
152文章
1508瀏覽量
108106 -
VGA
+關(guān)注
關(guān)注
5文章
520瀏覽量
62592
發(fā)布評論請先 登錄
相關(guān)推薦
評論