基于FPGA简易数码相框设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的简易数码相框设计
摘要:随着电子技术的发展,数码产品渐渐的成为人们生活的一部分。本文提出一种基于fpga简易的数码相框设计方案,实现把sd卡上彩色图片呈现在液晶显示器上。大容量、高速度的sdram作为缓存器,在处理信号同步上起到很大作用。此方案可以适用于各种彩色图像显示、视频图像再现等场合。
关键词:数码相框;fpga;sd卡;液晶显示器;sdram
中图分类号:tp391.7 文献标识码:a 文章编号:1007-9599 (2012) 24-0158-02
1 概述
实现vga上显示一张彩色的图片,就要求满足一定的条件:包括图片数据源、数据缓存、显示器。cpu捕获外部数据源,然后将获取的数据源缓存在sram或者sdram等存储芯片,最后以标准的时序给vga刷屏。
数据源有静态和动态的。所谓静态数据源,就是数据已经保存在系统中,不能再改变的的数据源[1]。为了显示真彩图像,可以将图像数据存放于sdram,或者flash,从而通过读取ic上已经存储的图像数据,显存于sram/sdram。动态数据源可以是直接通过读取存放于sd卡、u盘等移动数据的图片,通过图片解码来得到图像数据;uart/usb等接口或者是网络传输作为数据通道可以得到希望的图像数据;摄像头作为外部数据源,来采集图像,传输至
sdram/sram。
图像的格式,有jpeg、bmp、png等多种格式;图像的位数,也有单色、4灰、256色、4096色、16位真彩色、24位真彩色、32位真彩色这几种。fpga并行数据输出,经过数模转换(电阻网络转换或者视频转换芯片),得到16位以上的vga数据[2]。人眼不能分辨的极限,至少也需要16位真彩色。16位以上的数据,24位、32位,人眼基本无法分辨清楚,因此,要求不是很高的情况下16位真彩色已经足够胜任。最基本的分辨率有如
vga_640_480_60fps_25mhz、vga_800_600_72fps_50mhz和
vga_1024_768_60fps_65mhz。以至少25mhz的速度刷屏,需要实现显卡刷屏的功能,最小图片容量模式下的数据量是
640*480*16=4915200bits=600kb,再大些的数据量
1024*768*16=1.5mb,如此大的图片数据,就需要有如此容量的缓存区。
综上,也就是说,要实现真彩图像vga显示,一需要16位以上的vga驱动电路;二需要足够的容量来存放图片。
2 系统总体结构设计
本系统设计以altera ep2c8q208c8为核心芯片,通过对sd卡、sdram、vga接口的控制,实现彩色图片的显示。选用sd卡做存储设备,可以方便、快捷、大量的存储图片;由于vga扫描的时钟频率较高,而sd卡数据源读取的速度达不到vga的时序要求,需要加一片sdram做图像数据缓存,只要时序控制好,就可以达到数据的高速传递。整体设计结构如图1所示。
图1 系统总体结构
2.1 sd卡
sd卡有两种接口模式:sd模式和spi模式,本文使用spi模式。spi模式由一个由基于闪存sd存储卡提供的次要通信协议组成,此模式是sd存储卡协议的子集。此接口在上电(cmd0)后的每一个复位命令期间被选择[3]。spi标准只定义物理链接,而不提供数据传输协议。spi模式执行利用sd存储卡协议和命令集的子集。
sd卡的上电初始化过程:
(1)适当延迟等待sd就绪
(2)发送74+个spi_clk,且保持spi_cs_n=1、spi_mosi=1 (3)发送cmd0命令并且等待响应r1=8’h01,将卡复位到idle 状态
(4)发送cmd1命令并且等待响应r1=8’h00,激活卡的初始化进程
(5)发送cmd16命令并且等待响应r1=8’h00,设置一次读写block的长度为512字节
sd数据读取操作:
(1)发送命令cmd17
(2)接收读数据起始令牌0xfe
(3)读512字节数据以及2个字节的crc
sd命令cmd发送控制:
(1)发送8个时钟脉冲
(2)sd卡片选cs拉低,即片选有效
(3)连续发送6个字节命令
(4)接受1个字节响应数据
(5)sd卡片选cs拉高,即关闭sd卡
2.2 sdram
在基于fpga的图象处理系统中,常常需要用到大容量、高速度的存储器。而在各种随机存储器件中,sdram的价格低、体积小、速度快、容量大,是比较理想的器件。但sdram的控制逻辑比较复杂,对时序要求也十分严格,使用很不方便,这就要求有一个专门的控制器,使系统用户能很方便地操作sdram。
sdram需要正确的上电逻辑和模式设置来进入期望的工作模式。访问特定的逻辑单元必须先激活相应的存储块,并锁定对应的行列地址。另外,必须有定时的刷新逻辑保持数据不丢失,sdram有多种操作模式,由引脚cs#、ras#、cas#、we#和地址信号的不同状态来决定,sdram控制器必须为sdram提供满足时序要求的这些控制信号,以准确地控制sdram的各种不同操作[4]。
控制器的设计包括以下几点:
(1)初始化。包括等待200us,这是sdram的输入稳定期;所有l-bank预充电;至少8个预刷新周期。
(2)自动刷新。
(3)支持burst长度为8的读写操作。
(4)读、写、自动刷新和初始化之间的优先级仲裁机制以及转
换机制。
具有以上功能的sdram控制器可以满足系统对sdram访问的需要,不仅可以减小开发难度,还可以节省系统资源和成本,提升系统的性能。
2.3 vga显示
(1)vga时序
vga接口是显示卡上输出模拟信号的接口,也叫d-sub接口。这种接口上面共有15个针孔,分成3排,每排5个,通过模拟vga 接口显示图像的工作原理,将计算机内部以数字方式生成的显示图像信息,通过显卡中的adc转变为r、g、b三基色信号和行、场同步信号,通过电缆传输到显示设备中[5]。
vga的时序包括水平时序和垂直时序,且两者都包含的时序参数有:水平(垂直)同步脉冲、水平(垂直)同步脉冲结束到有效显示数据区开始之间的宽度(后沿)、有效显示区宽度、有效数据显示区结束到水平(垂直)同步脉冲宽度开始之间的宽度(前沿)。水平有效显示区宽度与垂直有效显示区宽度逻辑与的区域为可视区域,其他区域为消隐区。
一行或一场的时序信息如图2所示。
图2 行/场时序图
(2)vga驱动
为匹配vga接口,还需要加上一个vga驱动器,实际上起到d/a 转换的作用。采用权电阻电路显现vga