毕业论文-基于FPGA的数字相框设计与实现_第1页
毕业论文-基于FPGA的数字相框设计与实现_第2页
毕业论文-基于FPGA的数字相框设计与实现_第3页
毕业论文-基于FPGA的数字相框设计与实现_第4页
毕业论文-基于FPGA的数字相框设计与实现_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大连东软信息学院本科毕业设计(论文)论文题论文题目:基于FPGA的数字相框设计与实现系 所: 电子工程系 专 业:电子信息工程(集成电路设计与系统方向) 学生姓名: 学生学号: 指导教师: 导师职称: 副教授 完成日期: 2014年4月28日 大连东软信息学院Dalian Neusoft University of Information大连东软信息学院毕业设计(论文) 摘要 IV基于FPGA的数字相框设计与实现摘要随着现代科技的飞速发展,越来越多的人用数码相机进行拍照,而且大容量的存储器能够保存很多照片供大家在电脑上或其他电子设备上浏览。在更多的娱乐需求上,简单、方便、快捷的数字相框从此产生

2、,成为了很多人家中的装饰品。视频图形阵列是一种广泛应用的显示接口,借助FPGA的芯片和EDA设计工具,可以根据用户的特定需要,制作出满足特定功能的VGA显示控制器,不但成本降低很多很多,而且能够实时根据用户需求的功能去更新升级,制作出更广泛、更实用的时代产物。FPGA器件的应用越来越广泛,是当今在嵌入式系统开发应用最广泛的关键性技术,因为制造工艺水平的不断提高,成本的逐渐下降,在以后的趋势中,不久的将来FPGA很有可能会取代ASIC的应用,在FPGA的硬件设计过程中使用Verilog或VHDL等硬件描述语言编程。本文主要研究利用Verilog语言编写数字相框,根据需求来编写实用的时代装饰品,先

3、根据需求阐释SD卡的读取方式入手,通过SPI模式读取数据,然后编写硬件解码图片信息,最后通过液晶显示器将图片显示出来,软件平台使用Quartus II 13.0,完成10幅640*480的BMP图片循环显示。本文将首先叙述数字相框的背景和意义,然后讲解关键性技术及数字相框的需求分析,根据需求设计相应的功能模块,本文的主要研究的内容是通过Verilog语言编写实现数码相框功能。关键词:数码相框,视频图形阵列,FPGA,Verilog大连东软信息学院毕业设计(论文) AbstractThe Design and Implementation of Digital Photo Frame Based

4、 on FPGAAbstractWith the rapid development of science and technology, more and more people are using digital camera to take pictures, and large memory can save a lot of pictures, and we can browse on the computer or other electronic devices. In order to meet more entertainments demand. So, appear th

5、e simple and convenient digital photo frame as a lot of people inside the house decorations. Video graphics array is a widely used in display interface, use of the FPGA chip and EDA design tool, can according to customers specific needs to produce to meet specific functions of VGA display controller

6、, not only low cost, and real time function to upgrade according to user demand can create more widely used and more practical products.The application of FPGA device is more and more widely, and it is now popular used in the embedded system development in technologies. Because manufacturing technol

7、ogy level unceasing enhancement and cost gradually decline, in the future trend of the future application of FPGA is likely to replace an ASIC, in the process of FPGA hardware design were using Verilog or VHDL hardware description language to programming. This article mainly research use Verilog lan

8、guage to finish digital photo frame, and according to the requirements to write practical era of ornaments .First explains the way of reading of the SD card based on the requirements, next to reading data use the SPI mode, and then write hardware decoding image information. Finally use the VGA displ

9、ayer to display images, i will use the Quartus II 13.0 software platform to complete ten 640*480 of BMP image cycle show.This dissertation will first describe the background and meaning of this digital photo frame, next will Interpretation of the key technologies and demand analysis of digital photo

10、 frame. According to demand design the corresponding function module. The main research content is written by Verilog language implementation digital photo frame function.Keywords: Digital photo frames, Video graphics array, FPGA, Verilog大连东软信息学院毕业设计(论文) 目录目 录 TOC o 1-3 u 摘要 PAGEREF _Toc386006581 h

11、IAbstract PAGEREF _Toc386006582 h II第1章绪 论 PAGEREF _Toc386006583 h 11.1 数字相框的研究目的和意义 PAGEREF _Toc386006584 h 11.2 背景介绍及研究内容 PAGEREF _Toc386006585 h 1第2章关键技术介绍 PAGEREF _Toc386006586 h 22.1 FPGA简介 PAGEREF _Toc386006587 h 22.2 QuartusII软件 PAGEREF _Toc386006588 h 22.3 VGA转换接口的简单描述 PAGEREF _Toc386006589

12、h 4第3章数字相框功能及设计方案 PAGEREF _Toc386006590 h 53.1 数字相框的功能 PAGEREF _Toc386006591 h 53.2 设计方案及各个模块功能阐述 PAGEREF _Toc386006592 h 5第4章系统设计 PAGEREF _Toc386006593 h 74.1 系统设计指导原则 PAGEREF _Toc386006594 h 74.2 硬件设计 PAGEREF _Toc386006595 h 74.2.1 SPI接口控制 PAGEREF _Toc386006596 h 74.2.2 SD卡的处理数据 PAGEREF _Toc386006

13、597 h 94.2.3 FAT16文件系统 PAGEREF _Toc386006598 h 114.2.4 图片存储的数据位置计算 PAGEREF _Toc386006599 h 114.2.5 基于Verilog的BMP解码设计 PAGEREF _Toc386006600 h 13第5章系统实现 PAGEREF _Toc386006601 h 155.1 环境配置 PAGEREF _Toc386006602 h 155.2 功能模块实现 PAGEREF _Toc386006603 h 16第6章系统测试 PAGEREF _Toc386006604 h 196.1 测试概述 PAGEREF

14、_Toc386006605 h 196.2 测试用例 PAGEREF _Toc386006606 h 196.2.1 检查RTL图 PAGEREF _Toc386006607 h 196.2.2 波形的显示以及实物测试 PAGEREF _Toc386006608 h 19第7章结论 PAGEREF _Toc386006609 h 22参考文献 PAGEREF _Toc386006610 h 23致谢 PAGEREF _Toc386006611 h 24大连东软信息学院毕业设计(论文)- 第1章绪 论1.1 数字相框的研究目的和意义随着时代的不断进步,人们的需求也在增大,数码相机已经成为人们生活

15、必需品之一,利用大容量、读取速度快的存储器来存储数量庞大的数码相片已经成为大众的首选,由于存放数码相片的数量过于庞大,冲洗出来将花费巨大的金钱,更简单方便的时代产品数字相框出现了,不但取代了传统的相框、相册,更是时代潮流的家中必需品,不紧省下了冲洗照片的钱,还更容易保存照片,随时可以进行照片的回放,如此方便浏览相片的数字相框占据了很大的电子市场。随着数字相框的逐渐推广和发展,各式各样的电子设备竞争已经日新月异,目前国内的厂商已经30余家,竞争非常激烈,数字相框的市场越来越庞大,销量大幅度增长,市场需求依旧非常高,在当今娱乐产品的潮流下,数字相框占据了很大比重,通过Verilog语言编写制作的数

16、字相框,具有处理数据速度快等硬件优势。数字相框对大众来讲还是非常新颖的电子产品,通过读取大容量存储卡中的图片数据,在电子显示屏上浏览数码照片,不但取代了传统的纸质相框,而且通过读取存储器上的照片数据,能够更清晰的回放照片,随时可以增添或更改浏览新的相片,通过循环显示的方式,更给家中增添了一份色彩,带来了大众娱乐的时尚风潮,将数字照片增添了一个更好的丰富多彩的展示空间,不仅仅替代了传统相片的冲洗浏览过程,而且也取代了存放传统的纸质照片的相册、相框,从此数字相框已成为时代的家中必需品。1.2 背景介绍及研究内容如今已经步入二十一世纪,每家每户的装饰品都是多的不可胜数,在数码相机的风靡全球的潮流中,

17、数码相框也紧逼其后,为照片实现了更多的展示空间,为此有必要去设计一款实用的数字相框。所以本课题主要研究内容是通过FPGA开发实现出来的数字相框,利采用SD存储卡读取数据,然后用硬件来实现解码图片信息并通过显示器等其他显示设备回放出照片信息供人们观看。研究内容:用Verilog语言编写代码来实现一款实用性高、可靠性高的数字相框,本设计中包含有SD卡数据的读取,是通过SPI方式读取数据的,利用SDRAM的读取和写入数据的高速度来实现读取数据的实时性,不但保证了输出照片的高速数据扫描,而且能够更稳定高速的将照片呈现在显示输出设备上面,本课题将实现读取SD卡中的十张图片循环播放在VGA显示器上面。大连

18、东软信息学院毕业设计(论文)第2章关键技术介绍2.1 FPGA简介FPGA(Field Programmable Gate Array)是指现场可编程门阵列,在可编程器件的历程中,是PAL、GAL、CPLD等其他可编程的器件上进化而来的新一代产物,是专用ASIC的一种半定制电路产生的,不但解决了定制电路中原有可编程器件门电路数量有限制的缺点,也克服了定制电路的一些不足。FPGA作为数字电路系统设计的主要硬件平台,功能上面的优点能够由需求通过编写硬件语言实现软件的配置,从而使功能更完善,更容易的让工程师进行修改某些需求的功能,不但能重复的修改使用,而且在修改和升级的时候不需要进行PCB板的改变,

19、仅仅需要在电脑上进行硬件语言描述的修改和更新,优点很多,首先能缩短设计系统的时间周期,而且能够让工程师更灵活多变从软件上完成硬件设计开发工作,提高了更多的设计效率,降低了硬件设计成本,因此被越来越多的硬件工程所认可。现今大多数的FPGA开发依旧是采用查找表技术的,在性能方面已经远远高于曾经的性能,在功能方面,包含了RAM、时钟的管理以及DSP的硬核ASIC模块,FPGA的优点如下:1、性能速度快,硬件并行的优势,在每一个时钟周期都完成了预期中更多的任务,超过DSP的运算能力。2、开发周期短,上市时间能够更早,因为硬件工程师在开发设计的过程中能省去了自定制ASIC设计的时间。3、成本低,因为自定

20、制的ASIC设计费用非常高,在解决NRE方案时将远远高于FPGA硬件设计所需求的经费。可编程芯片可以节省更多的成本和交货组装的时间。4、稳定性非常好,工程师的编程环境采用的是软件编程,FPGA是采用代码实现的硬件执行过程,不利用操作系统而通过真正的并行处理数据,能减少出现差错的可能性。5、维护上更容易,FPGA芯片不需要重新去设计专用的集成电路,而是能够现场可升级,所以减少了更多的维护时间和费用。2.2 QuartusII软件Altera的QuartusII是一款能够应用多平台进行FPGA设计的软件开发环境,能根据硬件工程师的需求来完成设计过程中的所有设计流程。首先设计输入(DesignEnt

21、ry),其中包括基于模块的设计、系统级设计和软件开发,然后进行综合(Synthesis)和布局布线(Place&Route),在这里主要进行功耗分析(PowerAnalysis)、调试(Debugging)、工程更改管理(EngineeringChangeManagement);在接下来进行时序分析(TimingAnalysis)和仿真(Simulation),最终进行编程和配置(Programming&Configuration)。QuartusII能够使用Altera的IntellectualPropertycore,其中包含参数化模块功能模块库,能够直接使用完善的模块,能够更轻松地进行硬

22、件设计,缩短了硬件设计的时间周期,而且能够对其他EDA工具有更好的应用链接,在设计的过程中都能够使用其他的熟练EDA工具进行硬件设计;QuartusII通过与其他软件的互相合作,可以更方便的进行各种DSP的多方面应用,支持可编程逻辑器件的开发,是一种非常适合硬件工程师设计的环境平台。Quartus II是一个具备多种数字逻辑设计的各种特性且完全集成与电路构造无任何关系的开发平台,功能如下所述:1、可以通过流程图等多种设计框图和其中的一种或多种硬件描述语言对硬件的电路进行设计,而且能够把设计的内容存储下来;2、编辑集成电路的布局及芯片的内部连线;3、LogicLock的设计技术,使用人可以根据需

23、求进行更新升级系统,增添新的后续模块并能够使系统对性能损失很小或不损失性能;4、多种功能集于一身的逻辑综合的硬件开发平台;5、可以在电路的设计过程进行仿真验证,不但可以进行电路功能的仿真验证,也可以进行时序逻辑的仿真工作,是一款非常适合硬件工程师测试的仿真工具。6、可以进行时序分析,也能够在设计时对关键路径进行分析;7、可使用SignalTapII软件,这是一款非常实用的FPGA片上debug工具;8、能够导入编写的代码源文件,不但能够进行工程文件的添加创建,也能够进行编译,链接生成所需要的工程文件;9、能够综合所有的设计流程直接编译整个工程文件;10、开发软件能够找到工程在编译时出错的位置,

24、并且提示出来;11、高效率的硬件编程开发工具与验证工具,很大的缩短开发期间;12、能够导入并读出EDIF、VHDL和Verilog的网表文件;13、能够输出其他EDA工具能够载入的VHDL或Verilog的网表文件。2.3 VGA转换接口的简单描述视频图形阵列时序控制模块是控制器显示的重要组成部分,输出信号的行同步信号和场同步信号需要按照视频图形阵列时序标准生成对应的脉冲信号。对于普通的VGA显示器,其引出线的共含5个信号:R,G,B(三基色信号),HS(行同步信号),VS(场同步信号)。在五个信号时序驱动时,VGA显示器要严格遵循“VGA工业标准”,即640Hz480Hz60Hz模式。VGA

25、(Video Graphic Array)接口,即视频图形阵列,也叫做D-Sub接口,是15针的梯形插头,分3排,每排5个,传输模拟信号。VGA接口采用非对称分布的15针连接方式,在进行输出的时候,显存里面存储有图片的信息是通过数字格式存储的,也就是存储的图像帧信号在RAMEAC里面借助模拟调制后,从数字信号模拟成了模拟的高频信号,然后通过发送到显示器上面就可以显示出来图片。现在很多的家庭PC机及投影仪的显示接口都是通过这个VGA的视频接口进行连接通信,在图片的存储和输出的时候,图像都是以数字的信号来显示图片数据,这些数据要通过显卡里面的数字/模拟转换器转换为三种颜色(R、G、B)的信号和行同

26、步及场同步的信号,这些数据信号将会传送到显示器或其他显示输出设备上把图片显示出来。但是如果是CRT显示器而言,信号将会被传输到某个处理电路进行处理,要通过驱动程序来控制显示图片;而LCD、DLP的数字显示器需要调试模拟/数字转换器实现模拟信号到数字信号的转换,在数字和模拟信号的多次转换的过程中难免会有图像的失真,所以VGA接口在CRT显示设备上显示效果很好,在液晶显示器上面显示图像会有数字和模拟信号转换造成的图像失真,在显示的效果上会差一些。第3章数字相框功能及设计方案3.1 数字相框的功能本系统设计的数字相框是分别完成以下五个功能:(1)利用SPI模式读取SD卡中的图片数据,不涉及到文件操作

27、系统的方式读取数据。(2)利用FPGA硬件解码图片数据。(3)利用SDRAM读取速度快的优点,作为图片显示缓存。(4)通过显示器等输出设备显示图片,驱动程序利用FPGA来解决。(5)循环显示SD卡中的图片。3.2 设计方案及各个模块功能阐述本设计是通过Verilog语言实现制作数字相框,根据功能需求画出系统功能结构图,如图3.1所示:图3.1 系统功能结构图从图中可以看出,数据流模块包括SDRAM和两个FIFO,用于链接SD卡和VGA的显示模块,从SD卡中读取的图片数据,也就是色彩表数据将会被存放在一个内部的RAM里面,用于译码,SD卡中的图片数据通过一个FIFO送入到SDRAM里面,然后再送

28、到另一个FIFO用于VGA读取,共同完成高速数据的缓冲,因为SD卡的读取速度很慢,不能满足VGA实时扫描数据的需求,所以要用SDRAM作为图片数据的缓存。体系结构设计的系统功能如图3.2所示,利用SD卡等存储器存储照片,通过存储器的读取控制模块载入图片,通过SPI模式读取SD卡中的数据,在这里不涉及到文件系统,然后将图片数据缓存到SDRAM中,通过FPGA的硬件来解码图片数据,由液晶显示器驱动模块来驱动显示器输出照片。图3.2 体系结构设计的系统功能系统的时钟与复位控制模块:完成PLL例化,以及复位控制,这里有三个输出,分别是外部和内部SDRAM的时钟,在外部时钟有一定相位偏移,和其他模块使用

29、的时钟;在复位控制部分,复位信号做异步复位,同步释放的信号处理,能够使系统有一个更加安全、稳定的复位信号。SD卡模块:有两个小模块,其中SD卡控制模块控制上电复位、命令的控制信息传送、图片数据的读出等,也就是完成对SD卡中的基本控制;FPGA以及SD卡的数据传送和命令的传送都设计到SD卡的读取方式,在这里利用SPI模式进行读取,所以通过SPI模块产生的时序来控制。数据流控制模块:用来连接SD卡、SDRAM、显示器的驱动模块;在读取存储卡上的照片的颜色数据时,图片数据将被缓存到图片的颜色表中,用在图片解码时使用;存储卡的照片数据将会送到SDRAM的FIFO缓存里面;SDRAM的控制器都会去直接去

30、控制缓存FIFO的读和写,但是存储卡的读取速度是有限的,虽然不适合显示器的实时数据扫描,但是如果将图片信息数据先存放到缓存SDRAM里面,显示器就可以实现实时的数据读取,并进行数据显示。大连东软信息学院毕业设计(论文)第4章系统设计4.1 系统设计指导原则利用优秀的FPGA开发软件,利用Verilog语言编写的数字相框不但能够在电脑上进行语法校正,也能通过仿真软件进行功能模块的模拟,先进的技术以及规范的编写代码能够及时找到某些功能上面的遗漏,能够及时修改,开发软件能够第一时间找到错误的地方。通过仿真软件能够根据需求仿真预期的结果,通过检测波形的正误,即可知道程序是否能达到预期成果,而且通过FP

31、GA开发板的实物演示即可通过显示屏显示数字相框,所以很简单的就能在开发阶段进行修改测试,可靠性的软件开发环境,在制作出来后也会具有非常好的安全性。由于是通过FPGA制作的数字相框,具有很多硬件的固有特性的很多优点,性能上是绝对的高效率,速度要远远高于市场上其他内核制作的数字相框。FPGA的硬件开发已经非常成熟,硬件工程师基本上能够做出绝大多数的电子设备具有的功能,只是根据需求的不同,开发方法和开发成本会根据实际需求而改变,没有FPGA做不出来的电子设备,只有FPGA不适合开发的电子产品。在本设计中,材料都是很普遍的电子设备,存储器采用的是数码相机应用的SD卡,输出设备利用显示器显示照片,其中通

32、过FPGA开发板实现数字相框的功能,即可进行调试开发,开发成本仅仅为存储器、FPGA开发板、显示器,成本低廉。4.2 硬件设计在硬件设计上,采用FPGA开发板的时钟,在时钟的设计上,要分别设计以下三个时钟,分别是内部和外部的100Mhz时钟和具有一定相位偏移的100Mhz时钟以及其他模块要用到的50Mhz时钟,SD卡的读取采用SPI时序控制,数据流的控制要链接存储器和显示驱动以便完成相应的控制。4.2.1 SPI接口控制SPI接口是一种SD卡的读取方式,SPI就是外围设备的串行接口,是一种速度快,全双工的同步通信总线,需要四个信号就可以传递数据,不但节约资源,也有利于开发板的布局布线,而且在读

33、取数据上更加的简单易用,如今越来越多的SD卡读取数据设计都是采用这个方法来读取数据,所以大多数的芯片上都是集成了这种通信协议。在本设计中,工程里面定义的四个线分别是pi_cs_n、spi_clk、spi_miso和spi_mosi。cs_n信号代表了被选中后有效还是无效的控制芯片,只有片选的信号置为有效的时候(在这里通常是低电平的时候设置为有效),对芯片的读取或其他的一些控制才会生效;这样就能够实现在一条信号线上面能够控制多个SPI的控制设备,clk是在此接口控制上的同步的时钟信号,并且能够在一个时钟的时候一次进行数据信号的传输,miso和mosi是主从机器进行互相收发信息时候的数据通信信号,

34、miso是从机的输出信号,也是主机的输入信号,相反,mosi就是从机的输入信号,也是主机的输出信号。SPI有主模式和从模式的这两种的操作模式;本次FPGA的设计中利用的是SD卡从机,SPI是本设计的主机,利用单主单从的设计方法能够产生cs_n和clk的两个spi时序信号。通常情况下来讲,SPI能够使用4个传输方法来传输数据,其中包含有两个参数,分别是CPOL和CPHA。如图4.1 CPOL配置SPI时钟所示,能够看出来当CPOL是1的时候,SP的信号clk在闲置的时候都是置1的情况,在进行信息通讯之后,第一次的时钟沿来之后,都会呈现出下降沿;CPOL是0的时候,则相反,clk在闲置的时候都是置

35、0的情况,而且在进行信息的通讯之后,第一次的时钟沿来后,都会呈现出上升沿;然后对CPHA进行研究发现,是用来控制数据和时钟的对齐方式,时钟的改变将会是一个时钟的变换上升沿或者是一个下降沿的变换,也能够决定出来下一次的时钟改变的是上升还是下降沿,当CPHA是1的情况下,能够说明两次沿的方向相反,但是CPHA是0的情况下,两次的沿是相同的,也就代表时钟的第一个沿没有锁存数据。图4.1 CPOL配置SPI时钟在本次数字相框的设计中,SD卡的读取方式就是利用SPI的读取方式,但是SD卡在接受复位的命令时候,需要CS这个信号能够有效的时候才能进入这个模式,所以在SD卡需要使用这个模式读取的时候,就是需要

36、SD的总线的模式时候,就能够对SD卡读取采用SPI模式,而且能够保证不会对其他的SD读取模式进行信号的处理,并且能够一直保持SD总线的读取模式。因为需要的就是这个读取模式,所以应该发出R1的信号告诉SD控制模块利用SPI来读取数据,所以返回SD总线的时候只有一个办法,那就是将SD卡重新复位商店,然后在本模式下SD卡的状态机将能够不被检查出来,而且这个时候的任何SD总线模式的所有信号数据命令都能够在这个读取模式下应用;SPI模式通常是在SD总线模式上电读取SD数据的时候,会以缺省的命令利用CRC校验的方式来检查是否关闭,CMDO必须在后面有1位可靠地CRC校验数据,如果在这个读取方式下,通常情况

37、下将会关闭CRC校验。所以本设计采取的方式是CPOL和CPHA都置一,速度大约是3MB/s的速度,控制信号分别有时钟信号的50MHz信号(PLL产生)、系统的复位信号(低电平的时候有效)、主机和从机的输入信号和输出信号、SPI的时序时钟信号(主机产生的时钟信号)、发送和接受的使能信号(高电平有效)、接受和发送的标志位(高电平有效)以及发送接受数据的寄存器。4.2.2 SD卡的处理数据在SD卡的分类中有SD和SDHC两种存储卡,SD卡的容量较小,SDHC的容量大,通常情况下SD卡的容量会低于2GB的存储容量,使用的是FAT16的存储文件方式,而SDHC都是大于4GB的容量,采用的是FAT32的存

38、储文件方式。在SD卡的硬件设计上,采用的是SD存储卡,应用的是微软成熟的文件系统,具有非常非常高的可靠性和兼容性,在这个文件系统中包含有6个部分,第一个就是是引导的扇区,然后就是FAT1和FAT2,这个FAT表表示磁盘的数据存储时候的区域,用通过存储数据区簇链结构来记录磁盘数据,通过划分一些扇区来决定存储的扇区大小,在这里是一个扇区0.5Kb,簇的大小通常是2的n次幂来划分大小,从512B开始,一直到32K,在这里采取的是簇的分配方式,能够更好更快的处理大文件的存取,簇的大小能够决定读取数据的快慢。通过簇的计算能够算出图片数据在SD卡中的存放位置,只有找到图片的占用空间的大小才能准确的读出图片

39、,对图片数据进行相应处理。系统引导记录区在通常情况下需要使用第零区的分区,共0.5KB(也有其他的时候使用别的分区)。在这0.5KB的分区中,包含有跳转的命令,制作工厂信息及使用系统的版本信息,BIOS Parameter Block和扩展的BPB,引导程序和结束标志几个部分组成。图4.2 Winhex软件查看到的DBR区数据在进行SD卡读取数据的过程中使用Winhex软件查看到的DBR区数据,如图4.2所示为查看到的图片在SD卡中存储的详细记录信息的其中一部分数据。其中偏移地址如下所述:偏移地址00H长度3,所以如图所示的EB 3C 90代表的是跳转信息。偏移地址03H长度8,所以4D 53

40、 44 4F 53 35 2E 30为制作工厂的信息和操作系统的版本信息号,这里是MSDOS5。偏移地址0BH长度2,在这里的00 02是有位置顺序的,因为这里的高地址和低地址分别存放高字节和低字节,所以实际的数据应该是02 00,也就是十进制数512,在这里说的是一个扇区的容量是0.5KB。也或许是1024、2048、4096。偏移地址0DH长度1,这里的数据为一,证明一个簇有一个扇区,这里的数值绝对不可能是零,而且必须是偶数2的整数次方,例如:1、2、4、8、16、32、64、128。可是不会出现一个簇能够大于32KB。偏移地址0EH长度2,这里是08 00。所以在改变顺序后就是00 08

41、,这里是说保留区域中的保留扇区数为有8个。那么就可以知道下面的FAT1区的开始的地址就是:0 x08乘以0 x200(每个扇区的字节数)等于0 x1000。偏移地址10H长度1,内容:02。表示此卷中的FAT结构的份数为2,另外一个是备份的。偏移地址11H长度2,内容:0002。转换一下,就是0200H,表示根目录项数(RootEntries)能够保存在该分区的根目录文件夹中的32个字节长的文件和文件夹名称项的总数。在一个典型的硬盘上,本字段的值为512。通过该数据也可以算出根目录后的用户数据区的偏移量地址,即用户数据区首地址就等于根目录地址加上512乘以32。偏移量地址13H,长度2,内容:

42、4DED。转换一下就是ED4DH,即大约32MB的SD卡存储量。表示小扇区数(SmallSector)。这个分区的扇区数表示为16位(65536)。对大于65536个扇区的分区来说,本字段的值为0,而使用大扇区数来取代它。偏移地址16H,长度2,内容:EC00。转换一下为00EC,这个数值表示的是每个文件配置表占用的扇区数。所以一个扇区的Byte数就是0 x00EC乘以0 x200,在这里是0 x1D800。然后按照数据的存放顺序,可以依次计算出启动区、FAT1、FAT2、根目录、数据区的相应的位置。偏移量地址20H,长度2,内容:0000。表示大扇区数(LargeSector)。如果小扇区数

43、字段的值为0,本字段就包含该FAT16分区中的总扇区数。如果小扇区数字段的值不为0,那么本字段的值为0。偏移量地址36H,长度为8,内容:46 41 54 31 36 20 20 20,对于ASCII码为“FAT16”,表示文件系统类型(FileSystemType)根据该磁盘格式,该字段的值可以为FAT、FAT12或FAT16。根据上面得到的信息可以进行以下的地址推导:启动区地址理所当然是0 x00,FAT1地址是0 x1000,FAT2地址是0 x1000+0 x1D800=0 x1E800。根目录区地址是0 x1E800+0 x1D800=0 x3C000。经过实际测试后发现和前面计算的

44、结果是一致的。SD卡数据每次读取都是以一整个扇区,也就是每次以0.5KB的大小来读取数据的。同理,其他图片也是这样在SD卡中处理数据的。4.2.3 FAT16文件系统的数据处理在FAT16文件系统里,根目录占用了32个扇区,在33个扇区的时候才利用簇的计算方式开始数据的信息处理,通常在这个簇的前面都会继续应用扇区作为单位。在这个第33簇,系统不会给零簇或是第一个簇这样说,在这里标号是第二簇,代表存放数据的顺序的第一个簇存放数据,但是在标号上面,这是第二个簇,FAT有很多版本,例如有FAT12、FAT16和FAT32的区别,这里的主要区别是FAT表表示的是保存其中的簇的位置信息不一样,例如FAT

45、16的簇在FAT表里面通常会有2Byte来保存数据,2Byte是二进制中的十六位,在这里只能标有最大的簇号是65535,所以每个0 xFFFF是32K的时候,FAT32能够使用的容量是32个65535的容量,也就是2GB的容量,所以FAT16不能够读取2GB以上的数据,FAT表就是一个存储的地方,在这里的这个表格是每两个Byte进行保存,在遇到较短的文件名的时候,系统将会拆分成两个组成部分,然后分别进行存储,在这里有主文件名,还有一个是扩展名,0 x00 x7表示的是存储的主文件名,0 x80 xA表示的是存储的扩展名。这里不会保存在两个名称中间的点。主文件名称如果少于8Byte的时候或者扩展

46、名少于3Byte,都会用20H来表示。0 x0地址的地方如果存储着的数据是00H,那么就代表这个目录项是NULL;如果这里存储的数据是E5H,说明目录项已经在某个地方应用过,可是相应的文件或者文件夹已经被删掉了。在文件的文件名中如果是起始字符是点或者两个点的符号作为起始字符,就说明在这里存储的数据是一个子目录的目录项。一个点表示的是当前的所在目录,但是两个点表示的是在这个目录之前的前一级目录。0 xB这里是说每个比特分成了八位数据,每一位都代表某个属性的状态,例如只有后三位是101,其余位数是0的时候,说明这个文件是只读的系统文件,最后面的0 xC0 x15是FAT保存时间用的。4.2.4 图

47、片存储的数据位置计算由于本设计中的图片将会存储在SD卡的根目录下,所以数据在读取将会直接对根目录的数据进行计算,在本次的设计中,第一个偏移地址是00H,长度8,内容:驱动器的名称,8个字节。偏移地址20H,长度8,内容:5445535420202020。表示第一个文件的文件名;偏移地址80H,长度8,内容:4E45585420202020。表示第二个文件名;偏移地址28H,长度3,内容:545854。表示文件类型,为ASCII字符表示;偏移地址2BH,长度1,内容:20。表示文件属性,00000000(读写);00000001(只读);00000010(隐藏);00000100(系统);000

48、01000(卷标);00010000(子目录);00100000(归档);偏移地址36H,长度2,内容为BA49。表示时间=小时*2048+分钟*32+秒/2。得出的结果换算成16进制填入即可。根据这个就可以找到文件的下一个簇号在FAT1中的位置了。1000H+02H*02H(因为2个字节存一个簇号)=1004H;偏移地址3AH,长度2,为该文件开始簇号,这里也是套用了格式。转换下为0062,根据这个就可以找到文件2.bmp下一个簇号在FAT1中的位置了;1000H+62H*02H(因为2个字节存一个簇号)=10C4H;偏移地址3CH,长度4,内容:59BE0000。表示文件长度,转换后为00

49、00BE59就是48729字节;偏移地址9CH,长度4,内容:32000000。表示文件长度,转换后为00000032就是50字节。从文件的大小可以计算出,需要占用多少个簇。根据前面的数据,每个簇放1个扇区,每个扇区512个字节,那么一个簇的空间就是512字节了。那么48729字节需要96个簇,这96个簇的开始的地址就可以计算出来了。其中一个图片1.bmp占用了48KB的空间,另一个图片2.bmp占用了512B的空间。文件是按照整簇来存放的,不够一个簇的大小(由上面算得,一个簇为一个扇区即512B),也要给一个簇的空间。1.bmp开始簇地址存放在FAT1中的偏移量了:02H,由此可以先计算出1

50、.bmp的第一簇数据存放地址为:3C000H(根目录地址)+20H*200H(前面提到的用户数据偏移量)+(02H-02H)*01H(1个簇有1个扇区)*200H=40000H。偏移量02H意思是簇号在FAT1中存储都是从02H开始的。1.bmp的第一个簇数据所在的地址指针的地址存放在FAT1中的:1000H(FAT1起始地址)+02H*02H=1004H。而1004H地址上的数据为:0300,转换后为0003H,那么由此可以计算出1.bmp的第二个簇数据所在地址为:3C000H(根目录区地址)+20H*200H(前面提到的用户数据偏移量)+(03H-02H)*01H(1个簇有1个扇区)*20

51、0H=40200H(紧接着第一个簇)。依此类推,一直到FAT1中偏移量为C2H处出现了数据FFFF,这表示1.bmp文件存储结束,那么前面的0061H就是文件最后一个簇偏移量。可以由此算一下文件大小为:0061H减去0002H加上0001H(补偿),所以是96个簇,和实际相符。同样的道理可以算出2.bmp文件的存放地址。首地址偏移量为62H,由此可以先计算出2.bmp的第一簇数据存放地址为:3C000H(根目录地址)+20H*200H(前面提到的用户数据偏移量)加上(62H减去02H)乘以01H(1个簇有1个扇区)*200H=4C000H。而第一个簇数据所在的地址指针的地址存放在FAT1中的:

52、1000H(FAT1起始地址)加上62H乘以02H等于10C4H。而10C4H地址上的数据为:FFFF,即结束了,也就是说由于2.bmp不满一个簇,那么只能分配到一个簇的地址空间。对于本设计中读取图片数据的方法就是利用这个方式来实现的。4.2.5 基于Verilog的BMP解码设计存储在SD卡中的图片数据虽然是RGB的格式,是从左下到右上的顺序来保存图片,在8比特的图片信息中也有色彩表的格式顺序,输出给显示器的时候,通常是传送的数据从左到右传送,自上而下的顺序依次逐渐扫描输出图片信息;SD卡的控制模块将会找到一个照片的数据,然后发送到数据流的控制模块,而且将照片的信息设置一个标志位,这个标志位

53、在每次发送的数据有效的时候,保证一个高脉冲的时间周期,然后数据流控制模块将会分别对数据进行多种处理,所以8比特的图片,800*600的像素下,将会有四十八万字节的图像数据,五十四个文件信息头的数据,还有210字节的色彩表数据;在从内存卡里面读取图片的时候,标志位将会产生481078次高脉冲的周期时钟。图4.3图片数据流示意图图片数据处理的大体流向如图4.3所示。因为本次的内存卡数据位BMP的图片数据读取,所以在文件信息头中的数据都是一样的,不用去判断文件的格式是不是BMP图片数据,所以,色彩表存到IP核的时候,将会实例化一个色彩保存的RAM里面去,在这里用rgb_ram来表示,210个色彩表数

54、据翻译成28字节的各种颜色的存储数;在SDRAM控制模块里面,将会有两个输如输出接口,分别定义为wrfifo和rdfifo,照片的信息数据将会存储在wrfifo里面进行缓存,然后根据需求,发放到显示器需要输出照片的时候,能够依次从rdfifo信号输出,从这里输出的数据通过译码翻译出来,最后将会发放到显示器的驱动程序从屏幕上显示出来预期的照片图像。在本次实现过程中需要用到软件来实现BMP图片的取模操作,如图4.4所示,首先需要将BMP格式的图片进行取模操作,然后将处理好的图片数据存入SD卡中,本课题的存储位置将会放在SD卡的根目录下面。图4.4 BMP转换RGB565的取模软件第5章系统实现5.

55、1 环境配置能够应用SPI模式读取SD卡开发板,Altera的QuartusII软件,以及存有照片的SD卡和一个液晶显示器。通过QuartusII建立工程,借助软件编译修改编写过程中的语法错误,分别对每个模块进行编译,最后执行RTL综合。图5.1 VGA模块如图5.1 VGA模块所示,在实现数字相框的过程中需要利用这个模块连接显示器。根据所提供的RGB信息,将图片输出到显示器上面,在这里的VGA驱动也是由Verilog语言编写来实现相应功能的。图5.2 FPGA开发板如图5.2 FPGA开发板所示,本次设计基于FPGA开发实现,本课题采用的芯片为Altera的Cyclone III开发板。图5

56、.3 SD卡读取模块如图5.3 SD卡读取模块,这个模块将通过编写的Verilog代码来实现SPI模式读取SD卡中数据,作为图片信息的输入模块是数字相框不可缺少的。5.2 功能模块实现(1)系统的时钟与复位控制模块实现主要完成PLL例化和复位控制的这里有三个输出(外部和内部SDRAM的时钟、其他模块使用的时钟),主要代码如下实现:always(posedgeclkornegedgerst_n)if(!rst_n)rst_r1=1b1;elserst_r1=1b0;always(posedgeclkornegedgerst_n)/例化PLL产生模块PLL_ctrluut_PLL_ctrl(.ar

57、eset(pll_rst),/PLL复位信号,高电平复位.inclk0(clk),/PLL输入时钟,25MHz);/SPI主机输出数据控制reg spi_mosir;/SPI主机输出从机输入数据信号always (posedge clk or negedge rst_n)if(!rst_n) spi_mosir = 1b1;else if(spi_tx_en) begincase(cnt84:1)/主机发送8bit数据4d1: spi_mosir = spi_tx_db7;/发送bit74d8: spi_mosir = spi_tx_db0;/发送bit0default: spi_mosir

58、= 1b1;/spi_mosi没有输出时应保持高电平endcaseendelse spi_mosir = 1b1;/spi_mosi没有输出时应保持高电平assign spi_mosi = spi_mosir;/SPI主机输入数据控制reg7:0 spi_rx_dbr;/SPI主机输入从机输出数据总线寄存器always (posedge clk or negedge rst_n)if(!rst_n) spi_rx_dbr = 8hff;else if(spi_rx_en) begincase(cnt8)/主机接收并锁存8bit数据5d3: spi_rx_dbr7 = spi_miso;/接收b

59、it75d5: spi_rx_dbr6 = spi_miso;/接收bit65d17: spi_rx_dbr0 = spi_miso;/接收bit0default: ;endcase(2)SD卡模块实现这个模块是SD卡控制模块控制上电复位、命令的控制信息传送、图片数据的读出等,也就是完成对SD卡中的基本控制。主要代码如下实现modulesdcard_ctrl(clk,rst_n,spi_miso,spi_mosi,spi_clk,spi_cs_n,sd_dout,sd_fifowr,sdwrad_clr);/例化SPI传输控制模块spi_ctrluut_spictrl();/例化SD命令控制模

60、块sd_ctrluut_sdctrl();Endmodule/状态控制always (sdinit_cstate or retry_rep or delay_done or nclk_cnt or cmd_rdy or spi_rx_dbr or arg or arg_r or done_5s) begincase(sdinit_cstate)SDINIT_RST: beginif(delay_done) sdinit_nstate = SDINIT_CLK;/上电后40us延时完成,进入74+CLK状态else sdinit_nstate = SDINIT_RST;/等待上电后40us延时完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论