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