10.9??典型實(shí)例19:VGA接口的設(shè)計(jì)與實(shí)現(xiàn)
10.9.1??實(shí)例內(nèi)容及目標(biāo)
1.實(shí)例的主要內(nèi)容
本節(jié)旨在設(shè)計(jì)實(shí)現(xiàn)了FPGA與VGA顯示器的接口,幫助讀者進(jìn)一步了解VGA接口的時(shí)序和設(shè)計(jì)方法。
2.實(shí)例目標(biāo)
通過本實(shí)例,讀者應(yīng)達(dá)到以下目標(biāo)。
·??掌握VGA接口的標(biāo)準(zhǔn)時(shí)序。
·??掌握利用FPGA設(shè)計(jì)驅(qū)動(dòng)的基本思想和方法。
·??熟練掌握狀態(tài)機(jī)的使用。
10.9.2??VGA接口實(shí)例內(nèi)容
紅色颶風(fēng)開發(fā)板的VGA接口可以產(chǎn)生8種顏色,可以用來顯示字符和簡(jiǎn)單圖形。本實(shí)例要求通過VGA接口,在顯示器上依次顯示8種顏色的彩色條紋,條紋寬度相同。
10.9.3??FPGA代碼設(shè)計(jì)實(shí)現(xiàn)
按照VGA時(shí)序要求產(chǎn)生行/列同步信號(hào),并且在指定的時(shí)間(有效像素期間)將要顯示的顏色數(shù)據(jù)輸出到RGB。
不同的顯示模式和刷新頻率下,具體同步信號(hào)前、后、同步信號(hào)、有效像素?cái)?shù)是不同的,要根據(jù)像素時(shí)鐘頻率來設(shè)置。以800×600,60Hz為例,像素時(shí)鐘為40MHz,即:
像素時(shí)鐘=(800+40+128+88)×(600+1+4+23)×60=40MHz
設(shè)計(jì)中可根據(jù)系統(tǒng)時(shí)鐘頻率來選擇合適的顯示模式。
10.9.4??ModelSim仿真驗(yàn)證
1.行顯示
設(shè)定一個(gè)列計(jì)數(shù)器,計(jì)數(shù)到相應(yīng)的值時(shí),給出相應(yīng)的同步信號(hào),并在像素有效期間,輸出有效的顏色數(shù)據(jù),行計(jì)數(shù)器通過檢測(cè)列同步信號(hào)來計(jì)數(shù),檢測(cè)到列同步信號(hào),表示新一行的開始,這樣就可控制在不同的行顯示不同的內(nèi)容。
仿真結(jié)果如圖10.45所示。
圖10.45??行顯示仿真結(jié)果
其中,hcnt為列計(jì)數(shù),列計(jì)數(shù)到有效像素時(shí),給出enable信號(hào),只有enable信號(hào)為高時(shí),才給出有效像素?cái)?shù)據(jù),并且在每個(gè)同步信號(hào)后,行計(jì)數(shù)器加1。
如圖10.46所示為行同步信號(hào)產(chǎn)生時(shí)仿真結(jié)果,當(dāng)計(jì)數(shù)到604-1=603行時(shí),給出行同步信號(hào),同步信號(hào)低電平持續(xù)4個(gè)行的時(shí)間,同步信號(hào)后持續(xù)21行的時(shí)間,之后再?gòu)牡谝恍械谝涣虚_始。
圖10.46??行同步信號(hào)產(chǎn)生后仿真結(jié)果
?
2.列顯示
如圖10.47是列顯仿真結(jié)果。列顯示和行顯示不同在于,同一行的像素,計(jì)數(shù)到不同的值時(shí),輸出不同的顏色數(shù)據(jù),每一行都是如此,最終就可得到列顯的彩色條紋。
圖10.47??列顯仿真結(jié)果
10.9.5??小結(jié)
本節(jié)對(duì)利用FPGA來驅(qū)動(dòng)VGA接口顯示器的方法做了介紹,并通過編譯下載在紅色颶風(fēng)的開發(fā)板上實(shí)現(xiàn)