Einführung in den PMBus

Power-Manager in Aktion

6. August 2018, 15:30 Uhr | Michael Jones, Analog Devices

Fortsetzung des Artikels von Teil 2

Beispiel einer Bussegmentierung

Es gibt zwei wichtige Gründe, um einen PMBus zu segmentieren: die Adressierung und die Leitungskapazität bzw. Signalgeschwindigkeit. Probleme mit der Leitungskapazität können bei sehr großen Systemen mit langem Busleitungen auftreten, wenn der Bus-Master mit 400 kHz arbeitet. Dies kann die Timing-Spezifikation verletzen oder sich negativ auf die angestrebte Performance auswirken.

Üblicherweise wird ein Multiplexer wie der LTC4306 eingesetzt. Beim Reparieren von CRC-Fehlern verbindet dieser den Bus-Master mit einem Segment zu einer bestimmten Zeit. Wird Firmware benutzt, so verbindet er alle Segmente mit einem einzigen Bus. Wenn die Segmente zu einem einzigen Bus verbunden sind, müssen alle Adressen unverwechselbar sein.

Es hilft, ein typisches Beispiel zu durchlaufen um zu sehen, wie man den Reparaturprozess erfolgreich durchführt und auch, wie er als einziger Bus agiert. Das Beispielsystem besteht aus vier Segmenten (siehe Bild 2), zudem hat jedes Segment 16 Bausteine vom Typ LTC3880 sowie einen Multiplexer vom Typ LTC4306.

Anbieter zum Thema

zu Matchmaker+
Analog Devices
Bild 2: Beispiel einer Bussegmentierung.
© Analog Devices

Die Adresse des LTC4306 wird über drei ASEL-Pins auf 0x50 eingestellt, wobei er bei 0x5D eine globale MASS-WRITE-Adresse besitzt. Die LTC3880 haben globale Adressen bei 0x5A und 0x5B. Dieses Design benutzt vier Basisadressen für die vier Segmente: 0x20, 0x30, 0x40 und 0x60. So vermeidet man den Adressbereich von 0x50 bis 0x5F, in dem alle Adressen der PSM-Bausteine von Analog Devices programmierbar sind. Zusätzlich unterstützen die meisten I²C/SMBus-Bausteine des Unternehmens diesen Adressbereich. Ein I²C-Baustein von Analog Devices macht jeden anderen Baustein kompatibel mit diesem Adressbereich. Mehrphasige Versorgungspegel können ebenfalls im 0x5X-Bereich adressiert werden oder mit verfügbaren Adressen unter 0x10 oder über 0x6F.

Der Board-Management-Controller verbindet den Eingang des PMBus mit allen Ausgängen der PMBus-Segmente, indem er das Register 3 des LTC4306 auf 0xF0 einstellt. In diesem Zustand gibt es 64 Bausteine am Bus mit den Adressen 0x20 bis 0x2F, 0x30 bis 0x3F, 0x40 bis 0x4F und 0x60 bis 0x6F. Die globalen Adressen 0x5A und 0x5B bleiben für globale Operationen verfügbar. Keine Bausteine, die normalerweise ohne CRC-Fehler arbeiten, antworten auf die Adresse 0x7C.

Die Systemprogrammierung ist die anfängliche Programmierung der Bussegmente mit LTpowerPlay oder In-Flight-Update. Der LTC4306 verbindet ein Segment jeweils zu einem bestimmten Zeitpunkt, indem er Register 3 auf die Werte 0x80, 0x40, 0x20 bzw. 0x10 einstellt.

LTpowerPlay oder In-Flight-Update programmieren das jeweilige Segment, das mit dem LTC4306 verbunden ist. Die MFR_I2C_BASE_ADDRESS für das verbundene Segment wird über die globale Adresse 0x5B gesetzt. Durch die Widerstände an den ASEL-Pins erhält jeder Baustein am verbundenen Segment eine unverwechselbare Adresse.

ASEL-Pin-Widerstände für den jeweiligen Baustein an jedem Segment sind dieselben und wählen einen Adressen-Modifizierer zwischen 0x00 und 0x0F. Das Verbinden eines Segments zu einem bestimmten Zeitpunkt zum Einstellen der MFR_I2C_BASE_ADDRESS für jedes einzelne Segment resultiert in einer unverwechselbaren Adresse für alle 64 Bausteine.

CRC-Fehler zu beseitigen ist identisch mit der Systemprogrammierung. LTpowerPlay und In-Flight-Update behandeln den Programmierprozess und die Beseitigung von CRC-Fehlern identisch. In beiden Fällen wird MFR_I2C_BASE_ADDRESS während der Programmierung verwendet. Jedes Segment wird nacheinander verbunden und programmiert.

Der LTC4306 ist so voreingestellt, dass kein Segment mit ihm verbunden ist. Wird deshalb der Board-Manager-Controller (BMC) für das System-Debugging im Reset gehalten, wird der PMBus-zu-USB-Controller DC1613 damit verbunden. Läuft jedoch LTpowerPlay, wird der DC1613 mit keinem PSM-Baustein am Bus verbunden.

Es gibt zwei Wege sicherzustellen, dass die Firmware nicht mit LTpowerPlay interferiert. Der erste besteht darin, einen Debug-Modus für den BMC zu haben, sodass der BMC aus einem Reset kommt, alle Segmente verbindet und dann pausiert. Dadurch kann LTpowerPlay für System-Aufruf und -Debugging mit dem gesamten Bus interagieren. Pausiert der BMC, verhindert er Interaktionen mit LTpowerPlay. Obwohl diese Software multimasterfähig ist, werden Befehle, die sich auf den PAGE-Befehl beziehen, damit interagieren. Deswegen verhindert das Pausieren, dass sowohl die Firmware als auch LTpowerPlay fehlerhafte Telemetriedaten erhalten.

Der zweite Weg besteht darin, den BMC während des Debugging auf Reset zu halten und es LTpowerPlay zu erlauben, den Multiplexer zu steuern. Dies ist typischerweise der sicherste Fall. Denn wenn der BMC aus dem Reset herauskommt (z. B. nach dem Ausschalten von LTpowerPlay), wird er den Multiplexer unabhängig vom aktuellen Zustand in einen gültigen Zustand versetzen.

Wenn der BMC und LTpowerPlay den Bus abwechselnd steuern, sollte kein Master Vermutungen über den Multiplexer-Zustand anstellen müssen. Bei jeder wichtigen Aktion, wenn z. B. ein Master einen Pause-Zustand verlässt, sollte er zuerst den Multiplexer in einen einwandfreien Zustand versetzen.

Zusammenfassung

Die Adressplanung für das Power-System-Management ist nicht kompliziert, aber man muss bei Spezialfällen der Programmierung und der Systemwiederherstellung nach CRC-Fehlern sorgfältig vorgehen.

Alle PSM-Bausteine von Analog Devices kombinieren Basisadressen mit der Modifizierung über ASEL-Pins, um eine unverwechselbare Adresse zu generieren. Alle Bausteine sind bei Stromausfall während der Programmierung CRC-Fehlern ausgesetzt. Das Einstellen der Basisadresse, die erneute Programmierung des EEPROMs und das erneute Einstellen des Bausteins wird das System völlig wiederherstellen. LTpowerPlay und In-Flight-Update handhaben automatisch die Wiederherstellung eines sauberen Adressplans.

Die Adressplanung ist den Basisadressen und den ASEL-Pins so zugeordnet,  dass niemals der Fall eintritt, dass zwei Bausteine permanent dieselbe Adresse haben. Der Einsatz von Bausteinen mit zwei ASEL-Pins oder der Bussegmentierung mit einem I²C-Multiplexer, wie dem LTC4306, erlauben es, größere Systeme aufzubauen.

Die Adressplanung muss vor der Leiterplattenentwicklung erfolgen, weil die ASEL-Pins und Bussegmentierung von Widerständen und Pins abhängen.


  1. Power-Manager in Aktion
  2. Adressplanung und -einstellung
  3. Beispiel einer Bussegmentierung

Das könnte Sie auch interessieren

Verwandte Artikel

Analog Devices GmbH, Linear Technology GmbH