-
前言:该案例在VGA项目:联合精简帧+双fifo+sobel算法 实现VGA显示项目的基础上进行改动。
-
要求:通过串口助手把 198x198 的十字光标图像二进制数据传递给 FPGA 板卡,FPGA 板
卡接收到后存储到 Ram 中用于 VGA 叠加显示。 -
预期效果展示:
原光标图:
叠加显示效果:
-
分析: 光标文件是白色为背景,那么如果图像像素等于255就可以判断是白色背景,根据此特性,把 255 的像素用 VGA 的 RGB 背景替换,这样就把光标叠加到显示区域中了。
-
关键代码:
// rgb 光标抠图效果显示
always @(posedge clk_25) begin
if(rst=='b1) begin
rgb<= 'd0;
end
//198x198像素的白框
else if (cnt_h>=144+x && cnt_h<=341+x && cnt_v>=35+y && cnt_v<=232+y) begin
rgb<=doutb;
end
//判断若是光标的白色背景,则显示成rgb的背景色,否则显示光标图
else if (cnt_h>=144 && cnt_h<=783) begin
if (cnt_v>=35 && cnt_v<=194 && doutb<=255) begin
rgb<=RED;
end
else if (cnt_v>=195 && cnt_v<=354 && doutb<=255) begin
rgb<=GREEN;
end
else if (cnt_v>=355 && cnt_v<=514 && doutb<=255) begin
rgb<=BLUE;
end
end
else
rgb<=doutb;
end
//rgb彩条背景色生成
always @(posedge clk_25) begin
if(rst==1'b1) begin
rgb <= 'd0;
end
else if (cnt_h>=144 && cnt_h<=783) begin
if (cnt_v>=35 && cnt_v<=194) begin
rgb<=RED;
end
else if (cnt_v>=195 && cnt_v<=354 ) begin
rgb<=GREEN;
end
else if (cnt_v>=355 && cnt_v<=514 ) begin
rgb<=BLUE;
end
end
else
rgb<='d0;
end