FPGA-VGA驱动Color Bar显示
学习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显示相关推荐
- 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 波 ...
- FPGA: VGA显示
目录 一.VGA通信协议 1.外部接口 2.色彩原理 3.扫描方式 4.行场信号 二.实验任务 1.显示彩色条纹 2.字符显示 3.图片显示 三.总结 参考链接 一.VGA通信协议 VGA(Video ...
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--VGA驱动(十)
声明:本文转载于http://www.cnblogs.com/kingst,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有. 实验九:VGA驱动 实验九之一:驱 ...
- FPGA—VGA显示
FPGA-VGA显示 一.VGA介绍 颜色显示 VGA接口 引脚分配 二.VGA显示彩色条纹 分辨率控制部分 颜色显示 顶层模块 三.字符显示 四.图片显示 一.VGA介绍 VGA的全称是Video ...
- FPGA|VGA的8色彩条的实现
VGA显示8色彩条的实现 使用软件:Quartus II 13.1 使用语言 :Verilog HDL 板载芯片:EP4CE6E22C8 VGA显示8色彩条的实现 VGA显示8色彩条的实现 写在前面 ...
- FPGA学习之HDMI接口显示
FPGA学习之HDMI接口显示 简介 程序代码 实验任务 实验原理 代码部分 方块移动实验 参考正点原子视频 简介 HDMI接口英文全称叫High Definition Multimedia Inte ...
- FPGA——VGA协议实现特定文字与图像显示
茵蒂克丝 简介 一.屏幕上显示彩色条纹 1.新建项目 2.利用Verilog HDL语言设计模块 3.源代码 4.实验结果 二.显示自定义的字符 1.创建项目 2.源代码 3.实验结果 三.总结 参考 ...
- FPGA学习--RGB-LCD屏彩条显示实验
FPGA学习--RGB-LCD屏彩条显示实验 RGB-LCD屏原理 程序设计 参考正点原子视频 RGB-LCD屏原理 LCD 是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮 ...
- 7-2 Verilog VGA驱动
使用工具:Xilinx ISE 14.7 VGA驱动的设计与实现主要就在于数据时序的解析,VGA的数据分为行数据与帧数据,两者的解析原理是一致的,在这里对行数据进行解析: 行数据时序是指显示一行的数据 ...
- vga分配器 计算机无显示,为什么我用了VGA切换器后显示器再直接连接主机
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么我用了VGA切换器后显示器再直接连接主机会不显示回答:我遇到的问题是,切换到其中一台电脑能正确显示分辨率,切换到另一台电脑不能 ...
最新文章
- 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
- 笔记-信息化与系统集成技术-客户关系系统CRM
- 前端学习(235):css HACK
- 解决方案:Lua环境搭建
- MySQL 常见面试知识点
- Python+Webdriver实现淘宝、京东等抢单操作
- 计算机专业考研复试流程,给未来的程序猿:2019计算机专业考研复试基本流程...
- 对于自己(Android)秋招的一点总结(感慨)
- 应用程序开发选择工具应注重运行效率还是易用性
- 过滤器(Filter)解决跨域问题
- [附源码]PHP计算机毕业设计老薛男生服装网(程序+LW)
- 树莓派/arm设备上安装火狐Firefox浏览器
- 网站性能优化之DNS Prefetch
- 寡人的难题 (数据结构作业)
- PL2303GT USB to RS232 Serial Bridge Controller (Built in RS232 XCVR)驱动地址
- LeetCode - 1217 - 玩筹码(play-with-chips)
- Python 比较不错的社区
- 伊朗科学家被害真相:一场无懈可击的算法暗杀
- 基于差分进化算法(DE)改进的jDE2 处理约束优化问题
- 百度、高德离线地图SDK开发工具,局域网内离线地图开发环境
热门文章
- CSS3动画实践——简易牛顿摆
- matlab 集群搭建,MATLAB 科学计算工作站及集群配置方案
- [教程]人脸识别_打卡签到_系统qt界面
- BAT自动校对时间脚本,让WINDOWS系统自动校对时间
- 通过SecurityUtils获取Subject详解
- 职业生涯规划——2019
- 全志平台BSP裁剪(3)附件二 Kernel hacking配置说明
- Solana 区块链数据抓取
- matlab中指数信号,Matlab入门篇——正弦信号、实指数信号和复指数信号仿真.ppt...
- 1、spss中做相关分析