精品数码相框.docx
《精品数码相框.docx》由会员分享,可在线阅读,更多相关《精品数码相框.docx(51页珍藏版)》请在冰豆网上搜索。
精品数码相框
数码相框
摘要
数码相框数码相框是展示数码照片而非纸质照片的相框,它不再用放进相片的方式来展示,而是通过一个液晶的屏幕显示,它可以通过读卡器的接口从SD卡获取相片,并设置循环显示的方式,比普通的相框更灵活多变,也给现在日益使用的数码相片一个新的展示空间。
市场上的数码相框一般是以带液晶驱动外设的ARM处理器为主实现功能,而本设计恰恰相反,所有的功能都使用FPGA来完成。
本设计使用Altera公司cyclone系列的EP1C3T144为基础来实现所有的功能,以SF-EP1C开发板作为目标板。
从SD卡中读取图片(SPI模式),SD卡控制不涉及文件操作系统。
使用电脑显示器(VGA)作为图片显示屏幕,工作在60Hz/800*600分辨率下,显示色彩为256色。
FPGA中实现bmp解码,使用SDRSDRAM作为显示图片缓存,循环显示SD卡中10幅图片。
关键词数码相框;EP1C3T144;SF-EP1C开发板;SPI模式;bmp解码;SDRSDRAM
Abstract
Thedigitalphotoframedisplaysdigitalphotosratherthanpaperphotos.ItnolongerusespaperphotosbutusesaLCDscreentodisplayphotosinstead.ItgetphotosfromSDcardthroughSDcardinterface,displayingphotosinacyclicalway.It’smoreflexiblethantraditionalframe,alsogivesanewdisplayspaceasdigitalphotosisincreasinglyused.Inthemarket,digitalphotoframesaremainlybasedonARMprocessorwithLCDandotherperipherals.Onthecontrary,thisdesignemploysFPGAtocompleteallfunctionsofdigitalphotoframe.ThisdesignusesEP1C3T144,whichisinthecycloneseriesofAlteracompany,asthecoreunitforrealizingallthefunctionality.AndthedesignusesSF-EP1Cdevelopmentboardasthetargetboard.ItcanreadpicturesfromtheSDcard(SPImodel).TheSDcardcontroldoesnotneedafilesystemoperation.Thenthedesignuseacomputerdisplay(VGA)asapicturescreen,workingin60Hz,800*600resolutionand256colors.AtlastBMPdecodingusingFPGAisrealized,inwhichSDRSDRAMisusedasimagecache.Asaresult,itcyclicallydisplays10picturesfromtheSDcardsuccessfully.
KeywordsdigitalphotoframeEP1C3T144SF-EP1CDevelopmentBoardSPImodebmpdecodingSDRSDRAM
第1章绪论
1.1课题的研究目的和意义
数码相框的普及,使得拍摄下来的数码相片呈现出了几何级数的增长,用各种存储器保存照片已成为大家习惯的做法。
有资料显示,全世界拍摄的数码照片,只有不到35%的被打印出来,而超过65%的都被保存在硬盘、光盘、存储卡等存储介质中。
浏览存储器中的照片最常用的方法是通过电脑、电视等产品,它们能够清晰地显示照片,但不方便携带。
随着嵌入式技术、液晶显示技术、数字存储技术的发展,出现了一种以数码相片的保存、回放和浏览为核心功能的产品——数码相框,给数码相片提供了一个新的展示平台。
数码相框主要由存储器、液晶显示器、解码器和微控制器组成,它利用解码芯片实现对图像的解码,并在液晶屏上显示图像。
鉴于数码相框广泛的用途,开发数码相框具有重要的意义和市场价值。
虽然当前数码相框并不普及,但随着数码成像后期应用市场的不断扩大,数码相框将成为必不可少的配套产品,它也许会成为继电视、电脑之后生活中必不可少的第三块屏幕。
1.2数码相框的动态发展趋势
从长远来看,今后几年将为处在数码相框产品供应链的各企业带来巨大的商机。
未来几年,数码相框的市场处在逐渐走向成熟的阶段,其产销量和市场需求依然将保持大幅度的增长,在未来几内,市场无萎缩的可能。
但数码相框拓展中国市场需克服两大难点:
一是价格;二是拓展应用空间。
价格下降是必然趋势,中国消费者接受只是时间的问题,而根据中国消费者的需求和特点,开发出相应的应用产品,则是需要数码相框厂商亟待的问题。
从技术上来说,未来数码相框的发展将向两极分化。
一部分产品着重强调基本功能和低成本,整合家庭中的闹钟、日历和装饰功能,这些产品走的是低成本路线,以展示照片为主,追求图像的品质及幻灯片播放特效,已成为DC/DV的附属物;另一部分产品会添加一些新的功能,如Wi-Fi、DVB-T,还可以即时报告天气、股票等信息,从而有望成为“桌面信息中心”。
此外,触摸面板会成为一个应用的新亮点。
1.3设计的主要目标任务
本设计使用Altera公司cyclone系列的EP1C3T144为基础来实现所有的功能,以SF-EP1C开发板作为目标板。
从SD卡中读取图片(SPI模式),SD卡控制不涉及文件操作系统。
使用电脑显示器(VGA)作为图片显示屏幕,工作在60Hz/800*600分辨率下,显示色彩为256色。
FPGA中实现bmp解码,使用SDRSDRAM作为显示图片缓存,循环显示SD卡中10幅图片。
1.4本章小结
本章介绍了数码相框广泛的用途及其研究的目的和意义,也从未来发展方向和技术实现层面简述了数码相框的动态发展趋势,从而说明了本人设计DIY数码相框的原因,最后介绍了设计数码相框的主要目标任务。
第2章SF-EP1C开发板介绍
2.1SF-EP1C开发板原理图
2.2SF-EP1C开发板功能框图
如图2-1和图2-2所示,SF-EP1C开发板有着比较丰富的外设,也给用户预留了一些可扩展的接口。
图2-1SF-EP1C开发板正面资源分布及功能框图
图2-2SF-EP1C开发板背面资源分布及功能框图
2.3SF-EP1C开发板基本配置
●FPGA使用EP1C3T144C8,硬件电路充分考虑了可升级性,该板子同样适用于EP1C6T144;
●板载1Mbit串行配置芯片EPCS1,支持AS和JTAG两种配置方式;
●5V/1.5ADC电源供电,内部产生核压1.5V、I/O电压3.3V;
●PLL电源电路进行滤波处理,更加稳定可靠;
●板载25MHz有源晶振,预留1个未焊接晶振接口;
●4个独立按键、2个复用LED;
●1个串口;
●1个SD卡接口;
●1个256色VGA接口;
●1个64MBit(4*1M*256Bit)SDRAM;
●8位拨码开关;
●1个复位按键和1个FPGA重配置按键;
●4位数码管,仅使用3个I/O口控制,由两个74HC595芯片实现;
●2个20PIN的扩展接口,供大家任意发挥;
2.4Cyclone器件简介
Altera的Cyclone系列可编程门阵列是基于1.5V、0.13um的SRAM全铜工艺制造。
能提供最大20060个LEs,以及最大288Kbit的内嵌RAM。
FPGA内部集成的诸如时钟锁相环(PLLs)和专用DDR接口,达到了DDRSDRAM和快速RAM存储访问需求。
Cyclone器件是数据存储的高性价比解决方案。
Cyclone器件也支持多种I/O标准,包括数据率高达640Mbps的LVDS接口以及66-或33-MHz、64-或32-bit的PCI接口。
Altera也提供低成本的串行配置器件配置cyclone器件。
Cyclone器件具有以下特性:
●2910-20060个LEs;
●最大内嵌294912RAMbits(36864bytes);
●支持低成本串行配置器件;
●支持LVTTL,LVCOMS,SSTL-2以及SSTL-3I/O标准;
●支持66-或33-MHz、64-或32-bit的PCI接口;
●支持数据率高达640Mbps的LVDS接口;
●支持数据率低至311Mbps的LVDS接口;
●支持数据率311Mbps的RSDS接口;
●每个器件最多两个PLLs,并且支持倍频和相位偏移;
●多达8个全局时钟网络;
●支持外部存储器,包括DDRSDRAM(133MHz)、FCRAM以及SDRSDRAM;
●支持altera提供的多种多样的IP核。
表2-1Cyclone器件资源
器件
EP1C3
EP1C4
EP1C6
EP1C12
EP1C20
Les
2,910
4,000
5,980
12,060
20,060
M4KRAM块(128*36bit)
13
17
20
52
64
RAM总量
59,904
78,336
92,160
239,616
294,912
PLLs
1
2
2
2
2
用户可用IO数
104
301
185
249
301
2.5本章小结
本章介绍了SF-EP1C开发板的原理图、板子的功能框图、基本配置和Cyclone器件简介,与市面上其它板子对比,SF-EP1C开发板价格实惠,而且这块板子功能比较全面,虽然板子只有不到3000个LEs,但是如果写起代码来就会深有感触,这个规模的逻辑资源也是可以胜任很多应用的。
如果想通过这样一块板子来掌握如何利用FPGA器件本身的各种资源来完成一个像模像样的工程,那么SF-EP1C开发板是个不错的选择。
第3章数码相框的设计方案
3.1功能需求及模块划分
本设计所要实现的数码相框的主要功能点如下。
1、使用cyclone系列的EP1C3T144为基础来实现所有的功能,以SF-EP1C开发板作为目标板。
2、从SD卡中读取图片(SPI模式),SD卡控制不涉及文件操作系统。
3、使用电脑显示器(VGA)作为图片显示屏幕,工作在60Hz/800*600分辨率下,显示色彩为256色。
4、FPGA中实现bmp的解码。
5、使用SDRSDRAM作为显示图片缓存。
6、循环显示SD卡中10幅图片。
如图3-1、图3-2所示,该设计的功能框图里明确了各个功能模块,5个大的功能模块包括:
系统时钟与复位模块、SD卡相关模块(包括SD卡控制模块和SPI时序产生模块)、数据流控制模块(包括写SDRAM缓存FIFO模块、读SDRAM缓存FIFO模块和BMP色彩表模块)、SDRAM控制器模块、VGA显示驱动模块。
图3-1数码相框功能框图
图3-2数码相框系统功能框图
系统时钟与复位模块主要完成PLL例化和复位控制。
PLL输出三个时钟:
内部SDRAM控制器工作的100MHz时钟、外部SDRAM使用的有一定相位偏移的100MHz时钟和其他模块使用的50MHz时钟。
复位控制部分对复位信号做“异步复位,同步释放”处理,保证系统有一个可靠稳定的复位信号。
SD卡相关模块有两个子模块,SD卡控制模块完成SD卡的一些基本控制,如SD卡的上电初始化、命令发送、数据读取等。
FPGA和SD卡之间数据或命令的传输是通过SPI口,这部分由SPI时序产生模块控制。
数据流控制模块用于衔接SD卡、SDRAM以及VGA显示驱动模块。
从SD卡中读取的BMP图片的色彩表数据将被缓存到BMP色彩表中,用于显示图片时译码使用。
SD卡的图片数据部分则被送入写SDRAM缓存FIFO中。
读和写SDRAM缓存FIFO都直接和SDRAM控制器连接,他们一齐完成了高速数据的缓冲。
由于SD卡本身速度较慢,无法满足VGA实时的数据扫描需求,所以需要先将SD卡中缓存的图片送入SDRAM中,VGA显示器实时的从SDRAM中读取数据进行显示。
最后从读SDRAM缓存FIFO里输出的图片数据经过BMP色彩表译码后送到VGA显示驱动模块。
VGA显示模块直接驱动显示器进行图片显示。
DIY数码相框工程源码配合SF-EP1C开发板使用,FPGA管脚定义以及分配如表3-1所示。
表3-1DIY数码相框引脚定义及分配
名称
方向
分配
作用
clk
input
PIN16
FPAG输入时钟信号25MHz
rst_n
input
PIN144
FPAG输入复位信号,低电平有效
sdram_clk
output
PIN26
SDRAM时钟信号
sdram_cke
output
PIN27
SDRAM时钟有效信号,高电平有效
sdram_cs_n
output
PIN39
SDRAM片选信号,低电平有效
sdram_ras_n
output
PIN38
SDRAM行地址选通脉冲,低电平有效
sdram_cas_n
output
PIN37
SDRAM列地址选通脉冲,低电平有效
sdram_we_n
output
PIN1
SDRAM写选通信号,低电平有效
sdram_ba[0]
output
PIN40
SDRAM的L-Bank地址线
sdram_ba[1]
output
PIN41
SDRAM的L-Bank地址线
sdram_addr[0]
output
PIN47
SDRAM地址总线
sdram_addr[1]
output
PIN48
SDRAM地址总线
sdram_addr[2]
output
PIN49
SDRAM地址总线
sdram_addr[3]
output
PIN50
SDRAM地址总线
sdram_addr[4]
output
PIN36
SDRAM地址总线
sdram_addr[5]
output
PIN35
SDRAM地址总线
sdram_addr[6]
output
PIN34
SDRAM地址总线
sdram_addr[7]
output
PIN33
SDRAM地址总线
sdram_addr[8]
output
PIN32
SDRAM地址总线
sdram_addr[9]
output
PIN31
SDRAM地址总线
sdram_addr[10]
output
PIN42
SDRAM地址总线
sdram_addr[11]
output
PIN28
SDRAM地址总线
sdram_data[0]
inout
PIN132
SDRAM数据总线
sdram_data[1]
inout
PIN133
SDRAM数据总线
sdram_data[2]
inout
PIN134
SDRAM数据总线
sdram_data[3]
inout
PIN139
SDRAM数据总线
sdram_data[4]
inout
PIN140
SDRAM数据总线
sdram_data[5]
inout
PIN141
SDRAM数据总线
sdram_data[6]
inout
PIN142
SDRAM数据总线
sdram_data[7]
inout
PIN143
SDRAM数据总线
sdram_data[8]
inout
PIN11
SDRAM数据总线
sdram_data[9]
inout
PIN10
SDRAM数据总线
sdram_data[10]
inout
PIN7
SDRAM数据总线
sdram_data[11]
inout
PIN6
SDRAM数据总线
sdram_data[12]
inout
PIN5
SDRAM数据总线
sdram_data[13]
inout
PIN4
SDRAM数据总线
sdram_data[14]
inout
PIN3
SDRAM数据总线
sdram_data[15]
inout
PIN2
SDRAM数据总线
spi_miso
input
PIN51
SPI主机输入从机输出数据信号
spi_mosi
output
PIN57
SPI主机输出从机输入数据信号
spi_clk
output
PIN52
SPI时钟信号,由主机产生
spi_cs_n
output
PIN58
SPI从设备使能信号,由主机控制
hsync
Output
PIN61
VGA行同步信号
vsync
Output
PIN62
VGA场同步信号
vga_r[2]
Output
PIN74
VGA色彩
vga_r[1]
Output
PIN73
VGA色彩
vga_r[0]
Output
PIN72
VGA色彩
vga_g[2]
output
PIN71
VGA色彩
vga_g[1]
Output
PIN70
VGA色彩
vga_g[0]
Output
PIN69
VGA色彩
vga_b[1]
Output
PIN67
VGA色彩
vga_b[0]
Output
PIN68
VGA色彩
数码相框在FPGA中实现的框图如图3-3所示。
图3-3数码相框的RTL视图
3.2系统时钟与复位模块的设计
3.2.1PLL的配置需求
已经新建了一个工程,然后需要配置一个PLL。
该PLL的输入时钟为FPGA外部25MHz晶振,希望得到一个50MHz(输入时钟的2倍频)的系统时钟供FPGA内部使用。
该PLL的输入输出接口如表3-2所示。
表3-2PLL的接口定义
3.2.2PLL的配置步骤
1、如图3-4所示,在QuartusII的菜单栏选择“Tools—>MegaWizardPlug-InManager…”。
图3-4选择MegaWizard
2、如图3-5所示,使用默认选项“Createanewcustommegafunctionvariation”,点击“Next>”。
图3-5新建megagunction
3、如图3-6所示,进行以下配置:
●在“Selectamegafunctionfromthelistbelow”窗口内打开“I/O”下拉框,选择“ALTPLL”。
●在“Whichtypeofoutputfiledoyouwangttocreate?
”下选择“VerilogHDL”,这是配置的PLL内核使用的语言,一般选择此项。
●“Whatnamedoyouwantfortheoutputfile?
”里默认会出现当前设计的工程路径,需要设计者在最后面手动输入例化的PLL的名字,这里输入了“PLL_ctrl”。
完成以上配置,点击“Next>”。
图3-6新建PLL
4、如图3-7所示,进行以下配置:
●在“General”一栏内的“Whichdevicespeedgradewillyoubeusing?
”选则该工程所使用器件的速度等级。
●在“Whatisfrequencyoftheinclock0input?
”内选择PLL输入时钟的频率。
其他选项使用默认即可。
点击“Next>”。
图3-7输入时钟配置
5、如图3-8所示,配置如下:
●在“Optioninput”一栏内勾选“Creatan‘areset’inputtoasynchronouslyresetthePLL”。
●在“Lockoutput”中勾选“Creat‘locked’output”。
其他选项使用默认即可。
点击“Next>”。
图3-8配置控制信号
●在“Enteroutputclockfrequency?
”后面输入希望得到的PLL输出时钟的频率。
也可以在“Enteroutputclockparameter?
”后面设置相应的输出时钟和输入时钟的频率关系。
“ClockMultiplicationfactor”后输入倍频系数,“Clockdivisionfactor”后输入分频系数,二者决定了输出时钟频率。
●在“Clockphaseshift”中可以设置相位偏移。
●在“Clockducycycle”中可以设置输出时钟占空比。
按照图3-9设置后,点击“Next>”。
图3-9配置输出时钟c0
6、“clkc1”选项是可选的,用户需要第二个输出时钟时可以开启该输出时钟,相应勾选“Usetheclock”后和上一步类似进行配置即可。
如图3-10所示,点击“Next>”。
图3-10配置输出时钟c1
7、“extclke0”也是可选的,该时钟主要是输出给FPGA外部器件作为时钟,不能作为内部时钟使用。
用户需要该输出时钟时可以开启该输出时钟,相应勾选“Usetheclock”后和前一步类似进行配置即可。
如图3-11所示,点击“Next>”。
图3-11配置输出时钟e0
8、如图3-12所示,“EDA”中列了用户在对例化了PLL模块的工程仿真时,需要添加的仿真库文件,用户可以到QuartusII安装文件夹下可以找到。
点击“Next>”。
图3-12仿真库文件
9、如图3-13所示,“Summary”中罗列了该PLL核最终的输出文件。
对主要的一些输出文件说明如下:
●PLL_ctrl.v,字面翻译是“变异文件”,是PLL内部的控制IP核。
●PLL_ctrl_inst.v是一个模板的例化文件,用户可以直接复制这个文件里的例化来用。
●PLL_ctrl_wave.jpg里是用户所配置的PLL的波形示例,勾选后可以在工程目录下找到,看看波形是否符合预定的要求。
或者用它和仿真后的波形对比一下,它们应该是一致的。
图3-13输出文件
3.2.3PLL的例化
PLL配置完成后,需要将PLL例化到工程中。
找到“PLL_ctrl_inst.v”文件并打开,将其内容拷贝到工程代码中,然后更改“()”里的内容,使用代码外的接口对应即可。
如:
inputclk;//25MHz系统外部输入时钟
inputrst_n;//系统复位信号,低电平有效