====== 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 數據。\\