EC 的架構 - EC 接腳的功能

EC 的架構
科技的演進,PC系統架構由8位元演進到64位元,處理器和系統裝置的介面也由並列連接改為串列連接。EC和系統的連接介面,也會隨著系統架構變動而改變它的連接介面。因此,在本篇文章以說明EC和系統的連接介面及提供的功能讓初學者更了解EC在系統中扮演的角色。


EC 接腳的功能
EC Pin腳依功能可以分為幾個GROUP -
  • LPC interface - 和系統晶片溝通的介面
  • Share ROM interface - BIOS/EC式碼的儲存記憶體介面
  • KBC interface - 鍵盤控制介面    、
  • Power sequence interface - 系統電源管理介面
  • Battery control interface - 電池管理介面
  • Button function - 開關介面
  • External Event function - 週邊裝置的管理介面
  • EC power saving function - EC 進入或喚醒深層睡眠的接腳

在詳盡介紹每個Pin的功能之前,先以方塊圖的方式把整個EC所提供的功能列出。




  • LPC interface
    • lpcLFRAME_L – 用於指示資料傳輸的開始。
    • lpcLAD[0:3] – 4 位元寬度的資料傳輸,資料和位址線共同使用此四個位元。
    • lpcLCLK – 系統提供給 LPC 的時脈來源   [ 33MHz ]
    • lpcLREST_L – PCI Reset 重置訊號。
    • lpcSERIRQ – Serialized IRQ 中斷用來通知系統
    • lpcCLKRUN_L – 系統軟體要停止某一裝置的CLOCK時使用
    • lpcLPCPD_L – 用於硬體要關閉某一裝置使用LPC介面

LPC的Timing圖 –
  • Share ROM interface
Share ROM的介面有兩種:一種是ISA介面;另一種是SPI介面。
ISA介面Pin腳簡介
    • isaA[0:19] – 位址線。512KB=219需19條位址線A0-A18。1MB=220需20條位址線A0-A19
    • isaD[0:7] – Data Lines
    • isaCS_L – Chipset enable
    • isaRD_L – Read control pin
    • isaWR_L – Write control pin
SPI介面Pin腳簡介
    • spiMOSI     – Data Out
    • spiMISO       – Data In
    • spiCLK            – Clock
    • spiCS_L          – Chipset Select
  • KBC interface
KBC Interface含了內部鍵盤按鍵(X軸及Y軸)掃描的功能、PS/2介面、Keyboard的控制燈號、通知Host的訊息腳位。
PS/2 Interface : (以 Phoenix 的 EC Firmware 為定義 ) 
    • ps2PSCLK3   – Touchpad clock
    • ps2PSDAT3 – Touchpad data
    • ps2PSCLK1 – External PS/2 mouse clock
    • ps2PSDAT1 – External PS/2 mouse data
    • ps2PSCLK2   – External PS/2 keyboard clock
    • ps2PSDAT2 – External PS/2 keyboard data
Keyboard的控制燈號 :
    • kbcNUMLED_L – Number lock LED
    • kbcCAPSLED_L   – Caps lock LED
    • kbcSCRLED_L       – Scroll lock LED

通知Host的訊息 :

    • kbcSMI_L (System Manager Interrupt) – 在 APM Mode 也就是在 DOS 的作業系統之下,EC 有任何需要通知系統的事件時,會使用 SMI_L_OUT 來通知系統來取得事件。
    • kbcSCI_L (System configure interrupt) – 在 ACPI Mode 也就是在 Windoes 的作業系統之下,EC 有任何需要通知系統的事件時,會使用 SCI_L_OUT 來通知系統來取得事件。
    • kbcSWI_L (System wakeup interrupt) – 當系統進入 Standby 或 Sleep 的情況之下,EC 會使用 SWI_L_OUT 來喚醒系統。
    • kbcGA20 – 這是早期系統留下來的,系統晶片使用位址線 A20 來當控處理器可以存取資料定址的空間,當 A20=0,只能定址在 1MB 以下的記憶體空間,也稱為傳統模式。當 A20=1,就可以完整的存取記憶體空間,稱為保護模式。
    • kbcRST_L –  由 keyboard 按 Ctrl + Alt + Del 會利用 KBRST_L_OUT 來重置 CPU ,讓 BIOS 由 0xFFFFFFFF 再頭執行,記憶體和周邊沒有完全重置,所以稱暖開機 (Warm Boot)。

Keyboard Matrix 的掃描介面:
    • kbcIN[0:7] – 掃描時讀取每一行的接腳狀態
    • kbcOUT[0:15] – 選取掃描的行數,被選取時,相對的KBSOUT 會被拉為低電位。
根據上面的 keyboard matrix,硬體上的連接為 -
kbcIN0 -> Keyboard pin 4 … kbcIN7 -> Keyboard pin 13
kbcOUT0 -> Keyboard pin 1 … kbcOUT15 -> Keyboard pin 24

  • Power sequence interface
電源控制Pin腳會隨著不同的南北橋需求或週邊設備而小幅變化,所以針對大部分共有的Pin腳來介紹。
    • psqS5_ON – 開關系統由關機狀態被喚醒電源的控制接腳
    • psqRSMRST_L – 南橋晶片/系統晶片重置的控制接腳
    • psqRAM_ON – 開關系統記憶體電源的控制接腳
    • psqRUN_ON – 開關週邊裝置電源的控制接腳
    • psqCPU_ON – 開關 CPU 電源的控制接腳
在不同電源狀態下,一般各電源接腳的控制狀態。
AC mode
DC mode
Sleep
S5
S4
S3
S0
S5
S4
S3
S0
psqS5_ON
ON
ON
ON
ON
OFF
OFF
ON
ON
psqRAM_ON
OFF
OFF
ON
ON
OFF
OFF
ON
ON
psqRUN_ON
OFF
OFF
OFF
ON
OFF
OFF
OFF
ON
psqCPU_ON
OFF
OFF
OFF
ON
OFF
OFF
OFF
ON
    • psqSLEEP_S3_L – 系統晶片用來通知週邊裝置,系統要進入 S3
    • psqSLEEP_S4_L – 系統晶片用來通知週邊裝置,系統要進入 S4
    • psqSLEEP_S5_L – 系統晶片用來通知週邊裝置,系統要進入 S5。
    • psqPOWER_BUTTON_L – 系統電源開關。
    • psqAC_PRESENT – 通知系統,AC 電源的狀態。
    • psqALL_POWER_GOOD – 所有電源都已經進入穩定狀態。 電源指示LED
    • psqPWRLED[0:1] 用來指示系統現今的電源狀態。

電源方塊圖 :

電源Timing 圖 :


Battery charge/discharge interface
電池介面接腳可分為幾個部分,分別為Selector、Charger及電池介面。Selector是用來選擇那一個電池要接受充放電。Charger控制充電時的充電電壓及充電電流。電池介面 [SMBUS] 用於取得電池的資訊提供給系統去修改指示狀態。
Battery Charger –
    • batCC – 這是早期系統還沒有使用 Smart Charger 前,EC需要使用 DAC 的輸出電壓來控制電池的充雷電流。
    • batCV – 這是早期系統還沒有使用 Smart Charger 前,EC需要使用 DAC 的輸出電壓來控制電池的充雷電壓。
    • batCELL_SET – 這是早期系統還沒有使用 Smart Charger 前,用來選擇電池為3個CELL串接或者4個CELL串接。
電池介面 -
    • batTEMP_BAT_L – 在電池內部會有一個 10K 的熱敏電阻到 Ground,可以拿來偵測電池的溫度,也可以拿來偵測電池是否存在。
    • batCLK - 電池和系統連接介面(SMBUS) 的 Clock (同步使用)。
    • batDATA - 電池和系統連接介面(SMBUS) 的 Data (資料傳送使用)。
    • batLED [0:1] - 用來顯示電池的狀態。
Button function
在早期的筆記型電腦上,除了電源按鈕,常可以發現有許多按鈕,做各式各樣的功能。這些按鈕在設計上,通常會使用 EC 內部的 Pull-Up 電阻。依功能可以分為:快速按鈕及裝置控制按鈕。
快速按鈕 – 大多是使用 Microsoft 的快速按鈕的按鍵碼來完成功能。
    • qsbMAIL_L - 使用 Microsoft 快速按鍵碼啟動 eMail 應用程式。
    • qsbMUTE_L - 使用 Microsoft 快速按鍵碼來使系統靜音。

裝置控制按鈕 – 大多需要加入程式碼去控制裝置。
    • qsbRFBTN_L - 開關無線裝置的驅動程式。


External Event function
為了讓筆記型電腦的配備多樣化,常會有許多選配的裝置提供插拔,並使用 EC 來管理這些裝置,這些部分的功能都屬External Event。
    • evtLID_L - 偵測筆記型電腦螢幕是否閤上。
    • evtBLON - 開關電腦螢幕的背光。
    • evtPME_L - 偵測由網路啟動電腦的訊號狀態。
    • evtAMP_OFF - 開關系統音量,用於消除電源開關造成的bo bo 聲。
    • evtMEDIA_L - 偵測Media Bay [CD ROM/DVDROM]的插拔狀態。
    • evtDOCK_L - 偵測 Docking 的插拔狀態。           
    • evtFANSIG - 讀取風扇轉速。
    • evtBRIGHTNESS - 控制螢幕的亮度。
EC idle function
筆記型電腦在電源關閉且由電池供應系統電源的情況下,會要求EC進入Deep Sleep以達到最省電的狀況。早期的設計為了讓 Firmware 的負擔小一點,會將所有需要啟動系統的訊號並接起來,只要有任何訊號需啟動,都由同一個啟動中斷點通知EC,再由EC去分別那一個訊號造成啟動,再通系統。

現在的線路如果接腳夠多,是可以考慮將所有需要啟動系統的訊號拉到 EC 的Wake-up Pin上,直接由中斷點即可得知是什麼訊號造成系統啟動。

留言

  1. 大大您好 我是ec菜鳥工程師 剛畢業那種 請問有建議新手怎麼學習的模式或流程麻感謝您

    回覆刪除
    回覆
    1. Hello 帥哥你好,
      我的建議是把 EC Datasheet 和相關 Specification 細分成好幾個單位, 每研讀完一個單位,就嘗試修改一下程式碼, 例如研讀完 GPIO,就嘗試開關 LED 燈. EC 又可分為對晶片組的介面, eSPI/PECI 等,因為這方面需要的知識比較多,建議放在後面再研讀. 另一部分是 EC 當管理者去管理週邊的裝置,像 GPIO/I2C/SPI/ADC/DAC/Watchdog/PWM 可以先把它學會.

      刪除
  2. 大大您好 目前終於學會smbus pwm gpio 一些基本的 想請問現在是不是已經沒有什麼lpc了都是使用espi為主 如果上面那張架構圖 是否有網址或怎麼找到比較符合現代的結構圖了 那張圖很清楚讓我學習加快 感謝您

    回覆刪除

張貼留言

這個網誌中的熱門文章

EC 所需知識 - SMBUS

EC 所需知識 - KBC

EC 所需知識 - LPC