VGA colorbar显示
module VGAcolorbar(clk,rst,hsync,vsync,vga_r,vga_g,vga_b );
input clk;
input rst;
output hsync;
output vsync;
output [2:0] vga_r;
output [2:0] vga_g;
output [1:0] vga_b;
reg clk2;
reg [9:0] x_cnt;//行坐标
reg [9:0] y_cnt;//列坐标
initial begin
clk2 = 0;
end
always @(posedge clk)
clk2 <= ~clk2; //2分频,输入时钟25M
always @(posedge clk2 or negedge rst) //列扫描
if(!rst)
x_cnt <= 10'd0;
else if(x_cnt == 10'd799)
x_cnt <= 10'd0;
else
x_cnt <= x_cnt+1'b1;
always @(posedge clk2 or negedge rst) //行扫描
if(!rst)
y_cnt <= 10'd0;
else if(y_cnt == 10'd524) //扫描到524行
y_cnt <= 10'd0;
else if(x_cnt == 10'd799)
y_cnt <= y_cnt+1'b1;
reg hsync_r,vsync_r;//行,场同步信号
always @(posedge clk2 or negedge rst)
if(!rst)
hsync_r <= 1'b1;
else if(x_cnt == 10'd0)
hsync_r <= 1'b0;
else if(x_cnt == 10'd96)
hsync_r <= 1'b1;
always @(posedge clk2 or negedge rst)
if(!rst)
vsync_r <= 1'b1;
else if(y_cnt == 10'd0)
vsync_r <= 1'b0;
else if(y_cnt == 10'd2)
vsync_r <= 1'b1;
assign hsync = hsync_r;
assign vsync = vsync_r;
reg valid_yr;//有效标志位
always @(posedge clk2 or negedge rst)
if(!rst)
valid_yr <=1'b0;
else if(y_cnt == 10'd32)
valid_yr <= 1'b1; //32-512之间显示
else if(y_cnt == 10'd512)
valid_yr <= 1'b0;
wire valid_y = valid_yr;
reg valid_r;//有效显示标志区
always @(posedge clk2 or negedge rst)
if(!rst)
valid_r <= 1'b0;
else if((x_cnt == 10'd141) && valid_y)
valid_r <= 1'b1;
else if((x_cnt == 10'd781) && valid_y)
valid_r <= 1'b0;
wire valid = valid_r;
wire [9:0] x_dis;//横坐标显示有效区域相对坐标0-639
wire [9:0] y_dis;//纵坐标显示有效区域相对坐标0-479
assign x_dis = x_cnt - 10'd142;
assign y_dis = y_cnt - 10'd33;
//VGA色彩信号
//
reg [7:0] vga_rgb;
always @(posedge clk2)
if(!valid) vga_rgb<=8'd0;
else begin
case(x_dis)
10'd0:begin
if(y_dis >= 10'd0 && y_dis < 10'd30) vga_rgb <=8'd0;
else if(y_dis >= 10'd30 && y_dis < 10'd60) vga_rgb <=8'd16;
else if(y_dis >= 10'd60 && y_dis < 10'd90) vga_rgb <=8'd32;
else if(y_dis >= 10'd90 && y_dis < 10'd120) vga_rgb <=8'd48;
else if(y_dis >= 10'd120 && y_dis < 10'd150) vga_rgb <=8'd64;
else if(y_dis >= 10'd150 && y_dis < 10'd180) vga_rgb <=8'd80;
else if(y_dis >= 10'd180 && y_dis < 10'd210) vga_rgb <=8'd96;
else if(y_dis >= 10'd210 && y_dis < 10'd240) vga_rgb <=8'd112;
else if(y_dis >= 10'd240 && y_dis < 10'd270) vga_rgb <=8'd128;
else if(y_dis >= 10'd270 && y_dis < 10'd300) vga_rgb <=8'd144;
else if(y_dis >= 10'd300 && y_dis < 10'd330) vga_rgb <=8'd160;
else if(y_dis >= 10'd330 && y_dis < 10'd360) vga_rgb <=8'd176;
else if(y_dis >= 10'd360 && y_dis < 10'd390) vga_rgb <=8'd192;
else if(y_dis >= 10'd390 && y_dis < 10'd420) vga_rgb <=8'd208;
else if(y_dis >= 10'd420 && y_dis < 10'd450) vga_rgb <=8'd224;
else vga_rgb <= 8'd240;
end
10'd40,10'd80,10'd120,10'd160,10'd200,10'd240,10'd280,10'd320,10'd360,
10'd400,10'd440,10'd480,10'd520,10'd560,10'd600:vga_rgb <= vga_rgb+1'b1;
default: ;
endcase
end
assign vga_r = vga_rgb[7:5];
assign vga_g = vga_rgb[4:2];
assign vga_b = vga_rgb[1:0];
endmodule
VGA colorbar显示的更多相关文章
- ROM+VGA 图片显示
内容 1.将一幅图片制成mif文件,初始化rom,图片像素为 120 * 60 2.驱动VGA,将图片显示在屏幕上 1.VGA 时序 下面是我的笔记截图,感觉更好理解. 2.640*480 60hz ...
- 基于FPGA的VGA显示静态图片
终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...
- 基于FPGA的Uart接收图像数据至VGA显示
系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...
- FPGA驱动VGA显示静态图片
一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...
- verilog实现VGA显示方块屏幕保护
verilog实现VGA显示方块屏幕保护 输入和输出 时钟信号 clk 复位信号 reset rgb三颜色输出 [2:0] r,g, [1:0] b 行信号输出 hs 列信号输出 vs 参数设定 设定 ...
- VGA显示
VGA控制器的编写主要是了解VGA的显示标准和时序,如1024X768@60Hz,确定时钟频率(65MHz=1344X806X60),列像素时间等于时钟周期,扫描从左到右.从上到下(类似于电视扫描PA ...
- 基于FPGA的VGA显示设计(一)
前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...
- 关于VGA显示实验的问题
今天做了一个关于VGA的显示实验,但是由于产生的25M时钟不正确所以一直没有图像产生.刚开始的程序如下 虽然仿真的时候出现了时序,但是在下载到硬件的时候不正确. 后来改成 结果就正确了. 另外之前关于 ...
- vga显示原理即相关计算
行扫描周期:完成一行扫描所需时间: 行时序时间(a,b,c,d,e):完成一个像素点显示得时间 场扫描周期:完成所有行(一帧扫描所需时间) 场时序时间(o,p,q,r,s):完成一行显示得时间,一个完 ...
随机推荐
- Python格式化输出
今天写程序又记不清格式化输出细节了……= =索性整理一下. python print格式化输出. 1. 打印字符串 print ("His name is %s"%("A ...
- OleDB Destination 用法
第一部分:简介 OleDB Destination component 是将数据流load 到destination,共有5种Data Access Mode,一般的Destination compo ...
- C#设计模式系列:原型模式(Prototype)
1.原型模式简介 1.1>.定义 原型模式(Prototype)用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象. 1.2>.使用频率 中 1.3>.原型模式应用 首先 ...
- 【WP 8.1开发】How to 图像处理
在今天的吹牛节目开始之前,先交代一件事: 关于玩WP 8.1开发所使用的VS版本问题.对版本的要求是2013的Update2,这是最低要求,只要是这个版本或以上都可以,而update3,update4 ...
- 解密jQuery事件核心 - 委托设计(二)
第一篇 http://www.cnblogs.com/aaronjs/p/3444874.html 从上章就能得出几个信息: 事件信息都存储在数据缓存中 对于没有特殊事件特有监听方法和普通事件都用ad ...
- codeforces C. Vanya and Scales
C. Vanya and Scales Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w10 ...
- Java设计模式之工厂模式(Factory)
前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...
- 如何用Node编写命令行工具
0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...
- EntityFramework之一对一关系(二)
前言 关于表关系园中文章也是数不胜收,但是个人觉得最难攻克的是一对一,对其配置并非无道理可循,只要掌握了原理方可,且听我娓娓道来! 共享主键关系 概念:就是两个表共享相同的主键值,也就是说一表的主键值 ...
- 《HTML重构》读书笔记&思维导图
最近读了<HTML重构>这本书,以下做出自己的总结归纳,大家可以一起学习交流. 什么是重构?重构是在不改变程序行为的基础上进行小的改动是代码基本逐渐完善的过程,通常需要一些自动化工具的帮助 ...