eSPI 接口是用于取代 LPC 接口的,因此它全面兼容 LPC 總線的功能。電氣規(guī)范上,eSPI 復(fù)用了 SPI ,因此通訊頻率最高提升到 66MHz。電壓降到 1.8V,進一步降低了通訊功耗。但是二者協(xié)議層完全不一樣,SPI 協(xié)議無法解碼 eSPI 通訊。
eSPI 總線除了兼容 LPC 總線功能,同時還把 OOB(out of band)的 Smbus 和 SideBand 的 GPIO全部轉(zhuǎn)換為 In Band Message,以減少 PCH 和 EC 連接的 pin。
eSPI 為了兼容 LPC 并且進一步囊括更多數(shù)據(jù)類型的通訊,以減少 PCH 和 EC 連接引腳。因此在eSPI 總線上,根據(jù)數(shù)據(jù)類型劃分了 4個 Data Channel。
即 Peripheral Channel、Virtual Wire Channel、OOB Channel、Flash Access Channel。eSPI 啟動過程需要配置這 4個 通訊 Channel,本文簡單介紹了這 4個 Channel 的功能。
下圖描述了 LPC_Master(PCH) 和 LPC_Slave(EC)的結(jié)構(gòu)。
圖中可以看出除了 LPC 接口外,還有 Smbus、GPIO 接口。
下圖描述了 eSPI-Master(PCH) 和 eSPI_Slave(EC)的結(jié)構(gòu)。
圖中可以看出,eSPI 總線兼容了 Smbus、GPIO。
所謂 Channel,是 eSPI 規(guī)范定義的一個虛擬的、邏輯上的數(shù)據(jù)通道,以便在 eSPI 總線上傳遞 4類數(shù)據(jù)流,同時保證這 4類數(shù)據(jù)流之間相互獨立互不干擾。
在協(xié)議層面,每個 Channel 有定義專用的 Command 和 Payload(即數(shù)據(jù)包格式)。
在硬件層面,每個 Channel 都有獨立的 data buffer,并且相應(yīng)的 Tx/Rx Avail/Free 狀態(tài)都呈現(xiàn)在 Status Register中。
CPU 啟動過程中,eSPI Channel Config 其實就是 eSPI-Master 讀取并改寫 eSPI-Slave 端的一些寄存器,以便 eSPI-Master 和 eSPI-Slave 就 Channel 的通訊能力達成一致。
因此,EC 作為 eSPI Slave,需要按照 eSPI 規(guī)范針對每個 Channel 實現(xiàn)了一組寄存器,用以描述并且接收 eSPI-Master配置 Channel 的一些通訊特性。
General Capabilities and Configurations
eSPI 通用描述寄存器,Slave Register Start Address 是 0x08。
eSPI-Master 先通過 GET_CONFIGURATION 命令獲取 eSPI-Slave 端支持的通訊參數(shù)。
緊接著 eSPI-Master 通過 SET_CONFIGURATION 命令配置 eSPI-Slave 端的通訊參數(shù)。
主要涉及 eSPI 的 IO-Mode、Speed、CRC-Check、Alert-Mode。下圖可看出,配置了 66MHz、Quad-IO。
Peripheral Channel
外設(shè)通道,Slave Register Start Address 是 0x10,32bit 寄存器配置了外設(shè)通道通訊的參數(shù)。外設(shè)通過主要傳輸 Memory request packet,
I/O request packet,Message request packet。
相較于 LPC 而言,承接了 IO Cycle,Memory Cycle 的通信以兼容 Legacy SIO Device。
Platform Reset(PLTRST#) 信號拉低會復(fù)位 Peripheral Channel。
Virtual Wire Channel
虛擬線通道,Slave Register Start Address 是 0x20,32bit 寄存器配置了虛擬線通道通訊的參數(shù)。顧名思義,Virtual Wire Channel 就是把 PCH 的 Sideband pin 或者 GPIO 轉(zhuǎn)換為 eSPI 的 in-band Message 傳遞的通道。
Sidebang pin 主要有 IRQ#、PME#、SCI#、SMI#、RCIN# 以及一些無意義的通用 GPIO。
Virtual Wire 還會傳遞一些針對 eSPI 擴展的虛擬狀態(tài)信號,例如 SLAVE_BOOT_LOAD_DONE。
OOB Channel
Out-of-bund 通道,Slave Register Start Address 是 0x30,32bit 寄存器配置了 OOB 通道通訊的參數(shù)。
OOB 通道的數(shù)據(jù)比較簡單,就是負責(zé)傳輸 Out-of-bang Processor 和 EC/BMC 之間的 Smbus Message。
當(dāng)然 eSPI 上傳輸?shù)氖前?Smbus Message 重新打包后的 OOB Message。
Run-time Flash Access Channel
Flash 訪問通道,Slave Register Start Address 是 0x40,32bit 寄存器配置了 Flash 通道通訊的參數(shù)。
Flash Channel 解決的是 eSPI-Master 和 eSPI-Slave 之間 SPI Flash 共享的問題,以減少設(shè)計 BOM。
第一種,F(xiàn)lash 接在 PCH 上,EC 透過 eSPI 訪問 Flash,稱之為 MAFS。
第二種,F(xiàn)lash 接在 EC 上,PCH 透過 eSPI 訪問 Flash,專用于 Server 平臺,稱之為 SAFS。
至此,eSPI 的四個數(shù)據(jù)通過就已簡介完畢,通訊數(shù)據(jù)格式以及不同通道通訊專用命令,可參考 eSPI Spec。
-
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91508 -
通訊
+關(guān)注
關(guān)注
9文章
902瀏覽量
34890 -
總線
+關(guān)注
關(guān)注
10文章
2878瀏覽量
88052 -
光接口
+關(guān)注
關(guān)注
0文章
14瀏覽量
9486
發(fā)布評論請先 登錄
相關(guān)推薦
評論