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):完成一行显示得时间,一个完 ...
随机推荐
- ARM的常数表达式
ARM的常数表达式 如果说Intel指令中的立即数,相信大家都很熟悉.类似的,Arm指令中的“立即数”就是常数表达式.之所以称为常数表达式,而不称为立即数是有原因的. Intel指令属于CISC指 ...
- 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure
[题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...
- Java 8函数编程轻松入门(二)Stream的使用
在C#中,微软基于IEnumerable接口,提供许多便捷的扩展方法,便于实际的开发.在Java 1.8中,Collection接口新增了default stream方法.我们可以针对java集合,在 ...
- JavaScript学习笔记之string
字符串定义: 1,var myString=“内容”:or var myString=‘内容’ 2,var myString= new String(“内容”) ---〉创建对象, ...
- 有关bootstrap
最近在接触对移动浏览器很友好的bootstrap,遂整理了一点笔记: 简单的html页面: <!DOCTYPE html><html> <head> <tit ...
- RequireJS学习笔记
前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...
- CefSharp初识--把网页移到桌面
在开发中我们可曾有过这样的需求,将某个网页嵌入到.Net应用中来,但Winform自带的web browser不怎么理想.CefSharp可以让我们在.Net应用中嵌入一个Chromium.它提供了W ...
- tomcat 的优化配置
一.关于并发连接量的配置 在tomcat的server.xml配置文件中:将<Connector port="8080" protocol="HTTP/1.1&qu ...
- selenium结合最新版的sikuli使用
sikuli安装,下载sikulixsetup-1.1.0.jar,地址:https://launchpad.net/sikuli/sikulix/1.1.0 在装有Java环境的机器上直接双击jar ...
- OpenCASCADE Conic to BSpline Curves-Circle
OpenCASCADE Conic to BSpline Curves-Circle eryar@163.com Abstract. The conic sections and circles pl ...