基于FPGA的VGA可移植模塊終極設(shè)計(jì)
一、VGA的誘惑
本文引用地址:http://2s4d.com/article/190659.htm首先,VGA的驅(qū)動(dòng),這事,一般的單片機(jī)是辦不到的;由于FPGA的速度,以及并行的優(yōu)勢,加上可現(xiàn)場配置的優(yōu)勢,VGA的配置,只有俺們FPGA可以勝任,也只有FPGA可以隨心所欲地配置(當(dāng)然ARM也可以,應(yīng)用比較高吧)。
初學(xué)者就是喜歡看炫的效果,往往會(huì)忍不住想玩。尤其玩FPGA的,沒玩VGA就感到跟單片機(jī)沒啥提升,因此VGA的驅(qū)動(dòng)也不得不講。Bingo當(dāng)年也是如此。擋不住VGA的誘惑,初學(xué)者問Bingo VGA問題的人也是灰常的多,也許一般教科書理論太強(qiáng),實(shí)際應(yīng)用不是很身后,在此Bingo用淺顯易懂的語言來講述VGA的驅(qū)動(dòng)原理,以及通過設(shè)計(jì)一個(gè)可移植模塊的應(yīng)用來講述。
二、VGA驅(qū)動(dòng)原理
此處Bingo不參考任何資料,用當(dāng)年已學(xué)的知識(shí),用淺顯易懂的語言講述。
2、VGA時(shí)序
VGA其實(shí)就是相當(dāng)于一塊芯片,跟單片機(jī)驅(qū)動(dòng)IC一樣,滿足一定的時(shí)序,便能驅(qū)動(dòng)起來。
(1)掃描軌跡
VGA的掃描其實(shí)很簡單,大致軌跡如下所示:
沒掃描完一行,從新開始下一行;每掃完一場,重新開始下一場。相信你應(yīng)該看的懂。
(2)行場掃描
以下是行掃描,場掃描HS,VS時(shí)序圖
如上如所示:VGA一直在掃描,沒一場的掃描包括了若干行掃描,如此循環(huán)。
(3)VS時(shí)序深入分析
VS時(shí)序如下所示:
可見時(shí)序的循環(huán),可被劃分為a,b,c,d4個(gè)時(shí)期。這四個(gè)時(shí)期定義如下:
A~B:場消隱期 即同步,相當(dāng)于還原掃描坐標(biāo)吧
B~C:場消隱后肩 相當(dāng)于準(zhǔn)備開始掃描吧
C~D:場顯示期 掃描中,數(shù)據(jù)有效區(qū)域
D~E:場消隱前肩 完成掃描,相當(dāng)于準(zhǔn)備同步
(4)HS時(shí)序深入分析
可見時(shí)序的循環(huán),可被劃分為a,b,c,d4個(gè)時(shí)期。這四個(gè)時(shí)期定義如下:
A~B:行消隱期 即同步,相當(dāng)于還原掃描坐標(biāo)吧
B~C:行消隱后肩 相當(dāng)于準(zhǔn)備開始掃描吧
C~D:行顯示期 掃描中,數(shù)據(jù)有效區(qū)域
D~E:行消隱前肩 完成掃描,相當(dāng)于準(zhǔn)備同步
綜上描述,我們只要知道每個(gè)時(shí)期的時(shí)間,便可以表示出VGA的時(shí)序。而FPGA的工作是由固定頻率的時(shí)鐘觸發(fā)的,因此某固定時(shí)間可以用n次觸發(fā)來表示。因此我們很容易就想到了FPGA常用的計(jì)數(shù)方法:比如說行掃描,我們計(jì)數(shù)0~H_total-1。用另一個(gè)進(jìn)程將其劃分為4個(gè)時(shí)期,安標(biāo)注分配。其實(shí)這相當(dāng)于狀態(tài)機(jī)。
以下是固定分辨率1024*768 60fps下HS,VS的標(biāo)準(zhǔn):
評(píng)論