五、VGA 叠加图像原理和实现(十字光标)

  1. 前言:该案例在VGA项目:联合精简帧+双fifo+sobel算法 实现VGA显示项目的基础上进行改动。

  2. 要求:通过串口助手把 198x198 的十字光标图像二进制数据传递给 FPGA 板卡,FPGA 板
    卡接收到后存储到 Ram 中用于 VGA 叠加显示。

  3. 预期效果展示
    原光标图:
    在这里插入图片描述

    叠加显示效果:
    在这里插入图片描述

  4. 分析: 光标文件是白色为背景,那么如果图像像素等于255就可以判断是白色背景,根据此特性,把 255 的像素用 VGA 的 RGB 背景替换,这样就把光标叠加到显示区域中了。

  5. 关键代码

// 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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值