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 阅读(2262) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(3)

随笔分类(12)

随笔档案(13)

文章分类(1)

文章档案(2)

相册

收藏夹(3)

my like

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜