sd和emmc如何进行tuning

一、为什么需要tuning

clipboard.png

1、主机有一个时钟发生器,它提供 SDCLK到卡

2、在写操作时,时钟和数据方向是一致的,因此写数据可以由 SDCLK 同步进行传输而不用关心传输线延时

3、在读操作时,时钟方向和数据方向是相反的,主机接收的读数据被往返延时(round-trip delay) ,输出延时以及卡和主机的延时所延迟。

所以主机关键之处在于数据的接收,主机需要具有一个采样时钟发生器,用来接收响应, CRC 状态以及读数据块

二、sd卡tuning原理

通过前面的描述知道,在接收数据的时候,clk和数据之间有延时,所以需要调整这个延时,获取到最佳的采样点

方法1:

clipboard.png

1、主机使用一个可变采样时钟发生器来决定采样点。主机可以通过 CMD19 tuning 命令读取预先定义并保存在卡中的 tuning block,用来辅助找到采样点。

2、该方法可以用于所有频率范围。当频率为低于 25MHz 的低频时,主机不需要 tuning 就可访问卡。

方法2:

clipboard.png

1、需要额外2个pin实现clk的loopback

一般应该都是使用的方法1,而且方法1紫色的延时是自动调整的,不需要软件干预

三、sd卡的turning过程

流程框图

clipboard.png

软件流程:

1、SDR104需要进行tuning

2、SDR50可以选择是否进行tuning,通过SRS17.UTSM50(use tuning for SDR50)进行确认是否需要tuning(1需要,0不需要)\

3、cdns的ip没有SRS12_RETUNING_EVENT这个功能,通过看rtl该功能被屏蔽,12bit没有使用,文档上确实也没有

clipboard.png

4、正式流程:

(1)SRS15.SCS(Sampling clock select)清0

该bit为1代表tuning流程成功完成,否则流程失败,并且tunling逻辑的clk会关闭

写0会复位并且关掉tuning模块

(2)SRS15.EXTNG(Execute Tuning) 置1

SCS = 0, EXTNG = 0 - Reset and disable clock tuning logic

SCS = 0, EXTNG = 1 - Reset and restart tuning process

SCS = 1, EXTNG = 0 - Stop tuning procedure

SCS = 1, EXTNG = 1 - Start retuning (without clock tuning logic reset)

配置为0,1即Reset and restart tuning process

(3)

判断SRS15.EXTNG的值是否为1,如果为1,循环执行40次,每次发送CMD19命令,判断CMD19是否执行成功

如果40次完成或者CMD19失败,或者SRS15.EXTNG为0,均会退出40次的循环

如果40次成功执行,并且SRS15.SCS为1,则sd卡的tuning成功,否则失败

注意:

CMD19需要在1.8V的transfer状态下且卡处于unlock状态下发送,其他情况下是非法的。

卡应该在150ms内完成40次CMD19命令

(4)CMD19

clipboard.png

clipboard.png

clipboard.png

疑问:

通过上面的流程,phy是怎么调整采样点的?自动调整的吗?上面的流程看软件并没有修改phy寄存器

clipboard.png

四、emmc tuning

流程框图

clipboard.png

软件流程:

(1)HS200,HS400需要进行tuning,HS400ES不需要tuning

(2)HS400当需要tuning是需要调用mmc_hs400_to_hs200切换到hs200进行tuning

执行完成后再调用mmc_hs200_to_hs400进行恢复

(3)从cdns的寄存器看,tuning主要是配置dqs的延时,但是HS200和HS400并没有strobe信号,是怎么生效的呢?

从phy手册看,DQS有3种来源,1是外部strobe,2是phony dqs, 3是lpbk_dqs(推荐),如果没有strobe信号,可以使用另外两个内部的信号,所以HS200和HS400应该调整的是内部的延时,个人理解在tuning只在read的时候才需要,因为read的时候数据和cmd是dvice发送过来的,clk也是参考的device,所以对host来说data和cmd跨时钟域了,所以需要调整内部的lpbk_dqs去适配clk

但是调整之后,host和device的clk可能有偏移,所以需要定时的tuning才行

(4)如何判断最佳采样点

发送40次后,会参数40个结果,1代表成功,0代表失败,找到1最多的地方,并且取中间值,对应的pos就是最佳参数,把该参数进行赋值到对应的寄存器中

clipboard.png

(5)CMD21

clipboard.png

clipboard.png

clipboard.png

posted @ 2023-02-08 11:05  drm2017  阅读(761)  评论(0编辑  收藏  举报