廖永清 ,丁旭昌 ,付建國,陳舜兒 ,劉偉平
(1.暨南大學 電子工程系,廣東 廣州 510632;2.光電信息與傳感技術廣東普通高校重點實驗室(暨南大學),廣東 廣州 510632)
隨著電子技術和集成工藝水平的不斷提高,微處理器的運算與控制能力也有了顯著的提升,由于越來越多的電子產品對功耗有著苛刻的要求,導致目前微處理器的帶負載能力比較弱,通常輸出電壓為mV級,這也制約了它們在顯示應用領域的發展。目前,在數據采集和顯示控制領域,FPGA正好彌補了微處理器帶負載能力弱的缺點,且它在VGA(Video Graphics Array)信號處理中也有著大量的應用[1]。
VGA是由IBM公司制訂的一套視頻傳輸標準,它在顯示領域中得到了廣泛的應用[2-3]。目前國內外一般采用VGA顯示卡來實現VGA圖像的動態顯示和控制,但顯示卡價格一般比較高,且增加了系統的體積與復雜度,給系統今后的維護和升級帶來諸多不便。針對這種情況,筆者研究并設計了一種基于FPGA的VGA圖像動態顯示控制器,該控制器采用Verilog HDL實現相關的控制功能,這大大提升了系統的實時性和可靠性,在大規模嵌入式系統設計中具有較高的工程價值和很好的應用前景。
VGA圖像動態顯示控制器主要由基于Spartan-3系列XC3S200-4PQ208的FPGA、時鐘電路、系統電源、接口電路、6×1矩陣式鍵盤和VGA接口的顯示器,其系統電路框圖如圖1所示。其中FPGA是整個系統的核心部分,通過對其編程可輸出紅、綠、藍三基色信號和HS(Horizon Synchronizing)、VS(Vertical Synchronizing)行場掃描同步信號。當FPGA接收時序信號后,內部的顯示控制模塊根據控制信號選擇相應的圖像信息模塊并輸出圖像信號,與行場掃描時序信號一起通過VGA接口電路送入顯示器,在VGA顯示器上便可看到相應的動態圖像。

VGA圖像動態顯示控制器的軟件實現采取的是自頂向下的方式,由系統整體設計方案規劃相應的軟件框圖,將其劃分為分頻模塊、時序信號產生模塊、圖像信息模塊和顯示控制模塊。再運用Verilog HDL設計各個子模塊,同時對各個子模塊分別進行仿真與調試,最后將所有調試成功的子模塊集成為一個整體的系統,程序設計模塊框圖如圖2所示。要實現VGA圖像動態顯示在軟件實現上有兩個關鍵點:第一是要實現VGA的時序,使得VGA信號嚴格遵守協議要求的行、場同步時序;第二是實現圖像控制[4],本設計的難點是實現圖像信號的動態顯示控制。以下介紹程序各個子模塊的設計與實現。

系統為FPGA提供的主振頻率是50 MHz,本設計要實現VGA顯示模式是640×480@60 Hz,按照VGA協議傳輸標準這種顯示模式的時鐘頻率要求為25.175 MHz,所以在分頻模塊中首先要對時鐘信號進行2分頻,在誤差尤許的范圍內分頻后的時鐘頻率可滿足該顯示模式下的時序要求。
要實現VGA的顯示與控制關鍵是要實現它的時序關系,即產生的行同步信號和場同步信號符合VGA傳輸標準協議的要求,該模塊的作用就是把系統時鐘分配到各個模塊并產生相應的同步信號。要形成一幅完整流暢的圖像,首先要確保行、場同步,因為二者的同步就確定了一行和一幀圖像的開始和結束時間[5]。VGA的協議傳輸標準給出的參考顯示時序如圖3所示,由圖可知,雖然行頻和場頻在數值上相差比較大,但二者在時序上是一樣的。

圖像信息模塊包括傳輸圖像數據和圖片在顯示屏幕上的定位兩個部分,利用行場同步信號的計數器可以對圖片進行定位,在圖像顯示的有效區域內按照顯示模式和圖片的大小確定行和列的起點坐標和終點坐標。對于圖片數據的傳輸,這通常取決于字庫提取軟件的相關設置以及圖片的大小與形狀,本文采用的是PC?toLCD2002字模軟件,取模方式選擇列行式,取模走向選擇逆向,字模軟件的相應配置就決定了圖片的一個像素點就對應著字節的數據。這里特別注意的是在行同步信號到達圖片定位的位置時,必須將相應的數據信息全部送出,否則將會出現畫面不流暢或失真等。
VGA圖像動態顯示是基于動畫幀的思想,當場計數器每計到524時,屏計數器k加1,用屏計數器控制畫面顯示的先后順序,在快速掃描時,要實現流暢的動畫顯示,每秒至少應該顯示24幅圖片。在實際應用過程中,k的值不能是無限大的,應該根據設計中定義的寄存器的大小來鎖定某一個值,否則之前出現過的圖片又會重現。本設計實現屏計數器的代碼為:

動態顯示的過程當中,顯示流暢的圖像的同時也應該避免不同圖像的重疊現象,因此要能看到不同圖像錯落有致地顯示,對要顯示的每一幅圖像都應該定義其動作,這也是設計的一個難點,以下是本設計實現其中一幅圖像動作的部分代碼。當屏計數器k<100時,圖像的位置不變;當k>100時,圖像的位置隨著k的增加開始發生變化,在屏幕上圖像表現為一個下落的過程。具體代碼為:

時序信號產生模塊是本設計的關鍵,本文對其進行了嚴格的仿真和驗證。本設計利用Xilinx ISE 7.1i ISE仿真工具Simulator,通過Verilog HDL語言編寫Test?bench,最后的仿真結果如圖4和圖5所示。


利用Simulator ISE仿真工具可以實時監測到行時序和幀時序的實時波形,從仿真圖可以看到,顯示模式為640×480@60 Hz時,每一幀的時間是16.6 ms,每一行的時間是31.66 μs,仿真結果完全符合該顯示模式下VGA接口的協議。
在Xinlinx ISE 7.1i中建立項目后,輸入各模塊的Verilog HDL程序代碼,并進行邏輯綜合、布局布線、時序分析后生成編程文件,再將編程文件下載到FPGA中并通過VGA接口與顯示器相連。通過聯調可以看到,顯示器上能錯落有致地動態顯示圖片,并在OSD選單中選擇模式,此時顯示器上顯示了640×480@60 Hz的顯示模式,顯示器上顯示的部分畫面如圖6和圖7所示,達到了設計的預期目標,驗證了設計的準確性。


本文設計的VGA圖像動態顯示控制器是基于FPGA上實現的,采用Verilog HDL語言在Xilinx ISE 7.1i軟件環境下完成軟件設計,并對整個系統都進行了調試,最終在硬件平臺上實現了動態顯示圖像。與傳統實現方案相比,本系統具有以下優點:1)系統采用了Verilog HDL語言編寫,這樣可以使軟件程序簡潔且執行效率高,減少了開發工作量、降低了設計難度;2)系統是基于FPGA上實現的,增加了系統驅動能力、可靠性和設計靈活性,對嵌入式系統的實現具有較高的工程價值;3)系統采用FPGA芯片作為控制核心,可以在不使用VGA顯示卡和計算機的情況下實現VGA圖像的動態顯示和控制,大大減少了電路板的尺寸,節約了成本并擴展了應用范圍。
[1]劉威,石彥杰,高博.基于FPGA的VGA顯示模式識別[J].計算機工程與科學,2008,30(4):152-155.
[2]王恒心,熊慶國.基于FPGA/CPLD的嵌入式VGA顯示系統[J].微計算機信息,2008,24(9):146-148.
[3]陳曉輝,劉峰.基于TMS320DM355的VGA信號實時監控系統[J].電視技術,2010,34(3):25-27.
[4]謝昭莉,蔣濤,劉亮,等.基于ARM嵌入式系統的VGA接口的研究與設計[J].液晶與顯示,2007,22(6):761-764.
[5]段磊.基于FPGA的VGA顯示系統[J].世界電子元器件,2007(9):102-103.