您的位置 首页 嵌入式

根据FPGA和Nios II处理器IP软核完成完成SD卡接口和文件体系的规划

基于FPGA和Nios II处理器IP软核实现实现SD卡接口和文件系统的设计-在嵌入式系统或移动设备上使用SD卡,接口的构建和文件系统实现是必须解决的问题。本文探讨在CycloneII平台为基础的嵌入式系统上,实现SD卡接口和文件系统的实现方法。

导言

在嵌入式体系或移动设备上运用SD卡,接口的构建和文件体系完结是有必要处理的问题。本文讨论在CycloneII渠道为根底的嵌入式体系上,完结SD卡接口和文件体系的完结办法。

根据FPGA IP软核处理器的嵌入式体系,因其集成度高、可灵敏装备和性价比方面的优势,现已逐步迫临乃至赶超选用专用集成电路ASIC)的规划计划。

运用Nios II可定制周边设备的特色,在FPGA中,通过DHL编程构造出SD卡需求的SPI接口和其他操控信号的办法。在此根底上,在Nios II处理器上完结了一个灵敏的文件体系。

根据FPGA和Nios II软核构建SOPC嵌入式文件体系,本文所做的作业包括:Nios II处理器IP软核的最小SOPC体系的构建,SD卡的底层扇区读写驱动程序的编写办法,znFAT32文件体系的移植,以及对SD卡文件操作的完结等。

1 根据Nios II软核的SOPC体系构建

1.1 SOPC体系的结构

如图1所示,根据NiosII的SOPC体系包括如下部分:

根据FPGA和Nios II处理器IP软核完结完结SD卡接口和文件体系的规划

①体系中心模块:Nios II处理器。

②处理器外围支撑电路时钟单元以及存储器单元SDRAM操控器(包括存储代码的ROM与存储变量的RAM)部分。

③程序下载调试模块:JTAG接口操控器和异步通讯接口(UART用于打印调试信息)。

④片上体系的内部外设模块:比如定时器、UART、SPI、GPIO等,这部分总的功用电路可根据需求装备,在本例的试验验证中,首要用到SD卡的接口是SPI。

⑤EPCS操控器:因为FPGA是根据RAM的结构结构,掉电后代码会丢掉。所以FPGA需求装备一个ROM在上电后将代码加载到RAM中运转。在SOPC体系中,EPCS操控器有两个效果,一是用来协助EDS东西将软件程序下载到EPCS芯片中去,二是在FPGA装备完结后引导EPCS芯片中的程序加载到SDRAM中去运转。

1.2 Cyclone II构建SOPC体系的进程

Altera公司为在其出产的FPGA上构建SOPC,不只供给了各种运用的IP核模块,还供给了极为友爱的集成开发环境Quartus II。在Quartus II中,有一个东西SOPCBuilder,能够协助用户通过增加和装备(给出参数)IP核的办法,主动构建Verilog HDL言语硬件代码。

在Quartus II中,构建SOPC体系的流程如图2所示。

将需求的IP核模块增加完结后,下一步是用Verilog HDL言语编写顶层文件,对定制的SOPC进行例化处理(模块之间的衔接联系界说,I/O引脚的装备),编译顶层文件和模块IP核,才干生成在FPGA上运转的片上体系。

在增加IP核后,SOPCBuilder可生成资源列表,本文构建的体系列表如图3所示。

d.JPG

在实例中运用了Nios II模块、时钟模块、定时器、SDRAM模块、EPCS模块、UART模块和SPI合计7个模块。

SOPC体系构建完结后,模块之间信号传递的时序并未确认。接下来的时序规划是SOPC能否正常运转的要害。在片上体系生成后,首要要对体系进行时序剖析,以便使体系的时序契合规划逻辑的要求,并确保体系的正常作业,必要时要对体系的时序进行恰当的束缚。这一作业

可运用Quartus II软件中内嵌的TimeQuest完结,也能够运用第三方供给的时序剖析软件,如PrimeTIme软件等来完结。

本文选用Altera公司供给的TImeQuest来进行时序束缚。通过时序束缚后,对工程再编译,可发生时序陈述。通过剖析时序束缚陈述,可对束缚恰当修正,这个进程可重复进行,直到满意时序要求停止。

2 SD卡接口协议剖析与驱动程序规划

2.1 SD卡通讯接口协议剖析

SD卡一般界说了SD和SPI两种可选的总线操作办法,本文选用SPI办法与SD卡接口,能够直接运用Quartus II中供给的SPI操控器IP核。S PI协议是面向位传输的同步串行通讯协议。在SPI形式下,SD卡能够支撑单块与多块的读写操作。

SOPC上的SPI操控器与SD卡之间的读写操作进程应契合SD卡的通讯协议,其读写交互进程如图4所示。

c.JPG

从图4中能够看出,任何操作都是由SPI操控器的SD写指令开端,SD卡在接收到一个合法指令后,将给予应对来呼应,接下来就是数据块的读或写操作。

2.2 SD卡驱动层程序的编写

Nios II EDS是Altera公司为其Nios II处理器开发的一款C/C++言语编程软件,其软件架构是根据HAL(Hardware AbstracTIon Layer)之上的,Nios II EDS为Nios开发者供给了编程接口、底层设备驱动、HAL API,以及C规范库等资源。更重要的是,HAL体系库为Nios II软件规划人员供给了运用程序与底层硬件交互的设备驱动接口,然后大大简化了运用程序的开发。此外,HAL体系库还为运用程序与底层硬件驱动之间划分了一条明晰的界限,然后大大提高了运用程序的可复用性,使得运用程序不受底层硬件改变的影响。

片上体系的SPI操控器硬件逻辑,是由SOPC Builder东西将一个SPI主控器软核封装到体系中的,此SPI操控器与Nios II软核以Avalon总线相衔接。SD卡的设备驱动层分为4层,包括硬件笼统层、指令层、CRC校验层与操作函接口层,其结构框图如图5所示。

j.JPG

硬件笼统层首要完结Nios II处理器对SPI操控器相应的功用寄存器的操作。

指令层界说了对SD卡各种操作的交互办法,包括指令码与应对码的界说。

CRC校验层首要完结校验作业,关于指令与数据采纳不同的校验办法。指令用CRC7校验,数据用CRC16校验。

操作函数接口层的效果是向znFAT32文件体系供给SD卡的一切操作,这其间包括了SD卡的初始化、扇区读写等函数接口(这是文件体系对SD卡进行文件操作所必需的),以供znFAT32文件体系调用。这儿运用Nios IIEDS集成开发环境编写的驱动完结SD对卡的块读写(以扇区为根本单位进行读写操作),为SD卡挂载文件体系供给API函数。

每个层的接口函数如下:

i.JPG

3 znFAT32文件体系的嵌入和SD卡的挂载

3.1 znFAT32文件体系概述

znFAT32是于振南为小型嵌入式设备彻底独立编写,且开放源代码的FAT32文件体系处理计划。znFAT32能够支撑很多的存储设备(SD卡、CF卡、Flash、U盘等),支撑多个存储器一起作业,能够支撑一起拜访多个存储器对文件的操作。对硬件资源要求低,能够轻松地移植到51单片机、AVRARMDSP、Nios II等处理器上,占用资源很少(仅占用800字节左右的RAM),十分合适嵌入式开发中文件体系的嵌入。其代码彻底由C言语编写,能够轻松阅览,移植便利。其代码结构如图6所示。

h.JPG

由图6可知该文件体系包括两层。

文件体系代码层——首要供给对存储设备进行操作的各种函数。

存储设备接口层——首要是为了挂载不同的存储设备。

3.2 文件体系SD卡的挂载

znFAT32文件体系挂载需求SD卡驱动层供给的扇区读写函数。将编写的扇区读写函数SD_Read_Sector、SD_Write_Sector替代文件体系中的FAT32_ReadSector与FAT32_WriterSector两个函数即可。根据需求的处理器编写SD卡驱动程序十分重要,只要确保驱动程序的正确性,才干进行文件体系的正确挂接,才干在挂接完结后对SD卡进行文件操作。

znFAT32文件体系的挂接需求对znFAT32文件体系供给的用于标定存储设备的全局变量Dev_No设备号进行处理,znFAT32文件体系给咱们供给的存储设备宏界说如下:

j.JPG

对不同设备进行文件操作,需求通过设备号来挑选不同的设备驱动函数。对SD卡操作需将Dev_NO界说为SDCARD。

4 文件体系在Nios II中的运用实例

完结SOPC体系的创立后,在生成的Nios II体系上通过Nios II EDS编程,便可将SD卡与文件体系挂接。

4.1 znFAT32文件体系的运用

znFAT32文件体系为用户供给的对文件的根本操作函数让咱们能够轻松地对文件进行操作。下面列举了几个根本函数:

k.JPG

通过上面的函数,能够完结对SD卡的文件读写、删去、数据增加、目录创立、文件复制、文件重命名等操作。

4.2 SOPC体系对SD卡文件读写操作的验证

为了验证上述体系能否正常完结SD卡读写,笔者选用了4 GB容量的金士顿SDHC卡,进行了文件读写试验。图7为Nios II EDS给出的Deb ug信息窗口。信息显现了在构建的体系上SD卡的初始化(完结文件体系的挂接),接着读取SD卡的存储容量、扇区巨细、每簇扇区数,并在根目录下面翻开名为TEST.TXT的文件,并对该文件的信息进行读取。在一级子目录下面,相同树立一个TEST.TXT的文件,并对文件信息进行读取。

e.JPG

由运转成果可知,初始化成功并辨认此SD卡为SDHC卡,容量为964 256(总簇数)×8(每簇扇区数)×512(每扇区字节数)≈3 968 860 160。根目录下的TEXT.TXT文件被翻开,翻开文件成功后在DIR1子目录下面创立TEST.TXT。由主函数创立的文件日期在TImeCreat[6]={12,1,4,17,40,28)中寄存,文件成功后读取创立的新文件的详细信息。

为了进一步验证本体系对SD卡的写入操作,笔者将此SD卡通过读卡器与PC机衔接,在PC机的文件体系下,显现了相同的成果。

结语

本文通过在CycloneⅡ系列FPGA上构建SOPC体系,并在该体系上根据NiosⅡ处理器构建了SD卡文件体系。该体系以SPI接口办法与SD卡衔接,文件体系是面向嵌入式体系的紧凑型开放源码的体系。通过对SD卡的操作验证,证明本文供给的计划具有规划灵敏、集成度高、通用性强、移植性好等许多长处。在线阵CCD数据收集试验体系以及数控贴片操控体系上得到了很好的运用。

责任编辑:gt

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部