基于FPGA技术实现SD模式设备接口的设计方案

sd存储卡接口定义了两种通信模式,sd模式和spi模式。分析了sd传输协议后,给出了一种sd模式设备接口的设计方案。该设计能够自动解析主机发送的命令并响应,与flash控制器相连后可以对flash进行读写操作。为了解决数据存取的时序问题,使用了数据缓存技术。fpga验证表明,该接口能够被电脑识别为sd卡,达到了设计目标。
1、引言
sd卡(secure digital card)是“安全数码存储卡”的简称,于1999年8月由美国sandisk公司、日本东芝和松下公司共同开发研制成功。随着数码产品的广泛使用,目前sd卡已经成为消费数码产品设备中最广泛的一种存储卡。在手机中,大量的安全增值业务设计就是通过sd接口实现的。sd物理层规范定义了两种可选择的通信协议:sd模式和spi模式。
本文在研究了sd物理层规范的基础上,实现sd设备接口sd模式的前端设计,并进行了fpga原型验证。
2、sd存储卡接口sd模式介绍的书写规则
sd卡与控制器之间通过以下9线连接:时钟clk、命令cmd、数据d0~d3、电源vdd和两根地线vss。其总线拓扑结构如图1所示。命令和响应在cmd线上传输,数据在d0(标准总线模式)或d0~d3(宽总线模式)线上传输。
sd卡的所有命令都是6字节长度。一个命令总是以起始位(0)开始,后跟传输方向位(1),接下是6位命令索引,然后是32位命令参数,crc7校验位,结束位(1)。sd的响应分为r1、r1b、r2、r3、r6、r7六种,其中r1、r1b、r3、r6、r7为6字节长度。r2为17字节长度,用于读取sd卡的cid/csd寄存器内容。一个响应总是以起始位(0)开始,后跟一个传输方向位(0)。除了r3响应类型,所有的响应都有crc保护。以一个结束位(1)结束。sd数据传输以块为单位,每个块总是由数据起始位(0)、数据位、crc16校验位和数据结束位(1)组成。
图1 sd卡sd模式的总线拓扑结构
3、整体设计架构
本设计的一端为sd存储卡标准接口,与读卡器连接。为了使接口有通用性,另一端与flash控制器连接,从而达到与不同型号flash连接的目的。本设计是连接读卡器和flash控制器的一个中间模块。能够对读卡器发送的命令进行解析并响应,通过flash控制器对flash进行读写操作。整体设计方案如图2所示。
图2 设计方案
4、 结构设计
根据sd接口功能,将其进行详细的划分,由以下几个部分组成:命令收发模块,数据收发模块,状态控制模块和校验模块。sd模块结构如图3所示。
4.1 命令收发模块
该模块的结构如图4所示。命令接收与响应发送都是在命令线cmd上传输的,所以该端口为一个三态门,由输出使能信号en控制是否输出。命令接收时,首先检测命令起始位,检测到起始位后计数器开始工作。当接收完一个完整命令,发出接收完成信号end,分别得到移位寄存器中对应的命令索引,命令参数,命令校验。命令接收过程中,同时将数据传给crc7校验模块,用于生成校验数据。响应发送时,模块根据状态控制模块给出的响应类型产生对应的响应内容,当接收到发送使能信号start后,给出发送使能信号en,并将响应的内容通过移位寄存器发送出去。响应内容发送完成后给出响应完成信号rsp_over。
图3 模块结构
图4 命令接收与响应模块
4.2 数据收发模块
该模块的结构如图5所示。数据线也是双向的。width信号指明当前数据传输模式为标准总线模式或宽总线模式。size信号指示每个数据块包含的字节数。该模块包含两个数据缓冲,接收缓冲rxfifo和发送缓冲trfifo,数据缓冲位宽16比特,深度为256,这是因为数据块最大为512字节。数据接收状态时,首先检测数据起始位,检测到起始位后计数器开始工作。接收size个字节的数据后,接收crc16校验位,最后完成数据块接收,发出接收完成信号end。数据接收过程中,每接收16位数据给出写入信号wr,将数据写入rxfifo。如果rxfifo满,给出busy信号,主机进入数据发送等待。数据发送状态时,接收控制器收到start信号后,开始发出rd信号读取trfifo数据,并将数据传给移位寄存器,使能数据输出控制信号out_en,移位寄存器根据数据传输模式将数据输出。
图5 数据收发模块
4.3 状态控制模块
根据接收模块传送的命令编号产生与之对应的命令响应类型,进一步解析接收模块传送的命令参数。工作过程共有9个状态,状态间的转移关系如图6所示。接收到cmd0命令后都会从其它状态进入到空闲状态。
图6 状态转移
4.4 校验模块
crc7负责校验命令收发模块中的命令和响应;crc16负责校验数据收发模块中的数据。
5、 验证与测试
开发测试平台使用的是altera的cycloneii系列fpga开发板。开发板上有一个sd接口。测试平台的实物如图7所示。开发板可以通过一个pcb板sd接口与电脑sd接口连接,利用电脑对设计进行验证。
图7 测试平台
在硬件调试过程中,采用内嵌式逻辑分析仪(signaltapii)来采集相应的数据波形。图8是采集到的识别sd卡命令与响应波形图。从图中可以看出,该设计可以正确响应主机命令,完成识别过程。
图9中虚线所圈是将设计下载到fpga开发板,与电脑相连接后被识别为sd存储卡标记,可以看出该设计可以被电脑正确识别。
6、结束语
本文实现了一种sd存储卡接口sd模式ip核的设计与实现。该设计能够对主机命令进行自动解析和回复,与flash控制器连接后可以直接对flash进行读写操作。对该设计进行fpga功能验证,能够被电脑识别为sd接口,从而说明的设计的正确性和实用性。利用synopsys公司的eda工具对该模块进行综合,并进行时序和面积的优化,在smic0。18μm工艺下最大工作频率为100mhz,整个设计综合后为0.6万门。
图8 通信过程
图9 电脑识别


云存储管理之Azure Managed Disks分析
华为“天生会画”数字创作大赛完美收官,相聚中国动漫博物馆共话数字化创作价值
如何在RT-Thread OS环境下使用ncnn进行AI推理
5G改变社会将是一个长期渐进式的过程
结合IMOS IP多媒体应用的监控管理平台软件的发展趋势
基于FPGA技术实现SD模式设备接口的设计方案
油浸式变压器高压套管漏油的治理方法
制造业转型期 职业教育为关键
简单电路测量电池消耗
浅析无源雷达的定义及其发展状态
uln2003和51连接电路分析
螺杆压缩机轴封位气蚀磨损原因及维修步骤
电动球阀的正确安装方法是怎样的
典型LED驱动电路图分享
Facebook计划推出Oculus Go和Oculus Quest虚拟现实头显的企业版
三星推出Gear Fit2和IconX可穿戴设备
全新小米路由器高清拆解图集
工业互联网平台需要具备四个基本功能
什么是电动助力车?电动助力车国家标准及内容
国产工控主板的优势都有哪些呢?