基于Avalon总线的SD卡读写控制器的设计

2011-05-27 21:26:32来源: 现代电子技术

  0 引言

  当前,人们对大数据量的高速存取需求越来越高。SD卡作为新一代数据存储设备,具有大容量,高速度的特点,很好地满足了市场的具体需求,被广泛用于便携式消费类电子设备,例如手机,数码相机、PDA和各种多媒体播放器等。在工业控制领域,同样有大量数据需要采集,存储,分析。而传统用MCU的GPIO模拟SD卡的时序实现读/写调试复杂、读/写速度慢,已经不能符合大多数应用的需求。利用FPGA自身高速并行的特点,开发一种SD卡读写控制器的IP核,不但可以提高性能,而且可以简单实现IP复用,大大提高开发效率,降低成本,具有极大的应用前景。

  可编程的片上系统(System on Programmable Chip,SoPC)最先由Altera公司提出,它将尽可能大而完整的电子系统,主要包括NiosⅡ嵌入式处理器、各种硬件接口、数字信号处理系统、普通数字电路逻辑在单一FPGA芯片中实现。SoPC系统中的各个外设通过Avalon总线相连,可简单实现IP复用,因此,系统在开发周期、体积、功耗、功能、产品升级维护等多方面实现最优化,逐渐成为电子产品设计的趋势。

  1 Avalon总线简介

  Avalon总线是Altera公司专门为SoPC系统指定的一套总线标准,它定义了主从端口对之间通信的信号类型和时序关系。在结构上不同于传统的共享式总线:它在需要连接的每一个主从端口对之间都有点到点的连接,不同的主从端口对之间可以同时进行通信,所以大大提高了系统的性能。Altera一直在致力于为Avalon总线添加一些极其有用高级特性,简化系统设计的同时提高系统的性能。Avalon总线标准也在不断的升级完善,现在已经包含Avalon-MM接口规范和Aval-on-ST接口规范。

  在Avalon总线接口的设计中,SoPC Builder提供了直观的图形用户界面,设计人员可以很方便地添加自定义外设,SoPC Builder将自定义外设和其他组件组合起来,生成对这些组件进行例化的单个系统模块,并且自动生成内部总线逻辑,按照设计人员的要求将这些外设与NiosⅡ处理器连接起来,并自动完成外设和存储器的地址映射、中断控制和总线控制等工作。本文主要阐述了SD卡读/写控制器的AvaIon-MM总线接口和SD卡读/写控制逻辑的设计,以圾NiosⅡIDE中读/写控制程序的编写。

  2 SD卡的一般读/写过程

  SD卡有两种读/写访问模式:SD模式和SPI模式,其中SD模式又分为1 b和4 b两种。由于DE2开发平台硬件上的原因,该设计采用的是1 b的SD模式实现SD卡的读/写。SD卡在上电初期,卡主控通过检测引脚1(DAT3)的电平来决定使用SD模式还是SPI模式。

  SD总线上命令和数据的传输从一个起始位开始,以停止位终止。每个时钟周期传输一个命令或数据位。控制器通过CMD信号线发送命令到SD卡,用于对SD卡进行相应的操作,SD卡接收到命令后,会发送相对应的响应给控制器,这些响应中包含了SD卡的一些基本信息和状态信息等。SD卡初始化完成后,进入数据传输阶段,则可以进行读/写操作。为了避免命令,数据和响应传输的错误,SD规范中采用了CRC技术,在传输命令和响应时,需要进行CRC7效验,而在传输数据时,则需要进行CRC16效验。该控制器主要采用SD的CLK,CMD,DAT0三根信号线完成SD卡的读/写。

  3 SD卡读写控制器总体工作过程

  该控制器采用Verilog HDL语言编写,在SD卡就绪后,NiosⅡ处理器先向Avalon-MM Slave端口设置相关寄存器。状态控制逻辑根据寄存器中的相关位发送命令到读/写控制逻辑,再由读/写控制逻辑发送相应的命令到SD卡。命令在时钟信号CLK的上升沿经过CRC7校验后通过CMD信号线串行写入SD卡。SD规范中定义了很多命令,但这里仅用到了常用的10个命令就实现了读/写控制的功能,命令都要按一定格式顺序发送到SD卡,命令编号占6 b,每个命令必须填充开始标志,命令的参数以及CRC7校验数据以及结束标志,发送1个完整的命令需要写入48b。

  SD卡在接收到命令后,会根据写入的命令执行相应的操作,并发送相应的Response给控制器,其中Re-sponse也分为几种,包含长响应和短响应,Response中的数据包含了卡的一些基本信息以及命令的执行情况等。控制器根据返回的状态的信息决定下一步操作,即发送下一个命令。控制器内部总体结构如图1所示。

控制器内部总体结构

  控制器上电后自动进行初始化,将SD卡的状态保存到状态寄存器中,在进行读/写前,应先读取SD卡的状态信息,在SD卡进入了读/写就绪状态后,即可向Avalon-MM Slave端口写入读/写控制命令,具体包括要读/写的扇区号,读出数据或写入数据的存放地址。控制器在收到开始读/写命令后,开始读/写指定的扇区,控制器一次性读/写512 B,产生一个读/写完成的中断,即可以开始读/写下一个扇区。进行读操作时,控制器将从SD卡读出的数据通过AvaIon-MM Master端口写入所指定的地址处。进行写操作时,控制器通过Avalon-MM Master端口将指定内存地址处的数据写入SD卡。控制器整个读/写过程无需CPU干预,由Master端口主动完成,CPU仅需写入相关控制命令,大大提高了CPU的利用率。

[1] [2] [3]

关键字:Avalon  SoPC  SD卡  读写控制器  FPGA

编辑:小甘 引用地址:http://www.eeworld.com.cn/FPGA/2011/0527/article_2154.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Avalon
SoPC
SD卡
读写控制器
FPGA

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

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