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