• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 13
    • 下载费用:30 金币  

    重庆时时彩世爵平台: SD卡控制系统.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN201310259422.6

    申请日:

    2013.06.26

    公开号:

    CN103324589A

    公开日:

    2013.09.25

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情: 发明专利申请公布后的视为撤回IPC(主分类):G06F 13/16申请公布日:20130925|||实质审查的生效IPC(主分类):G06F 13/16申请日:20130626|||公开
    IPC分类号: G06F13/16 主分类号: G06F13/16
    申请人: 四川九洲电器集团有限责任公司
    发明人: 杨其聪; 朱磊
    地址: 621000 四川省绵阳市九华路6号
    优先权:
    专利代理机构: 北京万慧达知识产权代理有限公司 11111 代理人: 段晓玲;杨颖
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201310259422.6

    授权公告号:

    ||||||

    法律状态公告日:

    2016.11.30|||2013.10.30|||2013.09.25

    法律状态类型:

    发明专利申请公布后的视为撤回|||实质审查的生效|||公开

    摘要

    本发明涉及嵌入式系统技术领域,公开了一种SD卡控制系统。该系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器???,其中,所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器???;所述SD卡控制器??楸环庾俺葾valon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器??榛雇ü齋PI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。本发明在一个芯片上实现了控制器硬件与CPU的融合,在产品设计上减少了PCB设计的复杂程度,减小了开发难度,节约了设计成本,提高了产品的生命周期。

    权利要求书

    权利要求书
    1.   一种SD卡控制系统,其特征在于,所述系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器???,其中,
    所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器???;
    所述SD卡控制器??楸环庾俺葾valon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器??榛雇ü齋PI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。

    2.   根据权利要求1所述的系统,其特征在于,所述SD卡控制器??榘ǎ?BR>SD卡访问工作逻辑单元,通过硬件逻辑控制SD卡的初始化、读、写、擦除操作,完成SPI总线模式下与SD卡的数据交互;
    寄存器单元分配???,配置和控制内部寄存器单元,使内核通过Avalon总线接口访问寄存器单元来控制所述工作逻辑单元;
    Avalon总线从设备接口,与内核通过Avalon总线进行交互,使内核能够访问到硬件内部寄存器单元,并对其进行读/写操作以控制所述工作逻辑单元。

    3.   根据权利要求1所述的系统,其特征在于,所述内核和所述SD卡控制器??楣钩伤鱿低车挠布?,所述系统还包括驱动层、应用程序接口层和用户层,其中,
    所述驱动层完成系统的硬件抽象,提供设备的驱动程序供上层应用访问所述硬件层;
    所述应用程序接口层为所述用户层的应用调用所述驱动程序提供驱动函数接口;
    所述用户层提供数据管理应用,基于用户的需求产生SD卡数据的控制指令。

    4.   根据权利要求3所述的系统,其特征在于,所述驱动层的所述驱动程序根据所述SD卡控制器??橹屑拇嫫鞯呐渲们榭龌贖AL开发。

    5.   根据权利要求1所述的系统,其特征在于,所述SD卡控制器??椴捎肰erilog硬件描述语言实现。

    6.   根据权利要求1所述的系统,其特征在于,所述内核为嵌入式软核处理器。

    7.   根据权利要求1所述的系统,其特征在于,所述FPGA器件为Altera FPGA器件,所述内核为NiosⅡ处理器。

    8.   根据权利要求2所述的系统,其特征在于,所述SD卡访问工作逻辑单元包括:SD卡初始化???、SD卡寄存器读???、SD卡写操作???、SD卡读操作??楹蚐D卡的擦除操作???,其中,
    所述SD卡初始化??樯柚昧丝刂萍拇嫫骱妥刺拇嫫?,为用户应用提供对SD卡初始化进程的控制和状态掌握;
    所述SD卡寄存器读??樯柚昧丝刂萍拇嫫?、状态寄存器和读数据缓冲器,完成对当前SD卡的工作条件寄存器、卡描述数据寄存器和卡识别码寄存器的状态信息读??;
    所述SD卡写操作??樯柚昧丝刂破骷拇嫫?、状态寄存器和写数据缓冲器,根据用户应用的写数据需求,向写数据缓冲器写入至少一块的数据信息后自动完成向SD卡写数据流程,并向内核提交此次写操作的结果报告信息;
    所述SD卡读操作??樯柚昧丝刂萍拇嫫?、状态寄存器和读数据缓冲器,根据用户应用发出具体的读需求信息,自动完成对SD卡的信息读取后指示内核对读数据缓冲器进行读取,并向内核提交此次读操作的结果报告信息;
    所述SD卡的擦除操作??樯柚昧丝刂破骷拇嫫骱妥刺拇嫫?,根据用户应用对SD卡数据块的擦除请求自动进行数据擦除操作,完成后提交擦除的结果报告信息。

    9.   根据权利要求1所述的系统,其特征在于,所述系统还包括:JTAG接口和存储器接口。

    10.   根据权利要求1所述的系统,其特征在于,所述系统还包括:至少一个使用C语言至硬件加速编译器生成的协处理器。

    说明书

    说明书SD卡控制系统
    技术领域
    本发明涉及嵌入式系统技术领域,特别涉及一种SD卡控制系统。
    背景技术
    随着电子工艺的进步,现代集成电路的集成度越来越高,电子设备和工控仪器等也越来越趋向于小型化、低功耗和多功能化,但同时要以更小的体积和功耗应对复杂环境下的数据采集和处理,对这些设备仪器的存储功能也有着越来越高的要求。SD卡(Secure Digital Memory Card)是一种基于半导体快闪存储器的存储设备,经过近些年的市场竞争,已经逐渐取代了SM卡(SmartMedia)、CF卡(Compact Flash)、MMC卡(MultiMediaCard)和记忆棒(Memory Stick)等闪存设备,成为当前最主流的小型非易失性存储设备。
    SD卡由于具备容量大、传输速率高、功耗低和体型小巧等优点,被广泛用于手机、数码相机等消费类电子设备以及工控仪器中,也逐渐被大多数嵌入式系统所采用。但对于嵌入式系统来说,体型、功耗和成本一直是系统需要严格控制的问题。目前,在众多的具备SD卡接口访问功能的产品中,一般都采用专用控制芯片来实现SD卡的读写控制。由于SD卡规范是几家生产厂商联合推出的规范,其控制芯片的研发和生产也由这些厂商所掌控,在嵌入式产品中采用这些专用控制芯片除了要支付额外的授权费用外,还需要在产品中预留出控制芯片的布设空间和电路走线,产品体积难以控制还明显增加了产品的硬件资源开销、设计成本和设计复杂度。此外,独立的芯片还需要额外的电能供应,增大了产品功耗;要想升级SD卡控制功能也只能依靠调整芯片进行,显然不能很好地满足今后产品的升级需求??杉?,现有的独立控制芯片方式并不适用于将SD卡应用于嵌入式系统中。
    发明内容
    (一)要解决的技术问题
    针对现有技术的上述缺陷,本发明为了解决现有技术中采用独立芯片控制SD卡不适用于嵌入式系统的技术问题,提供了一种SD卡控制系统。
    (二)技术方案
    为实现上述目的,本发明采用如下技术方案:
    一方面,本发明提供一种SD卡控制系统,所述系统采用SOPC架构,包括:封装在同一FPGA器件中的内核和SD卡控制器???,其中,
    所述内核为基于Avalon总线的嵌入式处理器,通过Avalon总线模式访问所述SD卡控制器???;
    所述SD卡控制器??楸环庾俺葾valon总线的存储器映射从端口,作为嵌入式外围设备供所述内核访问;所述SD卡控制器??榛雇ü齋PI总线连接SD卡,将所述内核的访问指令转化为对SD卡的数据交互处理。
    优选地,所述SD卡控制器??榘ǎ?
    SD卡访问工作逻辑单元,通过硬件逻辑控制SD卡的初始化、读、写、擦除操作,完成SPI总线模式下与SD卡的数据交互;
    寄存器单元分配???,配置和控制内部寄存器单元,使内核通过Avalon总线接口访问寄存器单元来控制所述工作逻辑单元;
    Avalon总线从设备接口,与内核通过Avalon总线进行交互,使内核能够访问到硬件内部寄存器单元,并对其进行读/写操作以控制所述工作逻辑单元。
    优选地,所述内核和所述SD卡控制器??楣钩伤鱿低车挠布?,所述系统还包括驱动层、应用程序接口层和用户层,其中,
    所述驱动层完成系统的硬件抽象,提供设备的驱动程序供上层应用访问所述硬件层;
    所述应用程序接口层为所述用户层的应用调用所述驱动程序提供驱动函数接口;
    所述用户层提供数据管理应用,基于用户的需求产生SD卡数据的控制指令。
    优选地,所述驱动层的所述驱动程序根据所述SD卡控制器??橹屑拇嫫鞯呐渲们榭龌贖AL开发。
    优选地,所述SD卡控制器??椴捎肰erilog硬件描述语言实现。
    优选地,所述内核为嵌入式软核处理器。
    优选地,所述FPGA器件为Altera FPGA器件,所述内核为NiosⅡ处理器。
    优选地,所述SD卡访问工作逻辑单元包括:SD卡初始化???、SD卡寄存器读???、SD卡写操作???、SD卡读操作??楹蚐D卡的擦除操作???,其中,
    所述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卡控制器???,该??橹С肿钚碌腟D卡物理层规范V2.0,并可根据需求进行升级,根据Avalon总线规范进行设计,满足对SD卡的基本控制。其中,运用最新软件开发平台Quartus II的SOPC Builder开发工具,选择经济型内核来构造一个基于Avalon总线的处理器,把SD卡控制器??榉庾俺葾valon存储器映射从端口,作为嵌入式外围设备以供处理器访问。针对上述封装形式,开发设备驱动并将其综合到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卡控制器??槭迪?,该??榛贏valon总线规范,采用Verilog硬件描述语言实现,负责接收NiosⅡ处理器的用户指令而对SD卡直接进行访问。SD卡控制器??榈恼鼋峁褂种饕扇糠肿槌桑篠D卡访问工作逻辑单元,完成SPI模式下与SD卡的数据交互机制;寄存器单元分配???,Avalon总线接口通过访问寄存器单元来控制工作逻辑部分;Avalon总线从设备接口,通过该接口使处理器能够访问到硬件内部寄存器,并且对其进行读/写操作来控制工作逻辑部分。
    进一步参见图2,该图描述了本发明中主要硬件??槎ゲ愕亩酝饨涌诠叵?,其中,图2a是SD卡控制器??槎ゲ愣酝饨涌诠叵?,图2b是NiosⅡ处理器硬件顶层对外接口关系。
    在图2a中描绘了用Verilog语言实现的SD卡控制器??榈亩ゲ愣酝饨涌诠叵档囊桓鍪道?,图2b则体现了图2a基于NiosII处理器在FPGA内部的??榛囊桓鍪道?,图2b说明了图2a的SD卡控制器??樵贔PGA内部和其他用户??榈慕涌诠叵?。SD卡控制器??橥ü齋PI总线对SD卡进行操作,通过Avalon总线与Nios处理器相连接收处理器的控制信号并在处理器与SD卡之间进行数据通信。具体地,在该SD卡控制器??橹?,与SD卡进行物理连接的线路信号和作为Avalon_MM(Avalon存储器映射)从端口的线路信号的定义及具体描述见表1所示。
    信号类型宽度方向描述CS1到SD卡SD卡的片选输入信号DI1到SD卡SD卡的数据输入信号SCLK1到SD卡SD卡的时钟输入信号VSS21到SD卡SD卡的电源地信号DO1到SD卡SD卡的数据输出信号reset1来自Avalon总线全局复位信号clk1来自Avalon总线Avalon从端口的同步时钟slave_chipselect1来自Avalon总线Avalon从端口的片选信号slave_address8来自Avalon总线Avalon从端口的地址信号线
    slave_write1来自Avalon总线写请求信号slave_writedata32来自Avalon总线对应写请求的数据总线slave_read1来自Avalon总线读请求信号slave_readdata32到Avalon总线对应读请求的数据总线
    表1SD卡控制器??橹邢呗沸藕诺亩ㄒ寮熬咛迕枋?
    本发明中,SD卡控制器需要为SD卡提供工作时钟SCLK,按照SD卡最新的物理层规范V2.0完成一系列对SD卡的访问操作,即对SD卡的访问工作逻辑;同时,??槟诓空攵許D卡的初始化、读、写、擦除等功能操作???,分别定义多个寄存器单元,并且编写Avalon总线接口机制,定义Avalon_MM从端口来提供合适的控制机制以及足够的带宽,其中设置读/写为零等待周期也就是读/写寄存器仅需要一个时钟周期,读和写没有建立、保持约束,且读不需要延时,最大效率地提高了系统性能。最终顶层NiosⅡ处理器的用户程序可以通过Avalon总线从设备接口对SD卡控制器??榉⒊鲋噶睿ㄒ簿褪谴佑没Р憷纯刂屏擞布愕墓ぷ鳎?,控制器就可硬件自动化地发出命令(通过DI管脚)和接收SD卡的响应(通过DO管脚),并且根据用户程序具体的读写数据请求进行数据的发送和接收,实现用户对SD卡的高效访问。
    在本发明一个优选的实施例中,对图2a中的RTL(Register Transfer Layer,寄存器传输层)功能??橹饕韵挛甯鲋饕δ苣?椋?
    SD卡初始化???,本??樯柚昧丝刂萍拇嫫骱妥刺拇嫫?,用于用户程序对初始化进程的控制和初始化过程的状态掌握。??樯杓拼由系绺次患觳獾娇?,按照命令?回答的SD卡SPI模式通信机制自动实现一系列的初始化流程,最终确定SD卡的版本状态,提交初始化过程信息报告给CPU,供用户程序对卡进行诊断并且确定下一步的可操作性。
    SD卡寄存器读???,本??樯柚昧丝刂萍拇嫫?、状态寄存器和读数据缓冲器,主要用于完成对当前SD卡的OCR(Operating Conditions Register,工作条件寄存器)、CSD(Card Specific Data Register,卡描述数据寄存器)和CID(Card Identification Register,卡识别码寄存器)各寄存器的状态信息读取,这些关键的卡信息将作为下一步对SD卡进行读写的主要约束条件。
    SD卡写操作???,本??樯柚昧丝刂破骷拇嫫?、状态寄存器和写数据缓冲器,根据用户的写数据需求,在顶层用户程序里往写数据缓冲器写入块/多块的数据信息,本??樽远词萘鞒?,并向CPU提交此次写操作的结果报告信息。
    SD卡读操作???,本??樯柚昧丝刂萍拇嫫?、状态寄存器和读数据缓冲器,用户在顶层用户程序里发出具体的读需求信息,本??樽远瓿啥許D卡的信息读取后指示CPU对读数据缓冲器的读取,过程中同样向CPU提交此次读操作的结果报告信息。
    SD卡的擦除操作???,本??樯柚昧丝刂破骷拇嫫骱妥刺拇嫫?,根据用户对SD卡数据块的擦除请求情况自动进行数据擦除操作,完成后提交擦除的结果报告信息。
    以上功能??橹械乃屑拇嫫飨晗阜峙湫畔⒓?所示。

    表2SD卡控制器??橹屑拇嫫鞣峙湫畔?
    通过以上5个主要功能??槎許D卡控制器的硬件实现,随后通过SOPC Builder中Component Editor(组件编辑器)把SD卡控制器封装成一个设备组件。封装时,组件编辑器的HDL Files选项卡导入SD卡控制器硬件实现的全部Verilog源文件;Signals选项卡设置了顶层组件SD卡控制器??橹忻扛鲂藕诺挠猛?,包括接口类型和信号类型;Interfaces选项卡将每一个信号分配到各个接口,并且根据SD卡控制器??橹卸訟valon_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卡控制器??橹卸訟valon总线的读写访问操作采用零等待周期、无读/写建立和保持约束、无读延时的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卡的访问控制,实现流程囊括设备驱动开发员和应用程序开发员的工作内容,方法科学灵活;采用封装硬件??榈絅iosⅡCPU构成片上软核SOPC系统的方式,结合用户程序采用最优的Avalon交换架构,使得在单芯片上对SD卡的访问效率非常高;由于是在一个芯片上实现了控制器硬件与CPU的融合,使得用户在后续的应用中可以集成更多的功能,维持和扩展了产品设计的生命周期;而且从硬件设计上采取的Avalon_MM从端口零等待周期、无读/写建立和保持约束、无读延时,极大地提高了CPU访问效率。总的来说,采用本实施方案基于NiosⅡSOPC的SD卡高效访问实现方法,作为SD卡接口电子产品中一种新颖的应用方式,在产品设计上减少了PCB设计的复杂程度,减小了开发难度,节约了设计成本,提高了产品的生命周期。
    以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利?;し段вτ扇ɡ笙薅?。

    关 键 词:
    SD 控制系统
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:SD卡控制系统.pdf
    链接地址://www.4mum.com.cn/p-5778614.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03