学习VGA首先要了解VGA是什么:

VGA百度百科

(1)VGA接口协议:VGA端子_维基百科 、VGA视频传输标准_百度

引脚1 RED 红色视频
引脚2 GREEN 绿色视频
引脚3 BLUE 蓝色视频
引脚4 ID2/RES 过去为屏幕ID比特2;自DDC2起保留
引脚5 GND 接地(水平同步)
引脚6 RED_RTN 红色接回
引脚7 GREEN_RTN 绿色接回
引脚8 BLUE_RTN 蓝色接回
引脚9 KEY/PWR 过去为key;现为 +5V DC
引脚10 GND 接地(垂直同步,DDC)
引脚11 ID0/RES 过去为屏幕ID比特0;自E-DDC起保留
引脚12 ID1/SDA 过去为屏幕ID比特1;自DDC2起为I²C数据
引脚13 HSync 水平同步
引脚14 VSync 垂直同步
引脚15 ID3/SCL 过去为屏幕ID比特3;自DDC2起为I²C时钟
图表中详叙了较新的15针VESA DDC2连接头。图标中的针脚编号是显卡常见的母接头;在公接头上的针脚相当于图例的左右镜像。

最主要的几根线:

驱动VGA显示的接口主要是下面三种信号:行同步信号(HSYNC),场同步信号(VSYNC)和三条色彩电压传输信号(R、G、B分别对应)色彩电压为0--0.7V其中同步是靠前面两个信号协助的。HSYNC和VSYNC传输关系相对是固定的,双方虽然没有约定时钟信号同步,但是通常会约定发送方有一个基本的时钟,VSYNC、HSYNC、和色彩信号都会按照这个时钟的节拍确定状态。

VGA扫描方式

显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,扫完一屏后再返回来扫描剩下的线,隔行扫描的显示器闪烁快速,可能会使使用者眼睛疲劳

通常我们说的像素是指的显示像素并非总像素因为有前后沿脉冲

VGA 工业标准显示模式要求:行同步、列同步都为负极性,即同步脉冲要求是负脉冲。

行、列同步时序

列同步时序

行同步时序

这里可能有的人会有疑问怎么计算VGA的时序?

这里我在别处看到了一个不错的文章大家可以参考理解:·vga时序计算

实例:VGA显示colorbar:

vga的top:

module top(ext_clk_25m,ext_rst_n,vga_r,vga_b,vga_g,vga_hsy,vga_vsy);input  ext_clk_25m;input  ext_rst_n;output vga_r;output vga_g;output vga_b;output vga_hsy;output vga_vsy;wire clk_50m;pll_countroller uut_pll_countroller(// Clock in ports.CLK_IN1(ext_clk_25m),      // IN// Clock out ports.CLK_OUT1(clk_50m),     // OUT// Status and control signals.RESET(~ext_rst_n),// IN.LOCKED(sys_rst_n));      // OUTvga_countroller uut_vga_countroller(.clk(clk_50m),.rst_n(ext_rst_n),.vga_r(vga_r),.vga_g(vga_g),.vga_b(vga_b),.vga_hsy(vga_hsy),.vga_vsy(vga_vsy));
endmodule

pll分频模块利用ip核进行实例化

vga控制模块:

module vga_countroller(clk,rst_n,vga_r,vga_g,vga_b,vga_hsy,vga_vsy);input  clk;input  rst_n;output vga_r;output vga_g;output vga_b;output reg vga_hsy;output reg vga_vsy;//VGA_Timing 800*600 &50MHZ &72Hz;parameter VGA_HTT=12'd1040-12'd1;//Hor Total Time(行帧长)parameter VGA_HST=12'd120;       //Hor Sync Time(同步脉冲)parameter VGA_HBP=12'd64;        //Hor Back Porch(后沿脉冲)parameter VGA_HVT=12'd800;       //Hor Valid Time(显示脉冲)parameter VGA_HFP=12'd56;        //Hor Front Porch(前沿脉冲)parameter VGA_VTT=12'd666-12'd1; //Hor Total Time(列帧长)parameter VGA_VST=12'd6;         //Hor Sync Time(同步脉冲)parameter VGA_VBP=12'd23;        //Hor Back Porch(后沿脉冲)parameter VGA_VVT=12'd600;       //Hor Valid Time(显示脉冲)parameter VGA_VFP=12'd37;        //Hor Front Porch(前沿脉冲)parameter VGA_CORBER=12'd100;    //8等分做colorbar显示//X和Y坐标计数器reg [11:0] xcnt;reg [11:0] ycnt;always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginxcnt<=12'd0;endelse if(xcnt>=VGA_HTT)beginxcnt<=12'd0;endelse beginxcnt<=xcnt+1'b1;endendalways@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginycnt<=12'd0;endelse if(xcnt==VGA_HTT)beginif(ycnt>=VGA_VTT)beginycnt<=12'd0;endelse beginycnt<=ycnt+1'b1;endendelse beginycnt<=ycnt;endend//行信号生成always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginvga_hsy<=1'b0;endelse if(xcnt<VGA_HST)beginvga_hsy<=1'b1;endelse beginvga_hsy<=1'b0;endend//场信号生成always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginvga_vsy<=1'b0;endelse if(ycnt<VGA_VST)beginvga_vsy<=1'b1;endelse beginvga_vsy<=1'b0;endend//显示有效区域标志信号生成reg vga_vaild;//显示区域内,该信号为高电平always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginvga_vaild<=1'b0;endelse if(xcnt>=(VGA_HST+VGA_HBP)&&xcnt<(VGA_HST+VGA_HBP+VGA_HVT)&&ycnt>=(VGA_VST+VGA_VBP)&&ycnt<(VGA_VST+VGA_VBP+VGA_VVT))beginvga_vaild<=1'b1;endelse beginvga_vaild<=1'b0;endend//产生颜色逻辑reg vga_rdb;reg vga_gdb;reg vga_bdb;always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)beginvga_rdb=1'b0;vga_gdb=1'b0;vga_bdb=1'b0;endelse if(xcnt==(VGA_HST+VGA_HBP))begin//绿色边框vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(xcnt==(VGA_HST+VGA_HBP+VGA_HVT-1'b1))begin//绿色边框vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(ycnt==(VGA_VST+VGA_VBP))begin//绿色边框vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(ycnt==(VGA_VST+VGA_HBP+VGA_VVT-4'd1))begin//绿色边框vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER)begin//1个vga_rdb=1'b0;vga_gdb=1'b0;vga_bdb=1'b0;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd2)begin//2个vga_rdb=1'b0;vga_gdb=1'b0;vga_bdb=1'b1;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd3)begin//3个vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd4)begin//4个vga_rdb=1'b0;vga_gdb=1'b1;vga_bdb=1'b1;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd5)begin//5个vga_rdb=1'b1;vga_gdb=1'b0;vga_bdb=1'b0;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd6)begin//6个vga_rdb=1'b1;vga_gdb=1'b0;vga_bdb=1'b1;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd7)begin//7个vga_rdb=1'b1;vga_gdb=1'b1;vga_bdb=1'b0;endelse if(xcnt<=VGA_HST+VGA_HBP+VGA_CORBER*4'd8)begin//8个vga_rdb=1'b1;vga_gdb=1'b1;vga_bdb=1'b1;endelse beginvga_rdb=1'b0;vga_gdb=1'b0;vga_bdb=1'b0;endendassign vga_r = vga_vaild ? vga_rdb :1'b0;assign vga_g = vga_vaild ? vga_gdb :1'b0;assign vga_b = vga_vaild ? vga_bdb :1'b0;endmodule

FPGA-VGA驱动Color Bar显示相关推荐

  1. FPGA—VGA 显示器显示彩条(附代码)

    目录 1. 理论 2. 实操 2.1 顶层设计 2.1.1 模块框图 2.1.2 代码编写 2.1.3 仿真验证 2.2 时钟生成模块 2.3 VGA时序控制模块 2.3.1 模块框图 2.3.2 波 ...

  2. FPGA: VGA显示

    目录 一.VGA通信协议 1.外部接口 2.色彩原理 3.扫描方式 4.行场信号 二.实验任务 1.显示彩色条纹 2.字符显示 3.图片显示 三.总结 参考链接 一.VGA通信协议 VGA(Video ...

  3. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--VGA驱动(十)

    声明:本文转载于http://www.cnblogs.com/kingst,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有. 实验九:VGA驱动 实验九之一:驱 ...

  4. FPGA—VGA显示

    FPGA-VGA显示 一.VGA介绍 颜色显示 VGA接口 引脚分配 二.VGA显示彩色条纹 分辨率控制部分 颜色显示 顶层模块 三.字符显示 四.图片显示 一.VGA介绍 VGA的全称是Video ...

  5. FPGA|VGA的8色彩条的实现

    VGA显示8色彩条的实现 使用软件:Quartus II 13.1 使用语言 :Verilog HDL 板载芯片:EP4CE6E22C8 VGA显示8色彩条的实现 VGA显示8色彩条的实现 写在前面 ...

  6. FPGA学习之HDMI接口显示

    FPGA学习之HDMI接口显示 简介 程序代码 实验任务 实验原理 代码部分 方块移动实验 参考正点原子视频 简介 HDMI接口英文全称叫High Definition Multimedia Inte ...

  7. FPGA——VGA协议实现特定文字与图像显示

    茵蒂克丝 简介 一.屏幕上显示彩色条纹 1.新建项目 2.利用Verilog HDL语言设计模块 3.源代码 4.实验结果 二.显示自定义的字符 1.创建项目 2.源代码 3.实验结果 三.总结 参考 ...

  8. FPGA学习--RGB-LCD屏彩条显示实验

    FPGA学习--RGB-LCD屏彩条显示实验 RGB-LCD屏原理 程序设计 参考正点原子视频 RGB-LCD屏原理 LCD 是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮 ...

  9. 7-2 Verilog VGA驱动

    使用工具:Xilinx ISE 14.7 VGA驱动的设计与实现主要就在于数据时序的解析,VGA的数据分为行数据与帧数据,两者的解析原理是一致的,在这里对行数据进行解析: 行数据时序是指显示一行的数据 ...

  10. vga分配器 计算机无显示,为什么我用了VGA切换器后显示器再直接连接主机

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么我用了VGA切换器后显示器再直接连接主机会不显示回答:我遇到的问题是,切换到其中一台电脑能正确显示分辨率,切换到另一台电脑不能 ...

最新文章

  1. 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
  2. 笔记-信息化与系统集成技术-客户关系系统CRM
  3. 前端学习(235):css HACK
  4. 解决方案:Lua环境搭建
  5. MySQL 常见面试知识点
  6. Python+Webdriver实现淘宝、京东等抢单操作
  7. 计算机专业考研复试流程,给未来的程序猿:2019计算机专业考研复试基本流程...
  8. 对于自己(Android)秋招的一点总结(感慨)
  9. 应用程序开发选择工具应注重运行效率还是易用性
  10. 过滤器(Filter)解决跨域问题
  11. [附源码]PHP计算机毕业设计老薛男生服装网(程序+LW)
  12. 树莓派/arm设备上安装火狐Firefox浏览器
  13. 网站性能优化之DNS Prefetch
  14. 寡人的难题 (数据结构作业)
  15. PL2303GT USB to RS232 Serial Bridge Controller (Built in RS232 XCVR)驱动地址
  16. LeetCode - 1217 - 玩筹码(play-with-chips)
  17. Python 比较不错的社区
  18. 伊朗科学家被害真相:一场无懈可击的算法暗杀
  19. 基于差分进化算法(DE)改进的jDE2 处理约束优化问题
  20. 百度、高德离线地图SDK开发工具,局域网内离线地图开发环境

热门文章

  1. CSS3动画实践——简易牛顿摆
  2. matlab 集群搭建,MATLAB 科学计算工作站及集群配置方案
  3. [教程]人脸识别_打卡签到_系统qt界面
  4. BAT自动校对时间脚本,让WINDOWS系统自动校对时间
  5. 通过SecurityUtils获取Subject详解
  6. 职业生涯规划——2019
  7. 全志平台BSP裁剪(3)附件二 Kernel hacking配置说明
  8. Solana 区块链数据抓取
  9. matlab中指数信号,Matlab入门篇——正弦信号、实指数信号和复指数信号仿真.ppt...
  10. 1、spss中做相关分析