新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 【從零開始走進FPGA】 玩轉VGA

        【從零開始走進FPGA】 玩轉VGA

        作者: 時間:2015-06-11 來源:網絡 收藏

          一、的誘惑

        本文引用地址:http://www.104case.com/article/275552.htm

          首先,的驅動,這事,一般的單片機是辦不到的;由于的速度,以及并行的優勢,加上可現場配置的優勢,的配置,只有俺們可以勝任,也只有可以隨心所欲地配置(當然ARM也可以,應用比較高吧)。

          初學者就是喜歡看炫的效果,往往會忍不住想玩。尤其玩FPGA的,沒玩VGA就感到跟單片機沒啥提升,因此VGA的驅動也不得不講。Bingo當年也是如此。擋不住VGA的誘惑,初學者問Bingo VGA問題的人也是灰常的多,也許一般教科書理論太強,實際應用不是很身后,在此Bingo用淺顯易懂的語言來講述VGA的驅動原理,以及通過設計一個可移植模塊的應用來講述。

          二、VGA驅動原理

          此處Bingo不參考任何資料,用當年已學的知識,用淺顯易懂的語言講述。

          1、VGA接口

          

        wps_clip_image-18353

         

          最主要的幾根線:

          

        image

         

          更詳細的資料,請看 http://baike.baidu.com/view/10346.htm

          2、VGA時序

          VGA其實就是相當于一塊芯片,跟單片機驅動IC一樣,滿足一定的時序,便能驅動起來。

          (1)掃描軌跡

          VGA的掃描其實很簡單,大致軌跡如下所示:

          

        wps_clip_image-8553

         

          沒掃描完一行,從新開始下一行;每掃完一場,重新開始下一場。相信你應該看的懂。

          (2)行場掃描

          以下是行掃描,場掃描HS,VS時序圖

          

        wps_clip_image-27336

         

          如上如所示:VGA一直在掃描,沒一場的掃描包括了若干行掃描,如此循環。

          (3)VS時序深入分析

          VS時序如下所示:

          

        wps_clip_image-20360

         

          可見時序的循環,可被劃分為a,b,c,d4個時期。這四個時期定義如下:

          A~B:場消隱期 即同步,相當于還原掃描坐標吧

          B~C:場消隱后肩 相當于準備開始掃描吧

          C~D:場顯示期 掃描中,數據有效區域

          D~E:場消隱前肩 完成掃描,相當于準備同步

          (4)HS時序深入分析

          可見時序的循環,可被劃分為a,b,c,d4個時期。這四個時期定義如下:

          A~B:行消隱期 即同步,相當于還原掃描坐標吧

          B~C:行消隱后肩 相當于準備開始掃描吧

          C~D:行顯示期 掃描中,數據有效區域

          D~E:行消隱前肩 完成掃描,相當于準備同步

          

        wps_clip_image-20832

         

          綜上描述,我們只要知道每個時期的時間,便可以表示出VGA的時序。而FPGA的工作是由固定頻率的時鐘觸發的,因此某固定時間可以用n次觸發來表示。因此我們很容易就想到了FPGA常用的計數方法:比如說行掃描,我們計數0~H_total-1。用另一個進程將其劃分為4個時期,安標注分配。其實這相當于狀態機。

          以下是固定分辨率1024*768 60fps下HS,VS的標準:

          

        wps_clip_image-9084

         

          用代碼表示4個時期,如下:

          // VGA_1024_768_60fps_65MHz

          // Horizontal Parameter( Pixel )

          parameter H_DISP = 11'd1024,

          parameter H_FRONT = 11'd24,

          parameter H_SYNC = 11'd136,

          parameter H_BACK = 11'd160,

          parameter H_TOTAL = 11'd1344,

          // Virtical Parameter( Line )

          parameter V_DISP = 10'd768,

          parameter V_FRONT = 10'd3,

          parameter V_SYNC = 10'd6,

          parameter V_BACK = 10'd29,

          parameter V_TOTAL = 10'd806

          3、VGA電路

          (1)三原色

          VGA接口:R,G,B三通道,直接賦給數字信號,RGB,最多產生8種色彩。這是最基本的。電路如下所示:

          

        wps_clip_image-11884

         

          (2)真彩顯示

          a) 電阻網絡

          考慮到成本意識實現的簡易方案,用R-2R電阻網絡分流模擬DAC替換ADV7123視頻轉換芯片。見以下幾個方案:

          

        wps_clip_image-12612

         

          DE1 VGA模擬電路

          

        wps_clip_image-1911

         

          小馬哥電路圖

          具體設計參考Bingo當年總結:

          http://www.cnblogs.com/crazybingo/archive/2010/07/31/1789323.html

          或者參考小馬哥設計:

          http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3582675&bbs_page_no=1&search_mode=2&search_text=VGA&bbs_id=9999

          b) 專用視頻轉換芯片

          利用專用視頻轉換芯片,ADV7120等,將數字信號轉換為VGA RGB的模擬信號。ADV7120為高速D/A芯片,將數字信號轉換為模擬信號輸給VGA,電路如下:

          

        wps_clip_image-19353

         

          三、可移植VGA模塊設計

          Bingo玩VGA也算是比較早了,當年也是視覺的誘惑,以及唯FPGA獨尊的優勢。于是之后一發而不可收拾。本章Bingo將自己這些年最終優化的VGA驅動模塊,發布至此。本模塊所有代碼均Bingo獨家創造,請尊重版權哈。

          本設計已經封裝成模塊,只要修改時序參數、掃描時鐘參數以及在vga_display.v中添加顯示電路,即可。方便移植,希望對大家有用。

          1、模塊劃分

          

        wps_clip_image-16944

         

          (1)vga_design.v

          工程頂層文件,例化各個模塊。

          (2)sys_ctrl.v

          PLL時鐘分配電路。

          (3)vga_display.v

          顯示電路,根據時序,用于描述VGA的顯示電路。

          (4)vga_driver.v

          VGA驅動電路,對時序,狀態的約束。

          RTL圖如下所示:

          

        wps_clip_image-19643

         

        fpga相關文章:fpga是什么



        上一頁 1 2 下一頁

        關鍵詞: VGA FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和硕县| 玉门市| 宜黄县| 紫云| 惠来县| 抚远县| 浠水县| 大同县| 杨浦区| 武威市| 黑山县| 武夷山市| 东兴市| 武功县| 榆林市| 广南县| 女性| 会理县| 类乌齐县| 北海市| 龙南县| 吉木萨尔县| 乌兰察布市| 乌什县| 额敏县| 南康市| 天津市| 丰顺县| 东丰县| 灵山县| 兴和县| 三台县| 兴安盟| 来凤县| 双柏县| 门源| 喀喇沁旗| 郎溪县| 宝应县| 玉林市| 卢氏县|