基于FPGA的电子相框设计制作-2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的电子相框设计制作
中文摘要
FPGA器件的应用是继单片机之后,当今地嵌入式系统开发应用中最最热门的关键技术之一,并且随着制造工艺水平的不断提高,成本的不断下降,FPGA甚至大有替代专用ASIC的趋势。

FPGA使用Verilog或VHDL等硬件描述语言编程。

本课题是DIY数码相框,是基于FPGA的数码相框设计。

本系统工程的所有功能全部使用FPGA来完成,内容包括SD卡的读取控制,图片解码,VGA驱动显示等等,采用的是SF—EP1C 开发板,该板FPGA使用Altera公司Cyclone系列的EP1C3T144C8,配置PLL电源电路,SD接口,1个256色的VGA通用接口,SDRAM等。

支持AS及JTAG配置方式,软件平台使用QuartusⅡ9.1,从而完成10幅800*600的BMP图片循环显示。

关键词VGA FPGA SD Verilog Quartus
外文摘要
Title Design of digital photo frame based on FPGA
Abstract
The application of FPGA devices is today's one of the most popular key technologies in the development and use of embedded systems after the MCU.and with the level of the manufacturing process constantly improving and the costs continuously declining,the FPGA will have the tendency of even replacing the dedicated ASIC.The FPGA programs use Verilog or VHDL hardware description language.The system accomplishes all the functions including the reading and controlling of SD card,decoding the pictures,drivering VGA,etc.based on the FPGA, which uses the SF-EP1C development board.The board use EP1C3T144C8of Altera's Cyclone series as FPGA including the PLL power supply circuit,SD interface,a256-color VGA common interface, SDRAM,and so on,supporting for AS and JTAG configuration.The software platform completes displaying ten800*600BMP picturess in cycles by using the Quartus II9.1.
Keywords VGA FPGA SD Verilog Quartus
目录
1绪论.......................................1
1.1本课题的研究目的与意义.................1
1.2背景介绍与设计要求.....................12关于FPGA的基本介绍.......................3
2.1FPGA与ASIC的区别....................3
2.2FPGA与CPLD的区别....................3
2.3FPGA的基本结构和工作原理..............33系统任务分析与总体设计........................6
3.1课题难点及任务分析......................6
3.2系统总体设计...........................64SD卡及SPI模式说明..........................8
4.1SPI接口控制............................8
4.2SD卡工程说明及操作................105RAM配置模块...............................13
5.1SDRAM简介..........................13
5.2SDRAM设计方案......................156BMP图片解码及数据流控制模块...............18
6.1BMP图片格式.........................18
6.2BMP图片解码设计.....................18
6.3数据流模块............................197VGA显示驱动模块...........................21
7.1显示器基本概念........................21
7.2接口电路..............................21
7.3VGA驱动方案.........................22总结...........................................25参考文献.......................................26谢辞...........................................28
1绪论
1.1本课题的研究目的与意义
随着社会经济的发展和生活物质水平的提高,人们对于精神世界的追求也越来越高。

该设计理念源于提高人们的生活幸福指数。

在传统意义上,人们往往用冲印出来的相片来记录生活中的美好瞬间。

然而伴随电子行业的发展,包括数码相机,高像素智能内的大量电子产品大行其道,足以用数码形式将其取代,柯达公司申请破产,说明市场已经形成。

据统计,世界上那个70%以上照片都是数码照片,年轻一族更是喜欢以数码形式记录他们的生活,并且分享在网络上。

数码相框同时还可以将静态图片提升为动态的相册,携带方便,储存时间长远,满足于人们的需求,同时也会是一种节约型,环保低碳型的构想。

1.2背景介绍与设计要求
反思数码相框,现在电子市场竞争愈演愈烈,电子技术也越来越成熟,功能越来越完善。

不过大都以外带ARM处理器来实现主要功能,本次课题完全应用硬件FPGA,重点是借此来掌握FPGA地开发流程和设计理念。

根据本系统设计要求,使用Verilog语言,Altera提供的FPGA/CPLD开发集成环境QuartusⅡ9.1,cyclone系列地EP1C3T144为基础实现所有功能,包括从SD卡中读取图片信息,到最终彩色显示并循环播放。

研究内容:基于FPGA设计包含有SD卡的读取,文件系统控制,图片解码,TFT-LCD驱动和图片显示地数码相框。

该相框所用到地SD
卡读取模块,图片信息地解码控制模块和彩色液晶驱动要求全部用FPGA完成。

设计要求如下:
(1)从SD卡中读取图片,采用SPI模式,不涉及文件操作系统;
(2)用FPGA解码BMP图片;
(3)用SDRAM作为显示缓存;
(4)使用TFT-LCD液晶显示,液晶驱动用FPGA完成。

2关于FPGA的基本介绍
二十世纪六十年代中期,TI公司生产了大量通用IC(集成芯片),如分别面向民用和军用的74系列和54系列。

这些通用IC甚至沿用至今,在二十世纪八十年代,出现了PLD(可编辑逻辑器件),包括SPLD(简单的可编辑逻辑器件),CPLD(复杂的可编辑逻辑器件)等,它们较之传统IC,具有可重配置性和较短的开发调试时间,但实现地功能和电路都相对简单。

所以随着电子行业的发展和实际需要,Xilinx公司推出了第一块现场可编辑逻辑器件,即FPGA(现场可编辑逻辑器件)。

在随后的几十年里,FPGA得到了巨大的发展。

2.1FPGA与ASIC的区别
ASIC(专用芯片)是定制IC,内部已经固化,只能开启或关闭不同的功能模块;而FPGA是地地道道地可编程逻辑器件,用户要根据自己的实际要求进行开发设计。

一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA可重配置的灵活性是ASIC所不具有的。

2.2FPGA与CPLD的区别
首先CPLD是基于ROM结构的,而FPGA是基于RAM结构的。

另外二者制造工艺上差异明显,CPLD的逻辑资源有限,通常逻辑门的密度在几千到几万个逻辑单元门之间,而FPGA通常在几万到几百万。

2.3FPGA的基本结构和工作原理
一个典型的FPGA是有几个部分构成的,首先是逻辑块(Logic Block),Altera公司将其称之为逻辑阵列快(LAB)Xilinx公司将其称为可配置逻辑块(CLB)。

LAB由称之为LE(Logic Element)的基本单元构成,CLB由称之为LC(Logic Cell)的基本单元构成。

这些就是FPGA的逻辑资源,还有一部分是散落在各个逻辑块之间地内部连线,它们好比是PCB板上的导线,将FPGA内部地各个逻辑相连接,起点和终点都是IOB(I/O Block)。

另一部分就是IOB了,IOB是FPGA 的外部物理接口,类似IC的各引脚,当然这里是根据用户需要自己可以任意定义的。

如今的FPGA的IOB已经很强大,从基本的LVTTL/LVCOMS接口到PCI/LVDS/RSDS甚至各种各样的差分接口,FPGA 内部的I/O实际上是分组的,但是每一组都可以灵活配置,改变上拉下拉电阻,调解驱动电流大小,兼容5V,3.3V,2.5V,1.8V甚至1.5V,可以满足不同的电器特性,不同的I/O接口物理特性以及外部硬件电路对输入输出信号的各种匹配要求[1]。

目前I/O可以达到的频率也愈来愈高,通过特定的技术数据读取速率甚至可以达到2Gbps现在越来越多的工程师喜欢FPGA,强大的I/O特性也是一种原因吧。

而且以后我想I/O兼容恐怕是大势所趋。

设计IOB的概念和技术还有很多,这里不做介绍了。

还有一部分就是FPGA内部的功能模块,是制造商根据实际需要放置在FPGA内部的。

比如数字时钟管理模块即DCM,Xilinx公司的FPGA全都具有这种功能。

比如相位环路锁定。

PLL需要一个外部时钟输入(晶振),经过内部处理后(包括分频和倍频)可以提供在频率和相位上都比较稳定的一定范围内的时钟。

还有不得不提的内部不占用逻辑资源的块RAM。

RAM块可用作为单口RAM、双口
RAM、内容地址存储器以及FIFO(first in first out)等常用存储器甚至ROM,移位寄存器。

这对于小量数据缓存很有用,强化了FPGA 的应用性。

在选择FPGA时,芯片内部块RAM的资源多少也是衡量的一个重要因素。

单独块RAM的容量为18kbit宽为18Bit、深度为1024,可以根据实际需要改变其位宽和深度,但有两点限制:首先就是修改后块RAM的容量(位宽深度)不能大于单片块RAM容量;而且位宽最大不能超过36Bit,可以将多片块RAM联起来形成内存更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。

不过在Quartus中,具体操作起来很方便。

还有底层内嵌功能单元包括内嵌专用硬核如乘法器等。

它对于数字信号的运算处理提供极大的便利。

图2-1典型的FPGA内部结构图
3系统任务分析与总体设计
3.1课题难点及任务分析
首先是对于FPGA以前没有接触过,所以基于FPGA的开发流程和设计理念不是很了解。

所使用的Verilog语言也很陌生,一切要从头学起,其次课题内容以前也没有接触过,需要学习相关知识。

难点如下:
(1)如何从SD卡中读取图片;
(2)什么是BMP图片格式,如何解码;
(3)如何驱动显示。

本工程采用SPI通信协议,不涉及文件操作系统,计划利用底层协议找到文件实际物理位置,直接读取。

用SDRAM及FIFO组成数据流模块,共同完成数据缓冲,作为图片缓存。

FPGA实现BMP图片解码,并完成VGA驱动显示。

采用FPGA内部时钟作为系统时钟。

3.2系统总体设计
图3-1总体模块划分
总体设计框图如图3-1所示。

数据流模块包括SDRAM和两个
FIFO,用于衔接SD卡及VGA显示模块,从SD中读取的BMP图片的色彩表数据将被存放到FPGA的一个内部RAM中,用于译码,SD中的数据通过一个FIFO送入到SDRAM中,再送入另一个FIFO 中以供VGA读取,一起来完成高速数据的缓冲。

由于SD本身速度较慢,所以无法满足VGA实时扫描需求。

总工程引脚定义如表3-1所列。

表3-1工程引脚定义
名称方向分配作用
clk input PIN16FPGA输入时钟信号,25Mhz RST input PIN144FPGA复位信号
sdram-clk outout PIN25sdram时钟信号
sdram-cke output PIN27sdram时钟有效信号sdram-cs output PIN39sdram片选信号
sdram-r output PIN38sdram行地址选通脉冲sdram-c output PIN37sdram列地址选通脉冲sdram-we output PIN1sdram写选通信号
sdram-bank[0:1]output PIN40,41sdram的L-Bank地址线sdram-ad[0:11]output PIN30-36,47-50,28sdram的地址总线
sdram-data[0:15]input PIN2-7,10-11,139-
-143,32-134
sdram的数据总线
spi-miso input PIN51SPI主机输入数据信号spi-mosi output PIN57SPI主机输出数据信号spi-clk output PIN52SPI时钟信号
spi-cs output PIN58SPI使能信号,主机控制hsync output PIN61VGA行同步信号
vsync output PIN62VGA列同步信号
vga-r[0:2]output PIN72-74VGAred
vga-g[0:2]output PIN69-71VGAgreen
vga-b[0:1]output PIN68,67VGAblue
4SD卡及SPI模式说明
4.1SPI接口控制
SPI(Serial Peripheral Interface)是一种通信协议,数据传输高速,全双工,逐位同步,只需要四条信号线即可。

不但节约硬件资源,同时有利于简化板子的的布局。

现在越来越多的芯片集成了这种协议,方便简易,SPI通信协议如图4-1所示。

图4-1SPI模式连接图
该工程模块的SPI接口四条信号线分别定spi_cs_n,spi_clk,spi_miso和spi_mosi。

其中spi_cs_n是数据控制使能信号,当要对芯片进行操作时,此信号低电平有效。

也就是说在同一条主线上可以连接多个SPI。

spi_clk是SPI同步时钟信号,数据信号在该时钟的控制下进行逐位传输。

spi_miso和spi_mosi是主从机进行通信的数据信号,spi_miso即主机的输入或者说是从机的输出spi_mosi即主机
的输出或者说是从机的输入。

SPI的工作模式有两种:主模式和从模式。

SPI总线也有三种模式,分别为单主单从、单主多从和互为主从[2]。

本课题使用的是单主单从模式即SPI主机,SD从机。

因此,FPGA将控制产spi_cs_n spi_clk的时序。

SPI通信也可以配置成四种不同的传输模式。

这主要是对CPOL 和CPHA这两个参数不同设置而配置的。

CP0L=时,SPI时钟信spi_clk 闲置时总是高电平,发起通信后的第一个时钟沿是下降沿;CPOL=0时,SPI时钟信spi_clk闲置时总是低电平,发起通信后的第一个时钟沿是上升沿。

而CPHA则用于控制数据与时钟的对齐模式,CPHA=1时,时钟的第一个变化沿(上升沿或者下降沿)数据变化,那么也意味着时钟的第二个沿(与第一个沿相反)锁存数据;CPHA=0时,时钟的第一个变化沿之前数据变化,那么也意味着时钟的第一个沿锁存数据[3]。

CPOL控制时序如图4-2所示。

图4-2CPOL配置spi时钟
关于SD卡的SD模式不做介绍。

本课题使用了SD卡的SPI模式进行通信。

SD卡在总线模式中唤醒,在接收复位命令时如果CS信号是低电平,那么SD会使用SPI工作模式。

一旦进入SPI模式,没有办法回到总线模式,只能重新给SD上电。

在SPI模式下,SD卡协议状态机不被检测,所有在SD总线模式支持的命令在SPI模式也是可用的[4]。

SPI 模式下缺省的命令结构/协议是CRC检测关闭[5]。

随着SD卡在SD总线模式下上电,CMD0必须紧跟着一个有效CRC字节。

对于该设计中,SPI的时序模式为CPOL=1,CPHA=1,速率25Mbit,本工程时序如图4-2所示。

图4-2本工程SPI时序
4.2SD卡工程说明及操作
这次课题中我们SD用的是Panasonic的class4,大小为2GB,每簇的大小为960个扇区,每个扇区的大小为512字节。

属于一代sd 卡由于不涉及操作系统,所以本人并没有仔细学习关于SD卡的工作原理,就本课题需要说明的如下,首先用WINHEX软件找到图片存放的物理地址,查看图片的大小和占用的空间,计算图片的末地址,之后用状态机来控制SD的上电初始化和扇区读取控制。

接口与引脚定义如表4-1及4-2所列。

表4-1SPI主机引脚定义
名称方向作用
clk input PLL产生时钟信号50MHz
rsr-n input系统复位信号
spi-miso input SPI主机输入从机输出数据信号
spi-mosi output SPI主机输出从机输入数据信号
spi-clk output SPI时钟信号
sd-data[0:7]output从SD读出的数据信号
sd-fifowr output读出的数据写入FIFO时能信号
sdwrad output SDRAM写控制相关信号清零复位信号
表4-2SPI模块接口定义
名称方向作用
clk input产生时钟信号50MHz
rsr-n input系统复位信号
spi-miso input SPI主机输入从机输出数据信号
spi-mosi output SPI主机输出从机输入数据信号
spi-clk output SPI时钟信号
spi-tx-n input SPI数据发送使能信号
spi-tx-nd output SPI数据发送完成标志位
spi-rx-n input SPI数据接收使能信号
spi-rx-nd output SPI数据接收完成标志位
spi-tx[0:7]input SPI数据发送寄存器
spi-tx[0:7]output SPI数据接收寄存器
SD卡的上电初始化过程可以分为以下五个步骤:
①适当延时等待SD卡就绪。

②发送74+个spi_clk,且保持spi_cs_n=1,spi_mosi=1。

③发送CMD0命令并等待响应R1=8'h01:将卡复位到IDLE状态。

④发送CMD1命令并等待响应R1=8'h00:激活卡的初始化进程。

⑤发送CMD16命令并等待响应R1=8'h00:设置一次读写BLOCK的长度为512个字节。

SD数据读取操作大体分为以下三个步骤:
①发送命令CMD17。

②接收读数据起始令牌0xfe。

③读取512Byte数据以及2Byte的CRC。

SD命令CMD发送控制大体分为以下五个步骤:
①发送8个时钟脉冲。

②SD卡片选CS拉低,即片选有效。

③连续发送6个字节命令。

④接收1个字节响应数据。

⑤SD卡片选CS拉高,即关闭SD卡。

表4-3SD卡命令格式表
描述起始位表示主机命令地址CRC校验位结束位
位1’b01’b1位5~0位31~0位6~01’b1 SD卡32位命令格式如上表所列,其中地址位只是某些指令有用到。

spi_cs_n信号由SD卡命令驱动模块控制。

当需要开启SPI模式进行数据传输时,先把待传输的数据放置到SPI数据发送寄存器也就是spi_tx[0:7]中,然后将SPI发送使能标志位spi_tx_n拉高,SPI发送功能模块被启动。

在若干个时钟周期后,数据发生完毕,则SPI发送完成标志位spi_tx_nd被拉高。

此时外部模块检测spi_tx_n为高电平,则拉低spi_tx_n,SPI模块在spi_tx_n拉低后也会清零内部计数器,此时地spi_tx_nd会恢复为低电位,至此一次数据传输过程完毕。

接收功能和发送功能相类似,只要在SPI接口完成标志位。

pi_rx_nd拉高后读取spi_rx[0:7]的数据即可。

5RAM配置模块
5.1SDRAM简介
SDRAM(同步动态随即存储器)与传统的DRAM有很大区别,它可以与系统总线以相同的频率工作,用共同的CPU时钟周期即可完成数据的访问和刷新,进而大大的提高了数据传输速率,其速度远远大于DRAM[6]。

本工程采用开发板上就用外部SDRAM作为数据缓存器,也就是VGA的显存缓冲。

现在,许多嵌入式设备的大容量、高速度存储器都采用SDRAM来实现,大多数都是用专用芯片完成其控制电路,这不但提高了设计成本,而且使系统的硬件电路复杂化[7]。

所以如果能够自行设计一个简易的,能够符合项目要求,迎合实际需要的SDRAM控制器,就会大大降低成本,而且可以简化编程操作。

本课题设计了基于FPGA的通用SDRAM控制器,SDRAM具有内存空间大,数据读写快,成本低等优点,但缺点是硬件控制复杂,编程复杂(重复刷新操作、行列地址管理、不同延时和指令序列等)[8]。

SDRAM地址结构
SDRAM的物理地址分为页(bank)地址,行(row)地址和列(column)地址。

例如一个8MByte的SDRAM,被分为4个bank(1个bank为2MByte),每个bank包括12行8列。

SDRAM的指令
SDRAM的指令如表5-1所列,每条指令都是最终通过控制行RAS、列CAS、使能WE信号来实现。

通常对SDRAM的操作过程如下:
图5-1指令表
命令缩写RAS CAS WE
空操作NCP H H H
页激活ACT L H H
读操作RD H L H
写操作WR H L L
突发操作终止BT H H L
预充电PCH L H L
刷新操作ARF L L H
配置模式寄存LMR L L L
SDRAM初始化操作
1上电后延迟100ns,然后至少执行1条空操作,这是SDRAM的输入稳定期;
2发送PCH指令;
3向各页发出两条刷新操作指令至少8个刷新周期;
4发送LMR命令用来配置SDRAM工作模式寄存器(MSR)。

其中A11~A10是用户保留位;A9用来配置写突发模式;A8~A7是
操作模式,通常为“00”,代表标准操作模式;A6~A4设置CAS
延迟时间;A3决定突发操作模式是顺序还是间隔型;最后的
三位A2~A0用来配置突发长度[9]。

SDRAM工作寄存器如表5-2
所列。

表5-2工作寄存器
A11A10A9A8A7A6A5A4A3A2A1A0 Reserve Write burst mode Operating mode Latency mode Burst type Burst length
SDRAM数据读写操作:
SDRAM对数据采用突发式读写,支持的突发长度可配置为1个、2个、4个、8个数据周期或者页模式[10]。

本次课题采用的是页模式。

在页模式下地址可以为0-255,在进行写操作时,把数据和地址送入,一段延迟后,数据就会进入相应的地址;进行读操作时,内部地址被寄存,延迟1——3个时钟周期(CAS延迟时间)后,数据被读出在数据总线上。

操作终止:
在页操作模式下,必须实用突发停止命令停止操作,由外部的数据寄存器给出字节数适当发出命令,这样可以高效发挥页模式长处。

5.2SDRAM设计方案
本次课题采用的是三星SDR SDRAM(K4S641632),核心是设计一个SDRAM控制器。

首先用两个状态机,一个用于上电初始化操作,另一个用于正常的工作状态控制,从而完成SDRAM的上电初始化及定时刷新,读写控制等的状态变迁。

其次通过一个命令模块,根据不同状态指示输出相应的SDRAM的控制命令和地址,还有一个数据控制模块,根据不同的状态完成SDRAM数据总线的控制,包括读写等。

SDRAM控制器接口定义如表5-3所示。

原理图如图5-1所列。

表5-3SDRAM的控制器接口定义
名称方向描述
clk input PLL时钟信号,100MHz rst-n input系统复位信号
sdram-wr-req input系统读RAM请求信号sdram-rd-req input系统写RAM请求信号
sys-wraddr[0:21]input 写RAM时地址暂存器,位0-7为列地址,位8-19为行地址,20-21为Bank地址
sys-rdaddr[0:21]input 读RAM时地址暂存器,位0-7为列地址,位8-19为行地址,20-22为Bank地址
sys-data-in[0:15]input写RAM时数据暂存器。

sdwr-byte[0:8]input突发写RAM字节数(1~256)
sdra-byte[0:8]input突发读RAM字节数(1~256)
sdram-wr-ack output系统写RAM响应信号,作为wrFIFO输出有效信号sdram-rd-ack output系统读RAM响应信号。

sys-data-out[0:15]output读RAM时数据暂存器
sdramclk output RAM时钟信号
sdram-cs-n output RAM片选信号
sdram-ras-n output RAM行地址选通信号
sdram-cas-n output RAM列地址选通信号
sdram-we-n output RAM写允许信号
sdram-ba[0:1]output RAM的Bank地址线
sdram-addr[0:11]output RAM的地址总线
sdram-data[0:15]input RAM的数据总线
图5-1SDRAM控制器接口原理图
接口信号介绍:
(1)主机接口信号:
CLK:时钟信号;
RESET::复位信号;
CMD[2:0]:译码指令;
CMDACK:用于主机接收的应答信号;
ADDR:地址线,本例中为22位,A20,21为页地址BA0
,BA1.A8-A19代表行地址,A0-A7代表列地址;
DATAIN/DATAOU:输入、输出数据总线;
DM:数据掩码。

(2)SDRAM接口信号:
SADDR:12根地址线,分时复用。

BA:页地址,BA0,BA1;
CS:片选使能信号;
CKE:时钟使能信号;
RAS、CAS、WE:命令控制信号;
DQM:SDRAM数据掩码;
DQ:双向数据线。

6BMP 图片解码及数据流控制模块
6.1BMP 图片格式
本次课题选用了10副800*600大小的BMP图片,所以我们先来了解
一下位图文件结构,如表6-1所列。

表6-1位图文件结构
头14个字节为文件信息头,它定义了图片的格式,之后的位图信
息头占用了40个字节,它里面规定了图片的长度,宽度,色彩等。

然后是彩色表,里面包含256色,占用1024个字节,后面的颜色阵列是图片的具体信息,800*600包含480000个字节。

虽然BMP 格式内的数据本身就是RGB格式的,但是由于它存储的顺序是从图片的左下角开始右上角结束,而且对于如8bit 的位图还有色彩表的概念,而送到液晶显示器一端的数据一般是以从左到右、从上到下的顺序扫描数据的,这就需要解码。

6.2BMP 图片解码设计
SD 卡控制模块直接寻址到某一幅图片地址后将其发送到数据流
控制模块,同时会有一个图片数据有效标志位wrf_wrreq 做指示,wrf_wrreq 只在每次发送的数据有效后保持一个时钟周期高脉冲,从而让数据流控制模块对该数据做相应处理。

因此一副分辨率800*600块名称windows 结构体定义大小(Byte)文件信息头
BITMAPFILEHEADER 14位图信息图
BITMAPINFOHEADER 40彩色表
RGBQUAD 一个800*600的8bit 位图的色彩表为:1024B。

RGB、的颜色阵列BYTE|*由图像长宽尺寸决定
的8B位宽图片共有481078字节(54个字节信息头数据、1024字节色彩表数据和480000字节图像数据)的数据,在读取SD卡过程中,wrf_wrreq也就会产生对应的481078个单时钟周期的高脉冲。

由于该设计中只处理BMP格式图片,所以对文件信息头和位图信息头就不做判断处理,色彩表数据存储到FPGA内部IP core例化的一个RAM (rgb_ram)中,将1024字节的色彩表译码为256字节的不同色彩数据。

图像数据被送入FIFO(wrfifo)中(缓存),图像也是数据从FIFO (rdfifo)中送出(缓存),这两个FIFO和SDRAM接口。

从rdfifo出来的图像数据再通过rgb_ram译码后送到后端的VGA驱动模块显示。

解码流程如图6-1所示。

图6-1解码流程图
6.3数据流模块
FPGA器件中通常嵌入一些现成的,用户可配置的存储块,Cyclone 称之为M4K存储块[11]。

这些M4K独立于FPGA本身的逻辑资源,本课
题就是应用这些M4K来生成数据流模块包块FIFO等RAM。

速率最高可达到250MHz。

应用Quartus9.1软件操作平台,在工具栏里有有一个图标,点开后会有一个非常人性化的操作窗口,只需照着选择填数,就可配置成两个FIFO,结合SDRAM(作为显示存储器),作为数据流模块。

表6-2数据流控制模块接口定义
名称方向描述
clk-1input PLL输出50MHz
clk-2input PLL输出100MHz
rst-n input系统复位信号
wrf-wrreq input SDRAM数据写入缓存FIFO请求
sdram-wr-ack input系统写SDRAM响应信号,作为WRFIFO的输出有效信号data-din[0:15]input SDRAM数据写入缓存FIFO数据总线
rdf-rdreq input SDRAM数据读出缓存FIFO请求
sdram-rd-ack input系统读SDRAM响应信号,作为RDFIFO的输写有效信号data-out[0:15]input SDRAM数据读出缓存FIFO数据总线
sdram-rd-req output系统读SDRAM请求信号
vga-valid input用于使能SDRAM读数据单元进行寻址或清零
sdward-clr input SDRAM写控制相关信号清零复位信号
sdram-wr-req output系统写SDRAM请求信号
sys-data-in[0:15]output写SDRAM数据暂存器
sys-wraddr[0:21]output写SDRAM地址暂存器
sys-rsassr[0:21]output读SDRAM地址暂存器
vga-data[0:7]output VGA显示数据
数据流模块接口定义如表6-2所列。

两个FIFO,分别用于读取和写入SDRAM,一个是SD缓存,一个为VGA缓存。

本课题中SDRAM 的读写都以16位为单位,所以两个FIFO宽度也都设置为16位。

根据wrfifo中数据量产生标志位,将fifo中的数据写入SDRAM中。

一个扇区为512字节,设置rdfifo数据少于256字节时(半空),发出读SDRAM请求,将SDRAM数据写入rdfifo中,从而完成数据流通。

其中,SDRAM内部数据读取和存储都是从0地址开始。

内部例化RAM 中写入256色的数据表格(占用256字节),用于译码。

7VGA显示驱动模块
7.1显示器基本概念
(1)像素与分辨率
显示器输出的所有信息,包括数字、文字、符号、图片、动画等等,都是由光点(即像素)构成的。

像素是显示的最小单位,像素之间的最小距离为点距。

分辨率指整屏可以显示的像素的多少,与屏幕尺寸及点距大小相关。

分辨率越高,图像越清晰。

比如分辨率为800*600,就是说有480000个像素。

(2)显示器尺寸
幕尺寸以对角线长度来度量,常用的显示器有14、15、17、19、21英寸等。

显示器水平方向长度与垂直方向高度之比一般为4:3。

(3)扫描频率
显示器一端的数据一般是以从左到右,从上到下的顺序扫描的。

完成一行扫描所需时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描所需的时间称为垂直扫描时间,其倒数为垂直扫描频率,又称刷新频率,即刷新一屏的频率。

7.2接口电路
标准VGA一共有15针,真正用到的接口不多,只有5个,场同步信号和列同步信号是为了让VGA接收部分知道过来的数据是对应哪一行哪那一列。

还有三原色信号,本课题硬件三原色信号通过连接不同的电阻后直接与I/O接口相连(可理解为简易的DA转换),这样就可以显示256色了。

内部VGA与FPGA接口如图7-1所示。

图7-1VGA内部简化DA
7.3VGA驱动方案
VGA的时序包括水平时序即行时序和垂直时序即帧时序,且两者都包含有四部分:同步脉冲(Sync a)、)同步脉冲结束到有效显示数据区开始之间的宽度(显示后沿)(Back porch b)、有效显示区宽度(Display interval c)、有效数据显示区结束到同步脉冲宽度开始之间的宽度(显示前沿)(Front porch d)。

水平有效显示区宽度与垂直有效显示区宽度逻辑与的区域为可视区域,其他区域为消隐区。

一行或一场的时序信息如图7-2所示。

相关文档
最新文档