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

最新文章

  1. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
  2. C#数据库导出(入)TXT
  3. Java配置----JDK开发环境搭建及环境变量配置
  4. js实现input输入框只能输入数字的功能(完美测试通过)
  5. postgress Sql数据库的复制
  6. Java 字典排序
  7. ubuntu 安装ssh-server时出现错误:openssh-server: Depends: openssh-client (= 1:5.3p1-3ubuntu3) but 1:5.3p1-3ubuntu4 is to be installed
  8. 项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!
  9. Linux 命令 - ss: 查看套接字统计信息
  10. ECNU-2574 Principles of Compiler
  11. Spring配置文件的加载,及装载多个beans.xml文件
  12. POJ 3273 Monthly Expense(二分查找+边界条件)
  13. python filter内建函数
  14. C++成员变量与函数内存分配
  15. MySQL 如何使用左链接代替 NOT IN
  16. NOIP-珠心算
  17. 单片机的外围功能电路 LET′S TRY“嵌入式编程”: 2 of 6
  18. C# JObject和JArray 的分享
  19. puppet 用户和组资源管理
  20. .NET MVC+ EF+调用存储过程 多表联查以及VIEW列表显示

热门文章

  1. SQL Server 2000向SQL Server 2008 R2推送数据
  2. 如何给CentOS安装字体库
  3. 集群下session共享问题的解决方案.
  4. 【深入浅出Linux网络编程】 “基础 -- 事件触发机制”
  5. OPEN CASCADE BSpline Curve Interpolation
  6. AngularJS之指令中controller与link(十二)
  7. ECMAScript5之Array
  8. kafka源码分析之二客户端分析
  9. C语言 基础练习40题
  10. 【JUC】JDK1.8源码分析之ReentrantReadWriteLock(七)