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):完成一行显示得时间,一个完 ...
随机推荐
- spring快速入门(三)
一.在spring快速入门(二)的基础上,原先我们是采用构造方法完成对象的注入.这里还有其他的方法可以完成注入,通过set方法来完成. 修改UserActionImpl package com.mur ...
- DPI深度包检测
最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packe ...
- C#实现哥德巴赫猜想
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Goet ...
- 谈谈php里的IOC控制反转,DI依赖注入
理论 发现问题 在深入细节之前,需要确保我们理解"IOC控制反转"和"DI依赖注入"是什么,能够解决什么问题,这些在维基百科中有非常清晰的说明. 控制反转(In ...
- VS无法设置断点的解决方案
第一种情况的处理 第二种情况的处理
- MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named ‘Index')
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 错误信息 和主页的默认控制器冲突了,修改下Areas里面的默认控制器就可以了
- 群福利:百度云管家-本地SVIP
效果 如果不想登录破解版的百度云(防止泄密)==>复制AppSettingApp.dat和users文件夹,这样你就可以免登录了 最稳定版本:https://yunpan.cn/cBTQc9Iu ...
- SQL Server 链接服务器的安全
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 安全设置(Security Settings) 实现效果:用户A能看见能使用,B用户不能看见这 ...
- Easyui 让DataGrid适应浏览器宽度
DataGrid有100%宽度的设置,但是有时不是很让人满意,比如你你放大或者拉放你的浏览器,那么DataGrid只维持第一次加载的宽高,非常难看 $('#List').datagrid({ url: ...
- IOS数据存储之NSUserDefaults
前言: 作为从事Android开发人来说一定听说过SharedPreferences,然后要成为一名ios开发工程师来说咋能不知道NSUserDefaults!接下来让我们认识一下. NSUserDe ...