VGA接口之显示彩色条

VGA成像原理与简单实现 本篇文章简单记录VGA成像原理与时序解析,应使用Verilog初步实现。如有错误,还请批评指正,谢谢。 阅读详情

本博文介绍下spartan-3e start kit board上的VGA接口的用法。

 

一、VGA简介

VGA(Video Graphics Array)是IBM于1987年提出的一个使用模拟信号的电脑显示标准,最早指的是显示器

640X480这种显示模式。本实验程序用的是640X480模式,即每一行有640个像素,整个显示区域一共有480

行。VGA接口是一种D型接口,采用非对称分布的15pin 连接方式,共有15针,分成3排,每排5个孔。本实验条

件下只使用其中5个pin,分别是红色信号输入(R)、绿色信号输入(G)、蓝色信号输入(B),行同步信号输入(h_sync)

和场同步信号输入(v_sync)。

 

二、VGA时序

VGA的扫描顺序是从左到右,从上到下。例如在640X480的显示模式下,从显示器的左上角开始往右扫描,直到

640个像素扫完,再回到最左边,开始第二行的扫描,如此往复,到第480行扫完时即完成一帧图像的显示。这时

又回到左上角,开始下一帧图像的扫描。如果每秒能完成60帧,则称屏幕刷新频率为60Hz。宏观上,一帧屏幕由

480个行和640个列填充而成,而实际上,一帧屏幕除了显示区,还包含其他未显示部分,作为边框或者用来同步。

具体而言,一个完整的行同步信号包含了左边框、显示区、右边框还有返回区四个部分,总共800个像素,其分配

如下:

左边框:48个

显示区:640个

右边框:16个

返回区:96个

同样的,一个完整的垂直同步信号也分为四个区域,总共525个像素,分配如下:

顶边框:33个

显示区:480个

底边框:10个

返回区:2个

 

三、VGA在各种像素及刷新频率下的各段长度对照表

 

四、VGA显示颜色编码表

 

五、实验设计

1、K17作为复位键,按下后各种信号均清零,屏幕显示黑色。

2、滑动开关SW0(L13)、SW1(L14)作为输入,当SW1 SW0=00,屏幕竖向显示8种颜色;当SW1 SW0=01,屏幕

横向显示8种颜色;当SW1 SW0=1X,屏幕只显示一种颜色。

 

六、实验结果

 

六、不得不说的一些问题

1、用VGA连接线将板子上的接口与笔记本的接口连起来,一点反应都没有?!

因为笔记本上的VGA接口是输出口,不能输入!也基本就是说要把VGA连接线接到台式机的显示屏才可以做出

结果来。

2、VGA频率的计算?

就是相应像素x刷新频率了。就本实验来说就是800*525*60=25200000HZ了。所以在verilog源码中可以看到已

经对板子的频率(50MHZ)二分频(25MHZ)了。

3、从上面的VGA时序图中可以发现行、场同步信号都是低电平有效。行场同步期间以及显示前沿、显示后沿

其中,输出RGB信号都是无效的,此时RGB=3'b000,否则无法正常显示。

4、扫描是从上到下、从左到右依次进行的。每次电子束其实只是扫描到一个像素点罢了,由于扫描速度很快,

我们感觉是全部扫描的。

5、代码中必须确定每一个像素点的RGB信号值。这也就是说代码中必须有对行列的计数值。行为800个像素,

行同步96+显示后沿48=144个像素是不用显示的。此后显示640个像素。再然后显示前沿16个像素也不显示。

列的显示同理可推。

 

七、代码

1、verilog源码

module VGA( CLK, RST, DIN, DOUT,VGA_HSYNC, VGA_VSYNC );
input CLK; // System clock= 50MHz
input RST; // high active
input [1:0] DIN;
output [2:0] DOUT;// RGB
output VGA_HSYNC;
output VGA_VSYNC;

reg [2:0] RGB;
reg [9:0] h_cnt;//horizontal counter
reg [9:0] v_cnt; // vertical counter
reg VGA_CLK; // VGA clock = 25MHz
wire [1:0] state;
wire data_valid;

assign DOUT = data_valid ? RGB:3'd0;   //数据无效时,RGB必须为全0
assign state = DIN;
assign VGA_HSYNC = ( h_cnt >= 10'd96 )? 1'b1 : 1'b0;
assign VGA_VSYNC = ( v_cnt >= 10'd2 )? 1'b1 : 1'b0;

assign data_valid = ((h_cnt > 10'd143) && (h_cnt < 10'd784) && (v_cnt > 10'd34) && (v_cnt < 10'd515));

/////// Generate VGA CLOCK = 25MHz ///////
always @ (posedge CLK or posedge RST)begin
	if(RST) VGA_CLK <= 1'b0;
	else VGA_CLK <= ~VGA_CLK;
end

/////// horizontal counter ///////
always @(posedge VGA_CLK or posedge RST)begin
	if(RST) h_cnt <= 10'd0;
	else if (h_cnt == 10'd799) h_cnt <= 10'd0;
	else  h_cnt <= h_cnt + 1'b1;
end

/////// vertical counter ///////
always @(posedge VGA_CLK or posedge RST)begin
	if(RST) v_cnt <= 10'd0;
	else if (v_cnt == 10'd524) v_cnt <= 10'd0;
	else if(h_cnt == 10'd799) v_cnt <= v_cnt + 1'b1; 
	else v_cnt <= v_cnt;	
end

always @ (posedge CLK or posedge RST) begin
	if(RST) begin
	   RGB <= 3'd0;
	end
	else begin
	 case (state)
	  2'b00: begin
				 if      ((h_cnt > 10'd143) && (h_cnt <= 10'd223)) RGB <= 3'd000;
				 else if ((h_cnt > 10'd223) && (h_cnt <= 10'd303)) RGB <= 3'b001;
				 else if ((h_cnt > 10'd303) && (h_cnt <= 10'd383)) RGB <= 3'b010;
				 else if ((h_cnt > 10'd383) && (h_cnt <= 10'd463)) RGB <= 3'b011;
				 else if ((h_cnt > 10'd463) && (h_cnt <= 10'd543)) RGB <= 3'b100;
				 else if ((h_cnt > 10'd543) && (h_cnt <= 10'd623)) RGB <= 3'b101;
				 else if ((h_cnt > 10'd623) && (h_cnt <= 10'd703)) RGB <= 3'b110;
				 else if ((h_cnt > 10'd703) && (h_cnt <= 10'd783)) RGB <= 3'b111;
	          end
	  2'b01: begin
				  if      ((v_cnt > 10'd34)  && (v_cnt <= 10'd94))  RGB <= 3'd000;
				  else if ((v_cnt > 10'd94)  && (v_cnt <= 10'd154)) RGB <= 3'b001;
				  else if ((v_cnt > 10'd154) && (v_cnt <= 10'd214)) RGB <= 3'b010;
				  else if ((v_cnt > 10'd214) && (v_cnt <= 10'd274)) RGB <= 3'b011;
				  else if ((v_cnt > 10'd274) && (v_cnt <= 10'd334)) RGB <= 3'b100;
				  else if ((v_cnt > 10'd334) && (v_cnt <= 10'd394)) RGB <= 3'b101;
				  else if ((v_cnt > 10'd394) && (v_cnt <= 10'd454)) RGB <= 3'b110;
				  else if ((v_cnt > 10'd454) && (v_cnt <= 10'd514)) RGB <= 3'b111;
		       end
		default: RGB <= 3'b101;
		endcase
	end
end
endmodule

2、ucf约束文件

NET "CLK"        LOC = "C9" | IOSTANDARD = LVCMOS33 ;
NET "CLK"        PERIOD = 20.0ns HIGH 40%;
NET "RST"        LOC = "K17" | IOSTANDARD = LVTTL  | PULLDOWN ; 
NET "DOUT[2]"    LOC = "H14" | IOSTANDARD = LVTTL  | DRIVE = 8  | SLEW = FAST ;
NET "DOUT[1]"    LOC = "H15" | IOSTANDARD = LVTTL  | DRIVE = 8  | SLEW = FAST ;
NET "DOUT[0]"    LOC = "G15" | IOSTANDARD = LVTTL  | DRIVE = 8  | SLEW = FAST ;  
NET "VGA_VSYNC"  LOC = "F14" | IOSTANDARD = LVTTL  | DRIVE = 8  | SLEW = FAST ;
NET "VGA_HSYNC"  LOC = "F15" | IOSTANDARD = LVTTL  | DRIVE = 8  | SLEW = FAST ;
NET "DIN[0]"     LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ; 
NET "DIN[1]"     LOC = "L14" | IOSTANDARD = LVTTL | PULLUP ; 

 

FPGA: VGA显示 VGA显示条纹、字符、图片 阅读详情

相关推荐

四大显示接口VGA、DVI、HDMI、DP基础知识

目录 一、VGA接口知识 二、DVI接口知识 三、HDMI接口知识 一、VGA接口知识 VGA(Video Graphics Array)接口(即D-Sub接口),接口为D字型,VGA接口是一种D型接口,上面共有15针孔,分成三排,每排五个。 其中,除了2根NC(Not Connect)信号、3根显示数据总线和5个GND信号,比较重要的是3根RGB彩色分量信号和2根扫描同步信号HSYNC和VSYNC针用于传送模拟信号。 VGA有着成熟的制造工艺、较宽的使用范围,它是模拟信号传输中最常见到的一种端

yh13572438258的博客 2万+

FPGA学习日志——VGA接口项目

FPGA学习日志 鼓励自己每天进行学习总结:2021.2.2 文章目录FPGA学习日志VGA接口项目一、VGA是什么?二、开发板与VGA的联系1.引入库2.读入数据总结 VGA接口项目 想要学习FPGA的图像处理,先得学习如何显示图像 一、VGA是什么? VGA是一种视频传输标准,于1987年推出,主要是为了当时的模拟显示器相匹配,所以输出的RGB都是(0~0.714V)的模拟信号 (注意这个电压值)。现在VGA已经是中低端电脑的底配了。其中最重要的就数以下五个控制信号了 二、开发板与VGA的联系

weixin_45459370的博客 1187

手把手教你设计VGA显示颜色

VGA(Video Graphics Array)即视频图形阵列,是 IBM 在 1987 年随 PS/2(PS/2 原是“Per sonal System 2”的意思,“个人系统 2”,是 IBM 公司在 1987 年推出的一种个人电脑。PS/2 电脑 上使用的键盘鼠标接口就是现在的 PS/2 接口。因为标准不开放,PS/2 电脑在市场中失败了。只有 P S/2 接口一直沿用到今天)一起推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高、显 示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。这个标准对于现今的个人电脑市 场已经十分过时。即使如此,VGA 仍然是最多制造商所共同支持的一个标准,个人电脑在加载自己 的独特驱动程序之前,都必须支持 VGA 的标准。例如,微软 Windows 系列产品的开机画面仍然使用 VGA 显示模式,这也说明其在显示标准中的重要性和兼容性。

FPGA基于VGA的彩条、字符及图片显示

1、基本标准 VGA(Video Graphics Array)即视频图形阵列,是IBM于1987年提出的一个使用模拟信号的电脑显示标准; VGA最早指的是显示器640X480这种显示模式 其接口采用VGA标准输出数据的专用接口,共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号); VGA是模拟信号,只能传输视频信号。 2、对应的接口定义 3、vga的优点 1、原理图 2、常见vga

qq_46689721的博客 3056

vga色彩基色对照表

vga色彩基色对照表,方便编写程序参数的对照。

VGA显示实验:显示字

用verilog编写实现VGA汉字显示 对于刚刚了解的人非常好理解 本人运行过可以实现

VGA显示彩条和图片(FPGA)

VGA(Video Graphics Array)视频图形阵列是 IBM 于1987年提出的一个使用模拟信号的电脑显示标准。VGA具有分辨率高、显示速率快、颜色丰富等优点。VGA 接口不但是CRT 显示设备的标准接口,同样也是 LCD 液晶显示设备的标准接口,具有广泛的应用范围。 使用原理:显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场

qq_52378452的博客 652

VGA显示RGB彩条实验

VGA 显示colour bar实验

VGA显示(FPGA学习笔记四)

对VGA的学习与实现,包含VGA的原理、FPGA的完整实现过程,使用FPGA开发板artix-7A35ftg256-1。

weixin_45630814的博客 1406

SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现

本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。

weixin_29100399的博客 481

Windows下用MSYS2一键搞定Verilator安装(附国内镜像加速)

本文详细介绍了在Windows系统下,如何利用MSYS2工具和国内镜像源,快速、高效地完成Verilator的安装与配置。通过替换清华镜像源加速下载,并配合Pacman包管理器,实现近乎一键式的安装流程,有效解决了传统方法步骤繁琐、网络依赖下载慢的问题,为数字电路仿真提供了便捷的Windows环境解决方案。

weixin_29208327的博客 596

FPGA上VGA显示彩色条

1.VGA接口 先不废话,上图: 常用的就是1、2、3、13、14,本次小实验也是只用了这五条信号线。在VGA的传输标准中,信号被分为RGB三个原色信号,然后经过数模转换之后,在同步信号的同步下在三个通道中单独传输,同步信号如下: 其中,行同步信号是对VGA驱动时钟进行计数(扫描像素点),而场同步信号是对行同步信号进行计数,即扫描完一行后场同步信号计数才+1. 看上图可以得出,c*q即为分辨率。 2.RGB信号相关 与RGB相关接口有三个,即RGB三个通道,如果不进行扩展只能显示8种颜色,所以一般开发

weixin_43909615的博客 1651

STM32G474 FDCAN滤波器配置与多ID接收实战

本文详细介绍了STM32G474 FDCAN滤波器配置与多ID接收实战,重点解析了掩码过滤和范围过滤两种模式的工作原理及配置步骤。通过实际项目案例展示了如何高效配置多个滤波器实现多ID报文接收,并提供了接收FIFO配置与中断处理的优化策略,帮助开发者提升CAN通信系统的稳定性和实时性。

happy2的博客 875

Fpga的vga显示设计

1.VGA原理         Vga端口一个有15根线,可以百度查看一下VGA端口的定义,这里就不多说了,现在能用到只有5根线,分别是行同步信号输入(h_sync),场同步信号输入(v_sync),红色信号输入(R)、绿色信号输入(G)、蓝色信号输入(B) 。本次实验主要用640x480的分辨率在友晶开发板de2-115上进行开发,所以需要了解VGA有关的时序。         一般

jiaou1的博客 8495

华为昇腾 Atlas 200I DK A2 开发板编程接口学习入门:系统安装和开发步骤、注意事项与典型案例实战

华为昇腾开发板编程接口指南:从入门到进阶 本文系统介绍了华为昇腾开发板的编程接口体系,涵盖MindXSDK和AscendCL两大核心框架。MindXSDK提供高层封装接口,适合快速搭建视觉应用;AscendCL则是底层接口,需手动管理设备内存。文章详细讲解了: 开发环境搭建步骤,包括系统配置、依赖安装 MindXSDK组件化编程流程(图像分类实例) AscendCL底层开发方法(内存管理、模型推理) 常见问题解决方案和调试技巧 两个典型应用实例(摄像头目标检测和图像分类) 针对小白开发者,推荐从MindXS

bother3000的博客 2428

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

在利用MIKE建立水动力模型之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数据、风场数据、潮位和海流观测资料和站点潮汐调和常数资料等。本篇主要介绍这些资料的获取与处理。

晏长街的博客 5949

VGA显示图像 详细总结

VGA原理及图片显示 ——葛浩 ZheJiang University 前言 本文是在浙江大学计算机学院数字逻辑设计课程的大作业的实践过程中总结而出的,当时VGA学的很痛苦,网上的资料也很不全,找到的demo跑起来也都是报错,于是有了写这么一篇文章的想法,希望能对大家有所帮助 学习有感 关于VGA色彩显示以及图片显示部分的内容,尽管有老师和学长学姐们留下的资料,但由于demo的模块性不够明显和独立...

weixin_44406200的博客 2万+

Could not find a package configuration file provided by “boost_signals“

gmapping/slam_gmapping/gmapping/CMakeLists.txt:14 (find_package)问题在14行,注释该行。,该语句的用以为告诉项目Boost库文件所在。

weixin_72050316的博客 1028

基于FPGA的VGA显示

VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。VGA接口是一种D型接口,上面共有15针孔,分成三排,每排五个。

cbm2001的博客 2480

基于逆向工程的中国裁判文书网爬虫技术深度解析:从反爬破解到合规抓取

最近承接了一个法律大数据分析的项目,需要获取某类合同纠纷的裁判文书数据,用于分析不同地区的判决规律、法官的裁判倾向以及法条适用情况。原本以为用常规的Python爬虫就能搞定,结果刚对着中国裁判文书网发了几个请求,就遭遇了“滑铁卢”:要么请求直接返回403 Forbidden,要么触发滑块验证码,甚至连IP都被临时封禁了。普通的requests+BeautifulSoup组合在裁判文书网面前完全失效,这也让我意识到,想要获取这里的数据,必须先通过逆向工程拆解网站的请求逻辑和反爬机制。经过一周的摸索,从抓包分析

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3173

YOLO26改进策略【YOLO和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。EfficientViM: Efficient Vision Mamba with Hidden State Mixer based State Space DualityEfficie

Limiiiing的博客 401

FPGA驱动VGA显示

驱动VGA显示 概述: VGA(Video Graphics Array),视频图形阵列,是一种视频传输标准,具有分辨率高、显示速度快、颜色丰富等优点,不支持音频传输。 说明: FPGA芯片采用了altera的Cyclon IV E系列的“EP4CE10F17C8”,软件环境-Quartus-Ⅱ。 文章目录1.VGA简介1.1 VGA接口 1.VGA简介 1.1 VGA接口   直奔主题: ...

Crazzy_M的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VGA显示彩色方块测试

VGA显示彩色方块测试

weixin_43828944的博客 2405

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

基于FPGA的VGA显示彩条、字符、图片

基于FPGA的VGA显示彩条、字符、图片

mxh3600的博客 4933

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 写数据到LCD显示器
下一篇: 导出短信.xml,提取信息
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值