DE102021100043A1 - Dynamische aufteilung der leistung unter den usb-typ-c-leistungszufuhr(usb-c/pd)-ports - Google Patents

Dynamische aufteilung der leistung unter den usb-typ-c-leistungszufuhr(usb-c/pd)-ports Download PDF

Info

Publication number
DE102021100043A1
DE102021100043A1 DE102021100043.2A DE102021100043A DE102021100043A1 DE 102021100043 A1 DE102021100043 A1 DE 102021100043A1 DE 102021100043 A DE102021100043 A DE 102021100043A DE 102021100043 A1 DE102021100043 A1 DE 102021100043A1
Authority
DE
Germany
Prior art keywords
port
power
controller
usb
ports
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021100043.2A
Other languages
English (en)
Inventor
Debraj Bhattacharjee
Kailas Iyer
Palaniappan Subbiah
Subramanyam Sankaran
Anshul Gulati
Neel Karkhanis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cypress Semiconductor Corp
Original Assignee
Cypress Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/827,520 external-priority patent/US11061457B1/en
Application filed by Cypress Semiconductor Corp filed Critical Cypress Semiconductor Corp
Publication of DE102021100043A1 publication Critical patent/DE102021100043A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/266Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

Es wird Technologie zur dynamischen Aufteilung von Systemleistung unter Ladeports eines Multiport-Leistungszufuhr(Power Delivery, PD)-Systems beschrieben. In einer Ausführungsform umfasst ein Multiport-PD-System einen Master-Controller, der mit einem Master-Port assoziiert ist, und einen oder mehrere Slave-Controller, die mit einem oder mehreren Slave-Ports assoziiert sind. Der Master-Controller bestimmt einen Port-Verbindungsstatus eines Satzes von mehreren Ports. Der Port-Verbindungsstatus gibt an, dass mehrere Vorrichtungen verbunden sind. Der Master-Controller bestimmt eine Leistungsanforderung von jeder der Vorrichtungen. Der Master-Controller teilt zwischen den einzelnen Ports, unabhängig von einer Verbindungsabfolge der Vorrichtungen, eine Systemleistung dynamisch zu.

Description

  • VERWANDTE ANMELDUNGEN
  • Diese Patentanmeldung beansprucht den Nutzen der vorläufigen USamerikanischen Patentanmeldung Nr. 62/958,522 , angemeldet am 8. Januar 2020, deren gesamter Inhalt durch Verweis aufgenommen wird.
  • HINTERGRUND
  • Verschiedene elektronische Vorrichtungen (z. B. Smartphones, Tablets, Notebook-Computer, Laptops, Hubs, Ladegeräte, Adapter usw.) sind konfiguriert, um Leistung durch USB(Universal Serial Bus)-Verbinder gemäß den USB-Leistungszufuhrprotokollen, die in verschiedenen Revisionen der USB-Leistungszufuhr(USB Power Delivery, USB-PD)-Spezifikation definiert sind, zu übertragen. Zum Beispiel kann in einigen Anwendungen eine elektronische Vorrichtung als Leistungsverbraucher konfiguriert sein, um Leistung durch einen USB-Verbinder zu empfangen (z. B. zum Laden einer Batterie), während in anderen Anwendungen eine elektronische Vorrichtung als Leistungslieferant konfiguriert sein kann, um einer anderen Vorrichtung, die mit der erstgenannten Vorrichtung durch einen USB-Verbinder verbunden ist, Leistung bereitzustellen. Die USB-PD-Spezifikation erlaubt es Leistungslieferanten und Leistungsverbrauchern jedoch, die Pegel der bereitgestellten Spannungen und Ströme dynamisch auszuhandeln.
  • Figurenliste
  • Die Offenbarung wird beispielhaft, und nicht einschränkend, in den Figuren der begleitenden Zeichnungen veranschaulicht.
    • 1 ist ein Blockdiagramm eines Multiport-Leistungszufuhr(PD)-Systems mit einem Master-Port und einem Slave-Port gemäß einer Ausführungsform.
    • 2 ist ein Ablaufdiagramm eines Verfahrens der dynamischen und intelligenten Leistungsaufteilung unter Ports in einem Multiport-PD-System gemäß einer Ausführungsform.
    • 3 ist ein Ablaufdiagramm eines Verfahrens zur Umverteilung der Leistung unter Ports in einem Multiport-PD-System gemäß einer Ausführungsform.
    • 4 ist ein schematisches Diagramm eines endlichen Zustandsautomaten (Finite State Machine, FSM) eines Slave-Controllers eines Multiport-PD-Systems gemäß einer Ausführungsform.
    • 5 ist ein schematisches Diagramm eines FSM eines Master-Controllers eines Multiport-PD-Systems gemäß einer Ausführungsform.
    • 6 ist ein schematisches Diagramm eines FSM der Master-Controller- und Slave-Controller-Kommunikationsfehlerbehandlung gemäß einer Ausführungsform.
    • 7 ist ein Ablaufdiagramm eines Verfahrens zur Leistungsaufteilungsinitialisierung gemäß einer Ausführungsform.
    • 8 ist ein Ablaufdiagramm eines Verfahrens eines Slave-Controller-Betriebs gemäß einer Ausführungsform.
    • 9 ist ein Ablaufdiagramm eines Verfahrens der Slave-Controller-Befehls-Behandlung gemäß einer Ausführungsform.
    • 10 ist ein Ablaufdiagramm eines Verfahrens zur Slave-Controller-Kommunikationsfehlerbehandlung gemäß einer Ausführungsform.
    • 11A ist ein Blockdiagramm verschiedener Multiport-Leistungsadapter 1100a, die konfiguriert sind, um unter Verwendung eines Firmware-basierten Verfahrens Leistung dynamisch und intelligent unter Ports zu verteilen gemäß einer Ausführungsform.
    • 11B ist eine Veranschaulichung eines Multiport-AC-Leistungsadapters 1100b, der konfiguriert ist, um unter Verwendung eines Firmware-basierten Verfahrens Leistung dynamisch und intelligent zu verteilen, gemäß einer Ausführungsform.
    • 12 ist ein Blockdiagramm, das ein System für eine USB-Vorrichtung zur Verwendung in der USB-Leistungszufuhr gemäß einigen Ausführungsformen veranschaulicht.
    • 13 ist ein Ablaufdiagramm eines Verfahrens zur dynamischen Zuteilung einer Gesamtsystemleistung unter Ports gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Beschreibung legt zahlreiche spezifische Details, wie Beispiele spezifischer Systeme, Komponenten, Verfahren usw. dar, damit verschiedene Ausführungsformen der hierin beschriebenen Techniken zum Ermöglichen einer dynamischen und intelligenten Aufteilung der Systemleistung unter den verbundenen USB-C/PD-Ladeports gut verstanden werden können. Die Techniken sehen eine dynamische und intelligente Aufteilung der Systemleistung vor, ohne dass etwas von der Systemleistung nicht zugeteilt bleibt. USB-C/PD kann auch als USB-C/PD bezeichnet werden. Für den Fachmann wird es jedoch ersichtlich sein, dass zumindest einige Ausführungsformen ohne diese spezifischen Details praktiziert werden können. In anderen Fällen werden bekannte Komponenten, Elemente oder Verfahren nicht im Detail beschrieben oder werden in einem einfachen Blockdiagrammformat präsentiert, um eine unnötige Verschleierung der hierin beschriebenen Techniken zu vermeiden. Somit sind die im Folgenden dargelegten spezifischen Details lediglich beispielhaft. Bestimmte Implementierungen können von diesen beispielhaften Details abweichen und dennoch als innerhalb des Wesens und Schutzbereichs der vorliegenden Erfindung liegend erachtet werden.
  • Verweise in der Beschreibung auf „eine Ausführungsform“, „ein Ausführungsbeispiel“, „einige Ausführungsformen“ und „verschiedene Ausführungsformen“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur, ein bestimmter Schritt, ein bestimmter Vorgang oder eine bestimmte Eigenschaft, welche im Zusammenhang mit der/den Ausführungsform(en) beschrieben werden, in mindestens einer Ausführungsform der Erfindung umfasst ist. Ferner verweisen die Ausdrücke „eine Ausführungsform“, „ein Ausführungsbeispiel“, „einige Ausführungsformen“ und „verschiedene Ausführungsformen“ an verschiedenen Stellen in der Beschreibung nicht notwendigerweise alle auf dieselbe/n Ausführungsform(en).
  • Die Beschreibung umfasst Verweise auf die begleitenden Zeichnungen, die Bestandteil der detaillierten Beschreibung sind. Die Zeichnungen zeigen Veranschaulichungen gemäß beispielhaften Ausführungsformen. Diese Ausführungsformen, die hierin auch „Beispiele“ genannt werden können, werden ausreichend detailliert beschrieben, um es dem Fachmann zu ermöglichen, die Ausführungsformen des hierin beschriebenen, beanspruchten Gegenstands zu praktizieren. Die Ausführungsformen können kombiniert werden, andere Ausführungsformen können benutzt werden oder strukturelle, logische und elektrische Veränderungen können vorgenommen werden, ohne dass vom Schutzbereich und Wesen des beanspruchten Gegenstands abgewichen wird. Es versteht sich, dass die hierin beschriebenen Ausführungsformen den Schutzbereich des Gegenstands nicht beschränken sollen, sondern es dem Fachmann vielmehr ermöglichen sollen, den Gegenstand in die Praxis umzusetzen, herzustellen und/oder zu verwenden.
  • Hierin werden verschiedene Ausführungsformen von Techniken zum Ermöglichen einer intelligenten und dynamischen Aufteilung von Systemleistung unter verbundenen USB-C/PD-Ladeports oder Multiport-USB-C/PD-Controllern beschrieben. Die Techniken sehen eine dynamische und intelligente Aufteilung der Systemleistung vor, ohne dass etwas von der Systemleistung nicht zugeteilt bleibt. Beispiele für solche elektronischen Vorrichtungen umfassen, ohne darauf beschränkt zu sein, Personalcomputer (z. B. Laptop-Computer, Notebook-Computer usw.), mobile Rechenvorrichtungen (z. B. Tablets, Tablet-Computer, E-Reader-Vorrichtungen usw.), mobile Kommunikationsvorrichtungen (z. B. Smartphones, Mobiltelefone, persönliche digitale Assistenten, Nachrichtenübermittlungsvorrichtungen, Pocket-PCs usw.), Konnektivitäts- und Ladevorrichtungen (z. B. Hubs, Docking-Stationen, Adapter, Ladegeräte usw.), Audio-/Video-/Datenaufzeichnungs- und/oder Wiedergabevorrichtungen (z. B. Kameras, Sprachaufzeichnungsvorrichtungen, Handscanner, Monitore usw.) und andere ähnliche elektronische Vorrichtungen, die USB-Verbinder (Schnittstellen) (wie USB-C, USB-A, Mikro-USB und dergleichen) zur Kommunikation, zum Laden einer Batterie und/oder Leistungszufuhr verwenden können. Die hierin beschriebenen Ausführungsformen können verwendet werden für verschiedene Typen von Leistungsadaptern, GaN-basierte Leistungsadapter, die bei Frequenzen von 600 kHz arbeiten, Leistungsadapter mit primär- oder sekundärseitigen Controllern, Leistungsadapter, die in Betriebsmodi, wie Quasiresonanzmodus (QR), diskontinuierlichem Leitungsmodus (Discontinuous Conduction Mode, DCM), kontinuierlichem Leitungsmodus (Continuous Conduction Mode, CCM) oder dergleichen arbeiten. Die hierin beschriebenen Ausführungsformen können in Leistungsadapterlösungen zusammen mit der Typ-C-PD-Fähigkeit verwendet werden. Aspekte der vorliegenden Offenbarung können es einer Leistungsquelle ermöglichen, eine wesentlich geringere Kapazität aufzuweisen und dadurch Kosten und Komplexität zu reduzieren, während gleichzeitig das maximale Ladepotenzial der zugrundeliegenden USB-C/PD-Ports weiterhin effizient genutzt wird.
  • Eine USB-fähige elektronische Vorrichtung oder ein System kann mit mindestens einem Release einer USB-Spezifikation übereinstimmen. Beispiele für solche USB-Spezifikationen umfassen, ohne darauf beschränkt zu sein, die USB-Spezifikations-Revision 2.0, die USB-3.0-Spezifikation, die USB-3.1-Spezifikation und/oder verschiedene Ergänzungen (wie z. B. On-The-Go oder OTG), Varianten und Errata davon. Die USB-Spezifikationen definieren im Allgemeinen die Eigenschaften (z. B. Attribute, Protokolldefinition, Transaktionstypen, Busverwaltung, Programmierschnittstellen usw.) eines differentiellen seriellen Busses, die erforderlich sind, um Standard-Kommunikationssysteme und -Peripheriegeräte zu konzipieren und aufzubauen. Zum Beispiel ist eine USB-fähige Peripherievorrichtung durch einen USB-Port der Host-Vorrichtung an eine USB-fähige Host-Vorrichtung angeschlossen, um ein USB-fähiges System zu bilden. Ein USB-2.0-Port umfasst eine Leistungsspannungsleitung von 5 V (als VBUS bezeichnet), ein differentielles Paar von Datenleitungen (als D+ oder DP und D- oder DN bezeichnet) und eine Erdleitung für die Leistungsrückleitung (als GND bezeichnet). Ein USB-3.0-Port stellt auch die VBUS-, D+-, D-- und GND-Leitungen für eine Abwärtskompatibilität mit USB 2.0 bereit. Darüber hinaus, stellt ein USB-3.0-Port zur Unterstützung eines schnelleren differentiellen Busses (des USB-SuperSpeed-Busses) auch ein differentielles Paar von Senderdatenleitungen (als SSTX+ und SSTX- bezeichnet), ein differentielles Paar von Empfängerdatenleitungen (als SSRX+ und SSRX- bezeichnet), eine Leistungsleitung für Leistung (als DPWR bezeichnet) und eine Erdleitung für die Leistungsrückleitung (als DGND bezeichnet) bereit. Ein USB-3.1-Port stellt die gleichen Leitungen wie ein USB-3.0-Port für die Abwärtskompatibilität mit USB-2.0- und USB-3.0-Kommunikationen bereit, erweitert jedoch die Leistungsfähigkeit des SuperSpeed-Busses durch eine Sammlung von Merkmalen, die als Enhanced SuperSpeed bezeichnet werden.
  • Eine neuere Technologie für USB-Verbinder, die USB-Typ-C genannt werden, ist in verschiedenen Releases und/oder Versionen der USB-Typ-C-Spezifikation definiert. Die USB-Typ-C-Spezifikation definiert Typ-C-Buchse, Typ-C-Stecker und Typ-C-Kabel, die sowohl USB-Kommunikationen als auch Leistungszufuhr über neuere USB-Leistungszufuhrprotokolle, die in verschiedenen Revisionen/Versionen der USB-PD-Spezifikation definiert sind, unterstützen können. Beispiele für USB Typ-C-Funktionen und -Anforderungen können Daten- und andere Kommunikationen gemäß USB 2.0 und USB 3.0/3.1, elektromechanische Definitionen und Leistungsfähigkeitsanforderungen für Typ-C-Kabel, elektromechanische Definitionen und Leistungsfähigkeitsanforderungen für Typ-C-Buchsen, elektromechanische Definitionen und Leistungsfähigkeitsanforderungen für Typ-C-Stecker, Anforderungen für den Typ-C für Vorläufer-Kabelbaugruppen und -Adapter, Anforderungen für Typ-C-basierte Vorrichtungsdetektion und Schnittstellenkonfiguration, Anforderungen für eine optimierte Leistungszufuhr für Typ-C-Verbinder usw. umfassen, ohne darauf beschränkt zu sein. Gemäß der/den USB-Typ-C-Spezifikation(en) stellt ein Typ-C-Port unter anderem VBUS-, D+, D--, GND-, SSTX+-, SSTX--, SSRX+- und SSRX--Leitungen bereit. Darüber hinaus stellt ein Typ-C-Port auch eine Seitenbandbenutzungsleitung (als SBU(Sideband Use)-Leitung bezeichnet) zur Signalisierung von Seitenbandfunktionalität und eine Konfigurationskanalleitung (als CC(Configuration Channel)-Leitung bezeichnet) zur Ermittlung, Konfiguration und Verwaltung von Verbindungen über ein Typ-C-Kabel bereit. Ein Typ-C-Port kann mit einem Typ-C-Stecker und/oder einer Typ-C-Buchse assoziiert sein. Zur Vereinfachung der Benutzung sind der Typ-C-Stecker und die Typ-C-Buchse als ein umkehrbares Paar konzipiert, das unabhängig von der Stecker-Buchse-Ausrichtung arbeitet. Somit stellt ein Standard-USB-Typ-C-Verbinder, der als Standard-Typ-C-Stecker oder -Buchse angeordnet ist, unter anderem Anschlüsse für vier VBUS-Leitungen, vier Erdungsrückleitungen (GND-Leitungen), zwei D+-Leitungen (DP1 und DP2), zwei D--Leitungen (DN1 und DN2), zwei SSTX+-Leitungen (SSTXP1 und SSTXP2), zwei SSTX- -Leitungen (SSTXN1 und SSTXN2), zwei SSRX+-Leitungen (SSRXP1 und SSRXP2), zwei SSRX--Leitungen (SSRXN1 und SSRXN2), zwei CC-Leitungen (CC1 und CC2) und zwei SBU-Leitungen (SBU1 und SBU2) bereit.
  • Einige USB-fähige elektronische Vorrichtungen können mit einer spezifischen Revision und/oder Version der USB-PD-Spezifikation konform sein. Die USB-PD-Spezifikation definiert ein Standardprotokoll, das konzipiert ist, um die maximale Funktionalität von USB-fähigen Vorrichtungen zu ermöglichen, indem eine flexiblere Leistungszufuhr zusammen mit Datenkommunikationen über ein einziges USB-Typ-C-Kabel durch USB-Typ-C-Ports bereitgestellt wird. Die USB-PD-Spezifikation beschreibt auch die Architektur, die Protokolle, das Leistungsversorgungsverhalten, die Parameter und die Verkabelung, welche für die Verwaltung der Leistungszufuhr über USB-Typ-C-Kabel bei einer Leistung von bis zu 100 W notwendig sind. Gemäß der USB-PD-Spezifikation können Vorrichtungen mit USB-Typ-C-Ports (wie z. B. USB-fähige Vorrichtungen) über ein USB-Typ-C-Kabel mehr Strom und/oder höhere oder niedrigere Spannungen aushandeln, als in älteren USB-Spezifikationen (wie z. B. der USB-2.0-Spezifikation, der USB-3.1-Spezifikation, der USB-Batterieladespezifikation Rev. 1.1/1.2 usw.) erlaubt sind. Zum Beispiel definiert die USB-PD-Spezifikation die Anforderungen für einen Leistungszufuhrvertrag (PD-Vertrag), der zwischen einem Paar USB-fähiger Vorrichtungen ausgehandelt werden kann. Der PD-Vertrag kann sowohl den Leistungspegel als auch die Richtung der Leistungsübertragung, die von beiden Vorrichtungen aufgenommen werden kann, spezifizieren und kann dynamisch neu verhandelt werden (z. B. ohne Ausstecken der Vorrichtung), auf Anfrage einer der beiden Vorrichtungen und/oder als Reaktion auf verschiedene Ereignisse und Bedingungen, wie etwa Rollenumkehr bei der Leistungsversorgung (Power Role Swap) und dem Datenverkehr (Data Role Swap), Hard-Reset, Störung der Leistungsquelle usw.
  • Gemäß der USB-PD-Spezifikation ist eine elektronische Vorrichtung typischerweise konfiguriert, um einer anderen Vorrichtung durch einen auf einer USB-VBUS-Leitung konfigurierten Leistungspfad Leistung zuzuführen. Die Vorrichtung, die Leistung bereitstellt, wird typischerweise als „Lieferant“ (oder Leistungsquelle) bezeichnet (oder umfasst einen solchen), und die Vorrichtung, die Strom verbraucht, wird normalerweise als „Verbraucher“ (oder Leistungssenke) bezeichnet (oder enthält einen solchen). Ein Leistungspfad umfasst typischerweise einen Leistungsschalter, der auf der VBUS-Leitung in Reihe geschaltet und konfiguriert ist, um die Zufuhr von Leistung ein- und auszuschalten.
  • In einer Ausführungsform kann eine USB-PD-Leistungsquelle konfiguriert sein, um Leistung aus einer Gleichstrom(Direct Current, DC)-Leistungsquelle) zu beziehen, und kann einen Gleichstrom-zu-Gleichstrom(DC-DC)-Wandler umfassen. In anderen Ausführungsformen kann eine USB-PD-Leistungsquelle konfiguriert sein, um Leistung aus einem Wechselstrom(Alternating Current, AC)-Leistungsadapter oder aus einer weiteren AC-Quelle zu beziehen. Als Bestandteil einer Wechselstrom-zu-Gleichstrom(AC-DC)-Umwandlung können einige Implementierungen daher einen großen Stützkondensator auf der Leistungsquellenseite der VBUS-Leitung verwenden, um die AC-Komponente des Leistungssignals zu entfernen. Das Ein- und Ausschalten von Leistungsschaltern (auch als Leistungs-FETs bezeichnet) kann einen weiteren Schaltungsschutz basierend auf einer Analyse von Strom- und Spannungszuständen und der Detektion von Fehlern vorsehen.
  • In einem USB-C/PD(auch USB-Typ-C/PD genannt)-Ladegerät mit einer Vielzahl von Ports sind Lösungen zur Leistungsaufteilung notwendig, um dem Leistungsbudget eines Ports gerecht zu werden. Die Verwendung einer Leistungsquelle mit geringerer Kapazität, was eine geringere Systemleistung bereitstellt, kann zu Fehlern führen, wenn jeder Port gleichzeitig seine volle Leistungskapazität einsetzt. Darüber hinaus ist es bei einer gegebenen Leistungsquelle nicht möglich, die Fähigkeit einzelner Ports zu erhöhen, ohne die Systemleistung oder die Sicherungsbemessung zu erhöhen. Einige Leistungsaufteilungstechniken werden mit wenig bis gar keiner Anpassungsfähigkeit implementiert und verwenden Techniken wie faire Aufteilung, First-Come-First-Serve und/oder die Beschränkung der für jeden Port verfügbaren Leistung. Bei der gerechten Aufteilung wird jedem Port die gleiche Menge an Leistung zugeteilt, unabhängig davon, wie viele Vorrichtungen verbunden sind, oder von den Leistungsanforderungen der verbundenen Vorrichtungen. Bei First-Come-First-Serve wird der ersten zu verbindenden Vorrichtung Leistung basierend auf ihrer Leistungsanforderung zugeteilt, für etwaige nachfolgenden Vorrichtungen, die verbunden sind, wird die Leistungsanforderung möglicherweise nicht erfüllt. Durch Beschränken der für jeden Port verfügbaren Leistung (z. B. auf 15 W) kann die Leistung nicht unter anderen Ports neu zugeteilt werden. Bei jeder dieser Techniken kann die Störungsdetektion zwischen Ports nicht kommuniziert werden. Bei einer weiteren Leistungsaufteilungstechnik kann ein externer Controller, der von den an die einzelnen Ports gekoppelten USB-C/PD-Controllern separat ist, zum Zuteilen des Leistungsbudgets implementiert sein. Es kann jedoch sein, dass mit dieser Technik eine Fair-Share(gerechter Anteil)-Implementierung fehlt, dass ungenutzte Leistung nicht umverteilt wird und dass die Aufteilung der Leistung auf zwei Ports beschränkt ist. Weitere Kommunikationsstörungen zwischen dem externen Controller und den Ports werden möglicherweise nicht detektiert.
  • Hierin werden verschiedene Ausführungsformen von Techniken zum Ermöglichen einer intelligenten und dynamische Leistungsaufteilung unter verbundenen USB-C/PD-Ladeports beschrieben. Die hierin beschriebenen Ausführungsformen können den oben genannten und anderen Herausforderungen begegnen, indem sie einen Algorithmus bereitstellen, um die Leistungsanforderung der verbundenen Senkenvorrichtungen, falls vorhanden, zu erfassen und die Leistung unabhängig von der Verbindungsabfolge intelligent unter den Ports zu verteilen. Die Ausführungsformen können Formfaktoren reduzieren und lassen sich nahtlos in bestehende Konzepte integrieren, indem ein Leistungsaufteilungs-Master als alleiniger Leistungszufuhr-Entscheidungsträger und ein oder mehrere Leistungsaufteilungs-Slaves, die auf den Leistungsaufteilungs-Master reagieren, definiert werden. Die Ausführungsformen erleichtern die Laufzeitkonfiguration der Master- und Slave-Rollen basierend auf Systemanforderungen und ermöglichen dadurch ein symmetrisches, auf Firmware basierendes Verfahren, ohne Auswirkungen auf die USB-Datenübertragung oder die Benutzererfahrung. Die hierin beschriebenen Ausführungsformen enthalten einen Mechanismus zum Detektieren einer fehlerhaften Senkenverbindung und zum Verhindern, dass die fehlerhafte Senkenverbindung andere Ports beeinträchtigt, wodurch die Robustheit des Leistungszufuhrsystems erhöht wird. Leistungsaufteilungs-Ports sind unabhängig, so dass sie weiter funktionieren können, wenn die Kommunikation zwischen den Ports unterbrochen ist. Die Ausführungsformen ermöglichen eine faire und intelligente Umverteilung ungenutzter Leistung, sind widerstandsfähig gegen Kommunikationsstörungen, skalierbar für Systeme mit mehr als zwei Ports und kompatibel mit einem dynamischen Leistungsdrosselungsalgorithmus.
  • Obwohl sich die hierin beschriebenen Ausführungsformen auf Techniken zum Ermöglichen einer intelligenten und dynamischen Leistungsaufteilung unter verbundenen USB-C/PD-Ladeports beziehen, sind die Techniken nicht auf die Leistungsaufteilung unter USB-C/PD-Ports beschränkt. Die Techniken können zum Beispiel auf andere Typen der Ressourcenzuteilung angewendet werden, bei denen eine Ressource intelligent und dynamisch zugeteilt werden soll. In einem weiteren Beispiel können die Techniken in Fällen verschiedener anderer Batterieladeprotokolle angewendet werden.
  • In einer Ausführungsform kann ein Leistungsaufteilungs-Master einen Master-Controller umfassen, der mit einem Master-Port assoziiert ist, und ein Leistungsaufteilungs-Slave kann einen Slave-Controller umfassen, der mit einem Slave-Port assoziiert ist. In einer weiteren Ausführungsform kann ein Leistungsaufteilungs-Master einen Master-Controller und einen ersten Satz von Ports umfassen, und ein Leistungsaufteilungs-Slave kann einen Slave-Controller und einen zweiten Satz von Ports umfassen. In einer weiteren Ausführungsform kann ein einziger Master-Controller mit einem Satz von zwei oder mehr Ports verbunden sein und Leistung dynamisch und intelligent auf den Satz von zwei oder mehr Ports verteilen.
  • Der Leistungsaufteilungs-Master kann den Port-Verbindungsstatus für alle Leistungsaufteilungs-Ports (den Master-Port und alle Slave-Ports) verfolgen und Befehle an Leistungsaufteilungs-Slaves senden, um eine Leistungszufuhrleistung (Power Delivery Power, PDP) ihrer entsprechenden Slave-Ports unabhängig von einer Verbindungsabfolge von Vorrichtungen an die Leistungsaufteilungs-Ports zu aktualisieren. Eine PDP eines Ports ist ein Bruchteil der Gesamtsystemleistung, den ein gegebener Port einer Senkenvorrichtung bereitstellen darf. Die Leistungsaufteilungs-Slaves lösen auf Anweisung des Masters notwendige PDP-Änderungen aus und benachrichtigen den Master über ihren Port-Verbindungsstatus. Der Leistungsaufteilungs-Master kann Heartbeat-Nachrichten an die Leistungsaufteilungs-Slaves senden, und die Leistungsaufteilungs-Slaves können die von dem Master initiierten Heartbeat-Nachrichten bestätigen. Bei Detektion einer Kommunikationsstörung bei irgendwelchen Slaves kann der Master eine notwendige Leistungsbudgetreduzierung durchführen. In ähnlicher Weise können Slaves bei der Detektion von Kommunikationsstörungen beim Master eine notwendige Leistungsbudgetreduzierung durchführen.
  • 1 ist ein Blockdiagramm eines Multiport-Leistungszufuhrsystems 100 mit einem Master-Port 102 und einem Slave-Port 104 gemäß einer Ausführungsform. Das Multiport-PD-System 100 kann ein USB-C/PD-System sein. Ein Firmware-basiertes Verfahren kann die Aufteilung der Systemleistung unter den Ports, wie dem Master-Port 102 und dem Slave-Port 104, des Multiport-PD-Systems 100 ermöglichen. Der Master-Port 102 wird durch den Master-Controller 112 gesteuert, der alleiniger PDP-Entscheidungsträger ist, während der Slave-Port 104 durch den Slave-Controller 114 gesteuert wird, der ein PDP-Responder ist, der auf Befehle reagieren kann, die durch den Master-Controller 112 initiiert werden. Der Master-Controller 112 wird auch als Lastaufteilungs(Load Sharing, LS)-Master-Controller 112 bezeichnet, und der Slave-Controller 114 wird hierin auch als LS-Slave-Controller 114 bezeichnet. Der Master-Controller 112 ist konfiguriert, um einen Port-Verbindungsstatus des Slave-Ports 104 von dem Slave-Controller 114 zu erhalten. Der Master-Controller 112 ist ferner konfiguriert, um allen Ports Fair-Share-Leistung zuzuteilen. Der Master-Controller 112 und der Slave-Controller 114 können dann die Leistungsumverteilung basierend auf den verbundenen Ports durchführen. Es sei angemerkt, dass der Master-Port 102 und der Slave-Port 104 identisch sein können. Es sei angemerkt, dass der Master-Controller 112 und der Slave-Controller 114 identisch sein können, außer der Master-Controller 112 ist durch das Firmware-basierte Verfahren beauftragt (oder anderweitig programmiert), um als Master zu arbeiten, um den Slave-Controller 114 zu steuern, und der Slave-Controller 114 ist durch das Firmware-basierte Verfahren beauftragt (oder anderweitig programmiert), um als Slave zu arbeiten und auf den Master-Controller 112 zu reagieren.
  • Das Multiport-PD-System 100 weist eine Eingangsspannung VIN von einer Leistungsquelle an der Eingangsleitung 106 auf. Die Leistungsquelle stellt eine Systemleistung (oder die Gesamtsystemleistung) für das Multiport-PD-System 100 bereit. Der Leistungswandler 108 wandelt eine Eingangsspannung in eine unterschiedliche Spannung um, die an den Master-Port 102 geliefert wird. Der Leistungswandler 109 wandelt die Eingangsspannung in eine unterschiedliche Spannung um, die an den Slave-Port 104 geliefert wird. In einer Ausführungsform können die Leistungswandler 108 und 109 die Eingangsspannung VIN auf eine niedrigere Spannung absenken (z. B. als Abwärtstransformation der Spannung bezeichnet). Die serielle Busleitung 110 koppelt den Leistungswandler 108 an den LS-Master-Controller 112. Die serielle Busleitung 111 koppelt den Leistungswandler 109 an den LS-Slave-Controller 114. In der dargestellten Ausführungsform liefert die Leistungsquelle, die an den Leistungswandler 108 und den Leistungswandler 109 gekoppelt ist, eine Systemleistung, die dem Master-Port 102 und dem Slave-Port 104 zugeteilt wird. Der Feldeffekttransistor (FET) 122 kann ein- oder ausgeschaltet werden, um dem Master-Port 102 Leistung bereitzustellen. Der LS-Master-Controller 112 stellt ein Signal zum Ein- und Ausschalten des FET 122 bereit. Der FET 124 kann ein- oder ausgeschaltet werden, um dem Slave-Port 104 Leistung bereitzustellen. Der LS-Slave-Controller 114 stellt ein Signal zum Ein- und Ausschalten des FET 124 bereit. Die FETs 122 und 124 sind durch die Vbus-Leitungen 116 an den Master-Port 102 und den Slave-Port 104 gekoppelt.
  • In einigen Ausführungsformen können Leistungswandler 108 lineare DC-DC-Wandler, geschaltete DC-DC-Wandler, AC-DC-Wandler oder dergleichen sein. Obwohl in 1 als DC-DC-Wandler dargestellt, können die Leistungswandler 108 als AC-DC-Wandler oder andere Leistungswandler implementiert werden. Die FETs 122 und 124 können N-Kanal-FETs, P-Kanal-FETs oder dergleichen sein. Der Master-Port 102 und der Slave-Port 104 können USB-Typ-C-Ports, Mikro-USB-Ports, USB-Typ-A-Ports, andere leistungsbereitstellende oder leistungsempfangende Ports oder dergleichen sein.
  • Der LS-Master-Controller 112 und der LS-Slave-Controller 114 können konfiguriert sein, um für die Lastaufteilung (oder Leistungsaufteilung) über die Kommunikationsschnittstelle 118 zu kommunizieren. Die Kommunikationsschnittstelle 118 kann über eine unidirektionale Taktleitung (CLK-Leitung) erfolgen, bei welcher der LS-Master-Controller 112 ein Taktsignal an den LS-Slave-Controller 114 sendet, eine unidirektionale Interrupt-Leitung, bei welcher der LS-Slave-Controller 114 ein Interrupt-Signal an den LS-Master-Controller 112 sendet, und eine bidirektionale Datenleitung, bei der Signale zwischen dem LS-Master-Controller 112 und dem LS-Slave-Controller 114 gesendet werden. Die Kommunikationsschnittstelle 118 kann eine serielle Kommunikationsschnittstelle, wie I2C, ein empfohlener Standard (Recommended Standard, RS)-232, RS-485, eine serielle periphere Schnittstelle (Serial Peripheral Interface, SPI) oder dergleichen sein. Die Rolle des LS-Master-Controllers 112 besteht darin, alle Port-Verbindungsstatus, einschließlich eines Port-Verbindungsstatus seines eigenen Ports (Master-Port 102) und eines Port-Verbindungsstatus des Slave-Ports 104, zu verfolgen. In einer Ausführungsform benachrichtigt der LS-Slave-Controller 114 den LS-Master-Controller 112 über den Port-Verbindungsstatus des Slave-Ports 104. In einer weiteren Ausführungsform kann der LS-Master-Controller 112 den LS-Slave-Controller 114 über den Port-Verbindungsstatus des Slave-Ports 104 abfragen. Der Port-Verbindungsstatus kann ein Hinweis darauf sein, ob eine Senkenvorrichtung an den Port angeschlossen oder mit diesem verbunden ist oder nicht. Wenn eine Senkenvorrichtung mit einem Port verbunden ist, wird der Port als angeschlossen bezeichnet. Wenn keine Senkenvorrichtung mit einem Port verbunden ist, wird der Port als getrennt bezeichnet. Der LS-Master-Controller 112 kann Befehle an den LS-Slave-Controller 114 senden, um die PDP des Slave-Ports 104 zu aktualisieren. Als Reaktion auf den Empfang eines Befehls von dem LS-Master-Controller 112 löst der LS-Slave-Controller 114 eine PDP-Änderung basierend auf dem empfangenen Befehl aus. Eine Senkenvorrichtung kann irgendeine Vorrichtung sein, die an einen Port angeschlossen oder mit diesem verbunden ist und Leistung aus diesem Port verbraucht, wie ein Mobiltelefon, ein Tablet, ein Laptop oder dergleichen.
  • In einer Ausführungsform umfasst der LS-Master-Controller 112 einen ersten Anschluss 134, der an den Master-Port 102 gekoppelt ist, und einen ersten Satz von Anschlüssen 136, die an die Kommunikationsschnittstelle 118 gekoppelt sind. Der LS-Slave-Controller 114 umfasst einen zweiten Anschluss 138, der an den Slave-Port 104 gekoppelt ist, und einen zweiten Satz von Anschlüssen 140, der an die Kommunikationsschnittstelle 118 gekoppelt ist. Der LS-Master-Controller 112 und der LS-Slave Controller 114 sind gekoppelt und kommunizieren über die Kommunikationsschnittstelle 118.
  • Die durch den LS-Master-Controller 112 gesendeten Befehle hängen von den Verbindungsstatus aller Ports des Multiport-PD-Systems 100 ab. Der LS-Master-Controller 112 kann einen ersten Typ von Befehl senden, wenn alle Ports des Multiport-PD-Systems 100 abgekoppelt sind, einen zweiten Typ von Befehl senden, wenn ein Port des Multiport-PD-Systems 100 verbunden ist, und einen dritten Typ von Befehl senden, wenn mehr als ein Port des Multiport-PD-Systems 100 verbunden ist.
  • Das Firmware-basierte Verfahren ist konfiguriert, um eine Gesamtsystemleistung (System Power, SP) unter N Ports zu verteilen, unabhängig von der Abfolge, in der die Ports angeschlossen werden. Die Gesamtsystemleistung kann verteilt werden, ohne dass etwas von der Gesamtsystemleistung nicht zugeteilt ist. Es ist erwähnenswert, dass in 1 zwar zwei Ports gezeigt sind, ein Multiport-PD-System aber eine positive ganze Zahl (N) von Ports aufweisen kann, wie drei, vier, fünf oder mehr. Jeder Port ist in der Lage, ein individuelles Port-Budget (PB) zu beschaffen (hier auch als Port-Leistung bezeichnet). Das individuelle Port-Budget (PB) ist geringer als die Systemleistung (SP), z. B. PB<SP. Die Gesamtportleistung aller Ports (N*PB) kann jedoch größer als die Systemleistung sein, z. B. N*PB>SP, obwohl der Algorithmus für dynamische und intelligente Leistungsverteilung verhindert, dass der Gesamtausgang des Multiport-PD-Systems eine Leistung größer als SP ausgibt. Wenn alle N Ports getrennt sind, kann jedem der N Ports ein gerechter Anteil der Menge an Leistung zugeteilt werden, z. B. SP/N. Wenn ein Port angeschlossen ist, kann dem angeschlossenen Port PB zugeteilt werden. Eine Restleistung oder ungenutzte Leistung des Systems ist eine Differenz zwischen der Systemleistung und dem Leistungsbudget des verbundenen Ports (z. B. SP-PB). Den verbleibenden getrennten Ports (von denen es N-1 gibt) kann ein gerechter Mengenanteil der Restleistung zugeteilt werden, z. B. (SP-PB)/(N-1), wobei N-1 für eine Anzahl verbleibender getrennter Leistungen steht. Wenn mehr als ein Port verbunden ist, kann jedem Port zunächst SP/N zugeteilt werden, gefolgt von einer Umverteilung ungenutzter Leistung unter den angeschlossenen Ports. Wenn ein Port weniger als SP/N Menge an Leistung wählt, kann er hier als DOWN-Port bezeichnet werden. Wenn ein Port die Menge an Leistung SP/N wählt, kann er hier als UP-Port bezeichnet werden. DOWN-Ports wird eine niedrigere PDP neu zugeteilt, wodurch eine Restleistung erzeugt wird, die unter den UP-Ports umverteilt wird. Die Restleistung wird den UP-Ports nach einem Fair-Share-Modell neu zugeteilt.
  • Der LS-Master-Controller 112 kann Nachrichten an den LS-Slave-Controller 114 senden, um zu bestimmen, ob eine Kommunikationsstörung zwischen dem LS-Master-Controller 112 und dem LS-Slave-Controller 114 vorliegt. In einer Ausführungsform sind die Nachrichten Heartbeat-Nachrichten, die der LS-Master-Controller 112 in regelmäßigen, vorgegebenen Intervallen an den LS-Slave-Controller 114 sendet. In einer Ausführungsform können die regelmäßigen vorgegebenen Intervalle eine Anzahl von Sekunden sein und können programmierbar sein. In einer weiteren Ausführungsform sind die Meldungen Heartbeat-Meldungen, die der LS-Master-Controller 112 zu verschiedenen Zeitpunkten während des Betriebs des Multiport-PD-Systems 100 an den LS-Slave-Controller 114 sendet. In einigen Ausführungsformen erfolgen die Heartbeat-Nachrichten möglicherweise nicht in regelmäßigen, vordefinierten Intervallen, zum Beispiel wenn es zwischenzeitlich Kommunikationsprobleme zwischen dem LS-Master-Controller 112 und dem LS-Slave-Controller 114 gibt oder wenn es einen permanenten Kommunikationsausfall gibt. Wenn der LS-Slave-Controller 114 innerhalb einer ersten Schwellenzeitspanne keine Heartbeat-Nachricht empfängt, bestimmt er, dass eine Kommunikationsstörung zwischen dem LS-Slave-Controller 114 und dem LS-Master-Controller 112 vorliegt. Wenn der LS-Slave-Controller 114 eine Heartbeat-Nachricht empfängt, sendet er eine Bestätigung, oder eine Heartbeat-Bestätigung an den LS-Master-Controller 112. Wenn der LS-Master-Controller 112 innerhalb einer zweiten Schwellenzeitspanne keine Heartbeat-Bestätigung empfängt, bestimmt er, dass eine Kommunikationsstörung zwischen dem LS-Master-Controller 112 und dem LS-Slave-Controller 114 vorliegt. Sobald eine Kommunikationsstörung detektiert wird, werden sowohl die PDP des Master-Ports 102 als auch die des Slave-Ports 104 auf den gerechten Anteil reduziert, z. B. SP/N, wenn deren zuvor zugeteilte PDP größer als der gerechte Anteil war.
  • Der LS-Master-Controller 112 kann bestimmen, ob eine Änderung des Status des Master-Ports 102 oder des Slave-Ports 104 gültig oder ungültig ist. In einigen Ausführungsformen kann die Änderung des Status als gültig bestimmt werden, wenn ein Benutzer eine Senkenvorrichtung an das Multiport-PD-System 100 anschließt oder von diesem trennt, wenn die Senkenvorrichtung keine Leistung mehr beziehen muss oder dergleichen. In einigen Ausführungsformen kann die Änderung des Status als ungültig bestimmt werden, wenn die Senkenvorrichtung eine fehlerhafte Verbindung zu dem Multiport-PD-System 100 aufweist, wenn die Senkenvorrichtung nicht funktioniert oder dergleichen. In einigen Ausführungsformen wird, wenn mindestens ein Port (entweder der Master-Port 102 oder der Slave-Port 104) bereits angeschlossen ist, jegliche nachfolgende Änderung des Portstatus als gültig angesehen, wenn sie unverändert oder stabil ist, nachdem eine Schwellenzeitdauer, hier als tDebounce bezeichnet, durchlaufen wurde. tDebounce ist eine Zeitdauer, über welche hinweg die Änderung des Portstatus konsistent bleiben sollte, um als gültig angesehen zu werden, wenn mindestens ein anderer Port bereits angeschlossen ist. Wenn der Port-Verbindungsstatus für die Schwellenzeitdauer nicht konsistent ist, wird die Änderung des Port-Verbindungsstatus von dem LS-Master-Controller 112 ignoriert. In einigen Ausführungsformen kann tDebounce eine Anzahl von Millisekunden betragen. Alternativ kann tDebounce auch eine andere Zeitspanne sein. Jede leistungsaufteilungsspezifische PDP-Aktualisierung für den Master-Port 102 oder den Slave-Port 104 erfolgt erst nach Ablauf von tDebounce. Dadurch ist das Multiport-PD-System 100 widerstandsfähig gegenüber einer schlechten Verbindung oder Abkopplung von Senkenvorrichtungen und verhindert in einem solchen Szenario unnötige Leistungs-Neuzuteilungen auf bereits verbundene Ports.
  • Obwohl das Multiport-PD-System 100 in 1 so dargestellt ist, dass es einen Slave-Port aufweist, kann das Multiport-PD-System in anderen Ausführungsformen eine unterschiedliche Anzahl von Slave-Ports, wie zwei, drei, vier oder eine andere positive ganze Zahl von N Ports, aufweisen. Obwohl das Multiport-PD-System 100 in 1 so dargestellt ist, dass es eine einzige Vorrichtung ist, kann das Firmware-basierte Verfahren zur intelligenten und dynamischen Leistungsaufteilung in mehreren PD-Vorrichtungen mit einer gemeinsamen Leistungsquelle implementiert sein.
  • Obwohl das Multiport-PD-System 100 in 1 so dargestellt ist, dass es einen Master-Controller mit einem assoziierten Master-Port und einen Slave-Controller mit einem assoziierten Slave-Port aufweist, kann das Multiport-PD-System in anderen Ausführungsformen nur einen Master-Controller, der die mehreren Ports steuert, aufweisen. In einer solchen Ausführungsform sendet der Master-Controller zur Verteilung von Leistung unter den Ports Befehle direkt an den jeweiligen Port und nicht an einen Slave-Controller.
  • Obwohl das Multiport-PD-System 100 als Leistungslieferant dargestellt ist, kann das Multiport-PD-System in anderen Ausführungsformen auch ein Multiport-Leistungsverbraucher sein. Der Multiport-Leistungsverbraucher kann mit dem Firmware-basierten Verfahren implementiert sein, ist konfiguriert, um intelligent und dynamisch eine Gesamtsystemleistung (SP), verteilt auf N Ports, zu verbrauchen.
  • 2 ist ein Ablaufdiagramm eines Verfahrens 200 der dynamischen und intelligenten Leistungsaufteilung unter Ports in einem Multiport-PD-System gemäß einer Ausführungsform. Das Verfahren 200 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 200 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird das Verfahren 200 durch Verarbeitungslogik eines Master-Controllers, wie des LS-Master-Controllers 112 der 1, durchgeführt. In einer Ausführungsform führt der Master-Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Master-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen. Während er das Verfahren der dynamischen und intelligenten Leistungsaufteilung durchführt, tritt der Master-Controller in verschiedene Betriebszustände ein.
  • Das Verfahren 200 beginnt bei Punkt A 202, der einen zuvor laufenden Zustand (Running State) darstellt. Im zuvor laufenden Zustand kann der Master-Controller auf eine Änderung eines Port-Verbindungsstatus eines Ports hin überwacht haben. Der Port-Verbindungsstatus gibt an, ob an einem Port eine Senkenvorrichtung verbunden ist. Die Änderung des Port-Verbindungsstatus gibt an, dass eine Senkenvorrichtung mit einem Port verbunden oder von diesem abgekoppelt wurde. Der Master-Controller befindet sich in einem RUNNING-Zustand, der einem Abschluss einer Leistungsverteilung für eine zuvor bestimmte Änderung des Port-Verbindungsstatus folgt. Während der Überwachung auf die Änderung hin kann der Master-Controller bestimmen, ob ein Kommunikationsfehler oder eine Kommunikationsstörung detektiert wird (Block 204). Eine Heartbeat-Nachricht kann durch den Master-Controller an alle Slave-Controller in vorgegebenen regelmäßigen Zeitintervallen, tHeartBeat, übertragen werden. Wenn ein Slave-Controller innerhalb einer Zeitdauer, tCommunicationFailure, keine Heartbeat-Nachricht empfängt, bestimmt er, dass eine Kommunikationsstörung mit dem Master-Controller vorliegt. In einer Ausführungsform wird die Kommunikationsstörung durch eine Störung einer seriellen Kommunikationsschnittstelle zwischen dem Master-Controller und dem Slave-Controller verursacht. In einer weiteren Ausführungsform wird die Kommunikationsstörung durch eine Störung des Master-Controllers oder des Slave-Controllers verursacht. Wenn ein Slave-Controller die Heartbeat-Nachricht in der Zeitdauer tCommunicationFailure empfängt, überträgt er eine Heartbeat-Bestätigung an den Master-Controller. Wenn der Master-Controller von dem Slave-Controller länger als die Zeitdauer tCommunicationFailure keine Heartbeat-Bestätigung empfängt, bestimmt er, dass eine Kommunikationsstörung mit dem Slave-Controller vorliegt. In einer Ausführungsform stellt der Master-Controller, wenn eine Kommunikationsstörung detektiert wird, die PDP des Master-Ports auf einen Fair-Share-Wert SP/N ein, der gleich einer Gesamtsystemleistung aufgeteilt auf eine Gesamtzahl von Ports ist, wenn die PDP des Master-Ports zuvor größer als der Fair-Share-Wert war, und der Slave-Controller stellt die PDP des Slave-Ports auf den Fair-Share-Wert SP/N ein, wenn die PDP des Slave-Ports zuvor größer als der Fair-Share-Wert war (Block 206). In einer weiteren Ausführungsform stellt der Master-Controller, wenn eine Kommunikationsstörung detektiert wird, die PDP des Master-Ports auf einen Wert ein, der kleiner als der Fair-Share-Wert ist, wenn die PDP des Master-Ports zuvor größer als der Fair-Share-Wert war, und der Slave-Controller stellt die PDP des Slave-Ports auf einen Wert ein, der kleiner als der Fair-Share-Wert ist, wenn die PDP des Slave-Ports zuvor größer als der Fair-Share-Wert war.
  • Der Master-Controller kann einen Port-Verbindungsstatus bewerten (Block 208). Wenn der Master-Controller den Port-Verbindungsstatus bewertet, befindet sich der Master-Controller in einem DETERMINE_PORT_CONNECT_STATUS-Zustand. Wenn sich der Master-Controller in dem Zustand DETERMINE_PORT_CONNECT_STATUS befindet, bestimmt oder bewertet der Master-Controller den Port-Verbindungsstatus aller Ports, und die Leistungszuteilung wird anschließend basierend auf dem Port-Verbindungsstatus aller Ports bestimmt. Jede Änderung des Portstatus löst aus, dass der Master-Controller seinen Zustand in DETERMINE_PORT_CONNECT_STATUS ändert. In einer Ausführungsform wird eine Änderung des Portstatus verursacht, wenn eine oder mehrere Senkenvorrichtungen mit irgendeinem der Leistungsaufteilungs-Ports verbunden oder von einem dieser Ports abgekoppelt werden, was dazu führt, dass der Port-Verbindungsstatus .angeschlossen' bzw. getrennt ist. In einer weiteren Ausführungsform wird eine Änderung des Portstatus verursacht, wenn eine oder mehrere Senkenvorrichtungen eine fehlerhafte Verbindung zu dem Port aufweisen, wobei an dieser Stelle der Master-Controller ein Entprellungsverfahren durchführt. Der Master-Controller kann den Port-Verbindungsstatus als eine von drei Möglichkeiten bestimmen: dass alle Ports abgekoppelt sind, dass ein Port angeschlossen ist oder dass mehr als ein Port angeschlossen ist. Sobald der Master-Controller den Port-Verbindungsstatus bestimmt hat, tritt der Master-Controller in einen Zustand DISTRIBUTE_LOAD ein. Der Zustand DISTRIBUTE_LOAD ist eine erste Ebene der PDP-Verteilung. Ein Leistungsbudget ist eine Menge an Leistung, die der Master-Controller einem Port zuteilt und die einer maximalen Menge an Leistung entspricht, die der Port einer verbundenen Senkenvorrichtung bereitstellen darf. In einigen Fällen kann eine Senkenvorrichtung eine Menge an Leistung (eine angefragte Leistung oder eine erforderliche Leistung) anfragen, die niedriger ist als das Port-Budget, oder eine höhere Leistungsanforderung angeben (z. B. im Falle einer Fehlanpassung der Fähigkeiten), und der Master-Controller konfiguriert das jedem Port zugeteilte Leistungsbudget neu.
  • In einem ersten Fall bestimmt der Master-Controller einen Port-Verbindungsstatus, bei dem alle Ports abgekoppelt sind. Der Master-Controller kann in den Zustand DISTRIBUTE_LOAD eintreten und weist der Variablen X ALL PORTS zu (Block 210). ALL PORTS bezieht sich auf die Gesamtzahl der Ports, also gilt X=N. Der Master-Controller prüft dann, ob sich der Zustand irgendeines der Ports geändert hat (Block 212), damit an das Multiport-PD-System keine Ports angeschlossen sind. Wenn sich der Status eines Ports nicht ändert, kann dies angeben, dass das Multiport-PD-System ohne angeschlossene Ports initialisiert wurde und das Leistungsbudget PB jedes Ports gleich dem PB jedes anderen Ports ist. Der Master-Controller kann jedem der X-Ports eine Leistung zuteilen, die gleich einem Teil der Gesamtsystemleistung ist (Block 214). Der Bruchteil ist gleich der Gesamtsystemleistung geteilt durch die Anzahl der Ports, oder SP/N. In anderen Ausführungsformen kann der Teil gleich einem Bruchteil der Gesamtsystemleistung sein, wobei jeder Teil ein unterschiedlicher Bruchteil der Gesamtsystemleistung sein kann, der bei Summierung gleich der Gesamtsystemleistung ist. Mit anderen Worten, die Gesamtsystemleistung wird zugeteilt, ohne dass in einigen Fällen etwas von der Gesamtsystemleistung nicht zugeteilt wird. In anderen Fällen wird die Gesamtsystemleistung im Wesentlichen zugeteilt. Der Master-Controller kann, um jedem der Ports eine Leistung zuzuteilen, ein Signal an einen Slave-Controller senden, das jedem der Ports entspricht und das den Slave-Controller veranlassen kann, eine PDP seines entsprechenden Ports zu aktualisieren. Der Master-Controller kann ferner die PDP seines eigenen entsprechenden Ports aktualisieren. Um sicherzustellen, dass die PDP von jedem der Ports erfolgreich aktualisiert wurde, verlässt der Master-Controller den Zustand DISTRIBUTE_LOAD und tritt in einen Zustand WAIT_FOR_SLAVE_COMPLETE oder WAIT_FOR_MASTER_COMPLETE ein. In dem Zustand WAIT_FOR_SLAVE_COMPLETE hat der Master-Controller eine Slave-PDP-Änderung ausgelöst und muss darauf warten, dass der Slave-Controller die PDP seines entsprechenden Slave-Ports aktualisiert. Der Slave-Controller kann eine Benachrichtigung an den Master-Controller senden, wenn der Vorgang abgeschlossen ist, um den Master-Controller über den Abschluss zu benachrichtigen. In dem Zustand WAIT_FOR_MASTER_COMPLETE hat der Master-Controller eine PDP-Änderung seines eigenen Master-Ports ausgelöst und muss warten, bis der Vorgang abgeschlossen ist. Der Master-Controller führt eine Leistungsverarbeitungsabschluss-Prüfung durch, um zu prüfen, ob die PDP aller Ports erfolgreich aktualisiert wurde (Block 216). Sobald die PDP aller Ports erfolgreich aktualisiert wurde und der Master-Controller eine Benachrichtigung von den Slave-Controllern empfangen hat, verlässt der Master-Controller die Zustände WAIT_FOR_SLAVE_COMPLETE und WAIT_FOR_MASTER_COMPLETE und tritt wieder in den Zustand RUNNING ein. Der Master-Controller kann den Status aller Ports überwachen, um zu bestimmen, ob es eine Änderung gibt (z. B. eine Kommunikationsstörung, ein Port wurde angeschlossen und dergleichen) (Block 218). Der Master-Controller kann dann den Prozess wiederholen.
  • Wenn, mit Bezug zurück zu Block 212, der Master-Controller in dem Zustand DISTRIBUTE_LOAD ist und der Master-Controller stattdessen bestimmt, dass sich der Zustand eines oder mehrerer Ports geändert hat, gibt dies an, dass an einem der Ports eine Senkenvorrichtung angeschlossen gewesen war und dass die Senkenvorrichtung abgekoppelt wurde, so dass an dem Multiport-PD-System keine Senkenvorrichtung mehr angeschlossen ist. Wie in dem zweiten Fall unten ausführlicher beschrieben, wird, wenn eine Senkenvorrichtung angeschlossen wird, dem Port, an dem diese angeschlossen wird, eine Menge an Leistung PB zugeteilt, während den verbleibenden Ports ein Teil der gesamten verbleibenden Leistung gleich (SP-PB)/(N-1) zugeteilt wird, der kleiner als PB ist. In anderen Ausführungsformen kann der Teil gleich einem Bruchteil der gesamten verbleibenden Systemleistung sein, wobei jeder Teil ein unterschiedlicher Bruchteil der Gesamtsystemleistung sein kann, der bei Summierung gleich der gesamten verbleibenden Systemleistung ist. Der Master-Controller kann einen ersten Bruchteil einer Gesamtsystemleistung, wobei der erste Bruchteil SP/N ist, jedem der einen oder mehreren Ports in absteigender Reihenfolge der Leistungsanforderungen (z. B. von einem hohen PB zu einem niedrigen PB) zuweisen (Block 220). Dies geschieht so, dass die Gesamtleistung, die allen Ports zugeteilt wird, niemals die Gesamtsystemleistung SP übersteigt. Der Master-Controller verlässt dann den Zustand DISTRIBUTE_LOAD und tritt in die Zustände WAIT_FOR_SLAVE_COMPLETE und WAIT_FOR_MASTER_COMPLETE ein. Der Master-Controller kann dann eine Leistungsverarbeitungsabschluss-Prüfung der Leistungsverarbeitung durchführen (ähnlich der Leistungsverarbeitungsabschluss-Prüfung von Block 216) (Block 222). Sobald der Master-Controller bestimmt, dass die Leistungsverarbeitung abgeschlossen ist und dass die PDP des einen oder der mehreren Ports erfolgreich aktualisiert wurde, verlässt der Master-Controller die Zustände WAIT_FOR_SLAVE_COMPLETE und WAIT_FOR_MASTER_COMPLETE und tritt wieder in den Zustand DISTRIBUTE_LOAD ein. Der Master-Controller weist der Variablen X REMAINING-PORTS zu, was den Ports entspricht, für welche die PDPs noch nicht aktualisiert wurden (Block 224). Der Master-Controller führt dann die Schritte der Blöcke 214, 216 und 218 wie oben beschrieben durch.
  • Es sei angemerkt, dass in anderen Ausführungsformen der Master-Controller den ersten Bruchteil SP/N der Gesamtsystemleistung nicht jedem von dem einen oder der mehreren Ports in absteigender Reihenfolge der Leistungsanforderungen zuteilen muss. Beispielsweise kann der Master-Controller den ersten Bruchteil jedem von dem einen oder den mehreren Ports in zufälliger Reihenfolge, sequentieller Reihenfolge oder anderer Reihenfolge zuteilen.
  • In einem zweiten Fall, in dem der Master-Controller bestimmt, dass ein Port angeschlossen ist (nach Block 208), während er sich in dem Zustand DETERMINE_PORT_CONNECT_STATUS befindet, tritt der Master-Controller in den Zustand DISTRIBUTE_LOAD ein und teilt jedem der angeschlossenen Ports von hohem PB zu niedrigem PB einen zweiten Bruchteil der Gesamtsystemleistung zu, wobei der zweite Bruchteil (SP-PB)/(N-1) ist, (Block 226). Der Master-Controller ändert dann seinen Zustand in WAIT_FOR_SLAVE_COMPLETE und WAIT_FOR_MASTER_COMPLETE und kann eine Leistungsverarbeitungsabschluss-Prüfung durchführen, um sicherzustellen, dass die PDP jedes der nicht angeschlossenen Ports erfolgreich aktualisiert wurde (Block 228). Sobald der Master-Controller bestimmt, dass die PDP jedes der nicht angeschlossenen Ports erfolgreich aktualisiert wurde, ändert der Master-Controller seinen Zustand in DISTRIBUTE_LOAD und teilt dem angeschlossenen Port eine Leistung PB zu, die es dem angeschlossenen Port erlaubt, die maximale von einem Port unterstützte Leistung zu erhalten (Block 230). Der Master-Controller kann dann eine Leistungsverarbeitungsabschluss-Prüfung durchführen, um sicherzustellen, dass die PDP des angeschlossenen Ports erfolgreich aktualisiert wurde (Block 216). Sobald der Master-Controller festgestellt hat, dass der PDP des angeschlossenen Ports erfolgreich aktualisiert wurde, ändert der Master-Port seinen Zustand in RUNNING und überwacht alle Portstatus, um zu bestimmen, ob eine Änderung vorliegt (Block 218).
  • In einem dritten Fall, in dem der Master-Controller bestimmt, dass während des Zustands DETERMINE_PORT_CONNECT_STATUS mehr als ein angeschlossener Port vorhanden ist (nach Block 208), tritt der Master-Controller in den Zustand DISTRIBUTE_LOAD ein. Der Master-Controller kann dann jedem Port einen gerechten Anteil der Leistung von SP/N in der Reihenfolge von hohem PB zu niedrigem PB zuteilen, um sicherzustellen, dass die gesamte zugeteilte Leistung niemals die Gesamtsystemleistung SP überschreitet (Block 232). Der Master-Controller ändert seinen Zustand in WAIT_FOR_SLAVE_COMPLETE und WAIT_FOR_MASTER_COMPLETE und führt eine Leistungsverarbeitungsabschluss-Prüfung durch, um sicherzustellen, dass die PDP der Ports erfolgreich aktualisiert wurde (Block 234). Der Master-Controller ändert dann seinen Zustand in REDISTRIBUTE_UNUSED_LOAD und führt bei Punkt B 236 ein Leistungsumverteilungsverfahren durch.
  • Sowohl im zweiten als auch im dritten Fall wartet der Master-Controller, bevor er seinen Zustand von DETERMINE_PORT_CONNECT_STATUS (Block 208) zu DISTRIBUTE_LOAD (Blöcke 226 und 232) ändert, für eine Schwellenzeit, tDebounce, bevor er mit der Neuzuteilung von Leistung beginnt. tDebounce ist ein Zeitsteuerungsparameter, der eine Dauer definiert, während der eine Änderung des Portstatus konsistent bleiben sollte, um als gültig zu gelten, wenn mindestens ein Port bereits angeschlossen ist. Wenn mindestens ein Port bereits angeschlossen ist, kann jegliche nachfolgende Änderung des Portstatus als gültig betrachtet werden, wenn sie für die Schwellenzeit tDebounce konsistent ist. Leistungsaufteilungsspezifische PDP-Aktualisierungen können erfolgen, wenn die Änderung des Status als gültig betrachtet wird. Dadurch ist das System widerstandsfähig gegenüber einer schlechten Verbindung oder Abkopplung von Senkenvorrichtungen an einem Port und verhindert in einem solchen Szenario unnötige Leistungs-Neuzuteilungen auf bereits verbundene Ports. Der Master-Controller kann die Schwellenzeit tDebounce anwenden, um zu prüfen, ob eine Änderung des Status eines Ports gültig ist, bevor er eine Leistungszuteilung oder Neuzuteilung durchführt, da Ports während des Betriebs jederzeit angeschlossen oder getrennt werden können.
  • 3 ist ein Ablaufdiagramm eines Verfahrens 300 zur Umverteilung der Leistung unter Ports in einem Multiport-PD-System gemäß einer Ausführungsform. Das Verfahren 300 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 300 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird das Verfahren 300 durch Verarbeitungslogik eines Master-Controllers, wie des LS-Master-Controllers 112 der 1, durchgeführt. In einer Ausführungsform führt der Master-Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Master-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen.
  • Das Verfahren 300 kann implementiert werden, wenn der Master-Controller bestimmt, dass es mehr als einen angeschlossenen Port gibt und die Leistung unter den angeschlossenen Ports umverteilt werden sollte. In einer Ausführungsform beginnt das Verfahren 300 bei Punkt B 236, welches derselbe ist wie der Punkt B 236 der 2. Während er das Verfahren der dynamischen und intelligenten Leistungsaufteilung durchführt, tritt der Master-Controller in verschiedene Betriebszustände ein.
  • In Block 302 ändert der Master-Controller seinen Zustand auf REDISTRIBUTE_UNUSED_LOAD. Wenn eine Senkenvorrichtung mit einem Port verbunden oder an einen Port angeschlossen ist, wird ein Port-Verbindungsstatus des Ports angeschlossen, und die Senkenvorrichtung fragt eine Menge an Leistung RP (Requested Power) von dem Port an. Die angefragte Menge an Leistung oder die angefragte Leistung kann so konfiguriert sein, dass sie eine ausgewählte Leistungsdatenobjekts(Power Data Object, PDO)-Spannung multipliziert mit einem PDO-Strom oder eine ausgewählte PDO-Spannung multipliziert mit einem angefragten Datenobjekts(Requested Data Object, RDO)-Strom ist. Wenn an einem Port keine Senkenvorrichtung verbunden ist (wenn z. B. der Port getrennt ist), ist die angefragte Leistung des entsprechenden Ports gleich Null. Der Master-Controller kann eine anfängliche Anzahl von DOWN-Vorrichtungen als Null und eine anfängliche Anzahl von UP-Vorrichtungen als Null definieren (Block 302). Ein UP-Port ist ein Port, dessen angefragte Leistung größer oder gleich dem Schwellenwert ist. In einer Ausführungsform ist der Schwellenwert SP/N. In einer weiteren Ausführungsform kann der Schwellenwert als (SPIN)-1 gewählt werden, um jegliche Probleme bei der Dezimalumrechnung zu vermeiden. Der Master-Controller vergleicht die RP jedes Ports mit dem Schwellenwert (Block 304) und zählt die Anzahl der UP-Ports und die Anzahl der DOWN-Ports (Blöcke 306-310). In dem Zustand REDISTRIBUTE_UNUSED_LOAD versucht der Master-Controller, die restliche oder ungenutzte Leistungslast der DOWN-Ports auf die UP-Ports, falls vorhanden, umzuverteilen. Nachdem der Master-Controller die Anzahl der UP-Ports und die Anzahl der DOWN-Ports gezählt hat, kann der Master-Controller prüfen, ob die Anzahl der UP-Ports entweder Null oder die Gesamtzahl der Ports N ist (Block 312). Wenn es keine Ports gibt, bei denen angefragt wird, dass sie eine Leistung liefern sollen, die größer oder gleich dem Schwellenwert ist, muss der Master-Controller die Leistung unter den Ports nicht umverteilen und jeder Port behält einen gerechten Anteil der Leistung von SP/N bei. Wenn bei allen Ports angefragt wird, dass sie eine Leistung liefern sollen, die größer oder gleich dem Schwellenwert ist, gibt es keine ungenutzte Leistungslast, die der Master-Controller umverteilen muss. Wenn die Anzahl der UP-Ports gleich null oder N ist, muss oder kann der Master-Controller die Leistung nicht umverteilen und ändert seinen Zustand auf RUNNING und überwacht weiterhin den Portstatus auf Änderungen (Block 314).
  • Wenn die Anzahl der UP-Ports nicht gleich 0 oder N ist, bleibt der Master-Controller in dem Zustand REDISTRIBUTE_UNUSED_LOAD und fährt damit fort, die den DOWN-Ports zugeteilte Leistung zu verringern und anschließend die den UP-Ports zugeteilte Leistung zu erhöhen. Der Master-Controller berechnet einen ersten Wert SP/N-DOWN(RP) für jeden DOWN-Port und summiert jeden der ersten Werte, um PDOWN(TOTAL) zu erhalten (Block 316). Der Master-Controller berechnet einen zweiten Wert PUP(TOTAL)=(PB-SP/N)*UP(COUNT) für alle UP-Ports (Block 318). Der Master-Controller berechnet einen dritten Wert, der ein Minimum des ersten Werts und des zweiten Werts ist: REDISTRIBUTE_POWER = MIN(PDOWN(TOTAL), PUP(TOTAL)) (Block 320). Der Master-Controller verringert dann jede DOWN-Port-PDP, indem er jedem DOWN-Port eine Leistung MAX((SP-REDISTRIBUTE_POWER)/N, RP) zuteilt (Block 322), wobei RP die angefragte Leistung des jeweiligen DOWN-Ports ist. Der Master-Controller tritt dann in einen WAIT_FOR_SLAVE_COMPLETE- oder WAIT_FOR_MASTER COMPLETE-Zustand ein, um sicherzustellen, dass die PDP-Werte für alle DOWN-Ports erfolgreich aktualisiert wurden (Block 324).
  • Sobald die PDP-Werte für alle DOWN-Ports erfolgreich aktualisiert wurden, kehrt der Master-Controller in den Zustand REDISTRIBUTE_UNUSED_LOAD zurück. Der Master-Controller erhöht jede UP-Port-PDP, indem er jedem UP-Port eine Leistung von (SP+REOISTRIBUTE_POWER)/N zuteilt (Block 326). Der Master-Controller tritt dann in einen WAIT_FOR_SLAVE_COMPLETE- oder WAIT_FOR_MASTER COMPLETE-Zustand ein, um sicherzustellen, dass die PDP-Werte für alle UP-Ports erfolgreich aktualisiert wurden (Block 328). Der Master-Controller ändert dann seinen Zustand auf RUNNING und überwacht den Portstatus auf Änderungen (Block 330).
  • 4 ist ein schematisches Diagramm eines endlichen Zustandsautomaten (Finite State Machine, FSM) 400 eines Slave-Controllers eines Multiport-PD-Systems gemäß einer Ausführungsform. Der FSM 400 kann durch Verarbeitungslogik implementiert werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann der FSM 400 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird der FSM 400 durch Verarbeitungslogik eines Slave-Controllers, wie des LS-Slave -Controllers 114 der 1, durchgeführt. In einer Ausführungsform führt der Slave-Controller ein Firmware-basiertes Verfahren aus, welches Vorgänge durchführt, die mit den folgenden Zuständen assoziiert sind. In einer weiteren Ausführungsform weist der Slave-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen auszuführen, um Vorgänge durchzuführen, die mit den folgenden Zuständen assoziiert sind.
  • Die Rolle des Slave-Controllers besteht darin, eine PDP-Änderung eines Slave-Ports, der mit dem Slave-Controller assoziiert ist, als Reaktion auf den Empfang eines Befehls von einem Master-Controller, wie dem LS-Master-Controller 112 der 1, auszulösen und den Master-Controller über den Slave-Portstatus zu informieren. Der Slave-Controller informiert den Master-Controller über den Slave-Port-Verbindungsstatus (z. B. ob der Slave-Port an eine Senkenvorrichtung angeschlossen ist oder nicht) und benachrichtigt den Master-Controller, wenn die PDP-Änderung des Slave-Ports erfolgreich abgeschlossen ist. Der Slave-Controller empfängt periodische Heartbeat-Nachrichten in vordefinierten regelmäßigen Intervallen (tHeartBeat) von dem Master-Controller, um auf Kommunikationsstörungen hin zu prüfen. Der Slave-Controller überträgt Heartbeat-Bestätigungsnachrichten an den Master-Controller, um den Empfang der Heartbeat-Nachricht zu bestätigen. Eine Kommunikationsstörung kann erfolgen, wenn der Slave-Controller in einer bestimmten Schwellenzeitspanne (tCommunicationFailure) keine Heartbeat-Nachricht empfangen hat. Im Falle einer Kommunikationsstörung mit dem Master-Controller kann der Slave-Controller eine notwendige Leistungsbudgetreduzierung durchführen. In einer Ausführungsform ist zum Zeitpunkt der Kommunikationsstörung die PDP des Slave-Ports größer als der Fair-Share-Wert SP/N, und der Slave-Controller führt die notwendige Leistungsbudgetreduzierung durch, indem er die PDP des Slave-Ports auf den Fair-Share-Wert aktualisiert. In einer weiteren Ausführungsform ist die PDP des Slave-Ports zum Zeitpunkt der Kommunikationsstörung kleiner oder gleich dem Fair-Share-Wert SP/N, und der Slave-Controller führt die notwendige Leistungsbudgetreduzierung durch, indem er keine Maßnahme ergreift.
  • Während des Betriebs des Multiport-PD-Systems arbeitet der Slave-Controller in verschiedenen Zuständen. Wenn das Multiport-PD-System gestartet wird, befindet sich der Slave-Controller zunächst in einem WAIT_FOR_ATTACH-Zustand (Block 402). Der Slave-Controller bleibt in dem Zustand WAIT_FOR_ATTACH, immer wenn der Slave-Port nicht angeschlossen ist. In dem Zustand WAIT_FOR_ATTACH kann der Slave-Controller von dem Master-Controller einen Befehl empfangen, um eine PDP-Änderung des Slave-Ports auszulösen. Der Slave-Controller tritt in einen Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE (Block 404) ein, während er den PDP des Slave-Ports aktualisiert und während die PDP-Änderung im Gange ist. Der Slave-Controller verlässt den Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE, wenn er eine Benachrichtigung an den Master-Controller sendet, dass die PDP-Änderung des Slave-Ports erfolgreich war. Wenn die PDP-Änderung abgeschlossen ist, kehrt der Slave-Controller in den Zustand WAIT_FOR_ATTACH zurück.
  • Wenn eine Senkenvorrichtung mit dem Slave-Port verbunden ist, wird der Slave-Port angeschlossen und der Slave-Controller tritt in den Zustand RUNNING ein (Block 406), in dem der Senkenvorrichtung Leistung bereitgestellt wird. Der Slave-Controller bleibt in dem Zustand RUNNING, wenn er angeschlossen ist und wenn keine PDP-Änderung im Gange ist. Während der Slave-Controller in dem Zustand RUNNING ist, kann er von dem Master-Controller einen Befehl erhalten, eine PDP-Änderung des Slave-Ports auszulösen. Der Slave-Controller tritt in einen Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE (Block 404) ein, während er den PDP des Slave-Ports aktualisiert und während die PDP-Änderung im Gange ist. Der Slave-Controller verlässt den Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE, wenn er eine Benachrichtigung an den Master-Controller sendet, dass die PDP-Änderung des Slave-Ports erfolgreich war. Wenn die PDP-Änderung abgeschlossen ist, kehrt der Slave-Controller in den Zustand RUNNING zurück. Wenn die Senkenvorrichtung von dem Slave-Port abgekoppelt wird, wird der Slave-Port getrennt und der Slave-Controller kehrt in den Zustand WAIT_FOR_ATTACH zurück (Block 402).
  • 5 ist ein schematisches Diagramm eines FSM 500 eines Master-Controllers eines Multiport-PD-Systems gemäß einer Ausführungsform. Der FSM 500 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann der FSM 500 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird der FSM 500 durch Verarbeitungslogik eines Master-Controllers, wie des LS-Master-Controllers 112 der 1, durchgeführt. In einer Ausführungsform führt der Master-Controller ein Firmware-basiertes Verfahren aus, welches die Vorgänge durchführt, die mit den folgenden Zuständen assoziiert sind. In einer weiteren Ausführungsform weist der Master-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen auszuführen, um Vorgänge durchzuführen, die mit den folgenden Zuständen assoziiert sind. Der Master-Controller kann der LS-Master-Controller 112 der 1 sein und das Multiport-PD-System kann das Multiport-PD-System 100 der 1 sein. Die Rolle des Master-Controllers besteht darin, den Port-Verbindungsstatus jedes Ports einschließlich der Slave-Ports und eines Master-Ports zu verfolgen. Der Master-Controller kann mit dem Master-Port assoziiert sein, und der Master-Controller bestimmt einen Port-Verbindungsstatus des Master-Ports. Der Master-Controller kann einen Port-Verbindungsstatus der Slave-Ports bestimmen, indem er eine Benachrichtigung von den entsprechenden Slave-Controllern empfängt. Der Master-Controller sendet Befehle an die Slave-Controller, um die PDPs der entsprechenden Slave-Ports zu aktualisieren. Der Master-Controller empfängt Benachrichtigungen oder Angaben von den Slave-Controllern, wenn die entsprechenden PDPs erfolgreich aktualisiert wurden. Der Master-Controller kann, wenn notwendig, eine PDP des Master-Ports aktualisieren. Der Master-Controller kann periodische Heartbeat-Nachrichten in vordefinierten regelmäßigen Intervallen (tHeartBeat) an die Slave-Controller senden, um auf Kommunikationsstörungen hin zu überwachen. Eine Kommunikationsstörung mit einem Slave-Controller kann erfolgen, wenn der Master-Controller innerhalb einer Schwellenzeitspanne (tCommunicationFailure) keine Heartbeat-Bestätigung von dem Slave-Controller empfangen hat. Im Falle einer Kommunikationsstörung mit dem Slave-Controller kann der Master-Controller eine notwendige Leistungsbudgetreduzierung durchführen. In einer Ausführungsform ist zum Zeitpunkt der Kommunikationsstörung die PDP des Master-Ports größer als der Fair-Share-Wert SP/N, und der Master-Controller führt die notwendige Leistungsbudgetreduzierung durch, indem er die PDP des Master-Ports auf den Fair-Share-Wert aktualisiert. In einer weiteren Ausführungsform ist die PDP des Master-Ports zum Zeitpunkt der Kommunikationsstörung kleiner oder gleich dem Fair-Share-Wert SP/N, und der Master-Controller führt die notwendige Leistungsbudgetreduzierung durch, indem er keine Maßnahme ergreift.
  • In einer Ausführungsform kann der Master-Controller bestimmen, dass die Leistung unter den Ports neu zugeteilt wird, wenn eine Senkenvorrichtung mit einem Port verbunden oder von einem Port abgekoppelt wird, wodurch veranlasst wird, dass der Port angeschlossen oder getrennt wird. In einigen Fällen, zum Beispiel wenn die Senkenvorrichtung fehlerhaft ist oder eine intermittierende Verbindung zu einem Port aufweist, kann sich der Port-Verbindungsstatus schnell ändern. Wenn sich der Port-Verbindungsstatus innerhalb einer Schwellenentprellzeit tDebounce ändert, betrachtet der Master-Controller diesen als ungültig. Die Schwellenentprellzeit ist ein Zeitsteuerungsparameter, durch den die Port-Verbindungsstatusänderung konsistent bleiben sollte, um als gültig zu gelten, wenn bereits mindestens ein weiterer Port angeschlossen ist.
  • Während des Betriebs des Multiport-PD-Systems arbeitet der Master-Controller in verschiedenen Zuständen. Wenn das Multiport-PD-System gestartet wird, befindet sich der Master-Controller zunächst in einem DETERMINE_PORT CONNECT_STATUS-Zustand (Block 502). In dem Zustand DETERMINE_PORT_CONNECT_STATUS bestimmt der Master-Controller den Port-Verbindungsstatus jedes Ports, einschließlich des Master-Ports und des Slave-Ports, wie mit Bezug auf Block 208 der 2 beschrieben. Der Master-Controller bestimmt, wie die Leistung unter den Ports basierend auf dem Port-Verbindungsstatus zugeteilt wird, wie mit Bezug auf 2 und 3 beschrieben.
  • Wenn der Port-Verbindungsstatus jedes Ports bekannt ist, tritt der Master-Controller in einen Zustand DISTRIBUTE_LOAD (Block 504) ein. Der Zustand DISTRIBUTE_LOAD ist eine erste Ebene der PDP-Verteilung. Wenn sich der Master-Controller in dem Zustand DISTRIBUTE_LOAD befindet, kann er Maßnahmen wie durch die Blöcke 210, 212, 214, 224, 226, 230 und 232 der 2 beschrieben durchführen. Wenn es keine angeschlossenen Ports gibt, teilt der Master-Controller jedem Port eine Fair-Share-PDP SP/N zu. Wenn es einen angeschlossenen Port gibt, teilt der Master-Controller jedem nicht angeschlossenen Port zunächst eine PDP (SP-PB)/(N-1) zu und teilt anschließend dem einen angeschlossenen Port eine PDP PB zu. In beiden Fällen tritt der Master-Controller dann in den Zustand WAIT_FOR_SLAVE_COMPLETE bzw. WAIT_FOR_MASTER_COMPLETE (Blöcke 506 und 508) ein. In einigen Ausführungsformen kann sich der Master-Controller gleichzeitig in dem Zustand WAIT_FOR_SLAVE_COMPLETE und in dem Zustand WAIT_FOR_MASTER_COMPLETE befinden. In anderen Ausführungsformen kann sich der Master-Controller erst in dem Zustand WAIT_FOR_SLAVE_COMPLETE und anschließend in dem Zustand WAIT_FOR_MASTER_COMPLETE befinden, oder er kann sich erst in dem Zustand WAIT_FOR_MASTER_COMPLETE und anschließend in dem Zustand WAIT_FOR_SLAVE_COMPLETE befinden. In dem Zustand WAIT _FOR_SLA VE_COMPLETE wartet der Master-Controller auf den Empfang einer Benachrichtigung von jedem Slave-Controller, dass die PDP des entsprechenden Slave-Ports erfolgreich aktualisiert wurde. In dem Zustand WAIT_FOR_MASTER_COMPLETE wartet der Master-Controller darauf, dass die PDP des Master-Ports erfolgreich aktualisiert wird. Wenn die PDP-Änderungen aller Ports abgeschlossen sind, kehrt der Master-Controller in den Zustand DISTRIBUTE_LOAD zurück. Wenn die PDP-Zuteilung (z. B. Lastaufteilung) für den letzten bestimmten Port-Verbindungsstatus abgeschlossen ist, tritt der Master-Controller in einen RUNNING-Zustand ein (Block 512). Wenn sich der Master-Controller in dem Zustand RUNNING befindet, kann er Maßnahmen wie durch den Block 218 der 2 und die Blöcke 314 und 330 der 3 beschrieben durchführen. Der Master-Controller befindet sich nach Abschluss der Leistungsverteilung für den zuletzt bestimmten Port-Verbindungsstatus für jeden Port in dem Zustand RUNNING. Jede Änderung des Port-Verbindungsstatus löst aus, dass der Master-Controller-Zustand auf DETERMINE_PORT_CONNECTION_STATUS (Block 502) geht. Es sei angemerkt, dass in einer typischen Anwendung der Master-Controller die meiste Zeit in dem Zustand RUNNING verbringt (im Vergleich zu den anderen Zuständen).
  • Wenn es mehr als einen angeschlossenen Port gibt, teilt der Master-Controller jedem der Ports eine Fair-Share-PDP zu und tritt in den Zustand REDISTRIBUTE_UNUSED_LOAD ein (Block 510). Wenn sich der Master-Controller in dem Zustand REDISTRIBUTE_UNUSED_LOAD befindet, kann er Maßnahmen wie durch die Blöcke 302, 304, 305, 308, 310, 312, 316, 318, 320, 322 und 328 der 3 beschrieben durchführen. In dem Zustand REDISTRIBUTE_UNUSED_LOAD versucht der Master-Controller, die Leistung von Ports, die nicht angeschlossen sind oder von Ports, die an Senkenvorrichtungen mit geringen Leistungsanfragen (DOWN-Ports) angeschlossen sind, auf Ports neu zuzuteilen, die an Senkenvorrichtungen mit hohen Leistungsanfragen (UP-Ports) angeschlossen sind. Der Master-Controller tritt dann in den Zustand WAIT_FOR_SLAVE_COMPLETE bzw. WAIT_FOR_MASTER_COMPLETE ein (Blöcke 506 und 508). Wenn die PDP-Änderungen aller Ports abgeschlossen sind, kehrt der Master-Controller in den Zustand REDISTRIBUTE_UNUSED_LOAD zurück. Wenn die PDP-Neuzuteilung (z. B. Lastaufteilung) für den letzten bestimmten Port-Verbindungsstatus abgeschlossen ist, tritt der Master-Controller in einen RUNNING-Zustand ein (Block 512). Wenn sich der Master-Controller in dem Zustand RUNNING befindet, kann er Maßnahmen wie durch den Block 218 der 2 und die Blöcke 314 und 330 der 3 beschrieben durchführen. Der Master-Controller befindet sich nach Abschluss der Leistungsverteilung für den zuletzt bestimmten Port-Verbindungsstatus für jeden Port in dem Zustand RUNNING. Jede Änderung des Port-Verbindungsstatus löst aus, dass der Master-Controller-Zustand auf DETERMINE_PORT_CONNECTION STATUS (Block 502) geht. Es sei angemerkt, dass in einer typischen Anwendung der Master-Controller die meiste Zeit in dem Zustand RUNNING verbringt (im Vergleich zu den anderen Zuständen).
  • 6 ist ein schematisches Diagramm 600 eines FSM der Master-Controller- und Slave-Controller-Kommunikationsfehlerbehandlung gemäß einer Ausführungsform. Der FSM 600 kann durch Verarbeitungslogik implementiert werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann der FSM 600 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird der FSM 600 durch Verarbeitungslogik eines Controllers, wie des LS-Master-Controllers 112 der 1, durchgeführt. In einer weiteren Ausführungsform wird der FSM 600 durch Verarbeitungslogik eines Controllers, wie des LS-Slave-Controllers 114 der 1, durchgeführt. In einer Ausführungsform führt der Controller ein Firmware-basiertes Verfahren aus, welches Vorgänge durchführt, die mit den folgenden Zuständen assoziiert sind. In einer weiteren Ausführungsform weist der Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen auszuführen, um Vorgänge durchzuführen, die mit den folgenden Zuständen assoziiert sind.
  • Eine Kommunikationsstörung kann zu jeder Zeit und während jedes Zustands eines Master-Controllers und von Slave-Controllern auftreten. Der Master-Controller sendet periodische Heartbeat-Nachrichten in vordefinierten regelmäßigen Intervallen (tHeartBeat) an die Slave-Controller, um auf Kommunikationsstörungen hin zu überwachen. Der Slave-Controller empfängt die Heartbeat-Nachrichten und kann Heartbeat-Bestätigungsnachrichten an den Master-Controller übertragen, um den Empfang der Heartbeat-Nachricht zu bestätigen. Eine Kommunikationsstörung zwischen dem Slave-Controller und dem Master-Controller kann erfolgen, wenn der Slave-Controller keine Heartbeat-Nachricht von dem Master-Controller empfangen hat und der Master-Controller innerhalb einer Schwellenzeitspanne (tCommunicationFailure) keine Heartbeat-Bestätigung von dem Slave-Controller erhalten hat. Im Falle einer Kommunikationsstörung zwischen dem Master-Controller und dem Slave-Controller können sowohl der Master-Controller als auch der Slave-Controller notwendige Leistungsbudgetreduzierungen durchführen.
  • Wenn zum Zeitpunkt der Kommunikationsstörung die PDP des Master-Ports größer als der Fair-Share-Wert SP/N ist, kann der Master-Controller die notwendige Leistungsbudgetreduzierung durchführen, indem er die PDP des Master-Ports auf den Fair-Share-Wert aktualisiert. Wenn zum Zeitpunkt der Kommunikationsstörung die PDP des Master-Ports kleiner oder gleich dem Fair-Share-Wert SP/N ist, führt der Master-Controller die notwendige Leistungsbudgetreduzierung durch, indem er keine Maßnahme ergreift. Der Master-Controller tritt in einen Zustand WAIT_FOR_MASTER_COMPLETE ein (Block 602), während die notwendige Leistungsbudgetreduzierung erfolgt, und kehrt in seinen vorherigen Zustand zurück, wenn die notwendige Leistungsbudgetreduzierung abschließt. Der Zustand WAIT_FOR_MASTER_COMPLETE des Blocks 602 kann der gleiche sein wie der Zustand WAIT_FOR_MASTER_COMPLETE des Blocks 508 der 5.
  • Wenn zum Zeitpunkt der Kommunikationsstörung die PDP des Slave-Ports größer als der Fair-Share-Wert SP/N ist, führt der Slave-Controller die notwendige Leistungsbudgetreduzierung durch, indem er die PDP des Slave-Ports auf den Fair-Share-Wert aktualisiert. Wenn zum Zeitpunkt der Kommunikationsstörung die PDP des Slave-Ports kleiner oder gleich dem Fair-Share-Wert SP/N ist, kann der Slave-Controller die notwendige Leistungsbudgetreduzierung durchführen, indem er keine Maßnahme ergreift. Der Slave-Controller tritt in einen Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE ein (Block 604), während die notwendige Leistungsbudgetreduzierung erfolgt, und kehrt in seinen vorherigen Zustand zurück, wenn die notwendige Leistungsbudgetreduzierung abschließt. Der Zustand WAIT_FOR_LOAD CHANGE COMPLETE des Blocks 604 kann der gleiche sein wie der Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE des Blocks 404 der 4.
  • 7 ist ein Ablaufdiagramm eines Verfahrens 700 zur LeistungsaufteilungsInitialisierung gemäß einer Ausführungsform. Das Verfahren 700 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 700 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. Das Verfahren 700 kann implementiert sein, um die Rolle (z. B. Master oder Slave) eines jeden Controllers in dem Multiport-PD-System zu bestimmen.
  • Das Verfahren 700 beginnt damit, dass die Verarbeitungslogik eine Lastaufteilungsrolle (z. B. Master oder Slave) für jeden Port und den entsprechenden Controller in einem Multiport-PD-System bestimmt (Block 702). In einer Ausführungsform wird mit jedem Port eines Multiport-PD-Systems ein Controller assoziiert, wobei einem Controller die Rolle eines Master-Controllers zugewiesen wird und die übrigen Controller als Slave-Controller zugewiesen werden. In einer weiteren Ausführungsform kann jeder Controller eines Multiport-PD-Systems mit einem Satz von zwei oder mehr Ports assoziiert werden, wobei einem Controller die Rolle eines Master-Controllers zugewiesen wird und die übrigen Controller als Slave-Controller zugewiesen werden. In einer weiteren Ausführungsform kann ein Multiport-PD-System einen einzelnen Controller aufweisen, der mit einem Satz von zwei oder mehr Ports assoziiert ist, wobei der einzelne Controller als Master-Controller zugewiesen und konfiguriert ist, um unter dem Satz von zwei oder mehr Ports Leistung zuzuteilen. In einigen Ausführungsformen initiiert der Master-Controller einen Master-FSM und der Master-Controller kommuniziert mit den Slave-Controllern über eine Kommunikationsschnittstelle, um einen Slave-FSM zu initiieren. Sobald jedem Port eine Rolle zugewiesen wurde, werden eine Systemleistung (SP) und ein Port-Budget oder eine Port-Leistung (PB) konfiguriert (Block 704). Die Systemleistung ist eine Gesamtleistung, die durch das Multiport-PD-System ausgegeben werden kann. Die Port-Leistung ist eine maximale Leistung, die durch irgendeinen gegebenen Port geliefert werden kann. Die Verarbeitungslogik bei Block 706 prüft, ob ein Controller der Master-Controller oder ein Slave-Controller ist.
  • Wenn der Controller ein Slave-Controller ist, registriert die Verarbeitungslogik eine Slave-Firmware-Routine, um Master-Befehle zu empfangen (Block 708). Die Slave-Firmware-Routine kann auf einem Slave-Controller gespeichert werden, der mit dem Slave-Port assoziiert ist. Sobald die Verarbeitungslogik die Slave-Routine registriert, sendet die Verarbeitungslogik ein Ereignis an den Master-Controller (Block 710). Ein Ereignis, wie hierin beschrieben, kann ein Unterzustand innerhalb eines Zustands sein. Die Firmware-Routine kann basierend auf dem aktuellen Ereigniswert unterschiedliche Vorgänge innerhalb eines Zustands ausführen. Das Ereignis kann ein SLAVE-FW_READY-Ereignis sein, um den Master-Controller darüber zu informieren, dass die Slave-Firmware-Routine auf dem Slave-Controller gespeichert ist und dass der Slave-Controller bereit ist, mit dem Master-Controller zu kommunizieren. In Block 712 initiiert die Verarbeitungslogik den Slave-Controller in einen definierten Zustand. Die Verarbeitungslogik kann den Slave-Controller durch Senden eines Ereignisses, wie EVT_RUNNING, und durch Einstellen des Zustands initiieren. In einer Ausführungsform wird der Zustand auf WAIT_FOR_ATTACH eingestellt, wie mit Bezug auf 4 beschrieben. Sobald der Slave-Controller initiiert ist, kann die Verarbeitungslogik einen Lastaufteilungs-Slave-FSM ablaufen lassen. In einer Ausführungsform ist der Lastaufteilungs-Slave-FSM der FSM 400 der 4. Bei Punkt B 716 kann der Slave-Controller auf Befehle von dem Master-Controller reagieren, wie mit Bezug auf 8 und 9 näher beschrieben.
  • Wenn die Verarbeitungslogik bei Block 706 bestimmt, dass der Controller ein Master-Controller ist, kann die Verarbeitungslogik ein Ereignis zur Initialisierung des Master-Controllers erzeugen, indem sie ein Ereignis erzeugt und einen Zustand des Master-Controllers einstellt (Block 718). Das Ereignis kann ein EVT_POLL_SLAVE-Ereignis sein, und der Zustand des Master-Controllers wird auf DETERMINE_PORT_CONNECT_STATUS eingestellt, wie mit Bezug auf 5 beschrieben. Sobald der Master-Controller initiiert ist, lässt die Verarbeitungslogik einen Lastaufteilungs-Master-FSM ablaufen (Block 720). In einer Ausführungsform ist der Lastaufteilungs-Master-FSM der FSM 500 der 5. Bei Punkt A 722 ist der Master-Controller in Betrieb und kann Maßnahmen durchführen, wie in 2 und 3 beschrieben. Der Punkt A 722 kann der gleiche sein wie der Punkt A 202 der 2.
  • 8 ist ein Ablaufdiagramm eines Verfahrens 800 eines Slave-Controller-Betriebs gemäß einer Ausführungsform. Das Verfahren 800 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 800 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird das Verfahren 800 durch Verarbeitungslogik eines Slave-Controllers, wie des LS-Slave-Controllers 114 der 1, durchgeführt. In einer Ausführungsform führt der Slave-Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Slave-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen.
  • Mit Bezug zurück auf 8 beginnt das Verfahren 800 bei Punkt B 802, der nach der Initialisierung des Slave-Controllers erfolgen kann, wie in 7 beschrieben. Der Punkt B 802 kann der Punkt B 716 der 7 sein. Der Slave-Controller ist mit einem Slave-Port assoziiert. Wenn der Slave-Controller einen Befehl von einem Master-Controller, wie dem LS-Master-Controller 112 der 1, empfängt (Block 804), dann kann er bei Punkt C 806 ein Verfahren implementieren, um auf den Befehl zu reagieren. Das Verfahren bei Punkt C wird mit Bezug auf 9 näher beschrieben. Wenn der Slave-Controller einen Kommunikationsfehler detektiert (Block 808), kann er bei Punkt D 810 ein Verfahren implementieren, um den Kommunikationsfehler zu behandeln. Wenn der Slave-Controller keinen Befehl von dem Master-Controller empfängt und keinen Kommunikationsfehler detektiert, kann sich der Slave-Controller in einem von drei Betriebszuständen befinden.
  • In einer Ausführungsform befindet sich der Slave-Controller in einem ersten Zustand WAIT_FOR_ATTACH, wenn der Slave-Port nicht angeschlossen ist (keine Senkenvorrichtung an den Slave-Port angeschlossen ist). Im ersten Zustand wartet der Slave-Controller darauf, dass eine Senkenvorrichtung verbunden wird und dass der Slave-Port anschließend angeschlossen ist. Der Slave-Controller detektiert ein erstes Ereignis (EVT_ENTRY) (Block 812). Wenn das erste Ereignis EVT_ENTRY ist, dann prüft der Slave-Controller, ob der Slave-Port angeschlossen ist (Block 814). Wenn der Slave-Port nicht angeschlossen ist, kehrt der Slave-Controller bei Punkt B 802 in einen zuvor laufenden Zustand zurück. Wenn der Slave-Port angeschlossen ist, sendet der Slave-Controller eine erste Benachrichtigung (eine ATTACH-Benachrichtigung) an den Master-Controller (Block 816), um den Master-Controller darüber zu informieren, dass der Slave-Port angeschlossen ist. Der Slave-Controller erzeugt ein zweites Ereignis (EVT_RUNNING) (Block 818) und ändert seinen aktuellen Zustand (STATE) auf RUNNING.
  • Mit Bezug zurück zu Block 812 kann, wenn das erste Ereignis nicht EVT_ENTRY ist, der Slave-Controller prüfen, ob der Slave-Port getrennt ist (Block 820). Wenn der Slave-Port nicht getrennt ist, kann der Slave-Controller bei Punkt B 802 in einen zuvor laufenden Zustand zurückkehren. Wenn der Slave-Port getrennt ist, kann der Slave-Controller eine zweite Benachrichtigung (eine DETACH-Benachrichtigung) an den Master-Controller senden (Block 822), um den Master-Controller darüber zu informieren, dass der Slave-Port getrennt ist. Der Slave-Controller kann das zweite Ereignis (EVT_RUNNING) erzeugen (Block 824).
  • In einer weiteren Ausführungsform befindet sich der Slave-Controller in einem zweiten Zustand WAIT_FOR_LOAD CHANGE COMPLETE, wenn der Slave-Controller von dem Master-Controller einen Befehl empfängt, eine PDP des Slave-Ports zu aktualisieren oder zu ändern. Der Slave-Controller befindet sich in dem zweiten Zustand, wenn eine PDP-Änderung des Slave-Ports im Gange ist. Der Slave-Controller aktualisiert die PDP des Slave-Ports und prüft anschließend, ob die PDP-Änderung abgeschlossen ist (Block 826). Wenn die PDP-Änderung nicht abgeschlossen ist, kehrt der Slave-Controller bei Punkt B 802 in den zuvor laufenden Betriebszustand zurück. Wenn die PDP-Änderung abgeschlossen ist, aktualisiert der Slave-Controller seinen aktuellen Zustand (STATE) auf seinen alten Zustand (OLD_STATE) (Block 828).
  • In einer weiteren Ausführungsform befindet sich der Slave-Controller in einem dritten Zustand RUNNING. Der Slave-Controller befindet sich in dem dritten Zustand, wenn der Slave-Port angeschlossen ist und keine PDP-Änderung des Slave-Ports im Gange ist. Der Slave-Controller prüft, ob der Slave-Port getrennt ist (Block 830). Wenn der Slave-Port nicht getrennt ist, kehrt der Slave-Port bei Punkt B 802 in den zuvor laufenden Zustand zurück. Wenn der Slave-Port getrennt ist, erzeugt der Slave-Controller ein drittes Ereignis (EVT_ENTRY) und ändert seinen Zustand in den ersten Zustand (WAIT_FOR_ATTACH) (Block 832).
  • 9 ist ein Ablaufdiagramm eines Verfahrens 900 der Slave-Controller-Befehls-Behandlung gemäß einer Ausführungsform. Das Verfahren 900 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform wird das Verfahren 900 durch Verarbeitungslogik eines Slave-Controllers, wie des LS-Slave-Controllers 114 der 1, durchgeführt. In einer Ausführungsform führt der Slave-Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Slave-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen. Das Verfahren 900 kann implementiert werden, wenn der Slave-Controller einen Befehl von einem Master-Controller, wie dem LS-Master-Controller 112 der 1, empfängt.
  • Das Verfahren 900 beginnt bei Punkt C 806, wenn der Slave-Controller einen Befehl von einem Master-Controller empfängt. Der Punkt C 806 ist der gleiche wie der Punkt C 806 der 8. Bei Block 804 der 8 bestimmt der Slave-Controller, dass er einen Befehl von dem Master-Controller empfangen hat. Bei Block 902 bestimmt der Slave-Controller, ob der Befehl ein erster Befehl (z. B. SET PDP), um eine PDP eines Slave-Ports, der mit dem Slave-Controller assoziiert ist, zu ändern oder zu aktualisieren, ist. Wenn der Befehl ein erster Befehl zum Ändern oder Aktualisieren der PDP des Slave-Ports ist, stellt der Slave-Controller eine PDP-Änderungsvariable (PDP_CHANGE) auf wahr ein (Block 904). Die PDP-Änderungsvariable kann ein binärer Wert wie wahr/falsch, null/eins oder dergleichen sein. Der Slave-Controller aktualisiert seinen alten Zustand (OLD_STATE) auf seinen aktuellen Zustand (STATE) (Block 906). Der Slave-Controller aktualisiert seinen aktuellen Zustand (STATE) auf WAIT_FOR_LOAD_CHANGE_COMPLETE (Block 908). Der Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE kann der zweite Zustand, wie mit Bezug auf 8 beschrieben, sein. Der Slave-Controller kehrt bei Punkt B 802 in einen zuvor laufenden Zustand zurück.
  • Wenn der Slave-Controller bei Block 902 bestimmt, dass der Befehl nicht der erste Befehl zum Ändern oder Aktualisieren der PDP des Slave-Ports ist, kann der Slave-Controller prüfen, ob der Befehl ein zweiter Befehl (z. B. HEARTBEAT) ist (Block 910), den der Master-Controller sendet, um einen Kommunikationsfehler zwischen dem Master-Controller und dem Slave-Controller zu detektieren. Der zweite Befehl kann eine Heartbeat-Nachricht von dem Master-Controller sein. Wenn der Slave-Controller bestimmt, dass der Befehl die Heartbeat-Nachricht ist, stoppt der Slave-Controller und startet einen Slave-Heartbeat (Block 912). Der Slave-Heartbeat ist eine Bestätigung, die der Slave-Controller an den Master-Controller sendet, um zu bestätigen, dass der Slave-Controller die Heartbeat-Nachricht empfangen hat. Der Slave-Controller kehrt bei Punkt B 802 in den zuvor laufenden Zustand zurück. In einer Ausführungsform sendet der Master-Controller in regelmäßigen, vordefinierten Zeitintervallen (tHeartBeat) eine Heartbeat-Nachricht. Die Zeitintervalle können eine Dauer in Sekunden sein, in denen der Master-Controller Heartbeat-Nachrichten sendet. Alternativ kann tHeartBeat eine andere Zeitspanne sein. Wenn der Slave-Controller innerhalb einer bestimmten Schwellenzeitspanne keine Heartbeat-Nachricht empfängt (tCommunicationFailure), bestimmt der Slave-Controller, dass eine Kommunikationsstörung mit dem Master-Controller vorliegt. Wenn der Master-Controller in der Schwellenzeitspanne keine Heartbeat-Bestätigung von dem Slave-Controller empfängt, bestimmt der Master-Controller, dass eine Kommunikationsstörung mit dem Slave-Controller vorliegt. Sobald die Kommunikationsstörung detektiert ist, können sowohl der Master-Controller als auch der Slave-Controller die PDP ihrer jeweiligen Ports auf einen Fair-Share-Wert aktualisieren, wenn die PDP ihrer jeweiligen Ports zuvor größer als der Fair-Share-Wert war.
  • Wenn der Slave-Controller bei Block 910 bestimmt, dass der Befehl keine Heartbeat-Nachricht von dem Master-Controller ist, prüft der Slave-Controller, ob der Befehl ein dritter Befehl (z. B. GET_SLAVE_STATUS) ist (Block 914), den der Master-Controller sendet, um einen Port-Verbindungsstatus des Slave-Ports zu erhalten. Der dritte Befehl kann durch den Slave-Controller empfangen werden, wenn der Master-Controller den Slave-Controller nach dem Port-Verbindungsstatus des Slave-Ports abfragt. Wenn der Slave-Controller bestimmt, dass der Befehl der dritte Befehl ist, benachrichtigt der Slave-Controller den Master-Controller über den Port-Verbindungsstatus des Slave-Ports (Block 916). Der Slave-Controller kann den Master-Controller über den Port-Verbindungsstatus informieren, indem er einen SLAVE-Portstatus zurücksendet. Der Slave-Portstatus kann entweder ATTACH oder DETACH sein, wenn eine Senkenvorrichtung mit dem Slave-Port verbunden bzw. nicht verbunden ist. Wenn der Slave-Controller bei Block 914 bestimmt, dass der Befehl nicht der dritte Befehl ist, kehrt der Slave-Controller bei Punkt B 802 in den zuvor laufenden Zustand zurück.
  • 10 ist ein Ablaufdiagramm eines Verfahrens 1000 der Slave-Controller-Kommunikationsfehler-Behandlung gemäß einer Ausführungsform. Das Verfahren 1000 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 1000 durch einen Slave-Controller, wie den LS-Slave-Controller 114 der 1, durchgeführt werden. In einer Ausführungsform führt der Slave-Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Slave-Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen. Das Verfahren 1000 kann implementiert werden, wenn der Slave-Controller bestimmt, dass ein Kommunikationsfehler zwischen dem Slave-Controller und einem Master-Controller, wie dem LS-Master-Controller 112 der 1, vorliegt.
  • Das Verfahren 1000 beginnt bei Punkt D 810, wenn der Slave-Controller bestimmt, dass ein Kommunikationsfehler zwischen dem Slave-Controller und dem Master-Controller vorliegt. Der Punkt D 810 ist der gleiche wie der Punkt D 810 der 8. Bei Block 808 der 8 bestimmt der Slave-Controller, dass ein Kommunikationsfehler vorliegt. Sobald der Kommunikationsfehler detektiert ist, kann der Slave-Controller prüfen, ob eine PDP eines Slave-Ports, der mit dem Slave-Controller assoziiert ist, größer als ein Fair-Share-PDP-Wert ist (Block 1002). Der Fair-Share-PDP-Wert ist gleich einer Gesamtsystemleistung (SP) geteilt durch eine Gesamtzahl von ((N) Ports (z. B. SP/N). Die Gesamtzahl der Ports umfasst den Master-Port und jeden Slave-Port. In einer Ausführungsform beträgt die Gesamtzahl der Ports zwei, und der Slave-Controller prüft, ob der PDP-Wert des Slave-Ports größer als 50% der Gesamtsystemleistung ist. In anderen Ausführungsformen ist die Gesamtzahl der Ports größer als zwei, und der Slave-Controller prüft, ob der PDP-Wert des Slave-Ports größer als SP/N ist.
  • Wenn bei Block 1002 der Slave-Controller bestimmt, dass die PDP des Slave-Ports größer als der Fair-Share-PDP-Wert ist, reduziert der Slave-Controller den PDP-Wert auf den Fair-Share-PDP-Wert (Block 1004). In einer Ausführungsform beträgt die Gesamtzahl der Ports zwei und der Slave-Controller reduziert den PDP-Wert des Slave-Ports auf 50% der Gesamtleistung. In anderen Ausführungsformen ist die Gesamtzahl der Ports größer als zwei, und der Slave-Controller reduziert den PDP-Wert des Slave-Ports auf SP/N. In einer weiteren Ausführungsform beträgt die Gesamtzahl der Ports zwei und der Slave-Controller reduziert den PDP-Wert des Slave-Ports auf SP/2. In Block 1006 aktualisiert der Slave-Controller seinen alten Zustand (OLD_STATE) auf seinen aktuellen Zustand (STATE). Der Slave-Controller aktualisiert seinen aktuellen Zustand (STATE) auf WAIT_FOR_LOAD_CHANGE_COMPLETE (Block 1008). Der Zustand WAIT_FOR_LOAD_CHANGE_COMPLETE kann der zweite Zustand, wie mit Bezug auf 8 beschrieben, sein. Der Slave-Controller kehrt bei Punkt B 802 in einen zuvor laufenden Zustand zurück. Mit Bezug zurück zu Block 1002, wenn der Slave-Controller bestimmt, dass die PDP des Slave-Ports geringer ist als der Fair-Share-PDP-Wert, ergreift der Slave-Controller keine zusätzlichen Maßnahmen und kehrt bei Punkt B 802 in den zuvor laufenden Zustand zurück.
  • 11A ist ein Blockdiagramm verschiedener Multiport-Leistungsadapter 1100a, die konfiguriert sind, um unter Verwendung eines Firmware-basierten Verfahrens Leistung dynamisch und intelligent unter Ports zu verteilen, gemäß einer Ausführungsform. Der Multiport-Leistungsadapter 1100a kann ähnlich dem Multiport-PD-System 100 der 1 sein, wie aus ähnlichen Bezugszeichen hervorgeht. Der Multiport-Leistungsadapter 1100a umfasst einen Master-Port 102 und einen oder mehrere Slave-Ports 104. Der Master-Port 102 kann durch einen Master-Controller 112 gesteuert werden. Die Slave-Ports 104 können durch entsprechende Slave-Controller 114 gesteuert werden. Leistungswandler 108 wandeln eine Eingangsspannung in eine unterschiedliche Spannung um. In der dargestellten Ausführungsform sind die Leistungswandler 108 DC-DC-Leistungswandler. In einer Ausführungsform ist der Multiport-Leistungsadapter 1100a ein Multiport-USB-C-Auto-Rücksitz-Ladegerät eines Automobils. In einer weiteren Ausführungsform ist der Multiport-Leistungsadapter 1100 Bestandteil eines Rücksitz-Unterhaltungssystems eines Automobils. Ein Rücksitz-Unterhaltungssystem kann ein Anzeige-System-on-Chip (SoC) umfassen, und eine oder mehrere Anzeigen oder andere Leistung verbrauchende Vorrichtungen können mit dem Anzeige-SoC verbunden sein. In einer weiteren Ausführungsform ist der Multiport-Leistungsadapter 1100 Bestandteil einer Haupteinheit (engl. Headunit) eines Automobils. Die Haupteinheit des Automobils kann einen USB-Hub umfassen, und eine Leistung verbrauchende Vorrichtung kann mit dem USB-Hub verbunden sein. Leistung verbrauchende Vorrichtungen können Leistung aus der gleichen Leistungsquelle wie der Master-Port 102 und die Slave-Ports 104 verbrauchen, oder Leistung verbrauchende Vorrichtungen können Leistung aus einer unterschiedlichen Quelle verbrauchen. In dem Fall, dass Leistung verbrauchende Vorrichtungen Leistung aus der gleichen Quelle wie der Master-Port 102 und die Slave-Ports 104 verbrauchen, kann das Firmware-basierte Verfahren die Leistung zwischen dem Master-Port 102, den Slave-Ports 104 und den Leistung verbrauchenden Vorrichtungen dynamisch und intelligent zuteilen.
  • In anderen Ausführungsformen kann der Multiport-Leistungsadapter 1100a Bestandteil eines Multiport-USB-C-Ladegeräts in einem Fahrzeug, PKW, LKW, Transporter, Boot, Flugzeug, Gebäude, Haus oder dergleichen sein. In anderen Ausführungsformen ist der Multiport-Leistungsadapter 1100 ein Multiport-USB-C-Wandladegerät, eine Multiport-USB-C-Powerbank, ein Multiport-USB-C-Leistungs-Hub, ein geteilter Multiport-Leistungsadapter oder dergleichen. In anderen Ausführungsformen kann der Multiport-Leistungsadapter 1100a andere Ports als USB-C-Ports verwenden und ist ein Multiport-Wandladegerät, ein Multiport-Leistungs-Hub, eine Multiport-Powerbank oder dergleichen. In anderen Ausführungsformen kann der Multiport-Leistungsadapter 1100a andere Ports als USB-C verwenden, wie Wandsteckdosen, Mikro-USB-Ports oder dergleichen. In einigen Ausführungsformen sind die Ports des Multiport-USB-C-Leistungsadapters 1100a möglicherweise nicht alle gleich. Zum Beispiel kann der Multiport-USB-C-Leistungsadapter eine Anzahl von USB-Typ-C-Ports und eine Anzahl anderer Ports, wie USB-A-, Mikro-USB- und USB-A-3.0-Ports, umfassen.
  • Das Firmware-basierte Verfahren kann durch den Multiport-Leistungsadapter 1100a implementiert werden, um eine Gesamtsystemleistung dynamisch auf verbundene USB-C/PD-Ladeports oder Multiport-USB-C/PD-Controller aufzuteilen, indem eine Leistungsanforderung der verbundenen Senkenvorrichtungen erfasst wird. Der Multiport-Leistungsadapter teilt verfügbare Leistung unter Ports zu, unabhängig von der Reihenfolge, in der die Ports verbunden werden. In einigen Ausführungsformen kann der Multiport-Leistungsadapter 1100a zusätzliche Leistungssenken oder Leistung verbrauchende Vorrichtungen 1150, wie eine Videoanzeige, einen Audioausgang oder dergleichen umfassen. In einigen Ausführungsformen kann das Firmware-basierte Verfahren auf irgendeine Verteilung von Ressourcen angewendet werden.
  • 11B ist eine Veranschaulichung eines Multiport-AC-Leistungsadapters 1100b, der konfiguriert ist, um unter Verwendung eines Firmware-basierten Verfahrens Leistung dynamisch und intelligent zu verteilen, gemäß einer Ausführungsform. In einer Ausführungsform kann der Multiport-AC-Leistungsadapter 1100b ein Wand-Leistungsadapter sein, der einen Master-Port 102, einen Slave-Port 104 und Leistungs-Ports 1150 umfasst. Der Master-Port 102 kann durch einen Master-Controller gesteuert werden (nicht in 11B gezeigt), und der Slave-Port 104 kann durch einen Slave-Controller (nicht in 11B gezeigt) gesteuert werden. AC-DC-Wandler (nicht gezeigt) können eine Eingangs-AC-Versorgungsspannung in eine DC-Spannung umwandeln, die dem Master-Controller und dem Slave-Controller geliefert wird. In einer Ausführungsform kann der Multiport-AC-Leistungsadapter 1100b konfiguriert sein, um Vorgänge zur Verteilung einer Systemleistung zwischen dem Master-Port 102 und dem Slave-Port 104 zu implementieren, wobei jeder Port 1150 eine feste Port-Leistung liefern kann. In anderen Ausführungsformen können die Ports 1150 als Slave-Ports konfiguriert sein, und der Multiport-AC-Leistungsadapter 1100b kann konfiguriert sein, um Vorgänge zur Verteilung einer Systemleistung zwischen dem Master-Port 102, dem Slave-Port 104 und den Ports 1150 zu implementieren.
  • Obwohl in 11B als Wand-Adapter veranschaulicht, kann der Multiport-AC-Leistungsadapter 1100b ein anderer Typ von Multiport-AC-Leistungsadapter sein, wie er in einem Fahrzeug, PKW, LKW, Transporter, Boot, Flugzeug, Gebäude, Haus oder dergleichen zu finden ist.
  • 12 ist ein Blockdiagramm, das ein System 1200 für eine USB-Vorrichtung zur Verwendung in der USB-Leistungszufuhr gemäß einigen Ausführungsformen veranschaulicht. Das System 1200 kann ein Peripherie-Teilsystem 1210 umfassen, das eine Anzahl von Komponenten zur Verwendung in der USB-Leistungszufuhr (USB-PD) umfasst. Das Peripherie-Teilsystem 1210 kann eine Peripherie-Zwischenverbindung 1211 einschließlich eines Taktgebermoduls, den Peripherie-Taktgeber (PCLK) 1212 zur Bereitstellung von Taktsignalen für die verschiedenen Komponenten des Peripherie-Teilsystems 1210 umfassen. Die Peripherie-Zwischenverbindung 1211 kann ein Peripheriebus sein, wie ein Einzel-Pegel- oder Multi-Pegel-Advanced-High-Performance-Bus (AHB), der eine Daten- und Steuerschnittstelle zwischen dem Peripherie-Teilsystem 1210, dem CPU-Teilsystem 1230 und den Systemressourcen 1240 bereitstellen kann. Die Peripherie-Zwischenverbindung 1211 kann Controller-Schaltungen, wie DMA(Direct Memory Access)-Controller, umfassen, die programmiert sein können, um Daten zwischen Peripherieblöcken ohne Eingabe durch das CPU-Teilsystem, ohne Steuerung des CPU-Teilsystems 1230 oder ohne Belastung desselben zu übertragen.
  • Die Peripherie-Zwischenverbindung 1211 kann verwendet werden, um Komponenten des Peripherie-Teilsystems 1210 mit anderen Komponenten des Systems 1200 zu koppeln. An die Peripherie-Zwischenverbindung 1211 kann eine Anzahl von Universal-Eingängen/Ausgängen (General Purpose Input/Outputs, GPIOs) 1215 zum Senden und Empfangen von Signalen gekoppelt sein. GPIOs 1215 können Schaltungen umfassen, die konfiguriert sind, um verschiedene Funktionen wie Pull-up, Pull-down, Eingangsschwellenauswahl, Eingangs- und Ausgangspuffer-Aktivierung/Deaktivierung, Single-Multiplexing usw. zu implementieren. Durch die GPIOs 1215 können noch andere Funktionen implementiert werden. Ein oder mehrere Timer/Zähler/Pulsbreitenmodulatoren (Timer/Counter/Pulse-Width-Modulator, TCPWM) 1217 können auch an die Peripherie-Zwischenverbindung gekoppelt sein und Schaltungen zur Implementierung von Zeitsteuerungsschaltungen (Timern), Zählern, Pulsbreitenmodulatoren (Pulse Width Modulaors, PWMs), Decodern und anderen digitalen Funktionen umfassen, die mit E/A-Signalen arbeiten und digitale Signale für Systemkomponenten des Systems 1200 bereitstellen können. Das periphere Teilsystem 1210 kann auch einen oder mehrere serielle Kommunikationsblöcke (Serial Communication Blocks, SCBs) 1219 für die Implementierung von seriellen Kommunikationsschnittstellen wie I2C, SPI (Serial Peripheral Interface), UART (Universal Asynchronous Receiver/Transmitter), CAN (Controller Area Network), CXPI (Clock Extension Peripheral Interface) usw. umfassen.
  • Für USB-Leistungszufuhranwendungen kann das Peripherie-Teilsystem 1210 ein USB-Leistungszufuhr-Teilsystem 1220 umfassen, das an die Peripherie-Zwischenverbindung gekoppelt ist und einen Satz von USB-PD-Modulen 1221 zur Verwendung bei der USB-Leistungszufuhr beinhaltet. Die USB-PD-Module 1221 können durch eine USB-PD-Zwischenverbindung 1223 an die Peripherie-Zwischenverbindung 1211 gekoppelt sein. Die USB-PD-Module 1221 können Folgendes umfassen: ein Analog-Digital-Wandlermodul (ADC-Modul) zur Umwandlung verschiedener Analogsignale in Digitalsignale; einen Fehlerverstärker (AMP), der die Ausgangsspannung auf der VBUS-Leitung nach einem PD-Vertrag regelt; einen Hochspannungsregler (HV-Regler) zur Umwandlung der Leistungsquellenspannung in eine präzise Spannung (wie 3,5-5 V), um das System 1200 mit Leistung zu versorgen; einen niedrigseitigen Strommessverstärker (Low-Side Current Sense Amplifier, LSCSA) zur genauen Messung des Laststroms, ein Überspannungsschutzmodul (OVP-Modul) und ein Überstromschutzmodul (OCP-Modul) zur Bereitstellung von Überstrom- und Überspannungsschutz auf der VBUS-Leitung mit konfigurierbaren Schwellen und Reaktionszeiten; einen oder mehrere Gate-Treiber für externe Leistungs-Feldeffekttransistoren (FETs), die bei der USB-Leistungszufuhr in Lieferanten- und Verbraucherkonfigurationen verwendet werden; und ein Kommunikationskanal-PHY-Modul (CC-BB-PHY) zur Unterstützung von Kommunikationen auf einer Typ-C-Kommunikationskanal(CC)-Leitung. Die USB-PD-Module 1221 können auch ein Ladegerät-Detektionsmodul zum Bestimmen, ob eine Ladeschaltung vorhanden und an das System 1200 gekoppelt ist, sowie ein VBUS-Entlademodul zur Steuerung der Entladung von Spannung auf dem VBUS umfassen. Das Entladungssteuermodul kann konfiguriert sein, um an einen Leistungsquellenknoten auf der VBUS-Leitung oder an einen Ausgangs(Leistungssenken)-Knoten auf der VBUS-Leitung gekoppelt zu werden und die Spannung auf der VBUS-Leitung auf den gewünschten Spannungspegel (d.h. den in dem PD-Vertrag ausgehandelten Spannungspegel) zu entladen. Das USB-Leistungszufuhr-Teilsystem 1220 kann auch Anschlussflächen 1227 für externe Verbindungen und die Schutzbeschaltung 1229 für elektrostatische Entladung (Electrostatic Discharge, ESD) umfassen, die an einem Typ-C-Port erforderlich sein kann. USB-PD-Module 1221 können auch ein bidirektionales Kommunikationsmodul zur Unterstützung bidirektionaler Kommunikationen mit einem weiteren Controller umfassen, wie zwischen einem primärseitigen Controller und einem sekundärseitigen Controller eines Rücklaufwandlers.
  • GPIO 1215, TCPWM 1217 und SCB 1219 können an ein Eingangs/Ausgangs(E/A)-Teilsystem 1250 gekoppelt sein, das eine Hochgeschwindigkeits(High Speed, HS)-E/A-Matrix 1251 umfassen kann, die an eine Anzahl von GPIOs 1253 gekoppelt ist. GPIOs 1215, TCPWM 1217 und SCB 1219 können durch die HS-E/A-Matrix 1251 an die GPIOs 1253 gekoppelt sein.
  • Das System 1200 kann auch ein Zentraleinheits(Central Processing Unit, CPU)-Teilsystem 1230 für die Verarbeitung von Befehlen, die Speicherung von Programminformationen und Daten umfassen. Das CPU-Teilsystem 1230 kann eine oder mehrere Verarbeitungseinheiten 1231 zum Ausführen von Anweisungen und zum Lesen aus Speicherplätzen und zum Schreiben in dieselben in einer Anzahl von Speichern umfassen. Die Verarbeitungseinheit 1231 kann ein Prozessor sein, der sich für den Betrieb in einer integrierten Schaltung (Integrated Circuit, IC) oder einer System-on-Chip(SOC)-Vorrichtung eignet. In einigen Ausführungsformen kann die Verarbeitungseinheit 1231 für einen Niedrigleistungsbetrieb mit extensivem Clock-Gating optimiert sein. In dieser Ausführungsform können verschiedene interne Steuerschaltungen für den Verarbeitungseinheitsbetrieb in verschiedenen Leistungszuständen implementiert werden. Zum Beispiel kann die Verarbeitungseinheit 1231 einen Aufweck-Interrupt-Controller (Wake-Up Interrupt Controller, WIC) umfassen, der konfiguriert ist, um die Verarbeitungseinheit aus einem Schlafzustand aufzuwecken, wodurch die Leistung abgeschaltet werden kann, wenn sich die IC oder das SOC in einem Schlafzustand befindet. Das CPU-Teilsystem 1230 kann einen oder mehrere Speicher, einschließlich eines Flash-Speichers 1233, und einen statischen Direktzugriffsspeicher (Static Random Access Memory, SRAM) 1235 sowie einen Nur-Lese-Speicher (Read-Only Memory, ROM) 1237 umfassen. Der Flash-Speicher 1233 kann ein nichtflüchtiger Speicher (NAND-Flash, NOR-Flash usw.) sein, der zum Speichern von Daten, Programmen und/oder anderen Firmware-Anweisungen konfiguriert ist. Der Flash-Speicher 1233 kann einen Lesebeschleuniger umfassen und durch Integration in das CPU-Teilsystem 1230 die Zugriffszeiten verbessern. Der SRAM 1235 kann ein flüchtiger Speicher sein, der zur Speicherung von Daten und Firmware-Anweisungen konfiguriert ist, auf welche die Verarbeitungseinheit 1231 zugreifen kann. Der ROM 1237 kann konfiguriert sein, um Boot-Routinen, Konfigurationsparameter und andere Firmware-Parameter und -Einstellungen zu speichern, die sich während des Betriebs des System 1200 nicht ändern. Der SRAM 1235 und der ROM 1237 können assoziierte Steuerschaltungen aufweisen. Die Verarbeitungseinheit 1231 und die Speicher können an eine System-Zwischenverbindung 1239 gekoppelt sein, um Signale zu und von den verschiedenen Komponenten des CPU-Teilsystems 1230 zu anderen Blöcken oder Modulen des Systems 1200 zu routen. Die System-Zwischenverbindung 1239 kann als Systembus implementiert sein, wie als Einzel-Pegel- oder Multi-Pegel-AHB. Die System-Zwischenverbindung 1239 kann als Schnittstelle konfiguriert sein, um die verschiedenen Komponenten des CPU-Teilsystems 1230 aneinander zu koppeln. Die System-Zwischenverbindung 1239 kann an die Peripherie-Zwischenverbindung 1211 gekoppelt sein, um Signalpfade zwischen den Komponenten des CPU-Teilsystems 1230 und des Peripherie-Teilsystems 1210 bereitzustellen.
  • Das System 1200 kann auch eine Anzahl von Systemressourcen 1240 umfassen, einschließlich eines Leistungsmoduls 1241, eines Taktmoduls 1243, eines Reset-Moduls 1245 und eines Testmoduls 1247. Das Leistungsmodul 1241 kann ein Schlafsteuermodul, ein Aufweck-Interrupt-Steuermodul (WIC-Modul), ein Power-on-Reset-Modul (POR-Modul), eine Anzahl von Spannungsreferenzen (REF) und ein PWRSYS-Modul umfassen. In einigen Ausführungsformen kann das Leistungsmodul 1241 Schaltungen umfassen, die es dem System 1200 erlauben, Leistung aus externen Quellen mit unterschiedlichen Spannungs- und/oder Strompegeln zu beziehen und/oder diesen eine solche Leistung bereitzustellen und den Controller-Betrieb in verschiedenen Leistungszuständen, wie aktiv, Niedrigleistung oder Schlaf, zu unterstützen. In verschiedenen Ausführungsformen können mehr Leistungszustände implementiert werden, da das System 1200 den Betrieb drosselt, um einen gewünschten Leistungsverbrauch oder eine gewünschte Leistungsausgabe zu erreichen. Das Taktmodul 1243 kann ein Taktsteuermodul, einen Watchdog-Timer (WDT), einen internen Low-Speed-Oszillator (ILO) und einen internen Hauptoszillator (Internal Main Oscillator, IMO) umfassen. Das Reset-Modul 1245 kann ein Reset-Steuermodul und ein externes Reset-Modul (XRES-Modul) umfassen. Das Testmodul 1247 kann ein Modul umfassen, um einen Testmodus zu steuern und in diesen einzutreten, sowie Teststeuermodule für analoge und digitale Funktionen (digitaler Test und analoger DFT) umfassen.
  • Das System 1200 kann in einem monolithischen (z. B. einzelnen) Halbleiter-Die implementiert sein. In anderen Ausführungsformen können verschiedene Teile oder Module des Systems 1200 auf unterschiedlichen Halbleiter-Dies implementiert sein. Zum Beispiel können die Speichermodule des CPU-Teilsystems 1230 chipintern oder separat sein. In noch anderen Ausführungsformen können Schaltkreise mit separaten Dies in einem einzigen Multi-Chip-Modul verpackt sein oder separat bleiben und auf einer Leiterplatte (oder in einem USB-Kabelverbinder) als separate Elemente angeordnet werden.
  • Das System 1200 kann in einer Anzahl von Anwendungskontexten implementiert werden, um diesen USB-PD-Funktionalität bereitzustellen. In jedem Anwendungskontext kann ein IC-Controller oder ein SOC-Implementierungssystem 1200 in einer elektronischen Vorrichtung (z. B. einer USB-fähigen Vorrichtung) angeordnet und konfiguriert sein, um Vorgänge gemäß den hierin beschriebenen Techniken durchzuführen. In einem Ausführungsbeispiel kann ein System 1200 in einem Personalcomputer(PC)-Leistungsadapter für einen Laptop, einem Notebook-Computer usw. angeordnet und konfiguriert sein. In einem weiteren Ausführungsbeispiel kann das System 1200 in einem Leistungsadapter (z. B. einem Wandladegerät) für eine mobile elektronische Vorrichtung (z. B. ein Smartphone, ein Tablet usw.) angeordnet und konfiguriert sein. In einem weiteren Ausführungsbeispiel kann das System 1200 in einer Wandsteckdose, die konfiguriert ist, um über USB-Typ-A- und/oder Typ-C-Port(s) Leistung bereitzustellen, angeordnet und konfiguriert sein. In einem weiteren Ausführungsbeispiel kann das System 1200 in einem PKW-Ladegerät, das konfiguriert ist, um über USB-Typ-A- und/oder Typ-C-Port(s) Leistung bereitzustellen, angeordnet und konfiguriert sein. In noch einem weiteren Ausführungsbeispiel kann das System 1200 in einer Powerbank angeordnet und konfiguriert sein, die über einen USB-Typ-A- und/oder -Typ-C-Port geladen werden kann und dann einer anderen elektronischen Vorrichtung Leistung bereitstellt. In anderen Ausführungsformen kann ein System wie das System 1200 mit der hierin beschriebenen Leistungsschalter-Gate-Steuerbeschaltung konfiguriert sein und in verschiedenen anderen USB-fähigen elektronischen oder elektromechanischen Vorrichtungen angeordnet sein.
  • Es sollte sich verstehen, dass ein System wie das System 1200, das auf einem IC-Controller oder als ein solcher implementiert ist, in verschiedenen Anwendungen angeordnet sein kann, die sich in Bezug auf den Typ der verwendeten Leistungsquelle und die Richtung, in welcher Leistung zugeführt wird, unterscheiden können. Zum Beispiel ist im Fall eines PKW-Ladegeräts die Leistungsquelle eine Autobatterie, die Gleichstromleistung bereitstellt, während in dem Fall eines mobilen Leistungsadapters die Leistungsquelle eine Wechselstrom-Wandsteckdose ist. Ferner erfolgt im Fall eines PC-Leistungsadapters der Fluss der Leistungszufuhr von einer Lieferantenvorrichtung zu einer Verbrauchervorrichtung, während im Fall einer Powerbank der Fluss der Leistungszufuhr in beide Richtungen erfolgen kann, abhängig davon, ob die Powerbank als Leistungslieferant arbeitet (z. B. um eine andere Vorrichtung mit Leistung zu versorgen) oder als Leistungsverbraucher (z. B. um sich selbst aufladen zu lassen). Aus diesen Gründen sollten die verschiedenen Anwendungen des Systems 1200 eher in veranschaulichendem als in einschränkendem Sinn betrachtet werden.
  • 13 ist ein Ablaufdiagramm eines Verfahrens 1300 zur dynamischen Zuteilung einer Gesamtsystemleistung unter Ports gemäß einer Ausführungsform. Das Verfahren 1300 kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, speziell dafür vorgesehene Logik, programmierbare Logik, Mikrocode usw.), Software, Firmware oder eine Kombination davon beinhaltet. In einer Ausführungsform kann das Verfahren 1300 durch irgendeine der hierin beschriebenen Verarbeitungsvorrichtungen durchgeführt werden. In einer Ausführungsform wird das Verfahren 1300 durch Verarbeitungslogik eines Controllers, wie des LS-Master-Controllers 112 der 1, durchgeführt. In einer weiteren Ausführungsform wird das Verfahren 1300 durch Verarbeitungslogik eines Controllers, wie des LS-Slave-Controllers 114 der 1, durchgeführt. In einer Ausführungsform führt der Controller ein Firmware-basiertes Verfahren aus, das die folgenden Vorgänge durchführt. In einer weiteren Ausführungsform weist der Controller eingebetteten Code oder eingebettete Logik auf und ist konfiguriert, um Anweisungen zum Durchführen der nachfolgenden Vorgänge auszuführen. In einigen Ausführungsformen können die Vorgänge des Verfahrens 1300 zwischen dem Master-Controller und dem Slave-Controller verteilt werden.
  • Mit Bezug zurück auf 13 beginnt das Verfahren 1300 damit, dass die Verarbeitungslogik einen Port-Verbindungsstatus jedes USB-C/PD-Ports (Block 1302) eines Multiport-PD-Systems bestimmt. Der Port-Verbindungsstatus gibt eine Anzahl von Vorrichtungen an, die verbunden sind. Die Verarbeitungslogik bestimmt eine Leistungsanforderung jeder der Vorrichtungen (Block 1304). Die Verarbeitungslogik teilt zwischen den einzelnen USB-C/PD-Ports eine Systemleistung dynamisch zu, unabhängig von einer Verbindungsabfolge der Vorrichtungen (Block 1306), und das Verfahren 1300 endet.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik, um die Systemleistung dynamisch zuzuteilen, eine Reihenfolge für die Vorrichtungen. Die Verarbeitungslogik teilt jedem der USB-C/PD-Ports in der Reihenfolge einen Bruchteil der Systemleistung zu. Der Bruchteil ist gleich der Systemleistung geteilt durch eine Anzahl der USB-C/PD-Ports. Nach der Zuteilung des Teils an jeden der USB-C/PD-Ports bestimmt die Verarbeitungslogik eine Menge an ungenutzter Leistung der Systemleistung. Die Verarbeitungslogik verteilt die Menge an ungenutzter Leistung auf mindestens einen der USB-Typ-C/PD um. In einer Ausführungsform verteilt die Verarbeitungslogik die Menge an ungenutzter Leistung unter den Ports um, die mit einer Vorrichtung verbunden sind, deren Leistungsanforderung (oder angefragte Leistung) größer als der Bruchteil ist.
  • In einer Ausführungsform ist die Reihenfolge eine absteigende Reihenfolge der Leistungsanforderungen für die Vorrichtungen. In anderen Ausführungsformen kann die Reihenfolge eine zufällige Reihenfolge der Vorrichtungen, eine Reihenfolge, in der die Vorrichtungen verbunden wurden, oder eine andere Reihenfolge sein.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik zur Bestimmung der Leistungsanforderung jeder der Vorrichtungen eine erste Leistungsanforderung einer ersten Vorrichtung, die mit einem ersten USB-C/PD-Port verbunden ist, und eine zweite Leistungsanforderung einer zweiten Vorrichtung, die mit einem zweiten USB-C/PD-Port verbunden ist. In einer Ausführungsform bestimmt die Verarbeitungslogik, dass die zweite Leistungsanforderung geringer ist als die erste Leistungsanforderung. Die Verarbeitungslogik teilt die Hälfte der Systemleistung dem ersten USB-C/PD-Port und die Hälfte der Systemleistung dem zweiten USB-C/PD-Port zu. Die Verarbeitungslogik bestimmt eine Restmenge an Leistung als Differenz zwischen der Hälfte der Systemleistung und der zweiten Leistungsanforderung und teilt die Restmenge an Leistung dem ersten USB-C/PD-Port zusätzlich zur Hälfte der bereits dem ersten USB-C/PD-Port zugeteilten Systemleistung zu. In anderen Ausführungsformen kann die Verarbeitungslogik einen Bruchteil der Restmenge an Leistung dem USB-C/PD-Port zusätzlich zu dem ersten USB-C/PD-Port zuteilen.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik eine Änderung des Port-Verbindungsstatus eines oder mehrerer der USB-C/PD-Ports. In einer Ausführungsform gibt die Änderung des Port-Verbindungsstatus an, dass keine Vorrichtungen mit irgendeinem der USB-C/PD-Ports verbunden sind. In einer Ausführungsform wird Verarbeitungslogik initialisiert, ohne dass Vorrichtungen mit irgendeinem der USB-C/PD-Ports verbunden sind, und die Verarbeitungslogik teilt jedem der USB-C/PD-Ports als Reaktion auf die Änderung des Port-Verbindungsstatus einen Teil der Systemleistung zu. In einer Ausführungsform ist der Teil gleich der Systemleistung geteilt durch eine Anzahl von USB-C/PD-Ports. Alternativ kann der Teil auch einem Bruchteil der Gesamtsystemleistung entsprechen, wobei jeder Teil ein unterschiedlicher Bruchteil der Gesamtsystemleistung sein kann, der bei Summierung gleich der Gesamtsystemleistung ist. In einer weiteren Ausführungsform gibt die Änderung des Port-Verbindungsstatus an, dass eine Vorrichtung, die mit einem USB-C/PD-Port verbunden war, abgekoppelt wurde, und es sind keine Vorrichtungen mit irgendeinem der USB-C/PD-Ports verbunden. Die Verarbeitungslogik teilt jedem der USB-C/PD-Ports, als Reaktion auf die Änderung des Port-Verbindungsstatus, in der Reihenfolge der Ports mit dem höchsten Leistungsbudget zu den Ports mit dem niedrigsten Leistungsbudget den Teil der Systemleistung zu.
  • In einer weiteren Ausführungsform gibt die Änderung des Port-Verbindungsstatus an, dass nur eine erste Vorrichtung mit einem USB-C/PD-Port verbunden ist. Die Verarbeitungslogik teilt dem ersten USB-C/PD-Port eine Menge der Systemleistung zu. In einer Ausführungsform ist die Menge gleich einer ersten Leistungsanforderung der ersten Vorrichtung. In einer weiteren Ausführungsform kann die Menge größer als die erste Leistungsanforderung der ersten Vorrichtung sein. In einer weiteren Ausführungsform kann die Menge geringer sein als die erste Leistungsanforderung der ersten Vorrichtung, aber größer als ein Fair-Share-Bruchteil, wobei der Fair-Share-Bruchteil gleich der Systemleistung geteilt durch die Anzahl der USB-C/PD-Ports ist. Die Verarbeitungslogik bestimmt eine Restleistung, die gleich der Differenz zwischen der Systemleistung und der Menge an Leistung (die dem ersten USB-C/PD-Port zugeteilt wird) ist. Die Verarbeitungslogik teilt jedem der nicht verbundenen USB-C/PD-Ports, als Reaktion auf die Änderung des Port-Verbindungsstatus, einen Bruchteil der Restleistung zu, der gleich der Restleistung geteilt durch eine Anzahl nicht verbundener USB-C/PD-Ports ist. Alternativ teilt die Verarbeitungslogik einen Teil der Restleistung zu. Der Teil kann gleich einem Bruchteil der Restleistung sein, wobei jeder Teil ein unterschiedlicher Bruchteil der Gesamtsystemleistung sein kann, der bei Summierung gleich der Restleistung ist. Die Verarbeitungslogik teilt jedem der USB-C/PD-Ports, als Reaktion auf die Änderung des Port-Verbindungsstatus in der Reihenfolge der Ports mit dem höchsten Leistungsbudget zu den Ports mit dem niedrigsten Leistungsbudget den Bruchteil der Restleistung zu.
  • In einer weiteren Ausführungsform gibt die Änderung des Port-Verbindungsstatus an, dass eine Teilmenge der Anzahl von Vorrichtungen mit einer Teilmenge der Anzahl von USB-C/PD-Ports verbunden ist. Die Teilmenge der Anzahl von Vorrichtungen ist mehr als ein Vorrichtung. Die Verarbeitungslogik bestimmt eine Reihenfolge für die Teilmenge der Anzahl von Vorrichtungen. Die Verarbeitungslogik teilt jedem der USB-C/PD-Ports in der Reihenfolge einen Bruchteil der Systemleistung zu, der gleich der Systemleistung geteilt durch eine Anzahl der USB-C/PD-Ports ist. Alternativ teilt die Verarbeitungslogik einen Teil der Systemleistung zu. Der Teil kann gleich einem Bruchteil der Systemleistung sein, wobei jeder Teil ein unterschiedlicher Bruchteil der Systemleistung sein kann, der bei Summierung gleich der Restleistung ist. Die Verarbeitungslogik bestimmt eine Menge an ungenutzter Leistung der Systemleistung, nachdem der Bruchteil jedem der USB-C/PD-Ports zugeteilt wurde. Die Verarbeitungslogik verteilt die Menge an ungenutzter Leistung auf mindestens einen der Anzahl von USB-C/PD-Ports um.
  • In einer Ausführungsform ist die Reihenfolge eine absteigende Reihenfolge der Leistungsanforderungen für die Teilmenge der Anzahl von Vorrichtungen. In anderen Ausführungsformen kann die Reihenfolge eine zufällige Reihenfolge der Teilmenge der Anzahl von Vorrichtungen, eine Reihenfolge, in der die Teilmenge der Anzahl von Vorrichtungen verbunden wurde, oder eine andere Reihenfolge sein.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik, ob die Änderung des Port-Verbindungsstatus gültig ist. Die Verarbeitungslogik bestimmt, ob die Änderung des Port-Verbindungsstatus über eine spezifische Zeitdauer konsistent bleibt. Wenn die Änderung des Port-Verbindungsstatus während der spezifizierten Zeitdauer nicht konsistent bleibt, ignoriert die Verarbeitungslogik die Änderung des Port-Verbindungsstatus. Wenn der Port-Verbindungsstatus während der spezifizierten Zeitdauer konsistent bleibt, teilt die Verarbeitungslogik die Systemleistung zwischen den einzelnen USB-C/PD-Ports neu zu.
  • In einer weiteren Ausführungsform detektiert die Verarbeitungslogik einen Kommunikationsfehler zwischen einem ersten Controller und einem zweiten Controller. In einer Ausführungsform kann die Verarbeitungslogik die Verarbeitungslogik des ersten Controllers sein. In einer weiteren Ausführungsform kann die Verarbeitungslogik die Verarbeitungslogik des zweiten Controllers sein. Die Verarbeitungslogik führt als Reaktion auf eine Detektion des Kommunikationsfehlers eine Leistungsbudgetreduzierung durch. Die Verarbeitungslogik führt die Leistungsbudgetreduzierung durch, indem sie einen Bruchteil der Systemleistung einer Teilmenge der USB-C/PD-Ports zuteilt. Der Bruchteil ist gleich der Systemleistung geteilt durch eine Anzahl der USB-C/PD-Ports. In einer Ausführungsform teilt die Verarbeitungslogik den Bruchteil jedem der USB-C/PD-Ports zu. In einer weiteren Ausführungsform teilt die Verarbeitungslogik den Bruchteil dem ersten Controller und dem zweiten Controller zu. In einer Ausführungsform teilt die Verarbeitungslogik den Bruchteil nur dann dem ersten Controller zu, wenn der erste Controller zuvor eine Leistungszuteilung hatte, die größer als der Bruchteil war, und die Verarbeitungslogik teilt den Bruchteil nur dann dem zweiten Controller zu, wenn der zweite Controller zuvor eine Leistungszuteilung hatte, die größer als der Bruchteil war.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik eine Lastaufteilungsrolle eines Controllers, der an einen ersten Port der USB-C/PD-Ports gekoppelt ist. Die Lastaufteilungsrolle kann entweder Master oder Slave sein. In einer Ausführungsform bestimmt die Verarbeitungslogik die Lastaufteilungsrolle des Controllers als Master. Die Verarbeitungslogik ruft über eine Kommunikationsschnittstelle einen oder mehrere Slaves auf und initiiert einen endlichen Master-Zustandsautomaten. Jeder von dem einen oder den mehreren Slaves ist ein zusätzlicher Controller, der an einen der USB-C/PD-Ports gekoppelt ist. In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik die Lastaufteilungsrolle des Controllers als Slave. Die Verarbeitungslogik registriert den Controller über die Kommunikationsschnittstelle beim Master, um Master-Befehle zu empfangen. Die Verarbeitungslogik initiiert einen endlichen Slave-Zustandsautomaten. Der Master ist ein zweiter Controller, der an einen zweiten Port gekoppelt ist.
  • In einer Ausführungsform bestimmt die Verarbeitungslogik, wenn die Lastaufteilungsrolle des Controllers Slave ist, ob ein Master-Befehl von dem Master empfangen wurde. Der Master-Befehl ist mindestens einer von einem ersten Befehl, der eine Leistungszufuhrleistung (PDP) für einen an den Controller gekoppelten ersten Port einstellt, einem zweiten Befehl, der eine Heartbeat-Signalisierung zwischen dem Slave und dem Master über die Kommunikationsschnittstelle startet oder stoppt, oder einem dritten Befehl, der dem Master einen Port-Verbindungsstatus des ersten Ports bereitstellt. Die Verarbeitungslogik bestimmt, ob ein Kommunikationsfehler zwischen dem Master und dem Slave über die Kommunikationsschnittstelle aufgetreten ist. Wenn die Verarbeitungslogik bestimmt, dass ein Kommunikationsfehler zwischen dem Master und dem Slave über die Kommunikationsschnittstelle aufgetreten ist, passt die Verarbeitungslogik ein Slave-Leistungsbudget für den ersten Port an eine Fair-Share-Zuteilung an, wenn das Slave-Leistungsbudget größer als die Fair-Share-Zuteilung ist. Wenn das Slave-Leistungsbudget geringer ist als die Fair-Share-Zuteilung, passt die Verarbeitungslogik das Slave-Leistungsbudget nicht an. Die Verarbeitungslogik überwacht auf eine Änderung des Port-Verbindungsstatus des ersten Ports, und wenn die Verarbeitungslogik eine Änderung des Port-Verbindungsstatus des ersten Ports detektiert, meldet die Verarbeitungslogik die Änderung über die Kommunikationsschnittstelle an den Master.
  • In einer weiteren Ausführungsform, wenn die Lastaufteilungsrolle des Controllers Master ist, bestimmt die Verarbeitungslogik, ob ein Kommunikationsfehler zwischen dem Master und dem Slave über die Kommunikationsschnittstelle aufgetreten ist. Wenn die Verarbeitungslogik bestimmt, dass ein Kommunikationsfehler aufgetreten ist, passt die Verarbeitungslogik ein Master-Leistungsbudget für einen ersten Port, der an den Controller gekoppelt ist, an eine Fair-Share-Zuteilung an, wenn das Master-Leistungsbudget größer als die Fair-Share-Zuteilung ist. Wenn das Master-Leistungsbudget geringer ist als die Fair-Share-Zuteilung, passt die Verarbeitungslogik das Master-Leistungsbudget nicht an. In einer Ausführungsform bestimmt die Verarbeitungslogik einen Port-Verbindungsstatus eines jeden der USB-C/PD-Ports als angebend, dass mehr als einer der USB-C/PD-Ports mit einer Anzahl von Vorrichtungen verbunden ist. Die Verarbeitungslogik bestimmt eine Reihenfolge der Leistungsanforderungen für die Anzahl von Vorrichtungen und teilt jedem der USB-C/PD-Ports in der Reihenfolge einen ersten Bruchteil (oder ersten Teil) der Systemleistung zu. Der erste Bruchteil ist gleich der Systemleistung geteilt durch eine Anzahl der USB-C/PD-Ports. Die Verarbeitungslogik verteilt eine Menge an ungenutzter Leistung der Systemleistung an einen oder mehrere der USB-C/PD-Ports um, nachdem der erste Bruchteil jedem der USB-C/PD-Ports zugeteilt wurde, wobei der eine oder die mehreren der USB-C/PD-Ports an einen oder mehrere Vorrichtungen gekoppelt sind, deren Leistungsanforderung größer als der erste Bruchteil ist. Die Reihenfolge kann eine absteigende Reihenfolge der Leistungsanforderungen für die Vorrichtungen sein. Alternativ kann die Reihenfolge eine zufällige Reihenfolge der Vorrichtungen, eine Reihenfolge, in der die Vorrichtungen verbunden wurden, oder eine andere Reihenfolge sein.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik den Port-Verbindungsstatus eines jeden der USB-C/PD-Ports als angebend, dass nur ein erster Port der mit einer ersten Vorrichtung verbunden ist. Die Verarbeitungslogik teilt dem ersten Port eine Menge der Systemleistung zu. In einer Ausführungsform ist die Menge gleich einer ersten Leistungsanforderung der ersten Vorrichtung. In einer weiteren Ausführungsform kann die Menge größer als die erste Leistungsanforderung der ersten Vorrichtung sein. In einer weiteren Ausführungsform kann die Menge geringer sein als die erste Leistungsanforderung der ersten Vorrichtung, aber größer als ein Fair-Share-Bruchteil, wobei der Fair-Share-Bruchteil gleich der Systemleistung geteilt durch die Anzahl der USB-C/PD-Ports ist. Die Verarbeitungslogik bestimmt eine Reihenfolge der Leistungsbudgets für die Anzahl von USB-C/PD-Ports und teilt einen zweiten Bruchteil (oder zweiten Teil) einer Restleistung, welche die Differenz zwischen der Systemleistung und der ersten Leistungsanforderung ist, einem verbleibenden Satz der USB-C/PD-Ports in der Reihenfolge zu. Der zweite Bruchteil ist gleich der Restleistung geteilt durch eine Anzahl in dem verbleibenden Satz. Die Reihenfolge kann eine absteigende Reihenfolge der Leistungsanforderungen für die Vorrichtungen sein. Alternativ kann die Reihenfolge eine zufällige Reihenfolge der Vorrichtungen, eine Reihenfolge, in der die Vorrichtungen verbunden wurden, oder eine andere Reihenfolge sein.
  • In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik den Port-Verbindungsstatus eines jeden der USB-C/PD-Ports als angebend, dass keine Vorrichtungen an irgendeinem der USB-C/PD-Ports verbunden sind. Die Verarbeitungslogik bestimmt eine Reihenfolge der Leistungsbudgets für die USB-C/PD-Ports und teilt jedem der USB-C/PD-Ports in der Reihenfolge einen ersten Bruchteil der Systemleistung zu. Der erste Bruchteil ist gleich der Systemleistung geteilt durch eine Anzahl der USB-C/PD-Ports. Die Reihenfolge kann eine absteigende Reihenfolge der Leistungsanforderungen für die Vorrichtungen sein. Alternativ kann die Reihenfolge eine zufällige Reihenfolge der Vorrichtungen, eine Reihenfolge, in der die Vorrichtungen verbunden wurden, oder eine andere Reihenfolge sein.
  • In der obigen Beschreibung werden einige Teile der detaillierten Beschreibung in Form von Algorithmen und symbolischen Darstellungen von Vorgängen auf Datenbits innerhalb eines Computerspeichers präsentiert. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von einem Fachmann auf dem Datenverarbeitungsgebiet verwendet werden, um einem anderen Fachmann den maßgeblichen Inhalt seiner Arbeit in möglichst effektiver Weise zu vermitteln. Ein Algorithmus wird hier und im Allgemeinen als eine folgerichtige Sequenz von Schritten, die zu einem gewünschten Ergebnis führt, verstanden. Diese Schritte erfordern physikalische Manipulationen physikalischer Größen. Üblicherweise, aber nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und in anderer Weise manipuliert werden können. Es hat sich als günstig herausgestellt, hauptsächlich aus Gründen der üblichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch berücksichtigt werden, dass all diese und ähnliche Begriffe den geeigneten physikalischen Größen zuzuordnen sind und lediglich praktische Bezeichnungen sind, die auf diese Größen angewendet werden. Sofern nicht ausdrücklich etwas anderes angegeben ist, versteht es sich aus den obigen Erörterungen, dass in der gesamten Beschreibung Erörterungen, die Begriffe wie „bestimmen“, „zuteilen“, „dynamisch zuteilen“, „umverteilen“, „ignorieren“, „neu zuteilen“, „detektieren“, „durchführen“, „aufrufen“, „registrieren“, „überwachen“ oder dergleichen benutzen, sich auf die Maßnahmen und/oder Prozesse eines Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, welche Daten, die als physikalische (z. B. elektronische) Größen innerhalb der Register und Speicher des Rechensystems dargestellt werden, manipulieren und umwandeln in andere Daten, die in ähnlicher Weise als physikalische Größen innerhalb der Speicher oder Register oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen des Rechensystems dargestellt werden.
  • Die Worte „Beispiel“ oder „beispielhaft“ werden hierin verwendet, um als Beispiel, Fall oder Veranschaulichung zu dienen. Jeglicher Aspekt oder jegliche Ausgestaltung, der oder die hier als „Beispiel“ oder „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen auszulegen. Vielmehr soll die Verwendung der Worte „Beispiel“ oder „beispielhaft“ dazu dienen, Konzepte in konkreter Form zu präsentieren. Der in dieser Anmeldung verwendete Begriff „oder“ soll eher ein einschließendes „oder“ als ein ausschließliches „oder“ sein. Das heißt, sofern nicht anders angegeben oder aus dem Kontext klar ersichtlich, ist mit „X umfasst A oder B”beabsichtigt, dass es eine beliebige der natürlichen inklusiven Permutationen bedeuten soll. Das heißt, falls X A umfasst; X B umfasst; oder X sowohl A als auch B umfasst, dann ist „X umfasst A oder B”unter jedem der vorangehenden Fälle erfüllt. Darüber hinaus sind die Artikel „ein“, „einer“ und „eines“, wie in dieser Anmeldung und den anhängenden Ansprüchen verwendet, allgemein so auszulegen, dass sie „eines oder mehr“ bedeuten, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, dass auf eine Singularform verwiesen wird. Außerdem ist mit der Verwendung des Begriffs „eine Ausführungsform“ oder „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ oder „eine einzelne Ausführungsform“ durchgehend nicht beabsichtigt, dass damit die gleiche Ausführungsform oder Ausführungsform gemeint sein soll, es sei denn, es wird so beschrieben.
  • Hierin beschriebene Ausführungsformen können sich auch auf ein Gerät zur Durchführung der hierin enthaltenen Vorgänge beziehen. Dieses Gerät kann speziell für die erforderlichen Zwecke aufgebaut sein oder es kann einen Allzweck-Computer beinhalten, der von einem im Computer gespeicherten Computerprogramm selektiv aktiviert oder rekonfiguriert wird. Ein derartiges Computerprogramm kann in einem nicht transitorischen computerlesbaren Speichermedium gespeichert sein, wie etwa unter anderem eine beliebige Art von Platte, einschließlich Disketten, optischer Platten, CD-ROMs und magnetisch-optischer Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten, Flash-Speicher oder beliebige Arten von Medien, die zum Speichern von elektronischen Anweisungen geeignet sind. Unter dem Ausdruck „computerlesbares Speichermedium“ ist zu verstehen, dass er ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder verteilte Datenbank und/oder assoziierte Caches und Server) umfasst, die einen oder mehrere Sätze von Anweisungen speichern. Unter dem Ausdruck „computerlesbares Medium“ ist auch zu verstehen, dass er jegliches Medium umfasst, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, zu kodieren oder zu führen, welche die Maschine veranlassen, die Methodiken der vorliegenden Ausführungsform durchzuführen. Unter dem Ausdruck „computerlesbares Speichermedium“ ist demgemäß zu verstehen, dass er unter anderem Festkörperspeicher, optische Medien, magnetische Medien, ein beliebiges Medium umfasst, das in der Lage ist, einen Satz von Anweisungen für die Ausführung durch die Maschine zu speichern, und das verursacht, dass die Maschine eine oder mehrere der Methodiken der vorliegenden Ausführungsformen durchführt.
  • Die hierin präsentierten Verfahren und Displays sind nicht grundsätzlich an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Allzweck-Systeme können mit Programmen entsprechend den Lehren hierin verwendet werden, oder es kann sich auch als günstig herausstellen, ein noch spezialisierteres Gerät zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielfalt dieser Systeme ergibt sich aus der obigen Beschreibung. Darüber hinaus werden die vorliegenden Ausführungsformen nicht anhand einer bestimmten Programmiersprache beschrieben. Es versteht sich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der hierin beschriebenen Ausführungsformen zu implementieren.
  • Die obige Beschreibung legt zahlreiche spezifische Details, wie etwa Beispiele für spezifische Systeme, Komponenten, Verfahren und so weiter dar, so dass mehrere Ausführungsformen des Gegenstands gut verstanden werden können. Es versteht sich, dass die obige Beschreibung veranschaulichend und nicht einschränkend sein soll. Viele andere Ausführungsformen werden dem Fachmann beim Lesen und Verstehen der obigen Beschreibung ersichtlich sein. Der Schutzbereich der Offenbarung sollte deshalb unter Bezugnahme auf die anhängenden Ansprüche zusammen mit dem vollen Schutzbereich von Äquivalenten, auf die solche Ansprüche Anrecht haben, bestimmt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/958522 [0001]

Claims (22)

  1. Ein Verfahren, das Folgendes beinhaltet: Bestimmen, durch einen Controller, eines Port-Verbindungsstatus einer Vielzahl von USB-Ports, wobei der Port-Verbindungsstatus angibt, dass eine Vielzahl von Vorrichtungen verbunden sind, wobei mindestens einer aus der Vielzahl von USB-Ports ein USB-Typ-C-Leistungszufuhr-Port (USB-C/PD-Port) ist; Bestimmen, durch den Controller, einer Leistungsanforderung einer jeden der Vielzahl von Vorrichtungen; und dynamisches Zuteilen, durch den Controller, einer Systemleistung zwischen den einzelnen der Vielzahl von USB-Ports, unabhängig von einer Verbindungsabfolge der Vielzahl von Vorrichtungen.
  2. Verfahren gemäß Anspruch 1, wobei das dynamische Zuteilen der Systemleistung Folgendes beinhaltet: Bestimmen, durch den Controller, einer Reihenfolge von Leistungsanforderungen für die Vielzahl von Vorrichtungen; und Zuteilen, durch den Controller, eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen.
  3. Verfahren gemäß Anspruch 1, wobei das dynamische Zuteilen der Systemleistung ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Menge an ungenutzter Leistung der Systemleistung nach dem Zuteilen des Teils an jeden der Vielzahl von USB-Ports; und Umverteilen, durch den Controller, der Menge an ungenutzter Leistung auf mindestens einen der Vielzahl von USB-Ports.
  4. Verfahren gemäß Anspruch 1, wobei das Bestimmen der Leistungsanforderung einer jeden der Vielzahl von Vorrichtungen Folgendes beinhaltet: Bestimmen einer ersten Leistungsanforderung einer ersten Vorrichtung, die mit einem ersten USB-Port der Vielzahl von USB-Ports verbunden ist; Bestimmen einer zweiten Leistungsanforderung einer zweiten Vorrichtung, die mit einem zweiten USB-Port der Vielzahl von USB-Ports verbunden ist, wobei die zweite Leistungsanforderung geringer ist als die erste Leistungsanforderung; Zuteilen der Hälfte der Systemleistung an den ersten USB-Port und der Hälfte der Systemleistung an den zweiten USB-Port; Bestimmen einer Restmenge an Leistung als Differenz zwischen der zweiten Leistungsanforderung und der Hälfte der Systemleistung; und Zuteilen der Restmenge an Leistung an den ersten USB-Port.
  5. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Änderung des Port-Verbindungsstatus, wobei die Änderung des Port-Verbindungsstatus angibt, dass keine Vorrichtungen mit der Vielzahl von USB-Ports verbunden sind; und Zuteilen, durch den Controller, eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports als Reaktion auf die Änderung des Port-Verbindungsstatus.
  6. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Änderung des Port-Verbindungsstatus, wobei die Änderung des Port-Verbindungsstatus angibt, dass nur eine erste Vorrichtung mit einem ersten USB-Port der Vielzahl von USB-Ports verbunden ist; Zuteilen, durch den Controller, einer Menge der Systemleistung an den ersten USB-Port, wobei die Menge gleich einer ersten Leistungsanforderung der ersten Vorrichtung ist; Bestimmen, durch den Controller, einer Restleistung für den ersten USB-Port, wobei die Restleistung gleich einer Differenz zwischen der Systemleistung und der ersten Leistungsanforderung ist; und Zuteilen, durch den Controller, eines Teils der Restleistung an jeden nicht verbundenen USB-Port der Vielzahl von USB-Ports als Reaktion auf die Änderung des Port-Verbindungsstatus.
  7. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Änderung des Port-Verbindungsstatus, wobei die Änderung des Port-Verbindungsstatus angibt, dass eine Teilmenge der Vielzahl von Vorrichtungen mit einer Teilmenge der Vielzahl von USB-Ports verbunden ist, wobei die Teilmenge der Vielzahl von Vorrichtungen mehr als eine Vorrichtung ist; Bestimmen, durch den Controller, einer Reihenfolge von Leistungsanforderungen für die Teilmenge der Vielzahl von Vorrichtungen; Zuteilen, durch den Controller, eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen; Bestimmen, durch den Controller, einer Menge an ungenutzter Leistung der Systemleistung nach dem Zuteilen des Teils an jeden der Vielzahl von USB-Ports; und Umverteilen, durch den Controller, der Menge an ungenutzter Leistung auf mindestens einen der Teilmenge der Vielzahl von USB-Ports.
  8. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Änderung des Port-Verbindungsstatus; Bestimmen, durch den Controller, ob die Änderung des Port-Verbindungsstatus über eine spezifizierte Zeitdauer konsistent bleibt; Ignorieren, durch den Controller, der Änderung des Port-Verbindungsstatus als Reaktion darauf, dass die Änderung des Port-Verbindungsstatus während der spezifizierten Zeitdauer nicht konsistent bleibt; und Neuzuteilen, durch den Controller, der Systemleistung zwischen den einzelnen der Vielzahl von USB-Ports als Reaktion auf die Änderung des Port-Verbindungsstatus, der während der spezifizierten Zeitdauer konsistent bleibt.
  9. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Detektieren, durch den Controller, eines Kommunikationsfehlers zwischen dem Controller und einem weiteren Controller; und Durchführen, durch den Controller, einer Leistungsbudget-Reduzierung als Reaktion auf die Detektion des Kommunikationsfehlers, wobei das Durchführen der Leistungsbudget-Reduzierung das Zuteilen eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports beinhaltet.
  10. Verfahren gemäß Anspruch 1, das ferner Folgendes beinhaltet: Bestimmen, durch den Controller, einer Lastaufteilungsrolle des Controllers als entweder Master oder Slave, wobei der Controller an einen ersten Port der Vielzahl von USB-Ports gekoppelt ist; und als Reaktion auf eine Bestimmung, dass die Lastaufteilungsrolle des Controllers der Master ist, Aufrufen eines oder mehrerer Slaves über eine Kommunikationsschnittstelle und Initiieren eines endlichen Master-Zustandsautomaten, wobei jeder von dem einen oder den mehreren Slaves ein zusätzlicher Controller ist, der an einen der Vielzahl von USB-Ports gekoppelt ist; oder als Reaktion auf eine Bestimmung, dass die Lastaufteilungsrolle des Controllers der Slave ist, Registrieren des Controllers über die Kommunikationsschnittstelle beim Master, um Master-Befehle zu empfangen, und Initiieren eines endlichen Slave-Zustandsautomaten, wobei der Master ein zweiter Controller ist, der an einen zweiten Port der Vielzahl von USB-Ports gekoppelt ist.
  11. Verfahren gemäß Anspruch 10, das ferner Folgendes beinhaltet: Bestimmen, durch den Slave, ob ein Master-Befehl von dem Master empfangen wurde, wobei der Master-Befehl mindestens einer ist von einem ersten Befehl, der eine Leistungszufuhrleistung (Power Delivery Power, PDP) für den ersten Port einstellt, einem zweiten Befehl, der eine Heartbeat-Signalisierung zwischen dem Slave und dem Master über die Kommunikationsschnittstelle startet oder stoppt, oder einem dritten Befehl, der einen Port-Verbindungsstatus des ersten Ports bereitstellt; Bestimmen, durch den Slave, ob ein Kommunikationsfehler zwischen dem Master und dem Slave über die Kommunikationsschnittstelle aufgetreten ist, und, als Reaktion auf den Kommunikationsfehler, Anpassen eines Slave-Leistungsbudgets für den ersten Port an eine Fair-Share-Zuteilung der Systemleistung, wobei das Slave-Leistungsbudget größer ist als die Fair-Share-Zuteilung; und Überwachen, durch den Slave, auf eine Änderung des Port-Verbindungsstatus des ersten Ports und, als Reaktion auf eine Änderung des Port-Verbindungsstatus des ersten Ports, Melden der Änderung an den Master über die Kommunikationsschnittstelle.
  12. Verfahren gemäß Anspruch 10, das ferner Folgendes beinhaltet: Bestimmen, durch den Master, ob ein Kommunikationsfehler zwischen dem Master und dem Slave über die Kommunikationsschnittstelle aufgetreten ist, und, als Reaktion auf den Kommunikationsfehler, Anpassen eines Master-Leistungsbudgets für den ersten Port an eine Fair-Share-Zuteilung der Systemleistung, wobei das Master-Leistungsbudget größer ist als die Fair-Share-Zuteilung; und i) als Reaktion auf eine Bestimmung, dass der Port-Verbindungsstatus angibt, dass mehr als einer der Vielzahl von USB-Ports mit Vorrichtungen verbunden ist, Bestimmen, durch den Master, einer Reihenfolge von Leistungsanforderungen für die Vielzahl von Vorrichtungen; Zuteilen, durch den Master, eines ersten Teils der Systemleistung an jeden der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen; und Umverteilen, durch den Master, einer Menge an ungenutzter Leistung der Systemleistung an einen oder mehrere der Vielzahl von USB-Ports nach dem Zuteilen des ersten Bruchteils an jeden der Vielzahl von USB-Ports, wobei der eine oder die mehreren der Vielzahl von USB-Ports an eine oder mehrere Vorrichtungen, die eine höhere Leistungsanforderung als der erste Bruchteil aufweisen, gekoppelt sind; ii) als Reaktion auf eine Bestimmung, dass der Port-Verbindungsstatus angibt, dass nur ein erster Port der Vielzahl von USB-Ports mit einer ersten Vorrichtung verbunden ist, Zuteilen, durch den Master, einer Menge der Systemleistung an den ersten Port, wobei die Menge gleich einer ersten Leistungsanforderung der ersten Vorrichtung ist; und Zuteilen, durch den Master, eines zweiten Teils einer Restleistung, die eine Differenz zwischen der Systemleistung und der ersten Leistungsanforderung ist, an einen verbleibenden Satz der Vielzahl von USB-Ports; oder iii) als Reaktion auf eine Bestimmung, dass der Port-Verbindungsstatus angibt, dass keine Vorrichtungen mit der Vielzahl von USB-Ports verbunden sind, Zuteilen, durch den Master, des ersten Teils der Systemleistung an jeden der Vielzahl von USB-Ports.
  13. Ein System, das Folgendes beinhaltet: einen ersten USB-Typ-C-Leistungszufuhr-Port (USB-C/PD-Port); einen zweiten USB-Port; und einen ersten Controller, der betriebswirksam an den ersten USB-C/PD-Port und den zweiten USB gekoppelt ist, wobei der erste Controller konfiguriert ist zum: Bestimmen eines Port-Verbindungsstatus des ersten USB-C/PD-Ports und des zweiten USB-Ports, wobei der Port-Verbindungsstatus angibt, dass eine erste Vorrichtung mit dem ersten USB-C/PD-Port verbunden ist und eine zweite Vorrichtung mit dem zweiten USB-Port verbunden ist; Bestimmen einer ersten Leistungsanforderung der ersten Vorrichtung und einer zweiten Leistungsanforderung der zweiten Vorrichtung; und dynamisches Zuteilen einer Systemleistung zwischen dem ersten USB-C/PD-Port und dem zweiten USB unabhängig von einer Verbindungsabfolge des ersten USB-C/PD-Ports und des zweiten USB.
  14. System gemäß Anspruch 13, das ferner Folgendes beinhaltet: eine Kommunikationsschnittstelle; und einen zweiten Controller, der über die Kommunikationsschnittstelle an den ersten Controller gekoppelt ist, wobei der zweite Controller gekoppelt ist, um den zweiten USB zu steuern, und der erste Controller gekoppelt ist, um den ersten USB-C/PD-Port zu steuern; einen ersten Leistungswandler, der an den ersten Controller und eine Leistungsquelle, welche die Systemleistung liefert, gekoppelt ist; einen zweiten Leistungswandler, der an die Leistungsquelle gekoppelt ist; einen ersten Leistungs-Feldeffekttransistor (FET), der zwischen den ersten Leistungswandler und den ersten USB-C/PD-Port gekoppelt ist, wobei der erste Leistungs-FET durch den ersten Controller gesteuert wird; einen zweiten Leistungs-FET, der zwischen den zweiten Leistungswandler und den zweiten USB-Port gekoppelt ist, wobei der zweite Leistungs-FET durch den zweiten Controller gesteuert wird.
  15. System gemäß Anspruch 14, wobei der erste Leistungswandler ein erster Gleichstrom-zu-Gleichstrom(DC-DC)-Wandler eines geteilten Multiport-Leistungsadapters ist, wobei der zweite Leistungswandler ein zweiter DC-DC-Wandler des geteilten Multiport-Leistungsadapters ist.
  16. System gemäß Anspruch 15, wobei der geteilte Multi-Leistungsadapter Bestandteil einer Haupteinheit eines Automobils, eines Rücksitz-Unterhaltungssystems des Automobils oder eines Rücksitz-Ladegeräts des Automobils ist.
  17. System gemäß Anspruch 14, wobei der erste Leistungswandler ein erster Wechselstrom-zu-Gleichstrom(AC-DC)-Wandler eines geteilten Multiport-Leistungsadapters ist, wobei der zweite Leistungswandler ein zweiter AC-DC-Wandler des geteilten Multiport-Leistungsadapters ist, wobei der geteilte Multiport-Leistungsadapter Bestandteil eines Multiport-Wandladegeräts, eines Multiport-Leistungshubs oder einer Multiport-Powerbank ist.
  18. Ein USB-Typ-C-Leistungszufuhr-Controller (USB-C/PD-Controller), der Folgendes beinhaltet: ein erstes Anschluss, der an einen ersten USB-C/PD-Port einer Vielzahl von USB-Ports eines Multiport-Adapters gekoppelt ist; einen Satz von Anschlüssen, die an eine Kommunikationsschnittstelle gekoppelt sind, die an mindestens einen zweiten USB-C/PD-Controller gekoppelt ist, der an einen zweiten USB-C/PD-Port gekoppelt ist; und eine Verarbeitungsschaltung, die an den ersten Anschluss und den Satz von Anschlüssen gekoppelt ist, wobei die Verarbeitungsschaltung Folgendes vornimmt: Bestimmen eines Port-Verbindungsstatus der Vielzahl von USB-Ports, wobei der Port-Verbindungsstatus angibt, dass eine Vielzahl von Vorrichtungen verbunden ist; Bestimmen einer Leistungsanforderung einer jeden der Vielzahl von Vorrichtungen; und dynamisches Zuteilen einer Systemleistung zwischen den einzelnen der Vielzahl von USB-Ports unabhängig von einer Verbindungsabfolge der Vielzahl von Vorrichtungen.
  19. USB-C/PD-Controller gemäß Anspruch 18, wobei die Verarbeitungsschaltung zum dynamischen Zuteilen der Systemleistung Folgendes vornimmt: Bestimmen einer Reihenfolge von Leistungsanforderungen für die Vielzahl von Vorrichtungen; Zuteilen eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen.
  20. USB-C/PD-Controller gemäß Anspruch 19, wobei die Verarbeitungsschaltung zum dynamischen Zuteilen der Systemleistung ferner Folgendes vornimmt: Bestimmen einer Menge an ungenutzter Leistung der Systemleistung nach dem Zuteilen des Teils an jeden der Vielzahl von USB-Ports; Umverteilen der Menge an ungenutzter Leistung auf mindestens einen der Vielzahl von USB-Ports.
  21. USB-C/PD-Controller gemäß Anspruchs 18, wobei die Verarbeitungsschaltung ferner Folgendes vornimmt: Bestimmen einer Änderung des Port-Verbindungsstatus, wobei die Änderung des Port-Verbindungsstatus angibt, dass keine Vorrichtungen mit der Vielzahl von USB-Ports verbunden sind; und Zuteilen eines Teils der Systemleistung an jeden der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen als Reaktion auf die Änderung des Port-Verbindungsstatus.
  22. USB-C/PD-Controller gemäß Anspruchs 18, wobei die Verarbeitungsschaltung ferner Folgendes vornimmt: Bestimmen einer Änderung des Port-Verbindungsstatus, wobei die Änderung des Port-Verbindungsstatus angibt, dass nur eine erste Vorrichtung mit einem ersten USB-C/PD-Port der Vielzahl von USB-Ports verbunden ist; Zuteilen einer Menge der Systemleistung, die gleich einer ersten Leistungsanforderung der ersten Vorrichtung ist; Bestimmen einer Restleistung, die eine Differenz zwischen der Systemleistung und der ersten Leistungsanforderung ist; und Zuteilen eines Teils der Restleistung an jeden nicht verbundenen USB-Port der Vielzahl von USB-Ports basierend auf den Leistungsanforderungen als Reaktion auf die Änderung des Port-Verbindungsstatus.
DE102021100043.2A 2020-01-08 2021-01-05 Dynamische aufteilung der leistung unter den usb-typ-c-leistungszufuhr(usb-c/pd)-ports Pending DE102021100043A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062958522P 2020-01-08 2020-01-08
US62/958,522 2020-01-08
US16/827,520 2020-03-23
US16/827,520 US11061457B1 (en) 2020-01-08 2020-03-23 Dynamic sharing of power among USB type-c power delivery (USB-C/PD) ports

Publications (1)

Publication Number Publication Date
DE102021100043A1 true DE102021100043A1 (de) 2021-07-08

Family

ID=76432450

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021100043.2A Pending DE102021100043A1 (de) 2020-01-08 2021-01-05 Dynamische aufteilung der leistung unter den usb-typ-c-leistungszufuhr(usb-c/pd)-ports

Country Status (1)

Country Link
DE (1) DE102021100043A1 (de)

Similar Documents

Publication Publication Date Title
DE112016002768B4 (de) Eine Niedrigstrom-Implementierung eines Typ-C-Verbinder-Teilsystems
DE112019001318T5 (de) Programmierbare gate-treiber-steuerung in der usb-leistungsabgabe
US11061457B1 (en) Dynamic sharing of power among USB type-c power delivery (USB-C/PD) ports
DE112019001303T5 (de) Programmierbare vbus-entladung bei usb-stromlieferung
DE112019002607T5 (de) Leistungsversorgungsarchitektur für usb-c zur unterstützung von aktiven kabel- und dfp/ufp/drp-anwendungen
DE112020003957T5 (de) Sekundärgesteuerte aktivklemmen-implementierung für verbesserte effizienz
DE112020003117T5 (de) Primärcontroller-kalibrierung und -trimmen unter verwendung eines sekundärcontrollers in sekundärgesteuerten sperrwandlern
DE112019002151T5 (de) Stromsteuerung und -schutz für universal-serial-bus-typ-c(usb-c)-verbindersysteme
DE112019003427T5 (de) Lastverteilung in multi-port-stromversorgungsanwendungen querverweis auf verwandte anmeldungen
DE112016000994T5 (de) Ein niedrigstrom-typ-c-empfänger mit hoher leerlaufrausch- und dc-pegel-unterdrückung
DE69433377T2 (de) Leistungsverwaltungssystem fuer rechnervorrichtungszwischenverbindungsbus und verfahren hierfür
DE112008000758B4 (de) Dynamische Stromreduzierung
US11316441B2 (en) Controlled gate-source voltage N-channel field effect transistor (NFET) gate driver
DE60116650T2 (de) Strommodus-übergang für einen prozessor
DE112017002457T5 (de) Konfigurierbarer und leistungsoptimierter integrierter Gäte-Treiber für USB-Stromlieferung und SoCs vom Typ C
DE112019001910T5 (de) Überstromschutz für universal-serial-bus-typ-c(usb-c)-steckverbindersysteme
DE102021124514A1 (de) Vorrichtung und verfahren für hierarchische leistungsverwaltung
US11100034B1 (en) Dual integrated gate-driver with reverse current fault protection for USB Type-C and USB power delivery
US11119548B2 (en) Dynamic power throttling based on system conditions in USB Type-C power delivery (USB-C/PD) ecosystem
DE112021004551T5 (de) Schalttakt-Phasenverschiebung für Multi-Port-Tiefsetz-Hochsetz-Wandler
DE112017004663T5 (de) Mehrfachverbinder-unterstützung für usb-c
DE112013004026T5 (de) Vorrichtung, System und Verfahren zur geschalteten Leistungsübertragung zu einer E/A-Schnittstelle
DE112005003279T5 (de) Energieverwaltungs-Punkt-zu-Punkt Wechselstrom-gekoppeltes Peripheriegerät
CN114026773A (zh) 次级控制的反激转换器中的初级控制器与次级控制器之间的通信故障指示
CN112088346A (zh) 多端口间通用串行总线功率的委托

Legal Events

Date Code Title Description
R012 Request for examination validly filed