FPGA--VGA显示实验之Verilog代码描述(图像数据生成模块)

        图像数据生成模块在VGA显示系统中主要用来根据坐标数据产生颜色数据。

 模块接口设计

 

        本模块是时序模块,因此pix_data落后pix_x,pix_y一个时钟周期。理解上没有什么难点,类似于查找表的结构。

代码编写 

module vga_pic(
input wire [9:0] pix_x,
input wire [9:0] pix_y,
input wire clk,
input wire rest,

output reg [15:0] pix_data 
);

parameter H_VALID = 10'd640 , //行有效数据长度
 V_VALID = 10'd480 ; //场有效数据长度
 
 parameter RED = 16'hF800, //红色
 ORANGE = 16'hFC00, //橙色
 YELLOW = 16'hFFE0, //黄色
 GREEN = 16'h07E0, //绿色
 CYAN = 16'h07FF, //青色
 BLUE = 16'h001F, //蓝色
 PURPPLE = 16'hF81F, //紫色
 BLACK = 16'h0000, //黑色
 WHITE = 16'hFFFF, //白色
 GRAY = 16'hD69A; //灰色

always@(posedge clk)begin
if(reset == 1'b1)begin
	pix_data <= 16'd0;
end else if((pix_x >= 0) && (pix_x < (H_VALID/10)*1)) //0~1/10
 pix_data <= RED;
else if((pix_x >= (H_VALID/10)*1) && (pix_x < (H_VALID/10)*2))//1/10 ~ 2/10
pix_data <= ORANGE;
else if((pix_x >= (H_VALID/10)*2) && (pix_x < (H_VALID/10)*3))//2/10 ~ 3/10
pix_data <= YELLOW;
else if((pix_x >= (H_VALID/10)*3) && (pix_x < (H_VALID/10)*4))//like up
pix_data <= GREEN;
else if((pix_x >= (H_VALID/10)*4) && (pix_x < (H_VALID/10)*5))//like up
pix_data <= CYAN;
else if((pix_x >= (H_VALID/10)*5) && (pix_x < (H_VALID/10)*6))//like up
pix_data <= BLUE;
else if((pix_x >= (H_VALID/10)*6) && (pix_x < (H_VALID/10)*7))//like up
pix_data <= PURPPLE;
else if((pix_x >= (H_VALID/10)*7) && (pix_x < (H_VALID/10)*8))//like up
pix_data <= BLACK;
else if((pix_x >= (H_VALID/10)*8) && (pix_x < (H_VALID/10)*9))//like up
pix_data <= WHITE;
else if((pix_x >= (H_VALID/10)*9) && (pix_x < H_VALID))//like up
pix_data <= GRAY;
else
pix_data <= BLACK;
end

endmodule

波形图

 由图可看到颜色数据reg[15:0]在h_valid为高是被成功赋值。

并且颜色切换也是以64为间隔。

模块测试成功,下一步我们将进行顶层模块组装以及FPGA上板调试。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值