fpga控制vga显示彩色图片

1:黑白图片rgb获取

     如果是黑白图片直接采用image2LCD转换成bmp格式图片,然后通过BMPtoMIF软件转换成rom的中导入的数据mif文件。但这只是rgb3位,颜色比较单一。

      RGB = 000   黑色 RGB = 100 红色 = 001   蓝色  = 101 紫色= 010 绿色  = 110 黄色= 011 青色  = 111 白色

2:   if(rom_data==3'd7) vga_rgb <= 8'b111_111_11;  
   else if(rom_data==3'd6) vga_rgb <= 8'b111_111_00;
      else if(rom_data==3'd5) vga_rgb <= 8'b111_000_11;
    else if(rom_data==3'd4) vga_rgb <= 8'b111_000_00;
      else if(rom_data==3'd3) vga_rgb <= 8'b000_111_11;
     else if(rom_data==3'd2) vga_rgb <= 8'b000_111_00;
    else if(rom_data==3'd1) vga_rgb <= 8'b000_000_11;
       else if(rom_data==3'd0) vga_rgb <= 8'b000_000_00;

通过此可以转换成8位显示r【2:0】g【2:0】b【1:0】

3:彩色图片获取

  通过winhex软件获取图片的信息,其中前54字节是图片信息,后1024字节是颜色表,后边是图片数据(给出颜色表中位置),通过图片数据查找颜色表显示。

在处理信息的时候我们舍弃前54字节,将数据复制成c数组保存到txt文档中,然后用excel打开,通过=OFFSET($A$1,(ROW(A1)-1)/16,MOD(ROW(A1)-1,16))公式将数据排列成一列,最后根据mif文件格式转换成mif。导入到rom中

4:整体工程,是将数据(颜色表和图片数据)存到rom里,然后,将颜色表转换成256种颜色数据,存到ram中,然后显示时候查表得出颜色的rgb显示

                                2'd0: rr_din[7:6] <= rom_data[7:6]; //2blue--2blue
2'd1: rr_din[5:3] <= rom_data[7:5]; //3green--3green
2'd2: rr_din[2:0] <= rom_data[7:5]; //3red--3red

5:注意ram和rom在存储数据时候,出入地址后读出数据时候会有延迟2个时钟

你可能感兴趣的:(Fpga)