基于FPGA的VGA顯示模式和像素頻率的識別
視頻采集卡不僅能用于影像處理,還可以用一臺顯示器同時顯示、監(jiān)控多臺主機的內(nèi)容,達到實時控制多臺主機的目的。隨著數(shù)字影像技術(shù)的不斷發(fā)展,使得視頻采集卡的需求不斷增加,在電子通信與信息處理領(lǐng)域得到廣泛應用。而傳統(tǒng)的視頻采集卡硬件實現(xiàn)復雜,難于向便攜、嵌入的方向發(fā)展。因此,設計一種硬件簡單、使用方便、便于嵌入到系統(tǒng)中的視頻信號采集電路具有重要的意義。
隨著FPGA(現(xiàn)場可編程門陣列)集成度的增加、功耗和價格的不斷降低,現(xiàn)在的視頻采集卡的實現(xiàn)可以由FPGA來實現(xiàn)。本文設計的VGA(視頻圖形陣列)顯示模式和像素頻率的識別方法,可以作為由FPGA實現(xiàn)的視頻采集卡的一個模塊,并且應用中具有可靠性高、性能穩(wěn)定、調(diào)試簡單、可擴展性好及設計成本低等特點。
1 VGA顯示原理
隨著顯示技術(shù)的不斷發(fā)展,在業(yè)界制定了多種顯示協(xié)議標準。根據(jù)分辨率和刷新頻率的不同,顯示模式的發(fā)展可分為:VGA(640480像素);SVGA(高級VGA,800600像素);XGA(可擴展圖形陣列,1 024768像素)。本文可以識別各種刷新頻率的上述顯示模式,并得到像素頻率值,進一步應用于A/D轉(zhuǎn)換器采樣模塊處理中。
常見的彩色顯示器一般由CRT(陰極射線管)構(gòu)成,彩色是由R(紅)、G(綠)、B(藍)3色組成。顯示是采用逐行掃描的方式,陰極射線槍發(fā)出的電子束打在涂有熒光粉的熒光屏上,產(chǎn)生RGB三色基,最后合成一個彩色圖像。從熒幕的左上方開始向右掃描,每掃完一行圖像電子束回到下一行的最左端,每行結(jié)束后電子槍回掃的過程中進行消隱。然后從新開始行掃描,消隱……,直到掃到熒幕的右下方,電子束回到熒幕的左上方從新開始新的圖像掃描,并且在回到熒幕左上方的過程中進行消隱。在消隱過程中不發(fā)射電子束。每一行掃描結(jié)束時,用HS(行同步)信號進行同步;掃描完所有的行后用VS(場同步)信號進行同步。
VGA的行、場掃描時序見圖1。圖中行頻和場頻在數(shù)量上有很大差別,但時序上一樣。因此,圖1只是示例HS信號、VS信號的行(場)掃描時間、行(場)同步時間、前沿時間、后沿時間、激勵視頻時間等。
2 FPGA系統(tǒng)實現(xiàn)
本文是基于FPGA對VGA顯示模式的識別并計算出像素頻率,采用自頂而下的設計思想,將整個系統(tǒng)分為分頻模塊、HS信號和VS信號計數(shù)模塊、VGA顯示模式選擇模塊。如圖2所示。
2.1分頻模塊
程序中的分頻模塊輸入是系統(tǒng)時鐘,輸出下一模塊的基準時鐘。頻率計的設計中,需要一個基準時鐘,這里依據(jù)外部輸入50 MHz的時鐘頻率來產(chǎn)生0.5 Hz的頻率,誤差范圍為1/50 MHz。在表1中可以看到,最大的行頻是68.7kHz,即在誤差范圍內(nèi)可以滿足設計要求。
2.2 HS和VS信號計數(shù)模塊
HS和VS信號都是低電平有效、占空比小的方波信號。
本模塊采用頻率計的思想,使用直接測量法。直接將HS和VS信號作為計數(shù)時鐘,在輸入到HS和Vs信號計數(shù)模塊的基準時鐘的高電平時開始對HS和VS信號的計數(shù),在基準時鐘的低電平時停止保持計數(shù),并保存計數(shù)值。
下面分析本文中的直接測量誤差。
如圖3所示,被測信號有一個脈沖的上升沿比基準時鐘的上升沿早出現(xiàn)很短的時間,那么在FiducialClock=1時所測的被測信號的脈沖數(shù)就少了1個;同理,被測信號有一個脈沖的上升沿比基準時鐘的下降沿早出現(xiàn)很短的時間,那么在Fiducial Clock=1時所測的被測信號的脈沖數(shù)就多了1個。計數(shù)時鐘的周期記為n,實際輸出的計數(shù)值記為N,那么,N=n1,即計數(shù)時鐘誤差范圍為1/(n1)。
VGA的HS和VS信號的周期很小,如表1所示。n的最大值為1/43.4。所以上述誤差很小。并且,在VGA顯示模式選擇模塊中采用的是范圍選擇,故這種測量方法的誤差在可以容忍的范圍內(nèi)。
2.3 VGA顯示模式選擇模塊
本文主要對VGA顯示模式(表1中的分辨率)進行識別,在確定顯示模式之后,可以用查表直接輸出對應模式的像素頻率。
根據(jù)VGA的顯示原理可以看出:在同一計數(shù)時間內(nèi)場同步信號的脈沖數(shù)和行同步信號的脈沖數(shù)成比率關(guān)系。實際應用中將。HS和VS的計數(shù)模塊的輸出數(shù)相比后再查找表1內(nèi)的分辨率值就能確定顯示模式了,在確定顯示模式的同時輸出像頻。因為,每種顯示模式和像頻之間有確定的對應關(guān)系,并將測到的模式用7段數(shù)碼管顯示見表l。
3 仿真結(jié)果
3.1實驗1
3.1.1 PC機上設置
依次點擊“開始”、“控制面板”、“顯示”、“設置”。調(diào)節(jié)屏幕分辨率為1 024768。再點擊“高級”、“監(jiān)視器”。調(diào)節(jié)屏幕刷新頻率為85 Hz。
3.1.2 QuartusⅡ6.1的設計工程
在QuartusⅡ6.1中建立項目后,輸入各模塊的Verilog HDL程序代碼,邏輯綜合,布局布線,時序分析后生成編程文件。將編程文件下載到FPGA中進行驗證。
圖4是利用軟件QuartusⅡ6.1中的SignalTapⅡLogic Analyzer工具實時監(jiān)測到的reg_th和reg_tv的值,它們分別是:1s內(nèi)HS信號的脈沖數(shù)和VS信號的脈沖數(shù)。
實驗驗證:reg_th=116CDh,reg_tv=57h(采用十六進制表示)。即為行頻71 kHz,場頻為87 Hz。由VGA顯示原理可知:由reg_th和reg_tv就能確定VGA顯示模式的行數(shù)。此值符合在模式1 024768下一列總的像素點數(shù)(包括前沿像素點、后沿像素點、同步頭像素點、視頻像素點)。在程序部分,采用的是區(qū)域選擇,避免了由各種誤差帶來的數(shù)值的不匹配。圖4中顯示數(shù)據(jù)驗證了模式1 024768,像頻由內(nèi)部寄存器保存,并且可以在數(shù)碼管上直觀地看到L的顯示。
3.2 實驗2
依次點擊“開始”、“控制面板”、“顯示”、“設置”。調(diào)節(jié)屏幕分辨率為800600。再點擊“高級”、“監(jiān)視器”。調(diào)節(jié)屏幕刷新頻率為75 Hz。
由圖5可知:reg_th=0B901h,reg_tv=4Bh(屏幕刷新頻率75 Hz)。
實驗驗證:reg_th=08901h,reg_tv=4Bh(采用十六進制表示)。即行頻為47 kHz,場頻是75 Hz。由VGA顯示原理可知:由reg_th和reg_tv就能確定VGA顯示模式的行數(shù)。此值符合在模式800 600下一列總的像素點數(shù)(包括前沿像素點、后沿像素點、同步頭像素點、視頻像素點)。在程序部分,采用的是區(qū)域選擇,避免了由各種誤差帶來的數(shù)值的不匹配。圖5中顯示數(shù)據(jù)驗證了模式800600,像頻由內(nèi)部寄存器保存,并且可以在數(shù)碼管上直觀地看到A的顯示。
4 結(jié)束語
以上實驗結(jié)果證明,本方法可以正確輸出各種VGA顯示模式,即在每種模式中確定一個量后,可模擬基于SRAM工藝的FPGA的LUT(查找表)思想,以確定的量為人口來存儲或輸出VGA各種模式的其他相關(guān)量。本文中的分頻模塊和“頻率計”思想的計數(shù)模塊都可以在其他系統(tǒng)中構(gòu)建特殊時鐘和特殊計數(shù)器時作為參考。同時,將根據(jù)存儲的像素頻率值保存后可用來配置FPGA中的PLL(鎖相環(huán))輸出像素的采樣時鐘,應用于像素點的采樣,進而設計出高性能的基于FPGA嵌入式系統(tǒng)的視頻采集卡。
評論