FPGA--VGA显示驱动实验

        学习图像处理的第一步,我想从VGA显示开始。本篇文章基于野火FPGA教程,分享自己在实验过程中的感悟。

        何为VGA?

    

FPGA--VGA显示驱动实验_第1张图片

        VGA是一种接口,也是一种协议,它共有 3x5 共15个引脚,其中每个引脚的定义如下:

FPGA--VGA显示驱动实验_第2张图片

 FPGA--VGA显示驱动实验_第3张图片

图片来源:野火FPGA 

                VGA接口看似繁杂,实际上我们只需要重点关注这几个引脚:

  • 引脚1、2、3 :红基色,绿基色,蓝基色,输入为三路模拟信号的电压范围为 0V ~ 0.714V0V 代表无色,0.714V 代表满色。
  • 引脚13:行同步信号
  • 引脚14:场同步信号

 VGA显示的原理

        FPGA--VGA显示驱动实验_第4张图片

         简单概括就是:从左到右,从上到下,逐行扫描,逐帧显示。

 VGA的时序标准

        VGA的时序主要由两部分组成:显示每一行像素的行同步时序与选定显示行数的场同步时序。 

        行同步时序:

        FPGA--VGA显示驱动实验_第5张图片

        行同步时序由六部分组成,分别为:Sync(同步)、Back Porch(后沿)、Left

Border(左边框)、“Addressable” Video(有效图像)、Right Border(右边框)、Front

Porch(前沿)组成,这 6 部分的基本单位 pixel (像素),即一个像素时钟周期。
FPGA--VGA显示驱动实验_第6张图片

        与行同步时序相同,场同步时序也是由类似的六个部分组成,但不同的是 :场扫描周期单位不是像素时钟周期,而是完整的行扫描周期

        刚开始理解可能会有些迷糊,所以咱们来缕一缕这个关系:以640 X 480 的图像为例(一行640个像素,共480行):

        一副图像为一帧,对应一个场扫描周期,场扫描周期的最小组成单位为行扫描周期,行扫描周期的最小组成单位为像素时钟周期

        也就是说,场扫描周期的有效周期有480个,对应480行,每个有效周期包含了一个行扫描周期,每个行扫描周期的有效周期包含了640个像素周期,代表一行有640个像素点。

(波形图中,cnt_h为行扫描周期计数,可以看出,一个行扫描周期包含800个像素时钟周期,cnt_v为场扫描周期计数,可以看出,场扫描的最小单位是行扫描周期) 

        由这个关系我们可以推出像素时钟周期的计算公式:

 (注意:扫描周期数是总的周期数,不要只计算有效周期数)

实验接口设计

FPGA--VGA显示驱动实验_第7张图片

 实验目标

        利用FPGA在显示屏上显示彩条。

FPGA--VGA显示驱动实验_第8张图片

 

实验整体框架

FPGA--VGA显示驱动实验_第9张图片

 (图片来源:野火电子FPGA)

下一篇将结合Verilog代码介绍各个模组的实现,特别鸣谢野火电子提供的参考资料。

 

你可能感兴趣的:(fpga开发,图像处理)