基于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

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 

夏宇闻老师专栏

你问我答FPGA设计

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

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