高效的信息交流需要適當的語言,這既適用于人與人之間的交流,也適用于系統電源管理資源之間的通信。電子系統通信經歷了緩慢而持續的發展過程,USB 就是其中的一個例子。在 USB 之前,系統外設通過各種接口方法進行互連。速度較慢的設備通常采用可提供 RS-232 的簡單 UART 連接,而較快設備的連接則采用并行端口。這些連接既能夠像“平行接口” (Centronics Interface) 一樣簡單,也可能像連接海量存儲設備的 SCSI 那樣復雜。USB 已經發展成為一種高效的通信方法,非常適用于諸如計算機鼠標這樣較慢速的設備,以及硬盤存儲與 FLASH 驅動器等快速設備。另外,還為人機接口外設 (HID) 開發了標準驅動器,而且這種驅動器的應用原理已被擴展至實時物理設備 (PID)。這種物理層與數據交換的組合已經為計算機與外設提供了一種“通用語言”。 隨著電源系統的集成度變得越來越高,并且受其所供電系統的管理,這就要求在它們之間提供一種高效的通信方式。這種通信應該像 USB 那樣具有廣泛的適用范圍,并能提供一種適用于各種可用終端設備的標準。電源通信的發展已十分成熟,這為制定新的標準解決方案增加了難度。許多 OEM 廠商采用專用的電源系統通信已長達 10 年以上,這一遺留問題使推出適用標準的時間遙遙無期。 在 1995 年,當智能電池系統 (SBS) 標準被提出的時候,情況也是如出一轍。大部分便攜式計算機都紛紛開發了用于管理電池的專有通信系統。這些系統的復雜程度從簡單的監控到高級的電池與充電器控制不盡相同。智能電池數據 (SBD) 規范、系統管理總線以及智能電池充電器規范相組合,創造了可實現完整電池管理的系統。在此系統中,智能電池可以通過 SMBus 與電源(充電器)進行通信,并設置充電電壓及電流工作狀態,而且通過設置閾值,還可限制逾界任務 (out-of-bound activity)。這是最早在開放式通信標準上實施標準電源管理的系統之一。 電源領域已經認識到通過電源系統通信進行動態電源管理的益處。為了推動數字控制電源的發展,用于通信的標準語言是很自然的“搭配”。Artesyn 技術公司聯合了各大電源與半導體廠商,全力開發電源管理通信的標準協議。該組織于 2005 年 3 月發布了 PMBus 規范。PMBus 規范可為數據傳輸、命令與數據格式提供開放式標準,從而能夠“模仿”智能電池的標準。PMBus 組織采用 SMBus 規范作為其數據傳輸方式。該通用規范使智能電池系統與 PMBus 之間息息相關,因而這些行業組織聯合形成了系統管理接口論壇 (SMIF),網址www.powersig.org。PMBus 小組作為 SMIF 的一部分,負責修訂、制訂新規范以及 PMBus 的推廣。此外,該小組還通過為業界提供配套支持來推進 PMBus 部署。 電源管理總線(PMBus) PMBus的支持原理與 SBS 的類似。兩者都是通過基本命令與數據進行操作來管理電源及通信協議,這樣既簡單、低價而且還可靠。與 SBS 一樣,PMBus 規范也包括兩部分。PMBus 中相對應的部分是,“第一部分——一般要求、傳輸與電氣接口”,以及“第二部分——命令語言”。將該規范分為兩部分使得其中任一部分的變動不會使兩部分同時受到影響。 第一部分——一般要求、傳輸與電氣接口 PMBus 的第一部分采用 SMBus1.1 作為基本規范。SMBus1.1 與 SMBus 規范最新版 SMBus2.0 之間的主要區別在于總線地址判優。PMBus 的倡導者認為此特性不必要,因為在大多數情況下,每個電源的地址均表明了其物理位置與系統功能性。地址判優會給 PMBus 解決方案增加復雜度,而不能帶來任何實際的益處。 SMBus 1.1 與 SMBus 2.0 之間的另一區別在于,SMBus2.0 還包含高功率 DC 規范。SMBus1.1 限制時鐘與數據上拉到最大值 350uA。在 SMB2.0 中,該限制是在低功率 DC 規范中描述的。SMB2.0 高功率 DC 規范允許電流上拉至最大 4mA。在任一種情況下,設備都必須能在低輸出時,將時鐘或者數據線拉到 0.4V 以下。雖然在吸收 350uA 的同時,器件只要能把時鐘及數據線拉到 0.4V 以下即可實現 PMBus 兼容,但是,如果有更強的下拉能力會更有益處。使用 SMBus2.0 的高功率 DC 規范可以增強噪聲抗擾度。PMBus 定義了兩種必需的信號,時鐘 (SCL) 與數據 (SDA)。PMBus1.0 允許采用 3 種可選信號。圖 1 顯示了 PMBus 所需的可選信號。SMBALERT# 是一種有線信號 (wired-and signal),任意需要引起 PMBus 主設備注意的從設備都可對其進行拉低。當 SMBALERT# 信號被拉低,主設備就在 PMBus 上發出告警響應地址。在傳輸完告警響應地址之后,每一告警設備根據主設備的計時將它們的設備地址放在 SDA 上。將地址轉移至總線的每個設備必須在此處理過程中同時監控數據線。如果設備發送高比特的時候發現數據線低,那么,這就意味著另一設備也在做出響應,并且具有更高的優先級。一旦某設備成功地將其地址放置在總線上后,該設備就必須釋放 SMBALERT# 線路。雖然該信號被列為“可選”,但卻是被建議的。另外,部分 OEM 廠商還要求 PMBus 解決方案的供應商提供 SMBALERT# 信號。 圖1 PMBus信號 除了 SMBSLERT# 線路之外,還定義了另外兩條可選線路。可選控制信號 (CONTROL) 能夠提供一種快速的方法來“關閉”啟用 PMBus 的電源輸出。眾多系統 OEM 廠商都會要求 CONTROL 信號。可選的寫保護信號 (WP) 能夠保護數據與程序信息免遭意外修改。WP 信號被系統 OEM 廠商要求的可能性較小。CONGTROL 與 WP 信號的電壓電平應該符合從邏輯電平,并在大多數情況下與 PMBus 的邏輯電平相同。而且 CONTROL 與 WP 信號也可以轉向一個以上的從設備。 在 SMBus1.0 規范中包含至 SMBus1.1 的擴展。作為擴展的群組命令協議 (Group Command Protocol) 使得多個設備可根據 STOP 位檢測保持同步。在圖 2 所示的協議中,對每個從設備均進行了尋址,并向它們發送了適當的命令和數據以及可選的數據包糾錯 (PEC) 字節。然而在該通信未尾沒有發送 STOP 位,而是在下一個設備的地址、命令和數據之前發送中繼 START 位。這一過程持續一直進行,直至所有適用設備均配置完成。最后,設備配置數據包末尾發送一個 STOP 位。建議僅為群組中的每個地址發送每群組數據包一條命令,如圖 2 所示。一檢測到 STOP 位,所有設備均聽從于所發送命令。在這種情況下,多個設備可以在 PMBus 上實現同步。另一實現同步的方法如前文所述,需使用 CONTROL 線路。 圖2 PMBus群組命令 PMBus 第一部分執行中的問題 在設計 I2C 總線時,一些工程師一直有不愉快的經歷。遵循 I2C 規范非常重要,尤其是時序要求部分。一個常見的問題是,檢測虛假的或意外的 START 或 STOP 位。當檢測到 START 位時,從設備就開始尋找設備地址。如果這是一個虛假的 START 位,設備就會將總線上的數據解釋成設備地址并做出相應的響應。檢測到虛假 START 位是很嚴重的錯誤,它會導致多個從設備同時訪問總線。檢測到意外 STOP 位會導致數據傳輸過早地終止。如果數據存在微小上升或者保持時間不夠,這兩種問題都有可能發生。圖 3 顯示了這些問題需要注意的方面。如果總線電容比建議值高,上述問題就可能會發生。采用通用 I/O 引腳的軟件控制方法來實施“bit-banged”解決方案時,也會造成這些問題。 圖3 PMBus轉變時序 規則很簡單:只要在改變數據信號時遠離時鐘沿。在設計過程中,必須檢查每一個 PMBus 設備的時鐘時序與數據引腳。最好能對 PMBus 系統及其所有可能的 PMBus 設備進行在線測試。 總線噪聲可能會導致意外的 START 或者 STOP 位錯誤檢測以及錯誤的位值。電源可能會使環境噪聲很大。各種器件之間的接地升高 (ground elevation) 是導致問題的噪聲類型之一。信號低電平的參數是最高 0.8V ,而信號高電平的參數是最低 2.1V。如前文提及,PMBus 器件必須能把線拉到 0.4V 以下。如果接地升高與上拉電流導致目標低信號在器件引腳處高于 0.8V,那么數據就被毀壞了。接地升高這個問題可能在檢查系統的時候不會被發現,尤其是系統負載輕的時候。 PMBus只要符合規范,是一種可靠的通信協議。出現問題主要是在轉換過程中,無論是時鐘還是數據。所以,系統設計師必須測試這些地方。像光耦合器與光隔離器這樣的器件可能會增加轉換的次數,由于器件引腳不符合規范,轉換次數的增多會導致通信錯誤。 圖4 PMBus電壓調節相關命令 第二部分-命令語言 PMBus 的第二部分定義了命令語言。這種語言包括特定的操作代碼,以支持啟用 PMBus 電源系統的制造與運行時管理。其中共有 100 多條基本命令代碼,同時還為各特定廠商和用戶的命令預留了代碼。此外,還為基本命令的未來拓展預留了命令代碼空間。大多數 PMBus 設備不太可能僅執行所有的 PMBus命令。PMBus1.0 規范要求,符合 PMBus 標準的設備至少要執行一條非廠商命令。此外,該規范還要求采用基本命令代碼的 PMBus 設備執行PMBus規范所描述的命令,才能達到 PMBus 的標準。 為了能夠適應各種復雜的 PMBus 設備,用于通知 PMBus 主機不支持某命令的標準要求非常靈活。首先,這些設備要能夠僅 NAK 這條命令代碼,這在最大程度上為 PMBus 主機減輕了負擔。PMBus的從設備也可 NAK 后續的數據字節,這最好盡可能早地完成。另一種辦法是 ACK 命令和數據,但要向主機發出故障告警。然后,主機讀取 STATUS_BYTE 以確定是否出現支持問題。最基本的問題是 NAK 可能意味著發生了幾種不同問題的其中之一,這就好比“我聽不到你說話”、“我無法給予支持”或者“我沒有明白你的意思”。因而當使用 NAK 時,應避免出現模棱兩可的情況。 PMBus 規范至少以兩種格式支持工程數值。我們將格式定義為文字格式和直接格式 (literal and direct)。文字格式以工程單位如伏特、安培、毫米或者 ?C 等進行數據交換。這種格式在系統側最省力,因為這種數值不需要任何額外的解釋信息。然而,這會增加從設備的復雜程度,因為它必須將內部數值轉換成工程單位。 直接方法會加重系統側負擔,因為它需要數據交換。要使用這種方法,主機必須具有將主機單位轉換成內部從設備單位的相關信息。所有往返于從設備的通信都位于從設備的內部單位中,這簡化了從設備的計算要求,但卻增加了主機側的復雜程度。其中,Y是工程單位值;X是從設備的內部單位,兩字節帶符號整數;m是斜率,兩字節帶符號整數;b是截距,兩字節帶符號整數;R是指數,兩字節帶符號整數。三種格式可支持輸出電壓:文字格式、直接格式和VID格式。由于受 PMBus 通信帶寬的限制,VID 調節不能滿足動態處理器電源所需的計時要求。然而,VID 是一種控制電壓輸出的簡便方法,因為主從設備都不需要很高的復雜度。 對于電源輸出與限制,PMBus 命令語言支持各種級別的制造和實時調節。輸出電壓就是一個與支持級別相關的實例,在 PMBus 規范的第 8、9 和 13 章節中涉及到了這些內容。主機可設置 VOUT_MODE 來配置輸出電壓格式。此命令僅在選擇新模式或者初始化設置時才會用到。然后,主機可以使用 VOUT_COMMAND、VOUT_MARGIN_HIGH 或 VOUT_MARGIN_LOW 來設置輸出電壓,這要根據 CONTROL 信號或 OPERATION 命令的配置而定。為了校準模塊和系統以精確設置輸出電壓,要在這些運行命令之前采用各種其他命令。這些模塊命令是: VOUT_CAL:模塊或設備制造商失調校正 VOUT_TRIM:系統內失調校正 VOUT_SCALE_LOOP:針對環路控制的分壓器比例 VOUT_SCALE_MONITOR:為電壓監控的分隔比例值 VOUT_DROOP:制造商或系統自適應電流校正 圖 4 顯示了如何在轉換 VOUT 輸出 OPERATION 命令時,使用這些命令以調節輸出電壓。模塊命令將所請求的電壓轉換成內部值,以供隨后調節輸出電壓之用。圖 4 中的灰色方框在操作系統運行期間通常保持不變。可在 PMBus 的規范中找到對這一功能性的詳細描述。 結語 [table][/table] 電源通信多年以來一直是高端系統的重要組成部分。隨著數控電源的出現,將電源通信擴展到了更為廣泛的應用范圍。電源通信需要開放式的行業標準,這樣,系統側軟件的開發就不會因各種不同的命令語言和協議而負擔沉重。 PMBus 規范為解決電源通信的問題提供了功能強大的靈活命令語言,并為在行業內的廣泛普及提供了開放式標準。在根據規范進行系統設計的情況下,PMBus傳輸層為本地級別的可靠通信提供了適當的規范。一旦通信發生故障,就可以用 PEC 來進行故障檢測。 一般的系統可能不執行所有的 PMBus 命令語言指令。然而,規范中規定的方法有助于主機確定實施級別。最后,系統 OEM 廠商可能為大多數解決方案創建其所需標準的 PMBus 命令子集。這一發展過程與智能電池系統在初始幾年間所經歷的情況相同。有了電源通信的開放式標準,數字電源管理將快速向更廣泛的應用擴展。 |