当前位置 : 主页 > 手机开发 > ROM >

LOGO的浮空显示-Verilog

来源:互联网 收集:自由互联 发布时间:2021-06-10
为了方便生成准确的 mif 数据,以实现特定的透明效果。使用 Photoshop 将网上下载的 Logo 修改颜色,保存大小为 120*120 像素,如图 1 所示。 图1 ps 修改后的 Logo 使用 Pic2mif 软件,将图像转

为了方便生成准确的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)
//    );
//    [email protected](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*/    

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

网友评论