CN103324589A - Sd卡控制系统 - Google Patents
Sd卡控制系统 Download PDFInfo
- Publication number
- CN103324589A CN103324589A CN2013102594226A CN201310259422A CN103324589A CN 103324589 A CN103324589 A CN 103324589A CN 2013102594226 A CN2013102594226 A CN 2013102594226A CN 201310259422 A CN201310259422 A CN 201310259422A CN 103324589 A CN103324589 A CN 103324589A
- Authority
- CN
- China
- Prior art keywords
- card
- register
- module
- data
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及嵌入式系统技术领域,公开了一种SD卡控制系统。该系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器模块,其中,所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器模块;所述SD卡控制器模块被封装成Avalon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器模块还通过SPI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。本发明在一个芯片上实现了控制器硬件与CPU的融合,在产品设计上减少了PCB设计的复杂程度,减小了开发难度,节约了设计成本,提高了产品的生命周期。
Description
技术领域
本发明涉及嵌入式系统技术领域,特别涉及一种SD卡控制系统。
背景技术
随着电子工艺的进步,现代集成电路的集成度越来越高,电子设备和工控仪器等也越来越趋向于小型化、低功耗和多功能化,但同时要以更小的体积和功耗应对复杂环境下的数据采集和处理,对这些设备仪器的存储功能也有着越来越高的要求。SD卡(Secure DigitalMemory Card)是一种基于半导体快闪存储器的存储设备,经过近些年的市场竞争,已经逐渐取代了SM卡(SmartMedia)、CF卡(CompactFlash)、MMC卡(MultiMediaCard)和记忆棒(Memory Stick)等闪存设备,成为当前最主流的小型非易失性存储设备。
SD卡由于具备容量大、传输速率高、功耗低和体型小巧等优点,被广泛用于手机、数码相机等消费类电子设备以及工控仪器中,也逐渐被大多数嵌入式系统所采用。但对于嵌入式系统来说,体型、功耗和成本一直是系统需要严格控制的问题。目前,在众多的具备SD卡接口访问功能的产品中,一般都采用专用控制芯片来实现SD卡的读写控制。由于SD卡规范是几家生产厂商联合推出的规范,其控制芯片的研发和生产也由这些厂商所掌控,在嵌入式产品中采用这些专用控制芯片除了要支付额外的授权费用外,还需要在产品中预留出控制芯片的布设空间和电路走线,产品体积难以控制还明显增加了产品的硬件资源开销、设计成本和设计复杂度。此外,独立的芯片还需要额外的电能供应,增大了产品功耗;要想升级SD卡控制功能也只能依靠调整芯片进行,显然不能很好地满足今后产品的升级需求。可见,现有的独立控制芯片方式并不适用于将SD卡应用于嵌入式系统中。
发明内容
(一)要解决的技术问题
针对现有技术的上述缺陷,本发明为了解决现有技术中采用独立芯片控制SD卡不适用于嵌入式系统的技术问题,提供了一种SD卡控制系统。
(二)技术方案
为实现上述目的,本发明采用如下技术方案:
一方面,本发明提供一种SD卡控制系统,所述系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器模块,其中,
所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器模块;
所述SD卡控制器模块被封装成Avalon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器模块还通过SPI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。
优选地,所述SD卡控制器模块包括:
SD卡访问工作逻辑单元,通过硬件逻辑控制SD卡的初始化、读、写、擦除操作,完成SPI总线模式下与SD卡的数据交互;
寄存器单元分配模块,配置和控制内部寄存器单元,使内核通过Avalon总线接口访问寄存器单元来控制所述工作逻辑单元;
Avalon总线从设备接口,与内核通过Avalon总线进行交互,使内核能够访问到硬件内部寄存器单元,并对其进行读/写操作以控制所述工作逻辑单元。
优选地,所述内核和所述SD卡控制器模块构成所述系统的硬件层,所述系统还包括驱动层、应用程序接口层和用户层,其中,
所述驱动层完成系统的硬件抽象,提供设备的驱动程序供上层应用访问所述硬件层;
所述应用程序接口层为所述用户层的应用调用所述驱动程序提供驱动函数接口;
所述用户层提供数据管理应用,基于用户的需求产生SD卡数据的控制指令。
优选地,所述驱动层的所述驱动程序根据所述SD卡控制器模块中寄存器的配置情况基于HAL开发。
优选地,所述SD卡控制器模块采用Verilog硬件描述语言实现。
优选地,所述内核为嵌入式软核处理器。
优选地,所述FPGA器件为Altera FPGA器件,所述内核为NiosⅡ处理器。
优选地,所述SD卡访问工作逻辑单元包括:SD卡初始化模块、SD卡寄存器读模块、SD卡写操作模块、SD卡读操作模块和SD卡的擦除操作模块,其中,
所述SD卡初始化模块设置了控制寄存器和状态寄存器,为用户应用提供对SD卡初始化进程的控制和状态掌握;
所述SD卡寄存器读模块设置了控制寄存器、状态寄存器和读数据缓冲器,完成对当前SD卡的工作条件寄存器、卡描述数据寄存器和卡识别码寄存器的状态信息读取;
所述SD卡写操作模块设置了控制器寄存器、状态寄存器和写数据缓冲器,根据用户应用的写数据需求,向写数据缓冲器写入至少一块的数据信息后自动完成向SD卡写数据流程,并向内核提交此次写操作的结果报告信息;
所述SD卡读操作模块设置了控制寄存器、状态寄存器和读数据缓冲器,根据用户应用发出具体的读需求信息,自动完成对SD卡的信息读取后指示内核对读数据缓冲器进行读取,并向内核提交此次读操作的结果报告信息;
所述SD卡的擦除操作模块设置了控制器寄存器和状态寄存器,根据用户应用对SD卡数据块的擦除请求自动进行数据擦除操作,完成后提交擦除的结果报告信息。
优选地,所述系统还包括:JTAG接口和存储器接口。
优选地,所述系统还包括:至少一个使用C语言至硬件加速编译器生成的协处理器。
(三)有益效果
本发明的方案中,在一个芯片上实现了控制器硬件与CPU的融合,优化了SD卡产品应用的硬件开销,降低了设计成本和开发难度,延长了产品生命周期,设计灵活且容易实现。
附图说明
图1是本发明的一个实施例中系统的模块结构示意图;
图2a、图2b是本发明的一个优选实施例中系统主要硬件模块的对外接口关系结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
微电子技术的发展成果为SOC(System on Chip,片上系统)的实现提供了多种途径,SOC是一种集成度较高的系统级芯片,其在体积、功耗和系统功能上均较传统嵌入式系统有较大优势;但同时,要想在单一芯片上实现软硬件的高度集成,需要进行大量的硬件逻辑、软硬件协同、系统应用的设计和验证,这无形中又增大了SOC产品的生产投入。对于经过验证而又具有批量需求的系统芯片,可以做成ASIC(Application Specific Integrated Circuit,专用集成电路)而大量生产以控制成本;但对于一些仅为小批量应用或处于开发阶段的SOC,若马上投入流片生产,则需要投入较多的资金,承担较大的试制风险。最近发展起来的SOPC(System on a Programmable Chip,可编程片上系统)技术为成本控制提供了另一种有效的解决方案,即用FPGA(Field Programmable Gate Array,现场可编程门阵列)作为实现SOC的硬件载体。
采用SOPC技术的优势,本发明实现了不通过独立控制芯片即可进行SD卡读写的嵌入式系统。本发明在FPGA上实现了从硬件层至用户层的逐层级设计开发,完全只在一个FPGA上完成了SD卡控制、外设驱动和嵌入式应用;本发明的系统具备通用SD卡接口访问能力,可根据访问需求灵活配置CPU系统,访问效率高,实现方法简单。
在本发明的技术方案中,采用Altera的FPGA器件,使用Verilog硬件描述语言设计实现基于SPI(Serial Peripheral Interface,串行外设接口)总线的SD卡控制器模块,该模块支持最新的SD卡物理层规范V2.0,并可根据需求进行升级,根据Avalon总线规范进行设计,满足对SD卡的基本控制。其中,运用最新软件开发平台Quartus II的SOPCBuilder开发工具,选择经济型内核来构造一个基于Avalon总线的处理器,把SD卡控制器模块封装成Avalon存储器映射从端口,作为嵌入式外围设备以供处理器访问。针对上述封装形式,开发设备驱动并将其综合到HAL(Hardware Abstraction Layer,硬件抽象层)框架中;编写HAL API函数,在集成开发环境(IDE)下使用标准的C函数库或者API函数实现对SD卡的基本操作,如SD卡初始化、读写数据、擦除等。同时,为了提高软件程序执行的性能,使用C语言至硬件加速编译器(C2H编译器)作为FPGA的定制协处理器,用于协助CPU同时处理多个数据块,编写加速代码使控制程序效能提升在10倍以上,并且结合Avalon交换架构的互联技术,可实现大吞吐量应用,很好地满足对大容量SD卡的高效访问需求。
在本发明优选的实施例中,采用NiosⅡ处理器作为核心的FPGA内核,NiosⅡ处理器是Altera公司的第二代用户可配置的通用32位RISC(Reduced Instruction Set Computing,精简指令集)嵌入式微处理器,是Altera公司特有的基于通用FPGA架构的软CPU内核,具有超过300MIPS(Million Instructions Per Second,百万指令每秒)的性能。在植入FPGA之前,用户可以根据设计要求,对NiosⅡ及其外围系统进行定制,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。只要FPGA资源允许,NiosⅡ软核在同一FPGA中被植入的数量没有限制;此外,由于NiosⅡ是由Altera公司直接推出而非第三方产品,用其定制的产品无需再支付额外的授权费用。
更具体地,参见图1,其是本发明的一个实施例中的系统架构模块图,在该实施例中采用逐层级开发方式实现各层的功能模块,SD存储卡(本实施例中采用8GB Kingston SD卡)通过SPI总线与Altera的Cyclone III FPGA器件进行数据通信,FPGA内部完成了从底层硬件层到顶层用户层的数据处理。图1中,在硬件层完成了NiosⅡ处理器硬件平台(即SOPC系统)的构建,其主要是对SPI总线的SD卡控制器模块实现,该模块基于Avalon总线规范,采用Verilog硬件描述语言实现,负责接收NiosⅡ处理器的用户指令而对SD卡直接进行访问。SD卡控制器模块的整个结构又主要由三部分组成:SD卡访问工作逻辑单元,完成SPI模式下与SD卡的数据交互机制;寄存器单元分配模块,Avalon总线接口通过访问寄存器单元来控制工作逻辑部分;Avalon总线从设备接口,通过该接口使处理器能够访问到硬件内部寄存器,并且对其进行读/写操作来控制工作逻辑部分。
进一步参见图2,该图描述了本发明中主要硬件模块顶层的对外接口关系,其中,图2a是SD卡控制器模块顶层对外接口关系,图2b是NiosⅡ处理器硬件顶层对外接口关系。
在图2a中描绘了用Verilog语言实现的SD卡控制器模块的顶层对外接口关系的一个实例,图2b则体现了图2a基于NiosII处理器在FPGA内部的模块化的一个实例,图2b说明了图2a的SD卡控制器模块在FPGA内部和其他用户模块的接口关系。SD卡控制器模块通过SPI总线对SD卡进行操作,通过Avalon总线与Nios处理器相连接收处理器的控制信号并在处理器与SD卡之间进行数据通信。具体地,在该SD卡控制器模块中,与SD卡进行物理连接的线路信号和作为Avalon_MM(Avalon存储器映射)从端口的线路信号的定义及具体描述见表1所示。
信号类型 | 宽度 | 方向 | 描述 |
CS | 1 | 到SD卡 | SD卡的片选输入信号 |
DI | 1 | 到SD卡 | SD卡的数据输入信号 |
SCLK | 1 | 到SD卡 | SD卡的时钟输入信号 |
VSS2 | 1 | 到SD卡 | SD卡的电源地信号 |
DO | 1 | 到SD卡 | SD卡的数据输出信号 |
reset | 1 | 来自Avalon总线 | 全局复位信号 |
clk | 1 | 来自Avalon总线 | Avalon从端口的同步时钟 |
slave_chipselect | 1 | 来自Avalon总线 | Avalon从端口的片选信号 |
slave_address | 8 | 来自Avalon总线 | Avalon从端口的地址信号线 |
slave_write | 1 | 来自Avalon总线 | 写请求信号 |
slave_writedata | 32 | 来自Avalon总线 | 对应写请求的数据总线 |
slave_read | 1 | 来自Avalon总线 | 读请求信号 |
slave_readdata | 32 | 到Avalon总线 | 对应读请求的数据总线 |
表1SD卡控制器模块中线路信号的定义及具体描述
本发明中,SD卡控制器需要为SD卡提供工作时钟SCLK,按照SD卡最新的物理层规范V2.0完成一系列对SD卡的访问操作,即对SD卡的访问工作逻辑;同时,模块内部针对SD卡的初始化、读、写、擦除等功能操作模块,分别定义多个寄存器单元,并且编写Avalon总线接口机制,定义Avalon_MM从端口来提供合适的控制机制以及足够的带宽,其中设置读/写为零等待周期也就是读/写寄存器仅需要一个时钟周期,读和写没有建立、保持约束,且读不需要延时,最大效率地提高了系统性能。最终顶层NiosⅡ处理器的用户程序可以通过Avalon总线从设备接口对SD卡控制器模块发出指令(也就是从用户层来控制了硬件层的工作),控制器就可硬件自动化地发出命令(通过DI管脚)和接收SD卡的响应(通过DO管脚),并且根据用户程序具体的读写数据请求进行数据的发送和接收,实现用户对SD卡的高效访问。
在本发明一个优选的实施例中,对图2a中的RTL(RegisterTransfer Layer,寄存器传输层)功能模块主要包含以下五个主要功能模块:
SD卡初始化模块,本模块设置了控制寄存器和状态寄存器,用于用户程序对初始化进程的控制和初始化过程的状态掌握。模块设计从上电复位检测到卡开始,按照命令-回答的SD卡SPI模式通信机制自动实现一系列的初始化流程,最终确定SD卡的版本状态,提交初始化过程信息报告给CPU,供用户程序对卡进行诊断并且确定下一步的可操作性。
SD卡寄存器读模块,本模块设置了控制寄存器、状态寄存器和读数据缓冲器,主要用于完成对当前SD卡的OCR(OperatingConditions Register,工作条件寄存器)、CSD(Card Specific DataRegister,卡描述数据寄存器)和CID(Card Identification Register,卡识别码寄存器)各寄存器的状态信息读取,这些关键的卡信息将作为下一步对SD卡进行读写的主要约束条件。
SD卡写操作模块,本模块设置了控制器寄存器、状态寄存器和写数据缓冲器,根据用户的写数据需求,在顶层用户程序里往写数据缓冲器写入块/多块的数据信息,本模块自动产生写数据流程,并向CPU提交此次写操作的结果报告信息。
SD卡读操作模块,本模块设置了控制寄存器、状态寄存器和读数据缓冲器,用户在顶层用户程序里发出具体的读需求信息,本模块自动完成对SD卡的信息读取后指示CPU对读数据缓冲器的读取,过程中同样向CPU提交此次读操作的结果报告信息。
SD卡的擦除操作模块,本模块设置了控制器寄存器和状态寄存器,根据用户对SD卡数据块的擦除请求情况自动进行数据擦除操作,完成后提交擦除的结果报告信息。
以上功能模块中的所有寄存器详细分配信息见表2所示。
表2SD卡控制器模块中寄存器分配信息
通过以上5个主要功能模块对SD卡控制器的硬件实现,随后通过SOPC Builder中Component Editor(组件编辑器)把SD卡控制器封装成一个设备组件。封装时,组件编辑器的HDL Files选项卡导入SD卡控制器硬件实现的全部Verilog源文件;Signals选项卡设置了顶层组件SD卡控制器模块中每个信号的用途,包括接口类型和信号类型;Interfaces选项卡将每一个信号分配到各个接口,并且根据SD卡控制器模块中对Avalon_MM从设备接口的时序设计,修改时序约束参数,真正最大效率提高了对SD卡控制器的访问效率。
本发明的实施例还在SOPC Builder中创建的NiosⅡCPU架构,CPU架构中同时添加了片上存储器资源和JTAG调试从设备模块,至此构成了一个完整的典型SD卡控制器NiosⅡCPU硬件系统。
完成处理器硬件平台的构建后,由于用户程序不能直接访问硬件,因此需要创建设备驱动程序。驱动程序的开发是基于HAL,并且依赖于SD卡控制器模块中各个寄存器的配置情况。实现SD卡驱动程序的功能后,集成该设备驱动程序到HAL框架环境中,用户就可以使用高级HAL API驱动函数来访问底层硬件,这样可使代码更加稳定并且可移植到其他具有不同硬件配置的NiosⅡ系统中。构建完硬件系统后,就可以在此基础上结合用户的具体使用需求开发应用程序,也就是对SD卡设备进行读、写、擦除等访问操作。用户应用程序的开发是在NiosⅡIDE集成开发环境下进行,代码可采用简洁的C语言进行编写,操作的细则遵从SD卡控制器模块中寄存器的配置情况。本实施例中为提高对SD卡的访问效率,SD卡控制器模块中对Avalon总线的读写访问操作采用零等待周期、无读/写建立和保持约束、无读延时的Avalon总线时序,最大限度提高总线带宽;同时,对读、写等访问操作,在IDE环境下使用C2H编译器对这些性能关键的C语言进行硬件加速处理,从而更加轻松地提升了访问效率。C2H编译器支持标准ANSI C代码,可加速实现多种应用程序,提高其运行效率,包括访问本地、外部存储器和外设等。它利用Quartus II SOPC Builder工具生成的宽带Avalon互联架构,能够成功的处理外部存储器操作,例如,指针分散和数组访问等。Nios II C2H编译器分析程序要加速实现的存储器接口类型,生成硬件加速器逻辑以及合适的Avalon主机和从机接口,达到与存储器延时的匹配。这样,分担了Nios II处理器的数据计算和存储器访问功能,使处理器能够更好的处理其他任务。由于Avalon互联架构并没有限制主机和从机的数量,因此,Nios II C2H编译器可以根据转换目标代码的要求,产生多个存储器自治硬件加速器。
要用NiosⅡCPU来控制SD卡控制器的工作,则还要进行SD卡控制器设备驱动开发,以便在用户层中对该设备进行访问控制。本实施例按照以下五个步骤完成对SD卡控制器HAL外设驱动的开发:
第一步,编写HAL外设头文件(sd_spi_reg.h),此文件描述了SD卡控制器硬件寄存器的详细情况,使应用程序或者HAL驱动总是通过它提供的接口与SD卡控制器底层硬件打交道,这样就为更高一层的使用带来极大方便,在此基础上可完成开发更灵活的设备驱动函数等操作。
sd_spi_reg.h定义了可以访问的内部寄存器,一般由从硬件接口中抽象出来的宏指令组成,定义了如下访问内容:
a.支持读/写HAL外设寄存器的宏命令,比如SD卡写操作模块中写控制寄存器定义为:
#define IOWR_SD_SPI_WRITE_CTRL(基地址,数据)
IOWR_32DIRECT(基地址,偏移量,数据)
b.返回HAL外设寄存器物理地址的宏定义,比如SD卡写操作模块中写控制寄存器物理地址的获取方式为:
#define IOADDR_SD_SPI_WRITE_CTRL(基地址)
__IO_CALC_ADDRESS_NATIVE(基地址,偏移量)
c.访问一个寄存器中单独比特域的比特掩码和偏移量,比如SD卡写操作模块中写控制寄存器的比特掩码和偏移量分别定义为:
#define SD_SPI_WRITE_CTRL_MSK(0xFFFFFFFF)
#define SD_SPI_WRITE_CTRL_OFST(0x00000000)
第二步,创建HAL头文件(sd_spi_routines.h),此文件包含了SD_SPI_INSTANCE和SD_SPI_INIT两个宏定义。自动生成的系统初始化文件alt_sys_init.c将自动包含系统中SD卡控制器的HAL头文件并调用该外设的SD_SPI_INSTANCE和SD_SPI_INIT两个宏,从而实现该控制器的自动实例化和初始化。
第三步,创建HAL源文件(sd_spi_routines.c),此文件也就是SD卡控制器的外设驱动程序,它基于HAL外设头文件(sd_spi_reg.h)进行开发。由于HAL头文件(sd_spi_routines.h)只是声明了该SD卡控制器HAL元件中可供程序员使用的资源,因此这些资源的真正定义位于本HAL源文件中。比如对于SD卡的写控制函数,可以按照以下形式实现:
第四步,创建SD卡控制器的makefile程序,即component.mk文件。component.mk会自动将外设的HAL源文件所在目录加入到make工具的源文件搜索路径,从而保证应用程序能够找到所有外设的驱动源码。
第五步,将以上创建的HAL驱动集成到HAL框架中,本实施例把器件驱动集成到SD卡控制器目录(my_sd_spi_component)下,具体如下:
将HAL头文件放置到my_sd_spi_component目录的HAL\inc子文件夹下。将HAL源文件和component.mk文件放置到my_sd_spi_component目录的HAL\src子文件夹下。将HAL外设头文件放置到my_sd_spi_component目录下的inc子文件夹中。
至此,用户便可在NiosⅡIDE集成开发环境下结合驱动函数和HAL提供的大量API函数进行顶层的应用程序开发。当用户建立应用工程时,同时系统为用户建立了HAL系统库,它包含了所有与底层硬件、用户程序接口的有关信息。编译时,与用户硬件系统相关的HAL驱动程序,被自动添加到系统库工程中,因此程序始终与硬件系统保持同步。
随后将HAL驱动头文件和HAL外设头文件集合到IDE环境下,用户可从main()函数开始对SD卡控制器进行初始化、读、写和擦除等操作的测试,调用驱动函数体,设置访问参数,就可以对底层SD卡控制器模块进行访问控制,结合C2H在IDE环境下对特定代码进行硬件加速,从而实现对SD卡的高效访问,实现本实施方案目标。
从以上实施方式可以看出,对SD卡访问所采用的FPGA SOPC开发方式,包括从底层的SD卡控制器硬件实现,到最终顶层的用户程序对SD卡的访问控制,实现流程囊括设备驱动开发员和应用程序开发员的工作内容,方法科学灵活;采用封装硬件模块到NiosⅡCPU构成片上软核SOPC系统的方式,结合用户程序采用最优的Avalon交换架构,使得在单芯片上对SD卡的访问效率非常高;由于是在一个芯片上实现了控制器硬件与CPU的融合,使得用户在后续的应用中可以集成更多的功能,维持和扩展了产品设计的生命周期;而且从硬件设计上采取的Avalon_MM从端口零等待周期、无读/写建立和保持约束、无读延时,极大地提高了CPU访问效率。总的来说,采用本实施方案基于NiosⅡSOPC的SD卡高效访问实现方法,作为SD卡接口电子产品中一种新颖的应用方式,在产品设计上减少了PCB设计的复杂程度,减小了开发难度,节约了设计成本,提高了产品的生命周期。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (10)
1.一种SD卡控制系统,其特征在于,所述系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器模块,其中,
所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器模块;
所述SD卡控制器模块被封装成Avalon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器模块还通过SPI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。
2.根据权利要求1所述的系统,其特征在于,所述SD卡控制器模块包括:
SD卡访问工作逻辑单元,通过硬件逻辑控制SD卡的初始化、读、写、擦除操作,完成SPI总线模式下与SD卡的数据交互;
寄存器单元分配模块,配置和控制内部寄存器单元,使内核通过Avalon总线接口访问寄存器单元来控制所述工作逻辑单元;
Avalon总线从设备接口,与内核通过Avalon总线进行交互,使内核能够访问到硬件内部寄存器单元,并对其进行读/写操作以控制所述工作逻辑单元。
3.根据权利要求1所述的系统,其特征在于,所述内核和所述SD卡控制器模块构成所述系统的硬件层,所述系统还包括驱动层、应用程序接口层和用户层,其中,
所述驱动层完成系统的硬件抽象,提供设备的驱动程序供上层应用访问所述硬件层;
所述应用程序接口层为所述用户层的应用调用所述驱动程序提供驱动函数接口;
所述用户层提供数据管理应用,基于用户的需求产生SD卡数据的控制指令。
4.根据权利要求3所述的系统,其特征在于,所述驱动层的所述驱动程序根据所述SD卡控制器模块中寄存器的配置情况基于HAL开发。
5.根据权利要求1所述的系统,其特征在于,所述SD卡控制器模块采用Verilog硬件描述语言实现。
6.根据权利要求1所述的系统,其特征在于,所述内核为嵌入式软核处理器。
7.根据权利要求1所述的系统,其特征在于,所述FPGA器件为Altera FPGA器件,所述内核为NiosⅡ处理器。
8.根据权利要求2所述的系统,其特征在于,所述SD卡访问工作逻辑单元包括:SD卡初始化模块、SD卡寄存器读模块、SD卡写操作模块、SD卡读操作模块和SD卡的擦除操作模块,其中,
所述SD卡初始化模块设置了控制寄存器和状态寄存器,为用户应用提供对SD卡初始化进程的控制和状态掌握;
所述SD卡寄存器读模块设置了控制寄存器、状态寄存器和读数据缓冲器,完成对当前SD卡的工作条件寄存器、卡描述数据寄存器和卡识别码寄存器的状态信息读取;
所述SD卡写操作模块设置了控制器寄存器、状态寄存器和写数据缓冲器,根据用户应用的写数据需求,向写数据缓冲器写入至少一块的数据信息后自动完成向SD卡写数据流程,并向内核提交此次写操作的结果报告信息;
所述SD卡读操作模块设置了控制寄存器、状态寄存器和读数据缓冲器,根据用户应用发出具体的读需求信息,自动完成对SD卡的信息读取后指示内核对读数据缓冲器进行读取,并向内核提交此次读操作的结果报告信息;
所述SD卡的擦除操作模块设置了控制器寄存器和状态寄存器,根据用户应用对SD卡数据块的擦除请求自动进行数据擦除操作,完成后提交擦除的结果报告信息。
9.根据权利要求1所述的系统,其特征在于,所述系统还包括:JTAG接口和存储器接口。
10.根据权利要求1所述的系统,其特征在于,所述系统还包括:至少一个使用C语言至硬件加速编译器生成的协处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102594226A CN103324589A (zh) | 2013-06-26 | 2013-06-26 | Sd卡控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102594226A CN103324589A (zh) | 2013-06-26 | 2013-06-26 | Sd卡控制系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103324589A true CN103324589A (zh) | 2013-09-25 |
Family
ID=49193345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102594226A Pending CN103324589A (zh) | 2013-06-26 | 2013-06-26 | Sd卡控制系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324589A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744807A (zh) * | 2013-12-04 | 2014-04-23 | 西安诺瓦电子科技有限公司 | 基于可编程逻辑器件的存储卡访问控制系统 |
CN105243046A (zh) * | 2015-10-30 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | Sd卡的处理系统、sd卡的存储方法及读取方法 |
CN112231729A (zh) * | 2020-10-23 | 2021-01-15 | 山东超越数控电子股份有限公司 | 一种基于SoC芯片的SD安全模块和传输方法 |
CN113868070A (zh) * | 2021-09-23 | 2021-12-31 | 山东云海国创云计算装备产业创新中心有限公司 | 一种sd卡控制器调试方法、系统、存储介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201788657U (zh) * | 2010-05-19 | 2011-04-06 | 四川九洲电器集团有限责任公司 | 基于NiosⅡ软核CPU的LCD控制器 |
CN102708075A (zh) * | 2012-05-15 | 2012-10-03 | 山东大学 | 一种sd卡硬件控制装置及控制方法 |
CN202615783U (zh) * | 2012-05-23 | 2012-12-19 | 西北师范大学 | 一种基于FPGA的Mel倒谱分析合成仪 |
-
2013
- 2013-06-26 CN CN2013102594226A patent/CN103324589A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201788657U (zh) * | 2010-05-19 | 2011-04-06 | 四川九洲电器集团有限责任公司 | 基于NiosⅡ软核CPU的LCD控制器 |
CN102708075A (zh) * | 2012-05-15 | 2012-10-03 | 山东大学 | 一种sd卡硬件控制装置及控制方法 |
CN202615783U (zh) * | 2012-05-23 | 2012-12-19 | 西北师范大学 | 一种基于FPGA的Mel倒谱分析合成仪 |
Non-Patent Citations (2)
Title |
---|
陈侠 等: "基于SoPC和NIOS II的SD卡文件系统的设计", 《现代电子技术》 * |
陈侠 等: "基于SoPC和NIOS II的SD卡文件系统的设计", 《现代电子技术》, vol. 35, no. 16, 15 August 2012 (2012-08-15) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744807A (zh) * | 2013-12-04 | 2014-04-23 | 西安诺瓦电子科技有限公司 | 基于可编程逻辑器件的存储卡访问控制系统 |
CN103744807B (zh) * | 2013-12-04 | 2016-10-19 | 西安诺瓦电子科技有限公司 | 基于可编程逻辑器件的存储卡访问控制系统 |
CN105243046A (zh) * | 2015-10-30 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | Sd卡的处理系统、sd卡的存储方法及读取方法 |
CN112231729A (zh) * | 2020-10-23 | 2021-01-15 | 山东超越数控电子股份有限公司 | 一种基于SoC芯片的SD安全模块和传输方法 |
CN113868070A (zh) * | 2021-09-23 | 2021-12-31 | 山东云海国创云计算装备产业创新中心有限公司 | 一种sd卡控制器调试方法、系统、存储介质及设备 |
CN113868070B (zh) * | 2021-09-23 | 2023-08-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种sd卡控制器调试方法、系统、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108121672B (zh) | 一种基于NandFlash存储器多通道的存储阵列控制方法与装置 | |
JP7121076B2 (ja) | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 | |
CN102508753B (zh) | Ip核验证系统 | |
US7356637B2 (en) | Virtual IDE storage device with PCI express interface | |
CN107704285B (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN105793829A (zh) | 集成组件互连 | |
CN105930186B (zh) | 多cpu的软件加载方法及基于多cpu的软件加载装置 | |
CN101004707A (zh) | 一种嵌入式软件调试装置及其调试实现方法 | |
CN105068860A (zh) | 一种基于ARM的Linux采煤机管理主机系统 | |
CN101211266A (zh) | 一种实现fpga自动下载和在线升级的方法 | |
CN103324589A (zh) | Sd卡控制系统 | |
CN111190855A (zh) | 一种fpga多重远程配置系统及方法 | |
CN113849433A (zh) | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 | |
CN101436171A (zh) | 模块化通信控制系统 | |
CN102073480A (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
CN108920197A (zh) | 一种提高fpga串行被动加载速率的加载电路及加载方法 | |
CN103793263A (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
CN208907999U (zh) | 一种新型Raid扣卡 | |
CN101286181B (zh) | 基于dw8051核的现场可编程门阵列片上可编程系统 | |
JP2003068864A (ja) | 半導体集積回路装置 | |
CN100357909C (zh) | 一种仿真器芯片 | |
CN102446132B (zh) | 一种模拟本地总线进行板级管理的方法和装置 | |
CN114328342A (zh) | 一种用于PCIe异构加速卡的新型程控配置方法 | |
CN107665281B (zh) | 一种基于fpga的处理器模拟方法 | |
CN201004226Y (zh) | 具有flash和sdram的arm处理器最小系统模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130925 |