《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的VGA圖形控制器設計
基于FPGA的VGA圖形控制器設計
來源:微型機與應用2013年第15期
池清萍
(北京工業(yè)大學 軟件學院,,北京 100124)
摘要: 利用FPGA設計并實現(xiàn)了一種VGA圖形控制器,。根據(jù)VGA顯示原理,利用VHDL作為邏輯描述語言,,在Xilinx的開發(fā)板Nexys2上完成了設計的功能。通過按動開發(fā)板上的按鍵可切換顯示屏顯示的圖形,,可實現(xiàn)橫條紋,、豎條紋、方格棋盤等8 bit彩色圖形的顯示,。
Abstract:
Key words :

摘  要: 利用FPGA設計并實現(xiàn)了一種VGA圖形控制器,。根據(jù)VGA顯示原理,利用VHDL作為邏輯描述語言,,在Xilinx的開發(fā)板Nexys2上完成了設計的功能,。通過按動開發(fā)板上的按鍵可切換顯示屏顯示的圖形,可實現(xiàn)橫條紋,、豎條紋,、方格棋盤等8 bit彩色圖形的顯示,。
關鍵詞: VGA;FPGA,;圖形控制器,;8 bit彩色圖形

    隨著電子技術的進步和數(shù)字圖像處理應用領域的不斷擴大,F(xiàn)PGA對VGA信號的采集起到了不可忽視的作用[1],?;贔PGA設計的VGA圖形控制器有不少便利之處:首先,F(xiàn)PGA以其設計靈活,、結構簡單,、集成度高等優(yōu)點,近年來被廣泛運用到各種功能的電路設計當中,。以硬件描述語言(Verilog或VHDL)完成的電路設計可以經(jīng)過簡單的綜合與布局快速燒至到FPGA上進行測試,,成為現(xiàn)代IC設計驗證的主流技術。其次,,VGA作為一種通用的顯示接口,,已經(jīng)廣泛應用于工作和生活當中。傳統(tǒng)的VGA顯示控制主要以專門的芯片電路和通用處理器來實現(xiàn),,體積大且不靈活,,但基于FPGA的VGA顯示控制顯著提高了產(chǎn)品的靈活性。最后,,基于FPGA設計的產(chǎn)品開發(fā)過程簡單,,投資小,系統(tǒng)成本較低,,使得本VGA圖形控制器在同類商品中將更具有價格上的競爭優(yōu)勢,。本文著重介紹一種利用Nexys2 FPGA開發(fā)板實現(xiàn)VGA顯示控制的方法,能夠?qū)崿F(xiàn)不同圖案的顯示,,該方法也可以方便地應用于各種嵌入式便攜系統(tǒng)中,。
1 Nexys2概述
     現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)在嵌入式系統(tǒng)中被廣泛運用。其配置和編程是通過軟件進行的,,通用性和靈活性極強,。在產(chǎn)品升級時,不需要額外改變原有的硬件電路,,只需修改程序,,大大宿短了系統(tǒng)設計周期。Nexys2作為一款比較經(jīng)典的FPGA開發(fā)板,,能夠完全兼容嵌入式處理器,。特別在VGA系統(tǒng)設計中,因其板上集成了16 MB高速SDRAM和16 MB Flash ROM,不需接外部ROM便可存儲圖像數(shù)據(jù)或字符數(shù)據(jù),,使其得到更加廣泛的運用,。
2 VGA概述及工作原理
2.1 VGA技術

    計算機顯示器的顯示有許多標準,常見的有VGA(視頻圖形陣列),、SVGA(高級視頻圖形陣列)等,。在圖像處理系統(tǒng)中,若是采用傳統(tǒng)辦法將圖像數(shù)據(jù)傳回電腦并通過顯示器顯示出來,,則整個傳輸過程中都需要嵌入式系統(tǒng)的CPU不斷對傳輸?shù)膱D像數(shù)據(jù)信號進行控制,,不僅浪費CPU資源并且依賴計算機,顯著降低了系統(tǒng)運行的靈活性,。但如果基于FPGA對VGA接口進行設計,,數(shù)據(jù)流就只在系統(tǒng)的內(nèi)部流動而不依賴電腦,實現(xiàn)了系統(tǒng)的最小化,,并且增強了系統(tǒng)的可靠性和設計的靈活性[1],。FPGA開發(fā)板上集成了很多功能模塊,使得基于FPGA的設計還可以根據(jù)用戶的特定需要設計出針對性強的VGA圖形控制器,,不僅滿足了多樣化的用戶需要,,而且降低了開發(fā)成本,使產(chǎn)品的升級換代更加快捷,、方便。
2.2 VGA顯示原理
    VGA顯示系統(tǒng)如圖1所示,,主要由VGA控制器,、存儲器(若顯示更大的圖像,可采用外部ROM取代FPGA內(nèi)部的ROM)和顯示器3部分組成,。VGA控制器調(diào)用存儲器里儲存的數(shù)據(jù)并對此數(shù)據(jù)進行相應的處理,,轉換成相應的時序信號傳送給顯示器,顯示器按照接收到的信號進行顯示[2],。

    對應640×480×60 Hz的模式,,工業(yè)標準所要求的時鐘頻率為25.175 MHz,行周期Tg為800個時鐘,,場周期Tg為525個行周期,。由于無法得到25.175 MHz的時鐘頻率,因此在設計中采用將全局時鐘50 MHz二分頻得到的25 MHz的頻率來驅(qū)動行計數(shù)器,。
    當VS=0,、HS=0時,CRT顯示的內(nèi)容為亮的過程,。當一行掃描完畢,,行同步HS=1。期間,,CRT掃描產(chǎn)生消隱,,電子束回到CRT左邊下一行的起始位置(X=0,,Y=1);當掃描完480行后,,CRT的場同步VS=1,,產(chǎn)生場同步使掃描線回到CRT的第一行第一列(X=0,Y=0)處(約為兩個行周期),。此程也稱光柵掃描[3],,如圖3所示。

3 系統(tǒng)設計方案
    整個系統(tǒng)以Nexys2 FPGA開發(fā)板為核心,,通過對其編程可輸出紅,、綠、藍三基色信號和HS,、VS行,、場掃描同步時序信號。當FPGA接收到輸出控制信號后,,內(nèi)部的數(shù)據(jù)選擇器模塊根據(jù)控制信號選擇相應的圖形生成模塊,,輸出圖形信號與行、場掃描時序信號一起通過VGA接口電路傳送至顯示器,,在VGA顯示器上便可看到相應的彩色圖像[4],。系統(tǒng)采用Nexys2開發(fā)板上提供的50 MHz時鐘作為全局參考時鐘,由一片晶振提供時鐘源,。通過硬件描述語言VHDL對時鐘進行分頻,,產(chǎn)生各模塊所需時鐘頻率。通過硬件描述語言VHDL對Nexys2開發(fā)板上的按鍵進行規(guī)定,,使得開發(fā)板工作時可以通過按鍵切換VGA顯示的圖形,。系統(tǒng)模塊如圖4所示。

4 系統(tǒng)實現(xiàn)

 


    本設計采用了8 bit數(shù)字信號線,,可產(chǎn)生256種不同的顏色,。本彩色條紋模式顯示控制器可通過按鍵實現(xiàn)橫彩條、豎彩條,、棋盤格等圖案的顯示,。橫彩條可根據(jù)場計數(shù)器產(chǎn)生,在480個有效數(shù)據(jù)區(qū)內(nèi),,每60個產(chǎn)生一個彩條,,即對其進行8等分;豎彩條則根據(jù)行計數(shù)器產(chǎn)生,,在640個有效數(shù)據(jù)區(qū)內(nèi),,每80個產(chǎn)生一個彩條,也是8等分;棋盤格可由橫彩條數(shù)據(jù)和豎彩條數(shù)據(jù)“異或”或“同或”而得到,。同時,,可通過按鍵來控制VGA不同圖案的輸出。
4.1 坐標定位
    設定要全屏顯示圖形,,如圖2所示,,行、場時序的Td部分是屏幕所顯示部分,,即屏幕從坐標第45行,、第152個像素(左上角)開始顯示。若顯示橫彩條,,則從第45行開始,,每過60行給輸出rgbout賦一個顏色值,直到第525行,;豎彩條即從第152個像素開始,,每過80個像素給輸出rgbout賦予一個顏色值,直到第792個像素,。
4.2 VGA控制程序設計
4.2.1 VGA控制器程序信號定義

    entity vga is
    Port(clk:in std_logic,;//全局時鐘
     keya:in STD_LOGIC;//控制按鍵
      syncV:inout std_logic,;//場同步信號
     syncH:inout std_logic,;//行同步型號
      rgbout:out std_logic_vector(7 downto 0));
//8 bit輸出顏色信號
end vga,;
4.2.2 產(chǎn)生彩條圖形的部分VHDL描述
process(clkdiv)//clkdiv為分頻后的時鐘信號
 begin    
      if(clkdiv=′1′ and clkdiv′Event)then
        if(HS>=152)and(HS<232)and(VS>=45)and(VS<525)then//橫彩條
          rgbx<="01010101",;
        elsif(HS>=232)and(HS<312)and(VS>=45)and(VS<525)then
          rgbx<="01110101";
        ……
        elsif(HS>=712)and(HS<792)and(VS>=45)and(VS<525)then
           rgbx<="00010111",;
        else
           rgbx<="00000000";
        end if,;
  end if,;
end process;
4.2.3 控制按鍵的VHDL描述
    process(keya)
      begin
        if(keya=′1′and keya′Event)then
      mmd<=mmd+1,;//定義的2位邏輯信號
    end if,;
  end process;
process(mmd)
    begin
          case mmd is
       when"00"=>rgbout<=rgbx,;
//當無按鍵操作時,,VGA顯示屏顯示橫彩條
       when"01"=>rgbout<=rgby;
//第一次按鍵時,,VGA顯示屏顯示豎彩條
       when"10"=>rgbout<=rgbx xor rgby,;
//第二次按鍵時,VGA顯示第一種棋盤圖形
       when"11"=>rgbout<=rgbx xnor rgby;
//第二次按鍵時,,VGA顯示第二種棋盤圖形
          when others=>null,;
      end case;
end process,;
4.3 系統(tǒng)測試結果與結論
    在Xilinx ISE 13.3中創(chuàng)建項目后,,輸入系統(tǒng)的VHDL程序代碼進行管腳約束,然后進行邏輯綜合,、布局布線,、時序分析后生成.bit編程文件,再將編程文件下載到Nexys2 FPGA中,,并通過VGA接口與顯示器相連,。系統(tǒng)中的keya可約束為Nexys2開發(fā)板中任一按鍵,作為顯示圖形的切換按鍵,。通過按keya鍵,,系統(tǒng)的顯示效果如圖5所示。

    本文設計的VGA圖形顯示控制器是基于FPGA實現(xiàn)的,,采用VHDL語言在Xilinx 13.3軟件環(huán)境下完成軟件設計,,并對整個系統(tǒng)進行了調(diào)試,最終在硬件平臺Nexys2上實現(xiàn)了圖形的顯示,。與傳統(tǒng)的VGA控制器相比,,本設計具有以下有點:(1)采用硬件描述語言VHDL進行開發(fā),軟件程序簡單且執(zhí)行效率高,,使得系統(tǒng)設計變得更加快捷方便,;(2)脫離了PC控制,減少了控制器的體積,,從而擴展了其應用范圍,,對于各種嵌入式便攜系統(tǒng)具有更重要的現(xiàn)實意義及工程實用價值。
    本設計只做了彩條及棋盤格圖形的顯示,,如果要做字符顯示或真彩圖像顯示,,則需將像素點數(shù)據(jù)保存到FPGA內(nèi)部的EAB RAM、外部ROM或RAM中,。在接下來的設計中,,將會在此方向上進行相應的改進和完善。
參考文獻
[1] 呂康.基于FPGA的VGA圖形控制器設計[J].科技風,,2011(14):32.
[2] 朱奕丹,,方怡冰.基于FPGA的圖像采集與VGA顯示系統(tǒng)[J].計算機應用,2011,,3(5):1258-1261,,1264.
[3] 潘松,,黃繼業(yè).EDA技術與VHDL[M].北京:清華大學出版社,2009.
[4] 楊杰,,穆偉斌.基于FPGA的VGA控制器設計與實現(xiàn)[J].齊齊哈爾大學學報,,2008,24(6):50-52.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。