====== DDR5 SPD I3C 研究 ======
DDR5 SPD 採用 I3C 介面進行定址,而非 DDR4 的 SPD 介面。I3C 介面是一種雙向、兩線式匯流排,\\
可同時傳輸資料和時鐘訊號。DDR5 SPD 晶片具有兩個 I3C 埠,分別用於與記憶體控制器和 PMIC 晶片進行通訊。\\
DDR5 SPD 晶片的 I3C 地址為 7 位元,範圍為 0x00 到 0x7F。\\
記憶體控制器可透過 I3C 介面對 SPD 晶片進行讀寫操作,以獲取或設定 SPD 數據。\\
以下是 DDR5 SPD 晶片的 I3C 地址分配:\\
* 無序列表項目0x00-0x3F:保留供記憶體控制器使用
* 無序列表項目0x40-0x7F:供 PMIC 晶片使用
記憶體控制器可透過 I3C 介面向 SPD 晶片發送以下命令:
讀命令:讀取 SPD 數據
寫命令:設定 SPD 數據
設備 ID 命令:獲取 SPD 晶片的設備 ID
以下是 DDR5 SPD 晶片的 I3C 命令格式:
讀命令:
[Start Bit] [Slave Address] [Command Code] [Address] [Data Length] [Stop Bit]
寫命令:
[Start Bit] [Slave Address] [Command Code] [Address] [Data] [Stop Bit]
設備 ID 命令:
[Start Bit] [Slave Address] [Command Code] [Stop Bit]
其中:
Start Bit:表示命令的開始
Slave Address:SPD 晶片的 I3C 地址
Command Code:命令代碼
Address:要讀取或設定的 SPD 數據的地址
Data:要寫入 SPD 數據的資料
Data Length:要讀取的 SPD 數據的長度
Stop Bit:表示命令的結束
記憶體控制器可根據需要向 SPD 晶片發送上述命令,以獲取或設定所需的 SPD 數據。
以下是一些 DDR5 SPD 晶片的 I3C 命令範例:
讀取 SPD 數據:
[Start Bit] 0x40 0x00 0x00 0x10 [Stop Bit]
此命令將讀取 SPD 晶片中第 0x00 到第 0x0F 位元的數據,共 16 位元組。
寫入 SPD 數據:
[Start Bit] 0x40 0x01 0x10 0x0A 0x00 0x00 0x00 0x00 0x00 0x00 [Stop Bit]
此命令將向 SPD 晶片中第 0x10 位元寫入值 0x0A,第 0x11 位元寫入值 0x00,第 0x12 位元寫入值 0x00,第 0x13 位元寫入值 0x00。
獲取 SPD 晶片的設備 ID:
[Start Bit] 0x40 0x02 [Stop Bit]
此命令將獲取 SPD 晶片的設備 ID。
記憶體控制器可透過上述命令獲取或設定所需的 SPD 數據,以正確初始化和優化系統記憶體通道。
===== 每一根 DDR5 SPD 的位址如何決定 =====
edit
顯示草稿
volume_up
每一根 DDR5 SPD 的位址由以下因素決定:
I3C 匯流排上的位置:DDR5 SPD 晶片具有兩個 I3C 埠,分別用於與記憶體控制器和 PMIC 晶片進行通訊。\\
每個 I3C 埠具有 0x00 到 0x7F 的 7 位元地址範圍。\\
SPD 晶片上的設備 ID:每個 SPD 晶片都具有唯一的設備 ID。設備 ID 用於區分不同的 SPD 晶片。\\
具體來說,DDR5 SPD 的位址由以下公式計算得出:\\
位址 = I3C 埠地址 + 設備 ID \\
例如,如果一個 SPD 晶片位於 I3C 埠 1(地址為 0x40)上,其設備 ID 為 0x20,則該 SPD 晶片的位址為:\\
* 無序列表項目位址 = 0x40 + 0x20 = 0x60
記憶體控制器可透過 I3C 介面使用上述公式計算每個 SPD 晶片的位址,然後向該 SPD 晶片發送命令以獲取或設定所需的 SPD 數據。\\
以下是一些 DDR5 SPD 位址的範例:\\
位於 I3C 埠 1(地址為 0x40)上的 SPD 晶片,其設備 ID 為 0x20:
位址 = 0x40 + 0x20 = 0x60
位於 I3C 埠 1(地址為 0x40)上的 SPD 晶片,其設備 ID 為 0x30:
位址 = 0x40 + 0x30 = 0x70
位於 I3C 埠 2(地址為 0x41)上的 SPD 晶片,其設備 ID 為 0x20:
位址 = 0x41 + 0x20 = 0x61
記憶體控制器可根據需要計算每個 SPD 晶片的位址,然後向該 SPD 晶片發送命令,以獲取或設定所需的 SPD 數據。\\