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

发布者:脑电风暴最新更新时间:2012-12-07 来源: 21ic关键字:FPGA  SD卡文件系统 手机看文章 扫描二维码
随时随地手机看文章
   

摘要:利用Cyclone II系列FPGA构建了一种用于SD卡读写的SPI控制器,并在其上实现了一个基于Nios II软核处理器的嵌入式文件系统。此文件系统是通过在Nios II EDS开发平台上移植znFAT32文件系统实现的。
关键词:Cyclone II;FPGA;Nios II;SD卡;znFAT32文件系统

引言
    在嵌入式系统或移动设备上使用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系统包括如下部分:

f.JPG


    ①系统核心模块: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所示。

a.JPG[page]

 

    将需要的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
[page]

 

    3 znFAT32文件系统的嵌入和SD卡的挂载
3.1 znFAT32文件系统概述
   
znFAT32是于振南为小型嵌入式设备完全独立编写,且开放源代码的FAT32文件系统解决方案。znFAT32能够支持众多的存储设备(SD卡、CF卡、Flash、U盘等),支持多个存储器共同工作,可以支持同时访问多个存储器对文件的操作。对硬件资源要求低,能够轻松地移植到51单片机、AVR、ARM、DSP、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数据采集实验系统以及数控贴片控制系统上得到了很好的应用。

关键字:FPGA  SD卡文件系统 引用地址:FPGA和Nios II软核的SD卡文件系统实现方法

上一篇:莱迪思将展示专为移动应用创新而设计的FPGA
下一篇:CAST基于FPGAs和ASICs的视频编码器IP核现已上市

推荐阅读最新更新时间:2024-05-02 22:28

使用FPGA和IP Core实现定制缓冲管理
在通信网络系统中,流量管理的核心是缓存管理、队列管理和调度程序。本文结合使用FPGA及IP Core阐述缓存管理的结构、工作原理及设计方法。 目前硬件高速转发技术的趋势是将整个转发分成两个部分:PE(Protocol Engine,协议引擎)和TM(Traffic Management,流量管理)。其中PE完成协议处理,TM负责完成队列调度、缓存管理、流量整形、QOS等功能,TM与转发协议无关。 随着通信协议的发展及多样化,协议处理部分PE在硬件转发实现方面,普遍采用现有的商用芯片NP(Network Processor,网络处理器)来完成,流量管理部分需要根据系统的需要进行定制或采用商用芯片来完成。在很多情况下NP芯片
[半导体设计/制造]
采用ARM和单片机的CPLD/FPGA高速数据处理系统
1 引 言 传统的数据采集系统一般采用单片机,系统大多通过PCI总线完成数据的传输。其缺点是数学运算能力差;受限于计算机插槽数量和中断资源;不便于连接与安装;易受机箱内电磁环境的影响。这些问题遏制了基于PCI总线的数据采集系统的进一步开发和应用。因此,需要一种更为简便通用的方式完成采集系统和计算机数据的交互。 数据采集系统性能的好坏,主要取决于它的精度和速度。在保证精度的条件下应尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。实践表明,采用ARM 32位嵌入式微处理器作为控制器,用USB(通用串行总线)和上位机连接构成的数据采集系统能大大提高系统数据处理的能力,降低对PC机和接口速度的依赖。 2 系统硬件设
[单片机]
采用ARM和单片机的CPLD/<font color='red'>FPGA</font>高速数据处理系统
基于CPCI和光纤接口的数据采集卡设计与实现
摘要:设计了一套基于CPCI总线,PCI9054桥接芯片和可编程逻辑器件(FPGA)的高速数据采集卡。FPGA作为本地主控芯片,根据工控机经PCI9054转发的采集命令,通过光纤接口实现与雷达接收机的通信。采用高速RAM缓存数据,采集的接收机测试数据的分析结果可在工控机上显示,从而实现了对雷达接收机性能的快速测试。该采集卡具有较强的通用性和可扩展性,详细介绍了高速数据采集卡的组成和工作原理、硬件设计。 关键词:光纤接口;CPCI总线;PCI9054;FPGA;雷达接收机测试 随着雷达技术的发展和雷达型号的增多,现代雷达接收机数据处理速度显著提高。因此,在雷达接收机的测试和维护中,对接收机测试系统的数据处理能力、可扩展性等性
[嵌入式]
基于CPCI和光纤接口的数据采集卡设计与实现
级联信号处理器的FPGA实现
  0 引 言   在数字信号处理领域,滤波器无疑是个非常重要的环节。而在数字滤波器中,有限脉冲响应(FIR)滤波器因为其线性相位的特点,应用尤为广泛。实际应用中FIR滤波器分为常系数FIR滤波器和变系数FIR滤波器。常系数FIR滤波器的系数固定不变,可根据其特点采用分布式算法进行设计,故实现起来速度快,消耗的资源少。变系数FIR滤波器的系数是不断变化的。当前含有变系数FIR滤波环节的芯片普遍存在速度与处理级数的矛盾,有效解决此问题具有重要的现实意义。   随着片上系统(SOC)时代的到来,可编程逻辑器件不仅为FIR滤波器的设计提供了一条可行而高效的方法,而且更被广泛地使用于数字信号处理的各个领域。采用INMOS公司的IMS
[嵌入式]
级联信号处理器的<font color='red'>FPGA</font>实现
基于FPGA 的谐波电压源离散域建模与仿真
0 引言 近年来,由于电力电子装置等非线性负荷的大量增加,电力系统的谐波污染越来越严重,严重地影响了电能计量的准确性和合理性,由此导致的纠纷也屡见不鲜。因此,研究用于电能计量的谐波电压源装置,对电能计量有着非常重要的意义。 要求用于电能计量的谐波电压源能模拟21次内任意谐波的叠加,因此对采样频率要求较高。 目前,绝大多数谐波电压源装置采用开关功率放大器作为主电路,利用数字信号处理器(DigitalSignal Processing,DSP) 作为控制芯片。电力电子模型属于典型的高度并行模型,没有复杂的控制过程,但对采样率要求很高。开关器件的开关频率可达数百kHz,开关周期为μs 量级,实时系统要能稳定工作,其采样周期应
[电源管理]
基于<font color='red'>FPGA</font> 的谐波电压源离散域建模与仿真
Microchip推出集成微型FPGA的PIC16 微控制器,售价不到 50 美分
编译自EEJOURNAL Microchip 现在提供一款基于闪存的微控制器,集成可编程逻辑块,其售价不到50美分。 Microchip PIC16F13145 系列的九个新产品,与其他型号16F系列采用相同的 8 位 RISC 微处理器架构,但它们还集成了一个新的可编程逻辑块,称为可配置逻辑块 (CLB)。 PIC16F13145 微控制器系列中的器件采用 8、14 和 20 引脚封装,具有 3.5 至 14 KB 闪存和 256 至 1024 字节 RAM。 Microchip PIC1613145 微控制器系列的九个成员具有相同的内部架构,但具有不同数量的 RAM 和闪存,并提供不同的封装,具体取决于您应用的 I/O
[单片机]
Microchip推出集成微型<font color='red'>FPGA</font>的PIC16 微控制器,售价不到 50 美分
基于FPGA的LCD%26amp;VGA控制器设计
摘要:介绍了基于FPGA的图形式LCD%26;amp;VGA控制器的设计,详细讨论了用VHDL设计行场扫描时序的方法,这种设计方法稍作改动便可产生任意行场扫描时序,具有很好的可重用性。该控制器已成功地在某型飞机座舱图形显示系统中使用。 关键词:仪表装置 LCD VHDL FPGA VGA 飞机座舱图形显示系统已发展到第六代,即采用有源矩阵彩色液晶显示器AMLCD(Active Matrix Liquid Crystal Display)。当前高分辨率的军用AMLCD显示模块还只能依靠进口,且控制电路板须安装在该显示模块提供的机箱内。这种安装方式对AMLCD控制电路板的尺寸要求高,要求尽可能减少所设计电路板的尺寸。在笔者设计的
[应用]
瑞苏盈科出席欧洲FPGA大会并发表演讲
FPGA Conference Europe 是欧洲领先的可编程逻辑器件专家会议 。在越来越受人工智能驱动的云数据中心、电信和许多其他高性能应用中,现场可编程门阵列(简称 FPGA)早已证明自己是适用于各种任务的灵活且强大的加速器解决方案。 2022年欧洲 FPGA 大会,于 7 月 5 日至 7 日在德国慕尼黑东会议中心举办,3天100%专业知识!75个来自全球顶级专家演讲。讨论嵌入式系统的开发人员必须处理新的解决方案和方法,但同时也要澄清基本问题:FPGA 是否适合他们自己的项目?使用 FPGA 的最佳方式是什么?瑞苏盈科作为参展商出席了此次会议并发表演讲! 欧洲FPGA大会现场 来自Enclustra的演讲者
[嵌入式]
瑞苏盈科出席欧洲<font color='red'>FPGA</font>大会并发表演讲
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved