基于ARM9的SD/MMC卡控制器的ASIC设计

发布者:delta14最新更新时间:2011-09-21 关键字:ARM9  ASIC设计 手机看文章 扫描二维码
随时随地手机看文章

  引言

  如今多媒体数码产品的迅猛发展,其中,各种音频视频等功能的不断增强,使得系统对于存储介质的性能,容量,安全等方面的要求与日俱增。MMC卡和SD卡均是基于flash的存储设备,近年来,它们以高存储容量,快速的数据传输速率,加上极大的移动灵活性和更高的安全性已经成为闪存市场的标准,其广泛应用于手机,MP3,MP4,掌上电脑等各种产品中。可见,其已经成为面向便携式数码电子产品的SOC芯片中通用的功能接口。

  文章设计的SD/MMC控制器基于一款3G手机基带芯片,其内核采用ARM926EJ,系统总线架构为AMBA,控制器连接到APB总线上。通过分析SD卡和MMC卡的规范,利用Verilog HDL实现了符合该规范的SD/MMC卡控制器IP核,该IP在SMIC的0.13um标准单元工艺库下对模型进行了综合和优化。

  1 SD/MMC卡控制器工作原理

  SD(Secure Digital)卡和MMC(Multi Media Card)卡是市面上常见的两种数据存储卡。SD卡向下兼容MMC卡。

  两者基本特性相同,只是在数据接口以及传输模式上有一些区别:SD卡的数据线为4根,而MMC卡只有1根;SD卡支持安全性保护;而MMC卡支持比特流传输(不限长传输,即必须接受到停止命令时才停止传输)。

  控制器就是通过SD/MMC总线对SD/MMC卡进行初始化,读,写等一系列操作。其总线包括时钟线CLK,命令线CMD,数据线DAT3-DAT0(MMC卡只有DAT0)等。上电后,控制器必须按一定的总线协议传输命令给卡,使其初始化。总线上一共有三种数据格式:命令包,响应包,数据包。由于在传输中数据和命令均有可能出错,命令带有7位的CRC校验码,数据带有16位的CRC校验码。

  控制器对卡进行读操作时,将接收到的串行数据(可能是比特流,也可能是多块)转换为并行数据,存入FIFO.写操作也是相同的,控制器将并行数据从FIFO里面取出,串行发出。

  SD/MMC 卡的工作时钟来源于控制器,对卡的命令或数据传输等一系列操作均要与该时钟同步。该时钟可以通过控制器进行配置,以适应不同工作状态中卡正常工作所需的不同时钟频率。需要注意的是,SD 卡的最大工作频率是25Mhz,MMC 卡的最大工作频率是20Mhz.

  总之,控制器不仅要输出合适的工作时钟,还要完成对命令/响应以及数据读写的正常工作,并针对命令和数据进行CRC 校验,中断的及时产生和清除。

  2 控制器设计与实现

  2.1 模块划分

  在整个SOC 中,我们这片TD 基带芯片采用的是ARM926EJ-S 内核,系统架构为AMBA 总线。在设计中,将SD/MMC 卡控制器作为APB 的SLAVE 挂在APB 总线上,ARM 通过APB 总线来访问和控制该模块。本模块主要分为接口模块,CMD 控制模块及DATA 控制模块三部分。其结构框图如图1 所示。

 

图1 SD/MMC 控制器结构

  接口模块实现与ARM 的APB 总线相连接,通过该模块,ARM 可以对相应寄存器进行读写,从而实现对本模块和外部存储卡的控制。其读写时序按照APB 总线读写时序,具体见文献。

  CMD 控制模块主要发送和接收CMD 线上的信号。控制器发送给卡的命令长度固定为48bit,而从卡接收到的响应长度不固定,有短应答(48bit)和长应答(136bit)之分。

  其中,包含CRC7 的子模块,不管是命令还是响应,均要用到CRC 校验。

  DATA 控制模块主要是通过RXDATA 数据线接收数据,并通过TXDATA 发送数据。主要的数据传输方式有两种:比特流数据传输和多块数据传输,另外,该控制器还支持无响应包数据传输。为确保传输的正确,包含了CRC16 校验的子模块。[page]

2.2 CMD控制模块的设计

  由于SD/MMC 卡的操作命令不一致,在模块中并没有对命令作译码,而是通过软件来设置命令的类型。单块(signalblock data)读数据命令(CMD17),写数据命令(CMD24);多块(multi-block data)读数据命令(CMD18),写数据命令(CMD25)等需要控制模块根据SD_CMD_INDEX 寄存器的内容来发布相应的命令,并作不同的状态转换。CMD 控制模块的状态转换图如图2 所示。

 

图2 CMD 控制模块的状态转换

  2.3 DATA控制模块的设计

  本模块主要功能是向卡发送数据和从卡读取数据,另外,针对SD 卡该模块可以通过DATA[3] 检测卡是否插入,通过DATA[2]发送读等待信号,通过DATA[1]接收卡送来的中断信号以及通过DATA[0]来检测卡是否处于忙状态。

  APB 总线上还有其他一些功能模块,如SPI 接口控制器,CAMERA 控制器等,由于不能一直占有总线,在对卡进行读写的同时,来不及处理及时收到的数据或来不及获取新的发送数据,所以我们采取数据缓存,添加一个64 bytes的FIFO。

  控制器对卡进行读操作时,需要先发送CMD9 命令,获得卡的CSD 寄存器数据,其中包含了卡的数据长度,卡存储容量,卡最大时钟速度等。控制器可以持续进行数据读取,直到向卡发送停止传输命令;或者读取指定个数的数据块。

  读数据过程中,如果卡检测到错误,如超出范围,地址对齐错误等,卡会停止数据发送,停在sending-data 状态,控制器需要发送停止传输命令,此时,卡会将错误信息,通过响应返回给控制器。

  控制器可以对卡持续进行写数据操作,直到向卡发送停止传输命令;或者指定个数的数据块写完。写数据过程中,如果卡检测到错误,如写保护,地址超出范围,地址对齐错误等,卡会停止数据的接收,停在Receiving-data 状态,控制器需要发送停止传输命令,此时卡会将错误信息,通过响应包返回给控制器。一个数据块写完后,卡需要一段时间将这块数据写到内部Flash 中,控制器需要查询卡的状态,等卡写完数据后,才能发送下一个命令。

  2.4 CRC的算法设计

  在CMD控制模块和DATA控制模块中均用到CRC校验。CMD控制模块中用的是CRC7,其公式是G(x) = x7 + x3 + 1。实现其算法的逻辑图如图3。

 

图3 CRC7 生成逻辑

  在DATA 控制模块中用的是CRC16,其公式是G(x) = x16+ x12 +x5 +1。算法逻辑图同CRC7类试,这里我们不再赘述。

  两种校验本质相同,后者精度更高,适应数据尤其是长数据的传输校验。

  3 功能验证与综合

  使用Mentor 公司的ModelSim 软件进行仿真,该软件许可在PC、Solaris、HP-UX 或Linux 平台上使用,支持VHDL或Verilog 硬件描述语言(HDL)仿真。它支持所有器件的行为级仿真和VHDL 或Verilog 仿真激励。

  为了测试设计的正确性,编写了testbench 模块,其中包括一个用HDL 描述的SD 卡的原型(使得控制器能够对该卡进行操作),包括产生时钟信号,输出命令,读写的数据,产生的中断等。下面以测试SDMMC 读写寄存器,发送命令接收响应,4 线块数据(block data)传输等为例来说明:

  当满足片选信号后,APB 总线对内部寄存器先进行配置,然后确定命令的发送,并附上CRC7 的校验码,最后接收响应和响应的CRC7 校验码。

  对流传输,单块,多块数据等所有传输方式进行完仿真,利用目前业界最流行的综合工具:SYNOPSYS公司的DesignCompiler对其综合。经过对Script脚本约束的设定,通过DC将控制器的时序和面积进行优化,工作频率满足手机基带芯片频率125Mhz(最高可到200以上),面积在3万门,比主流的4万门有所降低,节省了面积。

  最后采用Xilinx公司的xc4vlx200-10ff1513芯片进行FPGA验证,测试结果表明该控制器可以对市面上主流SDMMC卡进行数据传输,符合整个SOC的要求。

  4 结语

  验证结束后,利用中芯国际的0.13um的工艺库对上面的设计进行封装制造,就实现了最新的SD1.0和MMC3.31协议,并将其嵌入到ASIC中,使得TD终端具有外部扩展存储性,节约用户开销。不仅如此,该控制器可作为一个成熟的IP核,移植到各种基于多媒体处理的ASIC芯片中去,其应用十分广泛。

  作者创新点:该IP核的设计,为TD-SCDMA终端基带芯片以及类似手持SOC提供外接扩展存储卡的功能,且具有广泛的可靠移植性用于其他芯片中。

 

 

关键字:ARM9  ASIC设计 引用地址:基于ARM9的SD/MMC卡控制器的ASIC设计

上一篇:S3C4510B型ARM微处理器最小系统构建
下一篇:Intel最新技术曲高和寡 与ARM竞争陷入僵持

推荐阅读最新更新时间:2024-03-16 12:41

基于ARM9:Thumb指令系统和ARM指令系统
1.首先说说是什么? 是指令集。 是ARM体系结构为了兼容数据总线宽度为16位的应用系统而产生的; 是ARM指令集的自指令集,每个Thumb指令在ARM指令集中都有对应的指令; 2.分析Thumb指令和ARM指令时间效率和空间效率关系如下: –Thumd代码所需的存储空间约为ARM代码的60%~70% –Thumb代码使用的指令数要比ARM代码多约30%~40%; 使用32位存储器,ARM代码比Thumb代码快约40% 使用16位存储器,Thumb代码比ARM指令快约40%~50% 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30% 在程序程序设计时,若对系统性能要求比较高,则要使用ARM代码;若多成本和功耗要求较
[单片机]
基于ARM9处理器的家用远程医疗监护终端设计
远程医疗是网络科技与医疗技术相结合的产物,随着我国经济的发展、科技的进步以及进入老龄化社会的需要,发展远程医疗已成为一种必然趋势。远程医疗从使用对象上可分为:面向医院的远程医疗系统和面向家庭的远程医疗系统。面向家庭的远程医疗系统的功能包括:远程“看医生”、远程监护、远程医学信息查询 /咨询等。   国外的远程家庭医疗更加注重远程“看医生”,个人/ 患者在家中就可与医生进行实时语音、图像信息交流,可实现在线检测人体生理信号并给出诊断。这种系统是以视频会议系统为核心,但目前还难以在我国普及,原因一是该系统的价格太贵,一般家庭承受不起;原因二是受到通信信道带宽的限制,国外一般使用综合业务数字网(ISDN),而我国现在普及到家庭的是普通
[医疗电子]
基于<font color='red'>ARM9</font>处理器的家用远程医疗监护终端设计
探究最佳的结构化ASIC设计方法
由于与深亚微米标准单元ASIC相关的非重复性工程费用(NRE)越来越大,设计周期又很长,因此利用结构化ASIC进行定制IC设计的吸引力正变得越来越大。结构化ASIC能以极具竞争力的单位成本提供优秀的硅片性能,并且NRE费用极低。结构化ASIC的多样性意味着它即可以用作系统主芯片,也可以用作高性价比的小型辅助芯片。 许多物理设计问题在结构化ASIC的片设计中已经得到解决,因此后端版图设计的时间可以大大缩短,从而导致更快的验证确认和原型提供。不过ASIC片具有预定义的结构,因此设计师必须合理安排芯片资源才能获得理想的性能。 FPGA是ASIC的另外一个替代品,它们一般基于查找表和可配置的逻辑单元。与相应的ASIC技术相比,FPGA的
[应用]
详解ARM9的CPSR寄存器
最近在学习嵌入式底层系统开发,在写启动代码时要设置各个模式的SP,需要调整CPU的工作模式,部分代码如下: view plain copy print ? pre name= code class= plain .equ DISABLE_IRQ, 0x80 .equ DISABLE_FIQ, 0x40 .equ SYS_MOD, 0x1f .equ IRQ_MOD, 0x12 .equ FIQ_MOD, 0x11 .equ SVC_MOD, 0x13 .equ ABT_MOD, 0x17 .equ UND_MOD, 0x1b /pre pre name= code clas
[单片机]
详解<font color='red'>ARM9</font>的CPSR寄存器
ARM9(S3C2440)的串口UART——程序实例讲解
串口通信程序编写步骤 UART通信程序可以采用查询、中断和DMA模式。我们通过使用较多的中断方式来介UART通信程序的编写。简单做法是,UART通信程序的编写参照例子程序。 选通道,通过函数Uart_Select();选UART0~UART2; 选波特率和波特率发生器时钟,选波特率通过函数Uart_Pclk_En(int ch, int baud)或Uart_Pclk_En(int ch, int baud)来进行。时钟选UCLK ,rUCON0|=0x400;时钟选PCLK ,rUCON0&=0x3ff。 通信协议(rULCON0)设定,如果正常通信,一位停止位,8位数据位,无奇偶效验: rULCON0=(0 6)|(0
[单片机]
ARM9嵌入式系统在励磁调节装置的应用
前 言   励磁系统是发电机组重要的辅助装置,它对发电厂的自动化、发电机组运行的可靠性有着重要作用。随着科学技术发展,励磁方式已从直流电机励磁系统发展到可控硅励磁,自动调节器从原来的模拟式发展到微机数字式。   本文所研究的励磁调节装置,它是以经典和现代控制理论与数字信号处理器DSP技术与嵌入式技术相结合的微机励磁调节器。它继承了过去的微机励磁调节器的全部调节、控制及限制保护功能,同时在计算速度、抗电磁干扰、可靠性等方面有了极大的改进,有效保证整个系统调节、控制功能的实现; 外围采用先进的大规模可编程逻辑器件,以提高整个系统的可靠性,并形成对用户开放的逻辑系统。 1、励磁调节器的组成原理 图1 励磁调节系统原理图   所示
[单片机]
<font color='red'>ARM9</font>嵌入式系统在励磁调节装置的应用
基于ARM9嵌入式的RS485总线接口设计
随着ARM处理器应用的范围的不断深入,根据需求的不同ARM提供的外设也越来越丰富,常用的通信接口有RS232、RS485、CAN、以太网等。RS485总线凭其传输距离远、抗干扰能力强、价格低廉等优点在各种工业场合得到广泛的应用。设计使用ARM9处理器S3C2440内部集成的UART外设和RSM485模块构建具有电源隔离、电气隔离、总线保护的RS485总线接口,通过对嵌入式Linux系统RS232驱动程序的修改,使的在通过该修改后的串口驱动程序发送数据时,自动控制IO来实现RS485通信的方向控制,从而简化了RS485通信的控制流程,Linux下RS485通信程序通过对该串口的读写,实现与RS485总线上的其他设备通信。 1.通
[单片机]
基于<font color='red'>ARM9</font>嵌入式的RS485总线接口设计
基于ARM9的音频系统设计
1 引言   随着 Internet技术和多媒体技术的快速发展,语音通信技术的应用越来越广泛,也越来越受到重视 。如今的嵌人式设备日益复杂化,功能比以前更加丰富,性能也越来越高。在多种嵌人式终端产品中,音频处理功能已成为不可缺少的重要组成部分,高质量的音效是当前发展的重要趋势。   本文利用 ATMEL公司 的 AT91RM9200型微处理器 和 Philips公司的 UDA1341型立体声音频编解码器设计了一种嵌入式音频系统。该嵌入式音频系统硬件部分采用基于IIS总线的音频系统体系结构,其主要硬件电路后文作了详细的介绍。软件上,笔者以嵌入式Linux操作系统作为平台,重点介绍该音频系统在此平台下的驱动程序的实现。   2
[模拟电子]
基于<font color='red'>ARM9</font>的音频系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved