linansengling

           

          VHDL實現VGA接口設計

          1、??? 輸入信號

          ?? clk : 時鐘(每個象素點的顯示時鐘)

          ?? reset : 復位信號

          2、??? 輸出信號

          ??? vga_hs_control?????????????????? :????? 行同步 ?

          ??????? vga_vs_control?????????????????? :????? 場同步 ;

          ??????? vga_read_dispaly ????????????? :?????

          ??????? vga_green_dispaly????????????? :?????

          ??????? vga_blue_dispaly?????? :??

          3、??? 技術參數

          clk : 24M?? hs : 30KHZ?? vs : 57.14HZ

          ?? 設計原理

          VGA( 視頻圖形陣列 ) 作為一種標準的顯示接口得到廣泛的應用 , 一般有專用芯片,本實驗采用 FPGA( 現場可編程門陣列 ) 設計 VGA 接口可以將要顯示的數據直接送到顯示器,節省了計算機的處理過程,加快了數據的處理速度,節約了硬件成本。

          顯示適配器有多種形式,它可按照所符合的視頻顯示標準來分類,業界制定了多種顯示標準,從最初的 MDA 經歷了 CGA EGA VGA XGA,SVGA 等的發展過程。與相應的顯示適配器標準相配的顯示器也稱之為 EGA VGA XGA 顯示器等。實際上顯示器的標準主要反映在它們的接口,顯示功能和行,場工作頻率上。

          ?

          CRT 顯示器的掃描方式

          (1)??? 當柵掃描方式 從上向下依次順序掃描

          完一場稱逐行掃描。一行用行頻控制( hs ,

          一場用場頻控制( vs )。掃完一行回來叫行消

          隱,掃完一場回來叫場消隱

          (2)??? 隨機掃描方式

          ?

          VGA 接口標準

          時鐘頻率: 25 175 MHz( 像素輸出的頻率 ) ;行頻: 31. 469 Hz ;場頻: 59 94 Hz ?

          ?

          設計 VGA

          設計 VGA 圖像顯示控制需要注意兩個問題 L2] :一個是時序的驅動,這是完成設計的關鍵,時序稍有偏差,顯示必然不正常,甚至會損壞彩色顯示器;另一個是 VGA 信號的電平驅動。顯示控制器設計提示:顯示器技術規格提供的行頻一般在 30 kHz 45 kHz( 保守數據 ) ,場頻一般在 50 Hz 75 Hz( 保守數據 ) 。針對以上保守數據,設計分辨率為 640x480 的顯示接口(如圖 4 所示),以 30 kHz 的行頻進行掃描時所需時鐘頻率為: 30 kHz × 800( 行周期 )=24 MHz ,則場頻為: 30 kHz ÷ 525( 場周期 )=5.14 Hz 。本實驗實現在顯示器上顯示彩條的設計,初始時時 GRB= 000 ”,用一記數器過一段時間使 R 取反,即變為紅色。這樣就有黑、紅彩條了。

          clip_image002.gif?

          ?

          ? ? ?? ? ? ? ?? ? ? ? ???????????????

          R

          G

          B

          ?0?? 0?? 0???? 0??? 1??? 1?? 1?? 1

          ?0?? 0?? 1???? 1??? 0??? 0?? 1?? 1

          ?0?? 1?? 0??? ?1??? 0??? 1?? 0?? 1??????????????

          ?

          ?? 實驗驗證

          1、 仿真時序圖

          clip_image002.jpg?

          2、 驗證平臺及芯片

          Xilinx 公司的 Xilinx Project Navigate

          下載芯片為: Xilinx Sparan2/xsc200

          ? 小結

          1、? 技術難點

          顯示器顯示原理、 VGA 接口原理的理解

          ?????? 2 、設計技巧

          3 、不足或改進措施

          不足:功能單一(彩條顯示)

          改進:添加字符顯示、圖象顯示、圖形顯示模塊

          ?? 參考資料

          1 蔣本珊. 計算機組成原理與系統結構 北京航空航天大學出版社 p192-p198

          2 陳姚節 盧建華. 基于FPGA的VGA顯示接口的研究與設計

          ?? 源程序


          library ieee;

          use ieee.std_logic_1164.all;

          USE ieee.std_logic_unsigned.all;

          use ieee.std_logic_arith.all;

          entity vga is

          ?????? port(

          ????????????? reset?????????????????????????????????? :????? in???? std_logic;

          ????????????? clk ???????????????????????????? :????? in? std_logic;

          ????????????? vga_hs_control??????????????????? :????? out std_logic;

          ????????????? vga_vs_control??????????????????? :????? out std_logic;

          ????????????? vga_read_dispaly ???????? :????? out std_logic;

          ????????????? vga_green_dispaly???????? :????? out std_logic;

          ????????????? vga_blue_dispaly?????????? :????? out std_logic?????????

          ?????? );

          end vga;?

          ARCHITECTURE a OF vga IS

          ?????? SIGNAL hs: STD_LOGIC;

          ?????? SIGNAL vs: STD_LOGIC:='1';

          ??? SIGNAL GRB: STD_LOGIC_VECTOR(2 DOWNTO 0);

          BEGIN

          PROCESS (clk) --clk = 24MHZ? hs = 30 Khz vs = 57hz

          ?????? VARIABLE i??? :????? integer range 0 to 799:=0;

          ?????? VARIABLE j??? :????? integer range 0 to 79:=0;

          BEGIN

          ?if reset = '1' then

          ?? GRB <= "000"; i:=96; j:=0;? hs <= '1';

          ?????? elsif clk'event and clk = '1' ?then

          ?????? ? if i < 96 then

          ?????? ???? hs <= '0';

          ?????? ? elsif i = 799 then

          ?????? ???? i:=0;

          ?????? ? else

          ?????? ???? hs <= '1';

          ?????? ? end if;

          ?????? ? if j = 79 then

          ?????? ???? GRB(1) <= not GRB(1);

          ?????? ???? j:=0;

          ?????? ? end if;

          ?????? ? i:=i+1;

          ?????? ? j:=j+1;???????? ? ???

          ?????? end if;

          ?????? vga_hs_control <= hs;?

          END PROCESS ;

          PROCESS (hs)

          VARIABLE k?? :????? integer range 0 to 524:=0;

          BEGIN

          if reset = '1' then

          ?? k:=2; vs <= '1';

          ?????? elsif hs'event and hs = '1' then

          ?????? ??? if k < 2 then

          ?????? ?????? vs <= '0';

          ?????? ??? elsif k = 524 then

          ?????? ?????? k:=0;

          ?????? ??? else

          ?????? ?????? vs <= '1';

          ?????? ??? end if;

          ?????? ??? k:=k+1;

          ?????? ? end if;

          ? vga_vs_control <= vs;?

          END PROCESS ;

          ?

          PROCESS (clk)

          BEGIN

          ?????? if clk'event and clk = '1' and vs = '1' and hs ='1' then

          ????????????? vga_green_dispaly <= GRB(2);

          ?????? ??? vga_read_dispaly? <= GRB(1);

          ????????????? vga_blue_dispaly? <= GRB(0);????????????????
          ?????????
          end if;

          END PROCESS ;

          ?????? END a;

          posted on 2007-01-14 22:55 fds 閱讀(2276) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宝清县| 乐平市| 华池县| 安阳县| 右玉县| 保靖县| 云霄县| 永善县| 济源市| 东安县| 上虞市| 七台河市| 灯塔市| 石河子市| 赤壁市| 原平市| 天柱县| 辉县市| 同仁县| 龙南县| 宜君县| 阳新县| 石阡县| 衡水市| 长泰县| 从化市| 连平县| 永登县| 梨树县| 大余县| 垦利县| 固始县| 建水县| 札达县| 灵武市| 宣威市| 滨州市| 宣城市| 铅山县| 农安县| 和硕县|