eMMC用于Host访问外部nand flash, 其结构图如下:
各个信号的描述如下:
CLK
用于从 Host 端输出时钟信号,进行数据传输的同步和设备运作的驱动。 在一个时钟周期内,CMD 和 DAT0-7 信号上都可以支持传输 1 个比特,即 SDR (Single Data Rate) 模式。此外,DAT0-7 信号还支持配置为 DDR (Double Data Rate) 模式,在一个时钟周期内,可以传输 2 个比特。 Host 可以在通讯过程中动态调整时钟信号的频率(注,频率范围需要满足 Spec 的定义)。通过调整时钟频率,可以实现省电或者数据流控(避免 Over-run 或者 Under-run)功能。在一些场景中,Host 端还可以关闭时钟,例如 eMMC 处于 Busy 状态时,或者接收完数据,进入 Programming State 时。CMD
CMD 信号主要用于 Host 向 eMMC 发送 Command 和 eMMC 向 Host 发送对于的 Response。
DAT0-7
DAT0-7 信号主要用于 Host 和 eMMC 之间的数据传输。在 eMMC 上电或者软复位后,只有 DAT0 可以进行数据传输,完成初始化后,可配置 DAT0-3 或者 DAT0-7 进行数据传输,即数据总线可以配置为 4 bits 或者 8 bits 模式。
Data Strobe
Data Strobe 时钟信号由 eMMC 发送给 Host,频率与 CLK 信号相同,用于 Host 端进行数据接收的同步。Data Strobe 信号只能在 HS400 模式下配置启用,启用后可以提高数据传输的稳定性,省去总线 tuning 过程。
EMMC的不同模式如下:
EMMC的读
EMMC的写
EMMC的command格式
Host的command是48bit的串行输入,格式如下
Device的response格式
数据格式
支持1bit databus,4bits databus和8bits databus的模式。比如下图的8bits SDR databus:
8bits DDR databus:
EMMC的总线Sampling tunning
emmc是clk+data的传输模式,host需要调整clk和data之间的相对相位,保证采样点在最佳位置。其tunning的过程如下:
1. Host 将采样时间点重置为默认值
2. Host 向 eMMC Device 发送 Send Tuning Block 命令
3. eMMC Device 向 Host 发送固定的 Tuning Block 数据
4. Host 接收到 Tuning Block 并进行校验
5. Host 修改采样时点,重新从第 2 步开始执行,直到 Host 获取到一个有效采样时间点区间
6. Host 取有效采样时间点区间的中间值作为采样时间点,并推出 Tuning 流程
tunning的调整是通过delay line实现的,其结构一般如下:
首先通过下面的main delay line的calibration(借助PD),可以得到多少个delay cells可以实现一个cycle的delay(输入clk和输出clk经过delay cells完全同相位);由此可以计算出一个delay cell可以delay clk多少相位(一个周期的几分之一);
EMMC的clk和data strobe信号是经过delay line的,根据上面Calibration的结果,在tunning的过程中可以调整delay line的delay cells个数,实现clk/data strobe的相位移动,从而实现clk/data strobe和data[0:7]之间的最佳采样点。
由此可将EmmC接口的ATE测试重点是delay line的测试,只要delay line是ok的,理论上clk和data之间的时序就是可以自动调整到最佳。
*免责声明:本 文源于李涛 ,点击原文阅读可以跳转原链接,转载仅是为了交流和学习,内容如有侵权,请联系本部删除!