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