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