新闻中心

EEPW首页 > EDA/PCB > 设计应用 > FPGA和Nios II软核的SD卡文件系统实现方法

FPGA和Nios II软核的SD卡文件系统实现方法

作者: 时间:2012-12-06 来源:网络 收藏

将需要的IP核模块添加完成后,下一步是用Verilog HDL语言编写顶层文件,对定制的SOPC进行例化处理(模块之间的连接关系定义,I/O引脚的配置),编译顶层文件和模块IP核,才能生成在上运行的片上系统。
在添加IP核后,SOPCBuilder可生成资源列表,本文构建的系统列表如图3所示。

本文引用地址://www.cghlg.com/article/189745.htm

d.JPG


在实例中使用了 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卡驱动层程序的编写
II EDS是Altera公司为其 II处理器开发的一款C/C++语言编程软件,其软件架构是基于HAL(Hardware Abstraction Layer)之上的,Nios II EDS为Nios开发者提供了编程接口、底层设备驱动、HAL API,以及C标准库等资源。更重要的是,HAL系统库为Nios II软件设计人员提供了应用程序与底层硬件交互的设备驱动接口,从而大大简化了应用程序的开发。此外,HAL系统库还为应用程序与底层硬件驱动之间划分了一条清晰的界线,从而大大提高了应用程序的可复用性,使得应用程序不受底层硬件变化的影响。
片上系统的SPI控制器硬件逻辑,是由SOPC Builder工具将一个SPI主控器软核封装到系统中的,此SPI控制器与Nios 以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

fpga相关文章:fpga是什么


51单片机相关文章:51单片机教程


c语言相关文章:c语言教程




评论


相关推荐

技术专区

关闭