1.前言
本文主要介紹eMMC 總線協定相關的内容,主要包括:
(1)command token format
(2)response token format
(3)data packet format
(4)CRC token
(5)bus speed mode
2. command token format

圖 cmd token format
- 總長度48bits;
- 固定以0開始,以1結束;
- transmiter bit表示資料的傳輸方向,1代表從host to device;
- 通過CRC7保護,device 端在接收到CMD時同樣會計算一個CRC值,如果與host發送的CRC不一緻,則被認為是傳輸錯誤;
詳情請參考 eMMC基礎技術3:eMMC command
3. response token format
圖 response token format
- 有5種格式,使用哪種格式依賴于CMD,長度為48bits或136bits;
- start bit 總是0,在沒有資料傳輸的情況下,CMD 信号保持高電平,當 eMMC Device 将 Start Bit 發送到總線上時,Host 可以很友善檢測到該信号,并開始接收 Response
- transmitter bit代表傳輸方向,0表示device to host;
- Content 為 Response 的具體内容,不同的 Command 會有不同的 Content
- CRC7 是包含 Start Bit、Transmission Bit 和 Content 内容的 CRC 校驗值
- End Bit 為結束标志位,固定為"1"。
4. data packet format
(1) 1bit sdr傳輸
圖 1bit bus sdr傳輸
start bit + data + crc + end bit
1bit sdr隻使用了DATA0資料線,對于1個block(block length=512BYTE)來講,需要花費block length * 8 cycles
(2)4bit sdr傳輸
圖 4bit bus sdr傳輸
對于1個block(block length=512BYTE)來講,需要花費block length * 8 / 4 = block length *2 cycles
(3)8bit sdr傳輸
圖 8bit bus sdr傳輸
對于1個block(block length=512BYTE)來講,對于1個block(block length=512BYTE)來講,需要花費block length * 8 / 8 = block length cycles
(4)4bit bus ddr傳輸
圖 4bit bus ddr傳輸
ddr傳輸時,上升沿和下降沿都會傳輸資料,對于1個block(block length=512BYTE)來講,需要花費block lenght * 8 / 4 / 2 = block length cycles
(5)8bit bus ddr傳輸
圖 8bit bus ddr傳輸
ddr傳輸時,上升沿和下降沿都會傳輸資料,對于1個block(block length=512BYTE)來講,需要花費block lenght * 8 / 8 / 2 = block length / 2 cycles
在 DDR 模式下,Data Line 在時鐘的上升沿和下降沿都會傳輸資料,其中上升沿傳輸資料的奇數位元組 (Byte 1,3,5 ...),下降沿則傳輸資料的偶數位元組(Byte 2,4,6 ...)。
此外,在 DDR 模式下,1 個 Data Line 上有兩個互相交織的 CRC16,上升沿的 CRC 比特組成 odd CRC16,下降沿的 CRC 比特組成 even CRC16。
odd CRC16 用于校驗該 Data Line 上所有上升沿比特組成的資料,even CRC16 則用于校驗該 Data Line 上所有下降沿比特組成的資料
(6)8bit ddr for hs400
圖 8bit ddr for hs400
hs400 高電平或低電平用于傳輸資料,對于1個block(block length=512BYTE)來講,需要花費block lenght * 8 / 8 / 2 = block length / 2 cycles
5. CRC status token
在寫資料傳輸中,eMMC Device 接收到 Host 發送的一個 Data Block 後,會進行 CRC 校驗
- 如果校驗失敗,device則會在對應的 Data Line 上向host發送一個 Negative CRC status token (101)
- 如果校驗成功,device則會在對應的 Data Line 上向host發送一個 Positive CRC status token (010)
注:讀資料時,Host 接收到 eMMC Device 發送的 Data Block 後,也會進行 CRC 校驗,但是不管校驗成功或者失敗,都不會向 eMMC Device 發送 CRC Status Token
詳細格式如下圖所示:
圖 DR52 Positive CRC status token
圖 DDR52 Negative CRC status token
6. 參考文檔
[1]http://www.wowotech.net/basic_tech/emmc_bus_protocol.html
[2]http://www.jedec.org/sites/default/files/docs/JESD84-B51.pdf