• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

SD卡读取BMP图片并显示设计Verilog代码Quartus AX301开发板

10/13 10:12
1171
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241112195012624.docx

共1个文件

名称:SD卡读取BMP图片并显示设计Verilog代码Quartus  AX301开发板

软件:Quartus

语言:Verilog

代码功能:

在前面的实验中我们在 VGA、LCD 上显示的是彩条,是 FPGA 内部产生的数据,本实验将彩条替换为 SD 内的 BMP 图片数据,但是 SD 卡读取速度远远不能满足显示速度的要求,只能先写入外部高速 RAM,再读出后给视频时序模块显示。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:

AX301开发板.png

设计文档:

SD 卡读取 BMP 图片显示例程

1 实验简介

在前面的实验中我们练习了 SD 卡读写,VGA 视频显示等例程,本实验将 SD 卡里的 BMP 图片读出,写入到外部存储器,再通过 VGA、LCD 等显示。

本实验如果通过液晶屏显示,需要有液晶屏模块。

2 实验原理

在前面的实验中我们在 VGA、LCD 上显示的是彩条,是 FPGA 内部产生的数据,本实验将彩条替换为 SD 内的 BMP 图片数据,但是 SD 卡读取速度远远不能满足显示速度的要求,只能先写入外部高速 RAM,再读出后给视频时序模块显示。

2.1 BMP 图片格式

本实验直接在 SD 卡中搜索 BMP 文件,假设每个文件都是从 SD 的某个扇区第一个字节开始,根据 BMP 文件头的特征找到 BMP。

BMP(全称 Bitmap)是 Windows 操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大。BMP 文件的图像深度可选 1bit、4bit、8bit 及 24bit。BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于 BMP 文件格式是 Windows 环境中交换与图有关的数据的一种标准,因此在 Windows 环境中运行的图形图像软件都支持 BMP 图像格式。

对于程序设计来说最重要的是找到 BMP 文件头,BMP 图像文件头格式如下:

1)1-2:(这里的数字代表的是字节,下同)图像文件头。0x4d42=’BM’,表示是 Windows支持的 BMP 格式。(注意:查 ascii 表 B 0x42,M 0x4d,bfType 为两个字节,B 为 low 字节,M 为 high 字节所以 bfType=0x4D42,而不是 0x424D,请注意)

2)3-6:整个文件大小。4690 0000,为 00009046h=36934。

3)7-8:保留,必须设置为 0。

4)9-10:保留,必须设置为 0。

5)11-14:从文件开始到位图数据之间的偏移量(14+40+4*(2^biBitCount))(在有颜色板的情 况下)。4600 0000,为 00000046h=70,上面的文件头就是 35 字=70 字节。

6)15-18:位图图信息头长度。

7) 19-22:位图宽度,以像素为单位。8000 0000,为 00000080h=128。

8)23-26:位图高度,以像素为单位。9000 0000,为 00000090h=144。

9)27-28:位图的位面数,该值总是 1。0100,为 0001h=1。

10)29-30:每个像素的位数。有 1(单色),4(16 色),8(256 色),16(64K 色,高彩 色),24(16M 色,真彩色),32(4096M 色,增强型真彩色)。1000 为 0010h=16。

11)31-34:压缩说明:有 0(不压缩),1(RLE 8,8 位 RLE 压缩),2(RLE 4,4 位 RLE 压 缩,3(Bitfields,位域存放)。

12)35-38:用字节数表示的位图数据的大小,该数必须是 4 的倍数,数值上等于:一行所占 的字节数×位图高度。0090 0000 为 00009000h=80×90×2h=36864。假设位图是 24 位,宽为 41,高 为 30,则数值= (biWidth*biBitCount+31)/32*4*biHeight,即=(41*24+31)/32*4*30=3720

13)39-42:用象素/米表示的水平分辨率。A00F 0000 为 0000 0FA0h=4000。

14)43-46:用象素/米表示的垂直分辨率。A00F 0000 为 0000 0FA0h=4000。

15)47-50:位图使用的颜色索引数。设为 0 的话,则说明使用所有调色板项。

16)51-54:对图象显示有重要影响的颜色索引的数目。如果是 0,表示都重要。

本实验使用不压缩,24(16M 色,真彩色)的BMP 图片,文件头大小是54 个字节,前两个字节为“BM”,紧接着4 个字节是文件大小,19-22 字节为图片宽度,这些信息是程序设计中要 使用的重要信息。

3 程序设计

由于 SD 卡读写实验,VGA、LCD 显示实验种我们已经练习过 SD 卡和视频相关知识,这里不 再讲解。

本实验的重点模块是 BMP 图片读取模块 bmp_read,bmp_read 模块完成 SD 卡中读取一个扇 区的数据,然后和 BMP 的文件头对比,如果前 2 个字节等于“BM”,然后再找到 19-22 字节, 对比图片的宽度和输入要求的宽度是否一致,如果一致就认为找到一张 BMP 图片,读取出来,去 掉前面 54 字节的文件头,写入外部存储器。

bmp_read 状态机如下所示,有搜索命令以后,进入搜索状态“S_FIND”,开始不断地读取 SD 卡,找到符合要求的 BMP 图片,找到以后进入“S_READ_WAIT”,判断 FIFO 空间大小,如果 FIFO 空间足够大,进入“S_READ”状态。

bmp_read 模块状态机

信号名称

方向

说明

clk

in

时钟输入

rst

in

异步复位输入,高复位

ready

out

空闲状态指示

find

in

搜索播放请求

sd_init_done

in

sd 卡初始化完成

state_code

out

状态码

0,表示 sd 还在初始化

部分代码展示:

//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
//                                                                              //
//  Author: meisq                                                               //
//          msq@qq.com                                                          //
//          ALINX(shanghai) Technology Co.,Ltd                                  //
//          heijin                                                              //
//     WEB: http://www.alinx.cn/                                                //
//     BBS: http://www.heijin.org/                                              //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd                        //
//                    All rights reserved                                       //
//                                                                              //
// This source file may be used and distributed without restriction provided    //
// that this copyright statement is not removed from the file and that any      //
// derivative work contains the original copyright notice and the associated    //
// disclaimer.                                                                  //
//                                                                              //
//////////////////////////////////////////////////////////////////////////////////

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1354

  • 2-241112195012624.docx
    下载

相关推荐