您的位置 首页 测评

根据Nios II 的多功能数码相框的规划与完成

介绍了基于Nios II 的多功能数码相框的实现。系统基于Nios II处理器,设计用户自定义模块,构建了灵活性高、可重配置的SoPC系统。设计自定义模块控制LCM显示;采用流水线方式设计JPEG解码

数码相框作为一种数码消费品和装饰品的结合物,在商场上遭到越来越多的重视。现在的数码相框计划多选用MCU为中心的架构,相框功用固定,不便于产品晋级。针对以上问题,本文规划了依据Nios II的多功用数码相框,该相册首要包括以下功用:支撑包括BMP、JPEG在内的多种常见文件格局的图画显现;图画旋转、缩放、阅读切换等特效;支撑图片阅读时布景音乐播映;可通过带FAT文件体系的SD卡进行图画数据更新,一起还具有时刻显现等扩展功用。体系中将需求消耗很多时刻的杂乱操作(如图画解码、图画的各种特效功用以及SD卡操控)用挂载在Avalon总线上的自界说模块完结。缩短了处理时刻,进步了体系响应速度。体系选用依据Nios II处理器的SoPC技能,使得该数码相框具有灵活性高、可重装备、便于晋级等长处[1]。

1 整体规划

本体系选用经济型的Cyclone II FPGA芯片作为中心,依据Nios II软核处理器,选用软硬件结合的办法规划完结。体系的硬件整体框图如图1所示。

SD卡作为文件存储介质,用于寄存音频与图画文件,编写SD卡操控器对SD卡进行读写操控;选用LCM显现屏作为数码相框的显现界面,SRAM作为LCM的显现缓存,存储图画数据供LCM改写,并由LCM_SRAM IP核操控图画的显现;SDRAM为Nios II软核程序运转空间;EPCS对FPGA进行装备;Flash用来存储软件代码和数据。

2 功用模块规划

依据数码相框所要完结的功用,规划了如下模块:

2.1 LCM_SRAM IP核规划

该模块首要功用是图画数据存储、LCM参数装备以及图画的缩放、旋转、切换作用操控等。以硬件办法完结图画切换作用,进步实时性的一起下降对CPU的依靠。

2.1.1 切换特效完结

规划中通过操控LCM读取SRAM的地址完结不同的图画切换作用,如上方切入、下方切入、百叶窗、菱形等八种办法循环呈现。切换时,LCM上一起存在新旧两幅图画的数据,因而,缓存中需求存储这两幅图画的数据。以百叶窗作用为例,每行以16个像素作为距离,将LCM的每一行切割成20个条形区域。如图2所示,第i行被切割后,榜首个区域的像素点为n1~n16,终究一个区域为m1~m16。每个条形区域中,新图画的数据逐步向右掩盖旧图画数据,然后构成百叶窗作用。详细完结进程为:在榜首次改写时,每行的各个条形区域的榜首个像素点(n1,…,m1)读取新图画的数据,各区域其他像素点(n2~n16,…,m2~m16)依然读取旧图画的数据;第2次改写时,每行各个条形区域的前两个像素点(n1、n2,…,m1、m2)读取新图画数据,其他像素点(n3~n16,…,m3~m16)仍读取旧图画的数据。屏幕改写16次则可完结百叶窗切换作用。图2中每个圆点代表显现屏的一个像素点。

2.1.2 缩放算法完结

为完结图画缩放功用,该模块完结了如图3所示的双线性插值缩放算法。该算法运用了需求处理的原始图画像素点周围的4个像素点的相关性,通过双线性算法核算完结图画缩放[2]。规划中运用SRAM作为显现缓存,无严厉的实时性要求,因而疏忽了行场同步信号,简化了模块规划。

缓存1模块是待缩放图画数据的缓存,寄存来自SRAM中解码后的RGB565数据。插值系数生成模块的使能信号来自旋转模块或许按键输入,由选择器进行判别,按键按下时,依照设定的队伍缩放因子核算队伍插值系数;若使能信号来自旋转模块,则依据原始图画的分辨率核算出旋转往后的分辨率,并依照屏幕尺度确认完好显现该图画能到达的最大分辨率,以此核算队伍缩放因子。获取相邻像素模块用来操控缓存1模块的读地址,从SRAM中读取相邻4个像素值。插值运算单元依据相邻4个像素的值及插值系数进行双线性插值运算,并将数据输出至缓存2,缓存2在SRAM空闲时将数据写入SRAM中。

2.2 SD Card Controller IP核规划

SD卡是一种依据半导体快闪回忆器的存储设备,其数据传送和物理标准由MMC开展而来。体系中将SD卡操控器规划成一个SPI方法的IP核,通过软件驱动完结SD卡的根本读写操作,即不需求杂乱的硬件电路又能得到比软件模仿SPI的操控办法更快的读写速度。SD卡操控器结构图如图4所示。

2.2.1 功用模块区分

主控模块的端口与Avalon总线衔接,用于缓存SD卡指令,并存储扇区地址、待发送的数据到双口RAM以及从中读取数据等。初始化模块完结对SD卡的初始化操作。指令生成模块完结SD卡指令、参数、指令校验值的发送和指令回执的读取以及数据的收发。串并、并串转化模块的首要作用是完结串并或许并串转化[3]。
运用Quartus II自带的逻辑剖析仪(SignalTap II东西)对SD卡操控管脚的信号量进行实时捕获,验证了规划的正确性[4]。

2.2.2 驱动规划

SD卡操控器的驱动共规划了4个接口函数,别离完结初始化、读扇区、写扇区和履行SD指令的功用。驱动程序在初始化SD卡时得到卡类型标志,之后驱动程序依据卡类型对地址参数进行处理(若是SD1.1协议则地址左移9位,不然不变),以兼容SD1.1和SD2.0协议。读数据函数中心代码如下:

if(sd_type == 1) addr=addr 9; /*判别地址偏移*/
IOWR(SD_CARD_BASE, 517, CMD17); /*写指令*/
IOWR(SD_CARD_BASE, 518, addr); /*写地址*/
IOWR(SD_CARD_BASE, 519, 0); /*开端运转*/
ret=IORD(SD_CARD_BASE, 519); /*读指令回执*/

for(i=0; i512; i++)data[i]=IORD(SD_CARD_BASE, i);
/*读回数据*/

2.3 JPEG DECODER IP核规划

JPEG(Joint Photographic Expert Group)是榜首个适用于接连颜色、多灰度、五颜六色或是非静止图画的国际标准。为进步JPEG图画的解码功率,完结杰出的解码作用,本规划选用流水线结构规划JPEG解码IP核。解码模块结构如图5所示。

输入缓冲模块从传输码流中接纳图画数据,冗余处理后将数据输出给头文件解析模块;头文件解析结束后,将数据输出给熵解码模块;熵解码模块完结整个图画数据的熵解码处理,包括哈夫曼解码、行程解码和差分化码,终究得到量化参数;反量化和反Z扫描模块对熵解码后的图画数据进行反量化和排序;IDCT模块选用经典的队伍分化办法将频域表明的数据流转化成时域表明的数据流,将数据康复到传输前的方法。颜色空间转化模块完结数据的内插和颜色空间转化[5]。

运用Modelsim对该IP核进行了仿真验证,输入一幅320×240的JPEG图画原始数据。将解码出的数据与软件解码出的数据进行比较,证明了JPEG解码器解码正确。

3 软件规划

运用SD卡操控器驱动的接口函数,在其读写的基础上运用FAT16文件体系,完结SD卡文件操作(如获取目录/文件信息、读文件、删去文件、创立文件、追加文件等)以便于与PC机及其他多媒体设备进行数据交换。规划中运用实时多使命嵌入式操作体系?滋C/OS-II,以下降体系软件规划的杂乱度和进步体系的稳定性[6],并规划多个使命,完结SD卡初始化、文件读取、数据流操控。

3.1 FAT16文件体系完结

3.1.1 读文件

文件体系中文件数据的寄存是以簇为单位的,而SD卡的根本读写单位是扇区,所以需求依据簇号核算相应的扇区号,由文件体系结构可得一般的核算公式为:

开始扇区号=躲藏扇区数+保存扇区数+2×FAT表占用扇区数+FDT表占用扇区数+(开始簇号-2)×每簇扇区数
从SD卡的数据扇区中读取指定文件的中心代码为:

clunum = ffdt.fst_clu; /*获取下一个簇号*/
do{
secnum = get_sta_sec(clunum); /*由开始簇号取得
开始扇区*/
clunum = fat[clunum]; /*获取下一个簇号*/
for(i=0; igbpb.sec_per_chus; i++) /*从SD卡中
读取一簇数据*/
{ret = sd_read(rsv, secnum+(UINT32)i);

for(j=0; j512; j++)fdata[count++] = rsv[j];}
}while(clunum != 0xFFFF);

3.1.2 长文件名支撑

具有长文件名的一个文件或目录实践对应着多个目录挂号项(FDT),由几个长文件名和一个别号组成。作为别号的短文件名以传统的8.3文件名格局存储在一个FDT中,其他的几个长文件名则存储在特点标志为0x0FH的FDT中。每个这种挂号项中能够存储13个字符,当读取文件或目录时,操作体系会将它们重组成能够包括小写字母的长文件名[7]。完结思路为:获取文件及目录信息时,记载特点为0x0F的挂号项中的内容直到呈现特点为0x01或0x02的挂号项,然后从之前记载的挂号项内容中得出真实的文件或目录名。支撑长文件名的FDT结构界说如下:

struct _longname_fdt_{
UINT8 name[2048]; /*文件名*/
UINT16 nlen; /*文件名的实践长度*/
UINT8 attr; /*特点*/
UINT8 rsvd_data[10]; /*保存数据*/
UINT16 wrt_time; /*终究更新时刻*/
UINT16 wrt_date; /*终究更新日期*/
UINT16 fst_clu; /*榜首簇*/
UINT32 file_size; /*文件巨细*/};
typedef struct _fdt_ FDT;

3.2 μC/OS-II使命区分

在Nios II IDE集成开发环境中整合了?滋C/OS-II操作体系,集成该操作体系后,依据体系的功用和软硬件功用模块规划多个使命,各个使命间通过信号量、全局变量等办法进行通讯[8]。使命调度示意图如图6所示。

TaskStart使命:优先级为0,初始化硬件规划和全局变量;创立其他使命,创立完结之后自我删去,不参加使命调度。
TaskRdMusic:优先级为2,从SD卡的音频文件夹中读取音频数据,完结一次操作后,跳转到TaskPlayMusic。
TaskPlayMusic:优先级为3,将读取的音频数据送至音频解码芯片的缓冲区内,以播映音乐。与TaskRdMusic之间通过信号量1切换。
TaskRdPhoto:优先级为1,从SD卡的图画文件夹中读取一个图画文件数据。
TaskFileHead:优先级为2,图画数据读取完结后,剖析文件头,以确认图画文件格局,依据其格局将图画数据送至对应解码器。

TaskDisplay:优先级为2,向LCM_SRAM IP核宣布显现指令,使SRAM中解码后的图画数据显现到LCM上。
体系上电后,首要对各个硬件模块及软件中的数据结构进行初始化。假如初始化失利(如SD卡没刺进、不带有FAT16文件体系等),体系将再次进行初始化测验;假如初始化成功,则体系依照图7进行使命调度。
体系的软硬件规划好今后,将硬件装备文件下载到FPGA,再运转软件程序可检查实践显现作用。

图7中,上方是分辨率为800×400的JPEG源图画;图7(a)为LCM上显现的作用图,该图通过缩小以习惯屏幕的分辨率,此刻的分辨率为320×160,居中显现,布景为黑色;图7(b)为依照屏幕尺度缩放作用,此刻分辨率为320×240;图7(c)为顺时针90°旋转后的显现作用,此刻图画分辨率为120×240。

该多功用数码相框体系以Nios II软核处理器为中心,其长处是有很高的灵活性、硬件可裁剪、产品开发周期短、便于晋级。在SD卡上运用FAT16文件体系,便于对音频、图画文件进行分类管理,并使多功用数码相框与PC机、数码相机等设备进行数据交换时愈加便利。运用Nios II软核特性移植?滋C/OS-II操作体系,完结了各个功用模块的使命调度,进步了体系稳定性,简化了体系软件的规划。该数码相框不只能够用于产品原型开发、直接出售,并且还能够进行定制,满意定制个性化礼品的商场需求,为多功用数码相框拓荒愈加宽广的商场。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/194575.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部