当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于ARM9的SD/MMC卡控制器的ASIC设计

摘 要:文章阐述了基于TD-SCDMA手机数字基带芯片中SD/MMC卡控制器的工作原理与应用,利用Verilog硬件描述语言对其实现。运用ModelSim进行了功能仿真,利用SMIC0.13微米工艺库和SYNOPSYS的EDA工具对其综合。经过FPGA验证,确保该控制器作为一个独立的IP核可嵌入到ASIC系统中,符合最新的SD1.0标准和MMC3.31标准。

0 引言

如今多媒体数码产品的迅猛发展,其中,各种音频视频等功能的不断增强,使得系统对于存储介质的性能,容量,安全等方面的要求与日俱增。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 校验的子模块。

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提供外接扩展存储卡的功能,且具有广泛的可靠移植性用于其他芯片中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着信息化时代的到来,信息安全已成为人们关注的焦点。密码杂凑算法作为信息安全领域的重要工具,在数据完整性校验、数字签名等方面发挥着至关重要的作用。SM3杂凑算法作为我国自主研发的密码杂凑算法,具有较高的安全性和性能,在保...

关键字: SM3杂凑算法 ASIC设计

随着新能源汽车技术的飞速发展,燃料电池汽车作为一种环保、高效的新型汽车类型,越来越受到社会各界的关注。而整车控制器(VCU)作为燃料电池汽车的核心控制单元,其性能的稳定性和可靠性直接关系到整车的安全、高效运行。因此,建立...

关键字: 新能源 燃料电池 控制器

2024年6月18日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子 (Mouser Electronics) 即日起开售Siemens LOGO!Power微型电源。该产品采用扁平、阶梯式外形设计...

关键字: 微型电源 控制器 包装机

CIPOS™ Mini IM523系列是一个全新的智能功率模块(IPM)系列,这些产品采用完全隔离的双列直插式封装,通过集成第二代逆导型IGBT,可以实现更高的电流密度和系统能效。IM523智能功率模块具有一个带自举功能...

关键字: 功率模块 硅栅极驱动器 控制器

上海2024年6月11日 /美通社/ -- 2024年6月5日,上海国际碳中和技术、产品与成果博览会在上海新国际博览中心正式开幕。作为安全与可持续发展世界里的全球合作伙伴,D...

关键字: 西门子 可持续发展 DES 控制器

一直以来,嵌入式四轴运动控制器的设计都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来嵌入式四轴运动控制器系统硬件设计的相关介绍,详细内容请看下文。

关键字: 嵌入式 控制器 运动控制器

爱普 UHS PSRAM拥有更强性能、低功耗、少引脚数特点,瞄准物联网应用场景 新竹2024年6月6日 /美通社/ -- 全球客制化存储芯片解决方案设计公司爱普科技与硅知识产权(SIP)、平台与IP设计服务供货商Mob...

关键字: PSRAM SoC 控制器 低功耗

台湾新竹-2024 年 5 月 30 日 - 全球嵌入式控制器Embedded Controller及secure IC解决方案领导者新唐科技股份有限公司(Nuvoton Technology Corporation)宣...

关键字: 嵌入式 控制器 安全芯片

【2024年4月10日,德国慕尼黑讯】英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出了业界首款-48 V宽输入电压数字热插拔控制器XDP700-002,扩展了其XDP™数字功率保护控制器系列...

关键字: 控制器 晶体管 5G
关闭
关闭