码迷,mamicode.com
首页 > 其他好文 > 详细

LOGO的浮空显示-Verilog

时间:2019-06-26 13:23:04      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:else   local   hot   pos   splay   图像转换   大小   右上角   vco   

为了方便生成准确的mif数据,以实现特定的透明效果。使用Photoshop将网上下载的Logo修改颜色,保存大小为120*120像素,如图1所示。

 技术图片

图1 ps修改后的Logo

使用Pic2mif软件,将图像转换为彩色(8色)mif文件,得到的是3位位宽,深度为14400mif数据。以此定制ROM,并将Logo显示到屏幕右上角,显示结果如图2示。

 技术图片

透明背景的Logo显示

相关主要代码如图3示。当扫描到原图像背景为红色的区域时,ROM输出的数据q为“100”。此时让该像素颜色等于背景色,即完成了图像的“浮空显示”(相当于红色区域透明)。另外附上真正的透明度显示计算式,其中透明度a的值在01之间取值

透明后的像素值 = 原像素值*透明度a+背景像素值*1-透明度a

/*logo_rom--彩色-3位*/        
//    localparam
//        BMP_W            =    11‘d120,   //显示区域宽度 = 图片宽
//        BMP_H            =    11‘d120;   //显示区域高度 = 图片高
//    
//    wire pic_area = (hcount>680) && (vcount<120);//行-场
//    reg [13:0] pic_addr;    
//    wire [2:0] q;
//    logo_rom logo_rom(
//        .address(pic_addr),
//        .clock(clk),
//        .q(q)
//    );
//    always@(posedge clk or negedge rst_n)
//    if(!rst_n)    begin
//        disp_data <= 16‘d0;
//        pic_addr <= 17‘d0;
//    end
//    else
//    begin
//        //display
//        if(pic_area == 1‘b1)    begin
//            pic_addr <= hcount-680 + vcount*BMP_W;
//            case(q)  
//                8‘b000:    disp_data=R2_C1;
//                8‘b001:    disp_data=R1_C1;
//                8‘b010:    disp_data=R1_C0;
//                8‘b011:    disp_data=YELLOW;
//                8‘b1x0:    disp_data=WHITE;
//                8‘b101:    disp_data=WHITE;
//                8‘b111:    disp_data=R0_C0;
//                default:            disp_data <= WHITE;
//            endcase
//        end
//        else
//            disp_data <= WHITE;
//    end
/*logo_rom-end*/    

使用时,去掉 “//” 的注释即可。

 

LOGO的浮空显示-Verilog

标签:else   local   hot   pos   splay   图像转换   大小   右上角   vco   

原文地址:https://www.cnblogs.com/mjy2wxy/p/11089176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!