這裏顯示兩個版本的差異處。
— |
ddr5_spd_i3c_study [2024/06/26 09:38] (目前版本) don 建立 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 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 數據。\\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |