基于FPGA的VGA時(shí)序彩條信號(hào)實(shí)現(xiàn)
0 引 言
利用現(xiàn)場(chǎng)可編程邏輯器件產(chǎn)生VGA時(shí)序信號(hào)和彩條圖像信號(hào),并將其作為信號(hào)源,應(yīng)用于電視機(jī)或計(jì)算機(jī)等彩色顯示器的電路開發(fā),方便彩色顯示器驅(qū)動(dòng)控制電路的調(diào)試。計(jì)算機(jī)顯示器的顯示有許多標(biāo)準(zhǔn),常見(jiàn)的有VGA,SVGA等。在這里嘗試用FPGA實(shí)現(xiàn) VGA圖像顯示控制器,這一過(guò)程通過(guò)編程實(shí)現(xiàn),之后通過(guò)軟件的測(cè)試和仿真,當(dāng)軟件驗(yàn)證無(wú)誤后完成硬件的下載驗(yàn)證,最終在CRT顯示器上實(shí)現(xiàn)輸出,基本原理就是利用FPGA的可編程原理和VGA的時(shí)序控制原理,這在產(chǎn)品開發(fā)設(shè)計(jì)中有許多實(shí)際應(yīng)用。
1 VGA顯示原理
VGA(Video Graphics Array)作為一種標(biāo)準(zhǔn)的顯示接口得到了廣泛的應(yīng)用。VGA在任何時(shí)刻都必須工作在某一顯示模式下,其顯示模式分為字符顯示模式和圖形顯示模式,而在應(yīng)用中討論的都是圖形顯示模式。
VGA的圖形模式分為三類:CGA,EGA兼容的圖形模式;標(biāo)準(zhǔn)VGA圖形模式;VGA擴(kuò)展圖形模式,后兩種圖形模式統(tǒng)稱為VGA圖形模式。文中基于標(biāo)準(zhǔn)VGA模式來(lái)實(shí)現(xiàn)。工業(yè)標(biāo)準(zhǔn)的VGA顯示模式為:640×480×16×60。
常見(jiàn)的彩色顯示器一般由陰極射線管(CRT)構(gòu)成,彩色由GRB(Green Red Blue)基色組成。顯示采用逐行掃描的方式解決,陰極射線槍發(fā)出電子束打在涂有熒光粉的熒光屏上,產(chǎn)生GRB基色,合成一個(gè)彩色像素。掃描從屏幕的左上方開始,從左到右,從上到下,逐行掃描,每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這期間,CRT、對(duì)電子束進(jìn)行消隱,每行結(jié)束時(shí),用行同步信號(hào)進(jìn)行行同步;掃描完所有行,用場(chǎng)同步信號(hào)進(jìn)行場(chǎng)同步,并使掃描回到屏幕的左上方,同時(shí)進(jìn)行場(chǎng)消隱,并預(yù)備進(jìn)行下一次的掃描。VGA顯示控制器控制 CRT顯示圖象的過(guò)程如圖1所示。
2 VGA信號(hào)時(shí)序
圖2所示是計(jì)算機(jī)VGA(640×480,60 Hz)圖像格式的信號(hào)時(shí)序圖。圖2中,V_sync為場(chǎng)同步信號(hào),場(chǎng)周期TVSYNC=16.683 ms,每場(chǎng)有525行,其中480行為有效顯示行,45行為場(chǎng)消隱期。場(chǎng)同步信號(hào)Vs中每場(chǎng)有1個(gè)脈沖,該脈沖的低電平寬度tWV=63μs(2行)。場(chǎng)消隱期包括場(chǎng)同步時(shí)間tWH、場(chǎng)消隱前肩tHV(13行)、場(chǎng)消隱后肩tVH(30行),共45行。行周期THSYNC=31.78μs,每顯示行包括 800點(diǎn)。其中,640點(diǎn)為有效顯示區(qū),160點(diǎn)為行消隱期(非顯示區(qū))。行同步信號(hào)Hs中每行有一個(gè)脈沖,該脈沖的低電平寬度tWV=3.81 μs(即96個(gè)DCK);行消隱期包括行同步時(shí)間tWH,行消隱前肩tHC(19個(gè)DCLK)和行消隱后肩tCH(45個(gè)DCLK),共160個(gè)點(diǎn)時(shí)鐘。復(fù)合消隱信號(hào)是行消隱信號(hào)和場(chǎng)消隱信號(hào)的邏輯與,在有效顯示期復(fù)合消隱信號(hào)為高電平,在非顯示區(qū)域它是低電平。
3 VGA時(shí)序信號(hào)及彩條信號(hào)產(chǎn)生模塊設(shè)計(jì)
3.1 VGA時(shí)序信號(hào)產(chǎn)生模塊
VGA時(shí)序信號(hào)產(chǎn)生模塊包括行點(diǎn)數(shù)計(jì)數(shù)器h_cnt、場(chǎng)行數(shù)計(jì)數(shù)器v_cnt、行同步產(chǎn)生狀態(tài)機(jī)h_state和場(chǎng)同步產(chǎn)生狀態(tài)機(jī)v_state等。其中,行點(diǎn)數(shù)計(jì)數(shù)器是800進(jìn)制計(jì)數(shù)器,場(chǎng)行數(shù)計(jì)數(shù)器是525進(jìn)制計(jì)數(shù)器。行同步狀態(tài)機(jī)h_state有h_video,h_front,h_sync, h_back四種狀態(tài),它根據(jù)行點(diǎn)數(shù)計(jì)數(shù)器的計(jì)數(shù)值來(lái)進(jìn)行狀態(tài)轉(zhuǎn)換;場(chǎng)同步狀態(tài)機(jī)v_state有v_video,v_Front,v_sync, v_Back四種狀態(tài),它根據(jù)場(chǎng)行數(shù)計(jì)數(shù)器的計(jì)數(shù)值來(lái)進(jìn)行狀態(tài)翻轉(zhuǎn)。這兩個(gè)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖分別如圖3和圖4所示。
當(dāng)行狀態(tài)機(jī)h_state復(fù)位時(shí),即進(jìn)入h_video狀態(tài),它對(duì)應(yīng)每行的有效顯示區(qū)域。行計(jì)數(shù)器h_cnt對(duì)25 MHz的點(diǎn)時(shí)鐘進(jìn)行計(jì)數(shù),當(dāng)行計(jì)數(shù)器h_cnt的計(jì)數(shù)值到達(dá)639時(shí),行同步狀態(tài)機(jī)即進(jìn)入行消隱前肩h_front狀態(tài);當(dāng)h_cnt的計(jì)數(shù)值為663 時(shí),行同步狀態(tài)機(jī)進(jìn)入行同步狀態(tài)h_sync,此時(shí),行同步信號(hào)Hs輸出低電平。當(dāng)h_cnt的計(jì)數(shù)值為759時(shí),狀態(tài)機(jī)即進(jìn)入行消隱后肩h_back狀態(tài);當(dāng)行狀態(tài)機(jī)為h_front,h_sync,h_back狀態(tài)時(shí),行消隱信號(hào)輸出低電平。當(dāng)h_cnt的計(jì)數(shù)值為799時(shí),行同步狀態(tài)機(jī)進(jìn)人 h_video狀態(tài),同時(shí),行計(jì)數(shù)器的同步復(fù)位信號(hào)為高電平,使行計(jì)數(shù)器復(fù)位。
場(chǎng)狀態(tài)機(jī)v_state開始時(shí)進(jìn)入v_video狀態(tài),對(duì)應(yīng)每場(chǎng)的有效顯示行,場(chǎng)計(jì)數(shù)器v_cnt的計(jì)數(shù)值每行加1。當(dāng)場(chǎng)計(jì)數(shù)器的計(jì)數(shù)值到達(dá)479時(shí),場(chǎng)狀態(tài)機(jī)翻轉(zhuǎn),進(jìn)入場(chǎng)消隱前肩v_ront狀態(tài);當(dāng)v_cnt的值為497時(shí),狀態(tài)機(jī)v_state進(jìn)入場(chǎng)同步狀態(tài)v_sync,場(chǎng)同步信號(hào)Vs此時(shí)輸出低電平;當(dāng)v_cnt的值為499時(shí),狀態(tài)機(jī)v_state進(jìn)入場(chǎng)消隱后肩v_back狀態(tài);當(dāng)v_cnt的值為524時(shí),狀態(tài)機(jī)v_state又翻轉(zhuǎn)進(jìn)入 v_video狀態(tài),同時(shí)輸出高電平到場(chǎng)計(jì)數(shù)器v_cnt的同步清零端使其清零。當(dāng)場(chǎng)狀態(tài)機(jī)v_state的狀態(tài)為v_Front,v_sync, v_Back三種狀態(tài)時(shí),場(chǎng)消隱信號(hào)輸出低電平,其余時(shí)刻為高電平。行、場(chǎng)消隱信號(hào)的邏輯與即為復(fù)合消隱信號(hào)。
3.2 VGA彩條信號(hào)產(chǎn)生模塊
彩條信號(hào)產(chǎn)生模塊包括了彩條模式控制、豎彩條發(fā)生和橫彩條發(fā)生等三個(gè)模塊。豎彩條發(fā)生模塊根據(jù)行點(diǎn)數(shù)器h_cnt的計(jì)數(shù)值來(lái)產(chǎn)生彩條,其流程圖如圖5所示。它對(duì)行點(diǎn)數(shù)計(jì)數(shù)器的數(shù)值進(jìn)行判斷,每80條豎線生成一種豎彩條,共8種豎彩條橫彩條發(fā)生模塊與豎彩條發(fā)生模塊相似。它根據(jù)場(chǎng)行數(shù)計(jì)數(shù)器v_cnt的計(jì)數(shù)值來(lái)產(chǎn)生橫彩條,流程圖如圖6所示。每60條掃描線為一個(gè)彩條寬度,共8種橫彩條模式。計(jì)數(shù)器mode的值又決定著輸出彩條信號(hào)的類型,當(dāng)mode為0 時(shí),輸出的彩條為豎彩條;當(dāng)mode為1時(shí),輸出的彩條橫彩條。
3.3 用FPGA下載驗(yàn)證結(jié)果
對(duì)上述分析的兩個(gè)模塊,已經(jīng)用QuartusⅡ軟件進(jìn)行仿真驗(yàn)證,并得到正確的仿真圖形。通過(guò)了軟件的測(cè)試,設(shè)計(jì)進(jìn)入了最終階段——硬件的調(diào)試與通過(guò),本設(shè)計(jì)采取的是FPGA開發(fā)板,圖7就是FPGA開發(fā)板的實(shí)物圖,將程序?qū)懭隤C機(jī)經(jīng)過(guò)FPGA芯片在VGA接口處輸出數(shù)據(jù),并顯示在CRT顯示器中。圖 8,圖9就是設(shè)計(jì)出的8種彩色條紋輸出顯示控制器設(shè)計(jì)的最終輸出結(jié)果。
由實(shí)驗(yàn)結(jié)果可以看出,該設(shè)計(jì)可以正確地輸出8種彩色的橫條紋和豎條紋。從而驗(yàn)證VGA模塊的時(shí)序及彩條信號(hào)模塊的正確性。
4 結(jié) 語(yǔ)
在調(diào)試電路時(shí),使用FPGA中多余的邏輯產(chǎn)生VGA信號(hào)和彩條信號(hào),所產(chǎn)生的信號(hào)穩(wěn)定可靠,為電路調(diào)試帶來(lái)了很多方便。
在實(shí)際應(yīng)用中,還可以方便地修改彩條信號(hào)產(chǎn)生模塊。比如,可以修改行、場(chǎng)計(jì)數(shù)器的判斷值,以調(diào)整彩條的大小,增加延時(shí)跳變的功能,使輸出的彩條信號(hào)產(chǎn)生各種變化。此外,與VGA信號(hào)類似,改變行、場(chǎng)狀態(tài)機(jī)的轉(zhuǎn)換值和行、場(chǎng)計(jì)數(shù)器的設(shè)置,還可以產(chǎn)生其他各種模式的圖像信號(hào),以適應(yīng)不同分辨率圖像顯示的需要。如果在該設(shè)計(jì)的基礎(chǔ)上加上采集模塊,就可以顯示希望顯示的圖片。