DE102019112136A1 - Bus-invertierungs-kodierung mit eingeschränktem gewichtsbereich für eine signalisierung mit mehreren niveaus - Google Patents

Bus-invertierungs-kodierung mit eingeschränktem gewichtsbereich für eine signalisierung mit mehreren niveaus Download PDF

Info

Publication number
DE102019112136A1
DE102019112136A1 DE102019112136.1A DE102019112136A DE102019112136A1 DE 102019112136 A1 DE102019112136 A1 DE 102019112136A1 DE 102019112136 A DE102019112136 A DE 102019112136A DE 102019112136 A1 DE102019112136 A1 DE 102019112136A1
Authority
DE
Germany
Prior art keywords
weight
bits
significant
current level
significant bit
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
DE102019112136.1A
Other languages
English (en)
Inventor
John Wilson
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.)
Nvidia Corp
Original Assignee
Nvidia 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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019112136A1 publication Critical patent/DE102019112136A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K5/22Circuits having more than one input and one output for comparing pulses or pulse trains with each other according to input signal characteristics, e.g. slope, integral
    • H03K5/24Circuits having more than one input and one output for comparing pulses or pulse trains with each other according to input signal characteristics, e.g. slope, integral the characteristic being amplitude
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K7/00Modulating pulses with a continuously-variable modulating signal
    • H03K7/02Amplitude modulation, i.e. PAM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/02Amplitude-modulated carrier systems, e.g. using on-off keying; Single sideband or vestigial sideband modulation
    • H04L27/04Modulator circuits; Transmitter circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Nonlinear Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dc Digital Transmission (AREA)

Abstract

Ein System, welches einen PAM-4-Sender umfasst, welcher mit Datenbahnen gekoppelt ist, weist einen Abschnitt eines niederwertigsten Bits und einen Abschnitt eines höchstwertigsten Bits für die Symbole, welche auf jeder Bahn erzeugt werden, auf. Eine Steuerung bestimmt einen Zustand des PAM-4-Senders und invertiert selektiv eine Polarität der Symbolbits auf den Bahnen abhängig von dem Zustand.

Description

  • HINTERGRUND
  • Parallele Single-Ended-Busse sind in einem hohen Ausmaß selbstinduziertem Rauschen ausgesetzt. Dieses Rauschen entsteht durch das gleichzeitige Schalten von Ausgängen („Simultaneous Switching of Outputs“ (SSO)). Das Rauschen wird auch als SSO-Rauschen von einem Rauschen bei gleichzeitigem Schalten („Simultaneous Switching Noise“ (SSN)) bezeichnet. Das Rauschen verursacht die Stromversorgung, deren Schaltungen abhängig von di/dt (der Stromschaltfrequenz) und der Impedanz des Stromversorgungsnetzes („Power Delivery Network“ (PDN)) bis zum Stillstand und/oder Überschwingen arbeiten. Diese Modulation der Versorgungsspannung führt zu einer Beschleunigung und Verlangsamung der Schaltungen, was die Timing-Spielräume reduziert. Das Rauschen koppelt sich auch an die zu übertragenden Signale und Referenzspannungen, wodurch der Spannungsabstand reduziert wird.
  • Um das maximale di/dt einer Gruppe von Leitungen zu reduzieren, wird das Gewicht dieser Gruppe von Leitern oder Bahnen überwacht, und dann wird ein zusätzliches Signal eingeführt, das die (logische) Polarität dieser Gruppe von Bahnen kodiert. Dies wird als „Low-Weight-“ Bus-Invertierungs-Kodierung bezeichnet. Diese Form der Bus-Invertierungs-Kodierung reduziert das maximale di/dt für eine Gruppe von Bahnen um bis zu 50% und ihren durchschnittlichen Stromverbrauch um 18%. Sie wird angewendet, wenn jede Bahn in der Gruppe keinen Strom für einen der Ausgangslogikpegel (z.B. „0“) und einen endlichen Umfang an Gleichstrom für den anderen Ausgangslogikpegel (z.B. „1“) verbraucht. Ein Beispiel dafür, wie die Industrie „Low-Weight“-Kodierung verwendet, ist die Grafikspeicherschnittstellen (GDDR), wo sie als DBI-DC-Kodierung bezeichnet wird. Die Implementierung von DBI-DC erfordert, dass ein zusätzliches Bit (d.h. eine Bahn) zur Gruppe der Bahnen hinzugefügt wird.
  • KURZZUSAMMENFASSUNG
  • Es wird eine Technik offenbart, die das Maximum von di/dt gegenüber herkömmlichen Ansätzen für die Multi-PAM-Single-Ended-Signalisierung reduziert. Das selbstinduzierte Rauschen kann beispielsweise bei der Stromversorgung einer Grafikprozessoreinheit (GPU), einer Zentraleinheit (CPU) und einer dynamischen Direktzugriffsspeichervorrichtung (DRAM) reduziert werden. Anstatt die höchstwertigsten Bits (MSBs) und niederwertigsten Bits (LSBs) eines PAM-4 Single-Ended-Parallelbusses unabhängig zu kodieren, identifiziert und nutzt das System Interaktionen zwischen den MSBs und den LSBs, um den Worst-Case von di/dt für das gesamte mehrstufige bzw. mit mehreren Niveaus arbeitende Signalsystem weiter zu reduzieren.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder eine bestimmte Aktion leicht zu identifizieren, bezieht sich die höchstwertigste Ziffer oder die höchstwertigsten Ziffern eines Bezugszeichens auf die Figur, in der dieses Element zum ersten Mal eingeführt wird.
    • 1 - 3 stellen eine Ausführungsform eines Pseudo-Open-Drain-Treiber- und Empfänger-Abschlusses 100 dar.
    • 4 stellt eine Ausführungsform von Buswerten und -gewichten ohne Low-Weight-Kodierung 400 dar.
    • 5 stellt eine Ausführungsform von Buswerten und -gewichten mit Low-Weight-Kodierung 500 dar.
    • 6 stellt eine Ausführungsform eines Bus-Invertierungs-Kodierungsverfahrens 600 dar.
    • 7 stellt eine Ausführungsform von Histogrammen 700 dar.
    • 8 stellt eine Ausführungsform von Pulsamplitudenmodulations-Augendiagrammen 800 dar.
    • 9 - 12 stellen eine Ausführungsform eines PAM-4-POD-Ausgangszustandssender- und eines Empfänger-Aabschlusses 900 dar.
    • 13 stellt eine Ausführungsform von Histogrammen 1300 dar.
    • 14 stellt eine Ausführungsform eines Bus-Invertierungs-Kodierungsverfahrens 1400 dar.
    • 15 stellt eine Ausführungsform von Histogrammen 1500 dar.
    • 16 ist ein Blockdiagramm eines Computersystems 1600, in dem die hierin vorgestellten Verfahren ausgestaltet oder ausgeführt werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Konventionelle Lösungen reduzieren den ungünstigsten Fall von di/dt um 50%, während die offenbarte Technik den ungünstigsten Fall von di/dt um 67% reduziert. Die Technik kann mit Empfängern/Geräten verwendet werden, die für konventionellere Kodierungstechniken ausgelegt sind, um das Rauschen der Stromversorgung weiter zu reduzieren. Mit der PAM-4-Signalisierung hat die offenbarte Technik einen größeren Nutzen als mit PAM-2, da die Signalamplitude für PAM-4 3 × kleiner ist, was die Effizienz eines Geräts mit der neuen Technik erhöht.
  • Unter Bezugnahme auf 1 - 3 umfasst ein Pseudo-Open-Drain- (POD-) Treiber- und Empfänger-Abschluss 100 einen Sender 102, einen Empfänger 104, eine Leitung 106 und eine Steuerung 108. Das in 1 gezeigte Beispiel ist repräsentativ für einen Pseudo-Open-Drain-Treiber- und Empfänger-Abschluss 100, der in Grafikspeicherschnittstellen verwendet wird.
  • Der Sender 102 kann ein Inverter sein, der mit einer Ausgangsimpedanz (RT ) von 40 Ω ausgelegt ist, wenn ein logisches LO oder HI auf die Leitung 106 eingespeist wird. Der Empfänger 104 der Verbindung wird mit einem Widerstand (RT ) von 40 Ω abgeschlossen, der mit der positiven Stromversorgung (VDDQ ) verbunden ist, die beispielsweise 1,2 V betragen kann und die gleiche Stromversorgung sein kann, die von der Endstufe verwendet wird, die den Sender 102 betreibt. Wenn der Sender 102, wie in 2 dargestellt, eine logisches HI auf die Leitung einspeist, beträgt der von der VDDQ -Stromversorgung über RT kommende DC-Strom bzw. Gleichstrom am Empfänger 104 0 mA. Wenn der Sender jedoch, wie in 3 dargestellt, ein logisches LO auf die Leitung einspeist, beträgt der von der VDDQ -Stromversorgung über RT kommende Gleichstrom am Empfänger 104 15 mA. Bei einem typischen parallelen Bus können mehrere Bits zusammengefasst werden, und in vielen Fällen erfolgt die Gruppierung in Sätzen von 8 Bahnen. In diesem Beispiel kann die Gruppe der 8 Bahnen in Abhängigkeit von den vom Sender ausgegebenen Werten dann zwischen 0 mA und 120 mA (15 mA/Bahn × 8 Bahnen = 120 mA maximal) aus der VDDQ -Stromversorgung entnehmen. Ein maximales di/dt tritt auf, wenn die Gruppe von 8 Bahnen vom Senden von 8 logischen HI-Zuständen zum Senden von 8 logischen LO-Zuständen übergeht - die Stromaufnahme schaltet von 0 mA auf 120 mA. Dieses di/dt erzeugt Rauschen bei der Stromversorgung.
  • Die Gesamtzahl der stromaufnehmenden Zustände wird als „Gewicht“ des Busses, das „Bus-Gewicht“ oder einfach als „Gewicht“ bezeichnet. Mit anderen Worten, das „Gewicht“ des Busses oder der Gruppe von 8 Bahnen in diesem Beispiel reicht von 0 bis N, wobei N die Gesamtzahl der stromaufnehmenden logischen LO-Zustände für die Gruppe von 8 Bahnen ist.
  • Die „Low-Weight“-Kodierung kann das maximale di/dt der Gruppe von 8 Bahnen um 50% reduzieren, und zwar auf Kosten des Hinzufügens einer zusätzlichen Bahn zur Gruppe, was insgesamt 9 Bahnen ergibt. Die logische Polarität der 8 Bahnen wird durch die 9. Bahn kodiert, was als DBI-Bit (Data Bus Inverse) bezeichnet wird (wie es für Datenbusse verwendet werden kann, jedoch nicht auf Datenbusse beschränkt ist). Indem die Polarität der 8 Bahnen mit der Polarität der 9. Bahn kodiert wird, reduziert sich der Gewichtsbereich für die Gruppe der 9 Bahnen auf 0 bis N/2, wobei N die Gesamtzahl der stromaufnehmenden logischen LO-Zustände für die Gruppe der 9 Bahnen ist.
  • Die Steuerung 108 kann bestimmen, ob die Busbits invertiert werden sollen. Zunächst wird ein Gewicht von 1 dem stromverbrauchenden Zustand gleichgesetzt, der in diesem Beispiel einem logischen LO auf der Leitung entspricht (wie in 3 dargestellt). Die Spannung auf der Leitung 106 muss nicht berücksichtigt werden; der von der VDDQ und durch die Leitung 106 fließende Strom wird berücksichtigt und diesem 15 mA-Strom wird ein Binärwert von 1 zugeordnet, obwohl der logische Wert der Spannung auf der Leitung 0 ist. Für jede Bahn in der Gruppe, die Strom verbraucht (in diesem Beispiel 15 mA pro Bahn oder pro Bit), wird ein Gewicht von 1 zum gesamten Bus-Gewicht addiert. Wenn das Bus-Gewicht N/2 überschreitet (4 in diesem Beispiel mit N=8), ändert das DBI-Bit seinen Zustand in Stromaufnahme und die Polarität aller Busbits wird invertiert. Das heißt, die Bahnen, die zuvor Strom verbraucht haben, verbrauchen jetzt keinen Strom mehr. Die Busbits, die bisher keinen Strom verbraucht haben, verbrauchen nun jedoch Strom. Diese Kodierung erfolgt durch die Kenntnis, dass immer dann, wenn mehr als N/2 der Busbits Strom verbrauchen, das DBI-Bit aktiviert und die Polarität aller Busbits invertiert wird. Die Buswerte und -gewichte beziehen sich auf einen 8-Bit-Bus ohne und mit „Low-Weight“-Kodierung, wie es in 4 bzw. 5 dargestellt ist.
  • Buswerte und -gewichte ohne Low-Weight-Kodierung 400 sind in 4 dargestellt. Dazu gehören ein Buswert 402 und ein Gewicht 404. Buswerte und Gewichte mit Low-Weight-Kodierung 500 sind in 5 dargestellt. Dazu gehören ein Buswert 502, ein Datenbus-Invertierungs-Bit 504 und ein Gewicht 506. Wenn in diesem Beispiel der Buswert 402 oder der Buswert 502 den Wert „0“ hat, zeigt er einen keinen Strom verbrauchenden Zustand für die entsprechende Bahn (D0-D7) an, während ein Wert von „1“ einen Strom verbrauchenden Zustand für die Bahn anzeigt. Das Gewicht 404 ist die Summe der Buswerte 402 für alle Datenbahnen und das Gewicht 506 ist die Summe der Buswerte 502 für alle Datenbahnen und das Datenbus-Invertierungs-Bit 504. Das Datenbus-Invertierungs-Bit 504 gibt an, ob die Polarität der Busbits zu invertieren ist oder nicht. Wenn das Gewicht 506 größer als N/2 ist (in diesem Beispiel ein Wert von 4), wird das Datenbus-Invertierungs-Bit 504 auf „1“ gesetzt und die Buswerte 502 werden invertiert, wodurch das Gewicht 506 auf einen neuen, niedrigeren Wert geändert wird. So kann sich beispielsweise D0-D6 im Zustand „1“ befinden, was zu einem Gewicht 506 von „7“ führen würde. Da „7“ > „N/2“ (d.h. „4“) ist, wird das Datenbus-Invertierungs-Bit 504 von „0“ auf „1“ gesetzt. Dadurch wird D0-D6 auf „0“ und D7 auf „1“ von „0“ invertiert. Das resultierende Gewicht 506 ist also „2“ statt „7“.
  • Unter Bezugnahme auf 6 empfängt ein Bus-Invertierungs-Kodierungsverfahren 600 die Busbitwerte für jede Bahn (Block 602). Ein Busbitwert von „0“ kann einen nicht Strom verbrauchenden Zustand anzeigen, während ein Busbitwert von „1“ einen Strom verbrauchenden Zustand anzeigen kann. Aus den Busbitwerten (Block 604) wird dann das Bus-Gewicht berechnet. Das Bus-Gewicht kann die Summe der Bahnen in einem Strom verbrauchenden Zustand sein. Das Bus-Invertierungs-Kodierungsverfahren 600 bestimmt dann, ob das Bus-Gewicht weniger als die Hälfte der Anzahl der eingesetzten Bahnen (N/2) beträgt (Entscheidungsblock 606). Wenn ja, wird das Datenbus-Invertierungs-Bit auf „0“ gesetzt (Block 608) und die Busbits werden nicht invertiert (Block 610). Wenn das Gewicht nicht weniger als die Hälfte der Anzahl der eingesetzten Bahnen (N/2) beträgt, wird das Datenbus-Invertierungs-Bit auf „1“ gesetzt (Block 612) und die Busbits werden invertiert (Block 614).
  • Unter Bezugnahme auf 7 stellen die Histogramme 700 das Bus-Gewicht und die Ströme vor der Low-Weight-Kodierung, die Roh-Bus-Gewichte 702, die Roh-Busströme 704, das Bus-Gewicht und die Ströme nach der Low-Weight-Kodierung, die DBI-Bus-Gewichte 706 und die DBI-Busströme 708 dar. Die Roh-Bus-Gewichte 702 stellen das Bus-Gewicht für einen 8-Bit-Bus mit normal verteilten Zufallsdaten ohne Kodierung dar, während die DBI-Bus-Gewichte 706 den Fall mit Low-Weight- (DBI-DC) Kodierung darstellen. Die Roh-Bus-Gewichte 702 haben ein Maximum von 8, ein Minimum von 0 und ein Delta von 8. Die DBI-Bus-Gewichte 706 haben ein Maximum von 4, ein Minimum von 0 und ein Delta von 4. Die Bus-Gewichte von 5-8 wurden im Vergleich zu den Roh-Bus-Gewichten 702 zu den Bus-Gewichten 1-4 in den DBI-Bus-Gewichten 706 nach unten „gefaltet“. Die Roh-Busströme 704 und die DBI-Busströme 708 stellen den gesamten Busstrom für die gleichen Daten dar. Die Roh-Busströme 704 stellen den Fall ohne Kodierung dar, und die DBI-Busströme 708 stellen den Fall mit Low-Weight- (DBI-DC-) Kodierung dar. Die Roh-Busströme 704 haben ein Maximum von 120 mA, ein Minimum von 0 mA, einen Mittelwert von 60 mA und ein maximales di/dt von 120 mA. Die DBI-Bus-Ströme 708 haben ein Maximum von 60 mA, ein Minimum von 0 mA, einen Mittelwert von 49 mA und ein maximales di/dt von 60 mA. Die Busströme von 75-120 mA wurden in die Busströme von 15-60 mA nach unten „gefaltet“. Dadurch wird das maximale di/dt von 0 bis 120 mA auf 0 bis 60 mA reduziert, und der durchschnittliche Strom wird von 60 mA auf 49 mA reduziert, was einer Reduzierung des durchschnittlichen Stroms und der durchschnittlichen Leistung um 18,3% entspricht.
  • Unter Bezugnahme auf 8 sind die Pulsamplitudenmodulations-Augendiagramme 800 für die PAM-4-Signalisierung 802 und für die PAM-2-Signalisierung 804 dargestellt. Die PAM-4 Signalisierung 802 ist eine Verbindung, die durch die Übertragung von vier (4) verschiedenen Niveaus kommuniziert. Jedes Niveau kann in Anteile zerlegt werden, die den logischen Zustand der Information darstellen. Die Übertragung mit vier (4) verschiedenen Niveaus wird oft als PAM-4 oder PAM-4-Signalisierung (PAM = Pulse Amplitude Modulation) bezeichnet. Verbindungen, die über die PAM-4-Signalisierung kommunizieren, senden zwei (2) Informationsbits pro Symbol, wobei ein Symbol einer von vier möglichen Werten eines Bitpaares ist. Dies unterscheidet sich von der Art der Signalisierung, die typischerweise für die meisten parallelen Single-Ended-Schnittstellen verwendet wird, da diese auf das Senden von 1 Bit pro Symbol beschränkt sind (d.h. durch das Augendiagramm der PAM-2-Signalisierung 804 dargestellt). Die Augendiagramme der PAM-4-Signalisierung 802 und der PAM-2-Signalisierung 804 tragen die Spannung auf der Leitung, normalerweise am Empfänger, gegen die Zeit auf, aber die Zeitachse wird in einem Zeitintervall gefaltet, das gleich der Taktperiode (2xUI) ist. Das Signal hat 4 Niveaus mit PAM-4-Signalisierung und 2 Niveaus mit PAM-2-Signalisierung. Jedes dieser Niveaus verbraucht eine andere Menge an Strom. Wie bereits erwähnt, verbraucht das Signalisierungssystem PAM-2 (dargestellt in 1 - 3) beispielsweise entweder 0 mA oder 15 mA pro Bahn.
  • Unter Bezugnahme auf 9 - 12 umfasst ein PAM-4-POD-Ausgangszustandssender- und Empfangs-Abschluss 900 einen Sender 902 des niederwertigsten Bits, einen Sender 904 des höchstwertigsten Bits, einen Empfänger 906, eine Leitung 908 und eine Steuerung 910. Der PAM-4-POD-Ausgangszustandssender- und Empfangs-Abschluss 900 kann vier (4) Zustände annehmen, basierend auf dem Sender 902 des niederwertigsten Bits und des Senders 904 des höchstwertigsten Bits 904. Wenn der Sender 902 des niederwertigsten Bits LO und der Sender 904 des höchstwertigsten Bits LO ist, dann ist LSB = 1 und MSB = 1 auf der Leitung 908 und die Leitungsspannung beträgt 1,2 V und der Leitungsstrom beträgt 0 mA. Wenn der Sender 902 des niederwertigsten Bits HI und der Sender 904 des höchstwertigsten Bits LO ist, dann ist LSB = 0 und MSB = 1 auf der Leitung 908 und die Leitungsspannung beträgt 1,0 V und der Leitungsstrom beträgt 5 mA. Wenn der Sender 902 des niederwertigsten Bits LO und der Sender 904 des höchstwertigsten Bits HI ist, dann ist LSB = 1 und MSB = 0 auf der Leitung 908 und die Leitungsspannung beträgt 0,8 V und der Leitungsstrom beträgt 10 mA. Wenn der Sender 902 des niederwertigsten Bits HI und der Sender 904 des höchstwertigsten Bits HI ist, dann ist LSB = 0 und MSB = 0 auf der Leitung 908 und die Leitungsspannung beträgt 0,6 V und der Leitungsstrom beträgt 15 mA.
  • Der Sender kann in drei gleich große Abschnitte unterteilt werden. Ein Abschnitt (der Sender 902 des niederwertigsten Bits) wird mit den LSB-Daten und die beiden anderen Abschnitte (der Sender 904 des höchstwertigsten Bits) mit den MSB-Daten gesteuert. Jeder Abschnitt ist so konzipiert, dass er einen Pull-up- und Pull-down-Widerstand von 120 Ω aufweist. Bei einigen Ausführungsformen gilt, da es drei Abschnitte gibt und jeder Abschnitt immer aktiviert ist, entweder im Pull-up- oder Pull-down-Modus, dass der äquivalente Gesamtwiderstand 40 Ω beträgt, was häufig für Grafikspeicherschnittstellen verwendet wird. 9 - 12 zeigen, wie ein PAM-4-POD-Treiber konstruiert und betrieben wird, um am Empfänger Amplitudensignale mit gleicher Spannung zu erzeugen, wobei der Strom, der aus der VDDQ -Stromversorgung am Empfänger durch die Leitung gezogen wird, 0 mA, 5 mA, 10 mA bzw. 15 mA beträgt.
  • Der Sender 902 des niederwertigsten Bits verbraucht entweder 0 mA oder 5 mA pro Bahn. Daher wird pro Bahn dem Sender 902 des niederwertigsten Bits für den Wert von 5 mA ein Gewicht von 1 zugewiesen. Der Sender 904 des höchstwertigsten Bits verbraucht entweder 0 mA oder 10 mA pro Bahn. Da dem Sender 902 des niederwertigsten Bits ein Gewicht von 1 für 5 mA zugewiesen wird, wird pro Bahn einem Wert von 10 mA ein Gewicht von 2 zugeordnet. Die 8 Bahnen, die die PAM-4-Signalisierung in 9 - 12 verwendet, können ein Gesamtgewicht im Bereich von 0 bis 24 aufweisen, was einem Strombereich von 0 bis 120 mA entspricht (d.h. 24 × 5 mA = 120 mA). Die Steuerung 910 bestimmt abhängig von den Gewichten, ob die Polarität des Senders 902 des niederwertigsten Bits und des Senders 904 des höchstwertigsten Bits invertiert werden soll. Invertierungsverfahren sind in 14 dargestellt und in den Listings aufgeführt.
  • Unter Bezugnahme auf 13 stellen die Histogramme 1300 die Roh-Busströme 1302, bevor die Low-Weight-Kodierung unabhängig von dem LSB- und MSB-Bit angewendet wird, und die DBI-Busströme 1304 dar, nachdem die Low-Weight-Kodierung unabhängig von dem LSB- und MSB-Bit angewendet wurde. Die Histogramme 1300 stellen den PAM-4-POD-Sender dar, welcher den in 6 beschriebenen Low-Weight-Kodierungsalgorithmus unabhängig sowohl von dem LSB-Bit (des Ausgangstreibers) als auch von dem MSB-Bit (des Ausgangstreibers) einsetzt. Die Roh-Busströme 1302 können durchschnittlich 60 mA, maximal 120 mA, minimal 0 mA und ein maximales di/dt von 120 mA aufweisen. Die DBI-Busströme 1304 können durchschnittlich 49 mA, maximal 60 mA, minimal 0 mA und ein maximales di/dt von 60 mA aufweisen. Auf diese Weise kann eine Reduzierung des maximalen di/dt von 50% erreicht werden. Dies führt auch zu einer Reduzierung des durchschnittlichen Stroms und der durchschnittlichen Leistung von 18,3%.
  • Unter Bezugnahme auf 14 berücksichtigt ein Bus-Invertierungs-Kodierungsverfahren 1400 das Gewicht der MSB-Bits (des „MSB-Busses“), bevor es bestimmt, ob die LSB-Bits (der „LSB-Bus“) kodiert werden sollen. Das Bus-Invertierungs-Kodierungsverfahren 1400 kann das maximale di/dt um 67% reduzieren und im Wesentlichen die gleiche Reduzierung von Strom/Leistung beibehalten. Der Bereich des gesamten Bus-Gewichts wird durch das Zusammenspiel der LSB- und MSB-Bits und deren kombinierten möglichen Zuständen eingeschränkt. In einer Ausführungsform weist das MSB-Gewicht einen Bereich von 0 bis 16 in Schritten von 2 und das LSB-Gewicht einen Bereich von 0 bis 8 in Schritten von 1 auf. 1400 berechnet das MSB-Bus-Gewicht (Block 1402). Zusätzlich wird das LSB-Bus-Gewicht berechnet (Block 1404). Das Bus-Invertierungs-Kodierungsverfahren 1400 bestimmt, ob das MSB-Gewicht größer als 8 ist (Entscheidungsblock 1406). Wenn ja, werden die MSB-Bus-Bits invertiert (Block 1408) und der DBI_MSB auf „1“ gesetzt (Block 1410). Anschließend oder wenn das MSB-Gewicht nicht größer als 8 ist, bestimmt das Bus-Invertierungs-Kodierungsverfahren 1400 vor der Invertierung basierend auf Block 1408, ob das MSB-Gewicht 0 oder 2 oder 16 ist (Entscheidungsblock 1412). Wenn nein, bestimmt das Bus-Invertierungs-Kodierungsverfahren 1400, ob das LSB-Gewicht größer als 4 ist (Entscheidungsblock 1414). Wenn ja, bestimmt das Bus-Invertierungs-Kodierungsverfahren 1400, ob das LSB-Gewicht kleiner oder gleich 4 ist (Entscheidungsblock 1416).
  • Wenn das MSB-Gewicht nicht 0, 2 oder 16 ist und das LSB-Gewicht größer als 4 ist oder das MSB-Gewicht 0, 2 oder 16 ist und das LSB kleiner oder gleich 4 ist, werden die LSB-Bus-Bits invertiert (Block 1418) und das DBI_LSB auf „1“ gesetzt (Block 1420). Das Bus-Invertierungs-Kodierungsverfahren 1400 endet nach Abschluss des Blocks 1422.
  • Eine zweite Erklärung des Algorithmus könnte auch wie folgt beschrieben werden: 1) Wenn das Gewicht der Bits der MSB-Abschnitte der Symbole auf dem Bus > 8 ist, dann wird die Polarität aller MSB-Bits invertiert und DBI_MSB=1 gesetzt; 2) Wenn das Gewicht der Bits des LSB-Abschnitts der Symbole auf dem Bus > 4 ist und wenn das Gewicht der Bits des MSB-Abschnitts des Busses von 4 bis 14 (einschließlich) beträgt, dann wird die Polarität aller LSB-Bits invertiert und DBI_LSB=1 gesetzt; 3) Wenn das Gewicht der Bits des MSB-Abschnitts des Busses = 0 oder 2 oder 16 ist und das Gewicht des LSB-Abschnitts des Busses ≤ 4 ist, werden alle Bits des LSB-Abschnitts der Symbole invertiert und DBI_LSB=1 gesetzt; 4) In allen anderen Fällen werden keine Bits invertiert und sowohl DBI_MSB=0 als auch DBI_LSB=0 gesetzt.
  • In verschiedenen Ausführungsformen wird dann ein erstes Gewicht eingesetzt, das Werte zwischen 0 und 16 einschließlich in Schritten von 2 aufweist, und jede der Bahnen auf einem ersten Stromniveau trägt 0 zum ersten Gewicht bei und jede Bahn auf einem zweiten Stromniveau trägt 2 zum ersten Gewicht bei. Ein zweites Gewicht wird ebenfalls eingesetzt, das Werte zwischen 0 und 8 einschließlich in Schritten von 1 aufweist, und jede der Bahnen auf einem dritten Stromniveau trägt 0 zum zweiten Gewicht bei und jede der Datenbahnen auf einem vierten Stromniveau trägt 1 zum zweiten Gewicht bei. Die höchstwertigsten Bits werden invertiert, wenn das erste Gewicht größer als 8 ist, und die niederwertigsten Bits werden invertiert, wenn das erste Gewicht 0, 2 oder 16 ist und das zweite Gewicht kleiner oder gleich 4 ist, oder das erste Gewicht zwischen 4 und 14 einschließlich ist und das zweite Gewicht größer als 4 ist.
  • Die Steuerung kann eine zusätzliche Prüfung auf Unterfälle bei den niederwertigsten Bits durchführen, z.B. werden die niederwertigsten Bits invertiert, wenn (a) das erste Gewicht 0 und das zweite Gewicht 5 ist oder (b) das erste Gewicht 2 oder 16 ist und das zweite Gewicht zwischen 5 und 7 einschließlich liegt, und die niederwertigsten Bits werden nicht invertiert, wenn (a) das erste Gewicht 0 ist und das zweite Gewicht 4 ist oder (b) das erste Gewicht 2 oder 16 ist und das zweite Gewicht zwischen 2 und 4 einschließlich liegt.
  • In einem anderen Beispiel liegt das erste Gewicht zwischen 0 und 16 einschließlich in Schritten von 2, wobei jede der Bahnen auf dem ersten Stromniveau 0 zum ersten Gewicht beiträgt und auf dem zweiten Stromniveau 2 zum ersten Gewicht beiträgt. Das zweite Gewicht liegt zwischen 0 und 8 einschließlich in Schritten von 1, wobei jede der Bahnen auf dem dritten Stromniveau 0 zum zweiten Gewicht beiträgt und auf dem vierten Stromniveau 1 zum zweiten Gewicht beiträgt. Die höchstwertigsten Bits werden invertiert, wenn das erste Gewicht plus das zweite Gewicht größer oder gleich 14 ist, und die niederwertigsten Bits werden invertiert, wenn das erste Gewicht plus das zweite Gewicht (a) kleiner als 5 ist oder (b) zwischen 14 und 22 einschließlich liegt.
  • Unter Bezugnahme auf 15 stellen Histogramme 1500 die Roh-Busströme 1502 und DBI-Busströme 1504 vor und nach der Anwendung des in 14 dargestellten Verfahrens dar. Die Roh-Busströme 1502 können durchschnittlich 60 mA, maximal 120 mA, minimal 0 mA und ein maximales di/dt von 120 mA aufweisen. Die DBI-Bus-Ströme 1504 können durchschnittlich 49,5 mA, maximal 60 mA, minimal 20 mA und ein maximales di/dt von 40 mA aufweisen. Auf diese Weise kann eine Reduzierung des maximalen di/dt von 50% erreicht werden. Dies führt auch zu einer Reduzierung des durchschnittlichen Stroms und der durchschnittlichen Leistung von 18,3%. Das Bus-Invertierungs-Kodierungsverfahren 1400 „faltet“ die Fälle, die sonst kombinierte MSB+LSB-Bus-Gewichte von 0 bis 3 (0 bis 15 mA) aufweisen, aufwärts und in andere bereits mögliche Zustände mit einem Gewichtsbereich von 5 bis 12 (25- bis 60 mA). Dadurch wird das maximale di/dt von 0 bis 60 mA auf 20- bis 60 mA reduziert, was 40 mA oder 67% weniger als der unkodierte Bereich von 0 bis 120 mA ist.
  • Es gibt andere mögliche Kodierungsverfahren, aber dieser Ansatz kann das minimal mögliche di/dt erreichen, ohne die möglichen Zustände jedes einzelnen Signals einzuschränken. Er kann ausgeführt werden, indem die Low-Weight-Kodierungslogik vorher verlassen wird mit der einfachen Einbeziehung des Falls, welcher den kombinierten Ausnahmefall/schritt #3 von der zweiten Erläuterung des Algorithmus überprüft. Dieses Verfahren verwendet keine speziellen Nachschlagetabellen oder zusätzliche Signalleitungen und verursacht keinen zusätzlichen zeitlichen Overhead (d.h. die Verbindung wird schneller als die Basis-Signalrate betrieben). Die Dekodierung funktioniert auch mit einer Empfangsvorrichtung, die den am Sender verwendeten Algorithmus nicht kennt. Dies ist der Fall, da alle Dekodierungsinformationen mit der Polarität der DBI-Bits übermittelt werden. Daher kann er mit einer GPU und einem DRAM verwendet werden, die diese Kodierung bei der Übertragung von Informationen nicht unterstützen. Er kann in eine oder beide Richtungen für die Verbindung verwendet werden.
  • 16 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 1600, in dem ein oder mehrere Aspekte der Offenbarung implementiert werden können. Das Computersystem 1600 beinhaltet einen Systemdatenbus 1632, eine CPU 1602, Eingabevorrichtungen 1608, einen Systemspeicher 1604, ein Grafikverarbeitungssystem 1606 und Anzeigevorrichtungen 1610. In alternativen Ausführungsformen können die CPU 1602, Teile des Grafikverarbeitungssystems 1606, der Systemdatenbus 1632 oder eine beliebige Kombination davon in eine einzige Verarbeitungseinheit integriert sein. Darüber hinaus kann die Funktionalität des Grafikverarbeitungssystems 1606 in einem Chipsatz oder in einer anderen Art von Sonderverarbeitungseinheit oder Co-Prozessor enthalten sein.
  • Wie dargestellt, verbindet der Systemdatenbus 1632 die CPU 1602, die Eingabegeräte 1608, den Systemspeicher 1604 und das Grafikverarbeitungssystem 1606. In alternativen Ausführungsformen kann der Systemspeicher 1604 direkt mit der CPU 1602 verbunden werden. Die CPU 1602 empfängt Benutzereingaben von den Eingabegeräten 1608, führt im Systemspeicher 1604 gespeicherte Programmieranweisungen aus, arbeitet mit im Systemspeicher 1604 gespeicherten Daten, um Rechenaufgaben auszuführen. Der Systemspeicher 1604 beinhaltet typischerweise einen dynamischen Direktzugriffsspeicher (DRAM), der zum Speichern von Programmieranweisungen und Daten verwendet wird. Das Grafikverarbeitungssystem 1606 empfängt von der CPU 1602 gesendete Anweisungen und verarbeitet die Anweisungen, um beispielsweise Aspekte der offenbarten Ausführungsformen zu realisieren und/oder Grafiken (z.B. Bilder, Kacheln, Videos) auf den Anzeigevorrichtungen 1610 darzustellen und anzuzeigen.
  • Wie ebenfalls dargestellt, beinhaltet der Systemspeicher 1604 ein Anwendungsprogramm 1612, eine API 1614 (Application Programming Interface) und einen Grafikkartentreiber 1616 (GPU-Treiber). Das Anwendungsprogramm 1612 erzeugt Aufrufe der API 1614, um einen gewünschten Satz von Berechnungsergebnissen zu erzeugen. So kann beispielsweise das Anwendungsprogramm 1612 Programme oder Funktionen davon an die API 1614 zur Verarbeitung innerhalb des Grafikprozessortreibers 1616 übertragen.
  • Das Grafikverarbeitungssystem 1606 beinhaltet eine GPU 1618 (Grafikverarbeitungseinheit), einen On-Chip-GPU-Speicher 1622, einen On-Chip-GPU-Datenbus 1636, einen lokalen GPU-Speicher 1620 und einen GPU-Datenbus 1634. Die GPU 1618 ist konfiguriert, um mit dem On-Chip-GPU-Speicher 1622 über den On-Chip-GPU-Datenbus 1636 und mit dem lokalen GPU-Speicher 1620 über den GPU-Datenbus 1634 zu kommunizieren. Die GPU 1618 kann von der CPU 1602 gesendete Anweisungen empfangen, die Anweisungen verarbeiten und die Ergebnisse im lokalen Speicher 1620 der GPU speichern. Anschließend kann die GPU 1618 bestimmte im lokalen Speicher 1620 der GPU gespeicherte Grafiken auf den Anzeigevorrichtungen 1610 anzeigen.
  • Die GPU 1618 beinhaltet einen oder mehrere Logikblöcke 1624. Die Logikblöcke 1624 können Ausführungsformen der hierin offenbarten Systeme und Techniken implementieren.
  • Die offenbarten Ausführungsformen können zur Kommunikation von Daten zwischen verschiedenen Komponenten des Computersystems 1600 verwendet werden. Exemplarische Komponentenkommunikation tritt zwischen der CPU 1602 und/oder der GPU 1618 und den Speicherschaltungen, einschließlich des Systemspeichers 1604, des lokalen GPU-Speichers 1620 und/oder des On-Chip-GPU-Speichers 1622, auf.
  • Die GPU 1618 kann mit einer beliebigen Anzahl von On-Chip-GPU-Speichern 1622 und GPU-Lokalspeichern 1620, einschließlich keinem, ausgestattet sein und kann On-Chip-GPU-Speicher 1622, GPU-Lokalspeicher 1620 und Systemspeicher 1604 in beliebiger Kombination für Speicheroperationen verwenden.
  • Der On-Chip-GPU-Speicher 1622 ist konfiguriert, um die GPU-Programmierung 1628 und die On-Chip-Puffer 1630 aufzuweisen. Die GPU-Programmierung 1628 kann vom Grafikkartentreiber 1616 über den Systemdatenbus 1632 an den On-Chip-GPU-Speicher 1622 übertragen werden. Die GPU-Programmierung 1628 kann die Logikblöcke 1624 beinhalten.
  • Der lokale Speicher 1620 der GPU beinhaltet typischerweise einen kostengünstigeren dynamischen Direktzugriffsspeicher (DRAM) außerhalb des Chips und wird auch zum Speichern von Daten und Programmen der GPU 1618 verwendet. Wie dargestellt, beinhaltet der lokale GPU-Speicher 1620 einen Frame-Puffer 1626. Der Frame-Puffer 1626 kann beispielsweise Daten, wie z.B. ein Bild, z.B. eine Grafikoberfläche, speichern, die zur Steuerung der Anzeigevorrichtungen 1610 verwendet werden kann. Der Frame-Puffer 1626 kann mehr als eine Oberfläche beinhalten, so dass die GPU 1618 eine Oberfläche rendern kann, während eine zweite Oberfläche zum Steuern der Anzeigevorrichtungen 1610 verwendet wird.
  • Die Anzeigevorrichtungen 1610 sind eine oder mehrere Ausgabevorrichtungen, die ein visuelles Bild entsprechend einem Eingangsdatensignal ausgeben können. So kann beispielsweise eine Anzeigevorrichtung unter Verwendung einer Flüssigkristallanzeige oder eines anderen geeigneten Anzeigesystems aufgebaut sein. Die Eingangsdatensignale an die Anzeigevorrichtungen 1610 werden typischerweise durch Scannen des Inhalts eines oder mehrerer Frames von Bilddaten erzeugt, die im Frame-Puffer 1626 gespeichert sind.
  • Die hierin verwendeten Begriffe sollten ihrer gewöhnlichen Bedeutung in der jeweiligen Technik oder der Bedeutung, die durch ihre Verwendung im Kontext angegeben wird, entsprechen, aber wenn eine ausdrückliche Definition angegeben wird, gilt deren Bedeutung.
  • „Schaltungen“ bezieht sich auf elektrische Schaltungen mit mindestens einer diskreten elektrischen Schaltung, elektrische Schaltungen mit mindestens einer integrierten Schaltung, elektrische Schaltungen mit mindestens einer anwendungsspezifischen integrierten Schaltung, Schaltungen, die eine Universal-Computervorrichtung bilden, die durch ein Computerprogramm konfiguriert ist (z.B, einen Universalcomputer, der durch ein Computerprogramm konfiguriert ist, das zumindest teilweise Verfahren ausführt, oder Vorrichtungen, die hierin beschrieben sind, oder einen Mikroprozessor, der durch ein Computerprogramm konfiguriert ist, das zumindest teilweise Prozesse ausführt, oder Vorrichtungen, die hierin beschrieben sind), eine Schaltung, die eine Speichervorrichtung bildet (z.B. Formen von Direktzugriffsspeichern), oder eine Schaltung, die eine Kommunikationsvorrichtung bildet (z.B. ein Modem, ein Kommunikations-Switch oder eine optischelektrische Ausrüstung).
  • „Firmware“ bezieht sich auf Softwarelogik, die als prozessorausführbare Anweisungen ausgeführt wird, die in schreibgeschützten Speichern oder Medien gespeichert sind.
  • „Hardware“ bezieht sich auf Logik, die als analoge oder digitale Schaltung ausgeführt ist.
  • „Logik“ bezieht sich auf maschinelle Speicherschaltungen, nichtflüchtige maschinenlesbare Medien und/oder Schaltungen, die in ihrer Material- und/oder Materialenergiekonfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom/Spannungswerte usw.) umfassen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrische und optische Speicher (sowohl flüchtige als auch nichtflüchtige) und Firmware sind Beispiele für Logik. Die Logik schließt insbesondere reine Signale oder Software an sich aus (schließt jedoch Maschinenspeicher, die Software umfassen und dadurch Materiekonfigurationen bilden, nicht aus). Die offenbarten Techniken können durch Schaltungen, Firmware und Software in verschiedenen Kombinationen ausgestaltet sein, je nach den Anforderungen der jeweiligen Implementierung.
  • „Software“ bezieht sich auf Logik, die als prozessorausführbare Anweisungen in einem Maschinenspeicher implementiert ist (z.B. flüchtiger oder nichtflüchtiger Speicher oder Medien zum Lesen/Schreiben).
  • „Gewicht“ bezieht sich auf einen Skalierungsfaktor, der einer aus einem Satz numerischer Größen zugeordnet ist, um dessen Einfluss im Verhältnis zu den anderen Elementen des Satzes darzustellen.
  • „Bus“ bezieht sich auf einen bestimmten Satz von Leitern, die Daten- und Steuersignale innerhalb eines Computersystems übertragen, an die Geräte parallel angeschlossen werden können. Jeder der Leiter kann als Leitung oder Bahn bezeichnet werden.
  • Hierin beziehen sich Verweise auf „eine Ausführungsform“ nicht unbedingt auf die gleiche Ausführungsform, auch wenn sie dies können. Sofern der Kontext nicht eindeutig etwas anderes erfordert, sind die Worte „umfassen“, „umfassend“ und dergleichen in einem inklusiven Sinne im Gegensatz zu einem exklusiven oder erschöpfenden Sinne auszulegen; das heißt, im Sinne von „einschließlich, aber nicht beschränkt auf“. Wörter, die im Singular oder Plural verwendet werden, beinhalten auch den Plural bzw. Singular, es sei denn, sie sind ausdrücklich auf ein einzelnes oder mehrere Elemente beschränkt. Darüber hinaus beziehen sich die Wörter „hierin“, „oben“, „unten“ und Wörter von ähnlicher Bedeutung, wenn sie in dieser Anwendung verwendet werden, auf diese Anwendung als Ganzes und nicht auf bestimmte Teile dieser Anwendung. Wenn die Ansprüche das Wort „oder“ in Bezug auf eine Liste von zwei oder mehr Gegenständen verwenden, deckt dieses Wort alle folgenden Auslegungen des Wortes ab: eines der Elemente in der Liste, alle Elemente in der Liste und jede Kombination der Elemente in der Liste, es sei denn, es ist ausdrücklich auf das eine oder andere beschränkt. Alle Begriffe, die hierin nicht ausdrücklich definiert sind, haben ihre konventionelle Bedeutung, wie sie von dem jeweiligen Fachmann verstanden wird.
  • Verschiedene hierin beschriebene logische Funktionsoperationen können in einer Logik implementiert werden, die mit einem Substantiv oder einer Substantivphrase, die die genannte Operation oder Funktion widerspiegelt, bezeichnet wird. So kann beispielsweise eine Assoziationsoperation von einem „Assoziator“ oder „Korrelator“ durchgeführt werden. Ebenso kann das Schalten durch einen „Schalter“, das Auswählen durch einen „Selektor“ usw. erfolgen.
  • Code-Listings
  • Die folgenden Codelisten sind Beispiele für die Logik, um Aspekte der hier offenbarten Erfindung zu implementieren.
    • % data1 entspricht den LSB-Daten.
    • % data2 entspricht den MSB-Daten.
  • Listing i

 for R = 1:length(data1_dbi_mp)
      if weight_data2mp_raw(R)> 8
          data2_dbi_mp(R,:) = not (data2_dbi_mp(R,:));
          dbi_mp_bit2(R) = 1;
      end
 end
 for R = 1:l ength(data1_dbi_mp)
      if (weight_data2mp_raw(R) == 0 || weight_data2mp_raw(R)
 == 2 || weight_data2mp_raw(R) == 16) && weight-data1mp-raw(R)
 <= 4
          data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
          dbi_mp_bit1(R) = 1;
      elseif not(weight_data2mp_raw(R) == 0 ||
 weight_data2mp_raw(R)== 2 || weight_data2mp_raw(R) == 16) &&
 weight_data1mp_raw(R) > 4
          data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
          dbi_mp_bit1(R) = 1;
      end
 end
  • Listing ii
  •  for R = 1:length(datal-dbi-mp);
          if (weight_data2mp_raw(R) == 0 || weight_data2mp_raw(R)
     == 2 || weight_data2mp_raw(R) == 16) && weight_data1mp_raw(R)
     <= 4
              data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
              dbi_mp_bit1(R) = 1; 
    
    
    
          elseif not(weight_data2mp_raw(R) == 0 ||
     weight_data2mp_raw(R) == 2 || weight_data2mp_raw(R) == 16) &&
     weight_data1mp_raw(R) > 4
              data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
              dbi_mp_bit1(R) = 1;
          elseif weight_data1mp_raw(R) == 4 &&
          weight_data2mp_raw(R) == 0;
              data1_dbi_mp(R,:) = data1_dbi_mp(R,:);
              dbi_mp_bit1(R) = 0;
          elseif weight_data1mp_raw(R) == 5 &&
          weight_data2mp_raw(R)== 0;
              data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
              dbi_mp_bit1(R) = 1;
          elseif weight_data1mp_raw(R) >= 2 &&
          weight_data1mp_raw(R) <= 4 && (weight-data2mp-raw(R) == 2 ||
          weight_data2mp_raw(R)== 16) ;
              data1_dbi_mp(R,:) = data1_dbi_mp(R,:);
              dbi_mp_bit1(R) = 0;
          elseif weight_data1mp_raw(R) >= 5 &&
          weight_data1mp_raw(R) <= 7 && (weight_data2mp_raw(R) == 2 ||
          weight_data2mp_raw(R) == 16);
              data1_dbi_mp(R,:) = not (data1_dbi_mp(R,:));
              dbi_mp_bit1(R) = 1;
          end;
          end;

    Claims (20)

    1. System umfassend: einen PAM-4-Sender, welcher mit einer oder mit mehreren Bahnen gekoppelt ist, wobei der PAM-4-Sender für jede der Bahnen umfasst: einen Ausgang eines höchstwertigsten Bits, welcher bei einem ersten Stromniveau oder einem zweiten Stromniveau auf einer entsprechenden Datenbahn betriebsbereit ist; und einen Ausgang eines niederwertigsten Bits, welcher bei einem dritten Stromniveau oder einem vierten Stromniveau auf der entsprechenden Datenbahn betriebsbereit ist; und eine Steuerung, welche mit dem PAM-4-Sender gekoppelt ist, um: einen Zustand des PAM-4-Senders zu bestimmen, wobei der Zustand ein erstes Gewicht für erste Bits von den Ausgängen des höchstwertigsten Bits für die Bahnen und ein zweites Gewicht für zweite Bits von den Ausgängen des niederwertigsten Bits für die Bahnen umfasst; und selektiv die ersten Bits abhängig von dem ersten Gewicht zu invertieren und um abhängig von dem ersten Gewicht und darüber hinaus abhängig von dem zweiten Gewicht selektiv die zweiten Bits zu invertieren.
    2. System nach Anspruch 1, wobei der Zustand des PAM-4-Senders umfasst: das erste Gewicht liegt zwischen 0 und 16 einschließlich in Schritten von 2, wobei jede der Bahnen auf dem ersten Stromniveau 0 zu dem ersten Gewicht beiträgt und auf dem zweiten Stromniveau 2 zu dem ersten Gewicht beiträgt; und das zweite Gewicht liegt zwischen 0 und 8 einschließlich in Schritten von 1, wobei jede der Bahnen auf dem dritten Stromniveau 0 zu dem zweiten Gewicht beiträgt und auf dem vierten Stromniveau 1 zu dem zweiten Gewicht beiträgt; wobei die ersten Bits invertiert werden, wenn das erste Gewicht größer als 8 ist; wobei die zweiten Bits invertiert werden, wenn: das erste Gewicht 0, 2 oder 16 beträgt und das zweite Gewicht kleiner oder gleich 4 ist; oder das erste Gewicht zwischen 4 und 14 einschließlich liegt und das zweite Gewicht größer als 4 ist.
    3. System nach Anspruch 2, wobei die Steuerung konfiguriert ist, um eine zusätzliche Überprüfung für Unterfälle bezüglich der zweiten Bits auszuführen, wobei die Unterfälle umfassen: Invertieren der zweiten Bits, wenn (a) das erste Gewicht 0 ist und das zweite Gewicht 5 ist oder (b) das erste Gewicht 2 oder 16 ist und das zweite Gewicht zwischen 5 und 7 einschließlich liegt; und nicht Invertieren der zweiten Bits, wenn (a) das erste Gewicht 0 ist und das zweite Gewicht 4 ist oder (b) das erste Gewicht 2 oder 16 ist und das zweite Gewicht zwischen 2 und 4 einschließlich liegt.
    4. System nach einem der vorhergehenden Ansprüche, wobei der Zustand des PAM-4-Senders umfasst: das erste Gewicht liegt zwischen 0 und 16 einschließlich in Schritten von 2, wobei jede der Bahnen auf dem ersten Stromniveau 0 zu dem ersten Gewicht beiträgt und auf dem zweiten Stromniveau 2 zu dem ersten Gewicht beiträgt; und das zweite Gewicht liegt zwischen 0 und 8 einschließlich in Schritten von 1, wobei jede der Bahnen auf dem dritten Stromniveau 0 zu dem zweiten Gewicht beiträgt und auf dem vierten Stromniveau 1 zu dem zweiten Gewicht beiträgt; wobei die ersten Bits invertiert werden, wenn das erste Gewicht plus das zweite Gewicht größer oder gleich 14 ist; wobei die zweiten Bits invertiert werden, wenn das erste Gewicht plus das zweite Gewicht (a) kleiner als 5 ist oder (b) zwischen 14 und 22 einschließlich liegt.
    5. System nach einem der vorhergehenden Ansprüche, wobei die ersten Bits unabhängig von den zweiten Bits invertiert werden.
    6. System nach einem der vorhergehenden Ansprüche, wobei die eine oder die mehreren Bahnen acht Datenbahnen umfassen.
    7. System nach einem der vorhergehenden Ansprüche, wobei die eine oder die mehreren Bahnen eine Datenbus-Invertierungsbahn umfassen, um: ein erstes Polaritätsanzeigebit mit einem ersten Wert abhängig davon, ob die ersten Bits invertiert sind, zu übertragen; und ein zweites Polaritätsanzeigebit mit einem zweiten Wert abhängig davon, ob die zweiten Bits invertiert sind, zu übertragen.
    8. System nach Anspruch 7, wobei das erste Polaritätsanzeigebit und das zweite Polaritätsanzeigebit an einem Empfänger konfigurieren, die ersten Bits und die zweiten Bits, welche bei dem Empfänger empfangen werden, zu invertieren oder nicht zu invertieren.
    9. System nach Anspruch 7 oder 8, wobei: der erste Wert beträgt: 0, wenn die ersten Bits nicht invertiert sind; und 1, wenn die ersten Bits invertiert sind; und der zweite Wert beträgt: 0, wenn die zweiten Bits nicht invertiert sind; und 1, wenn die zweiten Bits invertiert sind.
    10. System nach einem der vorhergehenden Ansprüche, wobei die Ausgänge des höchstwertigsten Bits und die Ausgänge des niederwertigsten Bits konfiguriert sind, so dass das zweite Stromniveau dem Zweifachen des vierten Stromniveaus entspricht.
    11. Verfahren umfassend: Bestimmen eines Gewichts von höchstwertigsten Bits für Daten, welche auf einem PAM-4-Bus übertragen werden, wobei der Bus eine oder mehrere Bahnen aufweist, abhängig von einem Ausgang des höchstwertigsten Bits, welcher auf einem ersten Stromniveau oder einem zweiten Stromniveau betrieben wird; Bestimmen eines Gewichts von niederwertigsten Bits für die Daten, welche auf dem PAM-4-Bus übertragen werden, abhängig von einem Ausgang des niederwertigsten Bits, welcher auf einem dritten Stromniveau oder einem vierten Stromniveau betrieben wird; selektives Invertieren einer Polarität des Ausgangs des höchstwertigsten Bits abhängig von dem Gewicht der höchstwertigsten Bits; und abhängig von dem Gewicht der höchstwertigsten Bits und darüber hinaus abhängig von dem Gewicht der niederwertigsten Bits selektives Invertieren einer Polarität des Ausgangs des niederwertigsten Bits.
    12. Verfahren nach Anspruch 11, darüber hinaus umfassend: Bestimmen des Gewichts der höchstwertigsten Bits, welches zwischen 0 und 16 einschließlich in Schritten von 2 liegt, wobei jede der einen oder der mehreren Bahnen des Busses auf dem ersten Stromniveau 0 und auf dem zweiten Stromniveau 2 zu dem Gewicht der höchstwertigsten Bits beiträgt; und Bestimmen des Gewichts der niederwertigsten Bits, welches zwischen 0 und 8 einschließlich in Schritten von 1 liegt, wobei jede der einen oder der mehreren Bahnen auf dem dritten Stromniveau 0 und auf dem vierten Stromniveau 1 zu dem Gewicht der niederwertigsten Bits beiträgt; Invertieren der Polarität des Ausgangs des höchstwertigsten Bits von jeder der Bahnen, wenn das Gewicht der höchstwertigsten Bits größer als 8 ist; und Invertieren der Polarität des Ausgangs des niederwertigsten Bits von jeder der Bahnen, wenn: das Gewicht der höchstwertigsten Bits 0, 2 oder 16 beträgt und das Gewicht der niederwertigsten Bits kleiner oder gleich 4 ist; oder das Gewicht der höchstwertigsten Bits zwischen 4 und 14 einschließlich beträgt und das Gewicht der niederwertigsten Bits größer als 4 ist.
    13. Verfahren nach Anspruch 12, darüber hinaus ein Ausführen von einer zusätzlichen Überprüfung für Unterfälle bezüglich des Ausgangs des niederwertigsten Bits umfassend, wobei die Unterfälle umfassen: Invertieren des Ausgangs des niederwertigsten Bits, wenn (a) das Gewicht der höchstwertigsten Bits 0 ist und das Gewicht der niederwertigsten Bits 5 ist oder (b) das Gewicht der höchstwertigsten Bits 2 oder 16 ist und das Gewicht der niederwertigsten Bits zwischen 5 und 7 einschließlich liegt; und nicht Invertieren des Ausgangs des niederwertigsten Bits, wenn (a) das Gewicht der höchstwertigsten Bits 0 ist und das Gewicht der niederwertigsten Bits 4 ist oder (b) das Gewicht der höchstwertigsten Bits 2 oder 16 ist und das Gewicht der niederwertigsten Bits zwischen 2 und 4 einschließlich liegt.
    14. Verfahren nach einem der Ansprüche 11 bis 13, darüber hinaus umfassend: Bestimmen des Gewichts der höchstwertigsten Bits, welches zwischen 0 und 16 einschließlich in Schritten von 2 liegt, wobei jede der Bahnen auf dem ersten Stromniveau 0 zu dem Gewicht der höchstwertigsten Bits und auf dem zweiten Stromniveau 2 zu dem Gewicht der höchstwertigsten Bits beiträgt; und Bestimmen des Gewichts der niederwertigsten Bits, welches zwischen 0 und 8 einschließlich in Schritten von 1 liegt, wobei jede der Bahnen auf dem dritten Stromniveau 0 zu dem Gewicht der niederwertigsten Bits und auf dem vierten Stromniveau 1 zu dem Gewicht der niederwertigsten Bits beiträgt; Invertieren der Polarität des Abschnitts des höchstwertigsten Bits, wenn das Gewicht des höchstwertigsten Bits plus das Gewicht des niederwertigsten Bits größer oder gleich 14 ist; und Invertieren der Polarität des Abschnitts des höchstwertigsten Bits, wenn das Gewicht des niederwertigsten Bits plus das Gewicht des niederwertigsten Bits (a) kleiner als 5 ist oder (b) zwischen 14 und 22 einschließlich liegt.
    15. Verfahren nach einem der Ansprüche 11 bis 14, wobei die Polarität des Ausgangs des höchstwertigsten Bits unabhängig von der Polarität des Ausgangs des niederwertigsten Bits invertiert wird.
    16. Verfahren nach einem der Ansprüche 11 bis 15, wobei die eine oder die mehreren Bahnen acht Datenbahnen umfassen.
    17. Verfahren nach einem der Ansprüche 11 bis 16, wobei die eine oder die mehreren Bahnen eine Datenbus-Invertierungsbahn umfassen, um: ein erstes Polaritätsanzeigebit mit einem ersten Wert abhängig davon, ob die Polarität des Ausgangs des höchstwertigsten Bits invertiert ist, zu übertragen; und ein zweites Polaritätsanzeigebit mit einem zweiten Wert abhängig davon, ob die Polarität des Ausgangs des niederwertigsten Bits invertiert ist, zu übertragen.
    18. Verfahren nach Anspruch 17, wobei das erste Polaritätsanzeigebit und das zweite Polaritätsanzeigebit einen Empfänger konfigurieren, um erste Bits, welche dem Ausgang des höchstwertigsten Bits zugeordnet sind, bzw. zweite Bits, welche dem Ausgang des niederwertigsten Bits zugeordnet sind, welche von dem Bus empfangen werden, zu invertieren oder nicht zu invertieren.
    19. Verfahren nach Anspruch 17 oder 18, wobei: der erste Wert beträgt: 0, wenn die Polarität des Ausgangs des höchstwertigsten Bits nicht invertiert ist; und 1, wenn die die Polarität des Ausgangs des höchstwertigsten Bits invertiert ist; und der zweite Wert beträgt: 0, wenn die die Polarität des Ausgangs des niederwertigsten Bits nicht invertiert ist; und 1, wenn die Polarität des Ausgangs des niederwertigsten Bits invertiert ist.
    20. Verfahren nach einem der Ansprüche 11-19, wobei der Ausgang des höchstwertigsten Bits und der Ausgang des niederwertigsten Bits konfiguriert sind, so dass das zweite Stromniveau dem Zweifachen des vierten Stromniveaus entspricht.
    DE102019112136.1A 2018-05-10 2019-05-09 Bus-invertierungs-kodierung mit eingeschränktem gewichtsbereich für eine signalisierung mit mehreren niveaus Pending DE102019112136A1 (de)

    Applications Claiming Priority (4)

    Application Number Priority Date Filing Date Title
    US201862669581P 2018-05-10 2018-05-10
    US62/669,581 2018-05-10
    US16/172,489 2018-10-26
    US16/172,489 US10404505B1 (en) 2018-05-10 2018-10-26 Bus-invert coding with restricted weight range for multi-level signaling

    Publications (1)

    Publication Number Publication Date
    DE102019112136A1 true DE102019112136A1 (de) 2019-11-14

    Family

    ID=67770081

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102019112136.1A Pending DE102019112136A1 (de) 2018-05-10 2019-05-09 Bus-invertierungs-kodierung mit eingeschränktem gewichtsbereich für eine signalisierung mit mehreren niveaus

    Country Status (3)

    Country Link
    US (1) US10404505B1 (de)
    CN (1) CN110471879A (de)
    DE (1) DE102019112136A1 (de)

    Families Citing this family (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11587598B2 (en) 2020-09-09 2023-02-21 Samsung Electronics Co., Ltd. Memory device for generating pulse amplitude modulation-based DQ signal and memory system including the same
    KR20220085618A (ko) 2020-12-15 2022-06-22 삼성전자주식회사 변환 장치, 상기 변환 장치를 포함하는 테스트 시스템 및 상기 변환 장치를 포함하는 메모리 시스템
    KR20220086904A (ko) 2020-12-17 2022-06-24 삼성전자주식회사 데이터 전송 방법 및 데이터 전송 장치
    US11757567B2 (en) 2021-03-10 2023-09-12 Samsung Electronics Co., Ltd. Devices and methods for encoding and decoding to implement a maximum transition avoidance coding with minimum overhead
    EP4057516B1 (de) * 2021-03-10 2024-03-27 Samsung Electronics Co., Ltd. Codierungsvorrichtungen zur implementierung einer multimodencodierung
    KR20220140234A (ko) * 2021-04-09 2022-10-18 삼성전자주식회사 멀티 레벨 신호 시스템에서 최적 전이 코드를 생성하기 위한 신호 처리 방법 및 반도체 장치
    US12015413B2 (en) 2022-09-15 2024-06-18 Apple Inc. Coding for pulse amplitude modulation with an odd number of output levels

    Family Cites Families (2)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7081838B2 (en) * 2004-12-29 2006-07-25 Enigma Semiconductor, Inc. 16b/10s coding apparatus and method
    US9252997B1 (en) * 2014-07-10 2016-02-02 Qualcomm Incorporated Data link power reduction technique using bipolar pulse amplitude modulation

    Also Published As

    Publication number Publication date
    CN110471879A (zh) 2019-11-19
    US10404505B1 (en) 2019-09-03

    Similar Documents

    Publication Publication Date Title
    DE102019112136A1 (de) Bus-invertierungs-kodierung mit eingeschränktem gewichtsbereich für eine signalisierung mit mehreren niveaus
    DE102014118156B4 (de) Bus-Treiberschaltung mit verbesserter Übergangsgeschwindigkeit
    DE102019108205B4 (de) Unentspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
    DE102017213066B4 (de) Übertragungsschaltung
    DE10134472B4 (de) Sende- und Empfangsschnittstelle und Verfahren zur Datenübertragung
    DE60106541T2 (de) LVDS Schaltungen, die für die Stromversorgung in Serie geschaltet sind
    DE602005006248T2 (de) Datenkommunikationsmodul zur bereitstellung von fehlertoleranz und vergrösserter stabilität
    DE102019107670B4 (de) Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
    EP1428225A2 (de) Konzept zur sicheren datenkommunikation zwischen elektronischen bausteinen
    DE102017213032A1 (de) Differenzkommunikationsschaltung
    DE102008030222A1 (de) Steuergerät und Verfahren zum Betrieb des Steuergeräts sowie KFZ mit derartigem Steuergerät
    DE102019118340A1 (de) Invertierungskodierung für einen bus mit begrenzter hamming-distanz für schnittstellen mit mehreren bytes
    DE102018221681A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zur Kommunikation in einem seriellen Bussystem
    WO2019030082A1 (de) Schwingungsreduktionseinheit für ein bussystem und verfahren zur reduzierung einer schwingneigung beim übergang zwischen unterschiedlichen bitzuständen
    DE10223144B4 (de) Datenübertragungsschaltung
    DE102015202219A1 (de) Teilnehmerstation für ein Bussystem und Verfahren zur zeitoptimierten Datenübertragung in einem Bussystem
    DE102014213788A1 (de) Treiberschaltung für eine Signalübertragung und Steuerverfahren der Treiberschaltung
    DE102014216519A1 (de) Kommunikationssystem
    DE102020113386A1 (de) Proportionale ac-gekoppelte flankenverstärkende übertragungsentzerrung für mehrstufige pulsamplitudenmodulierte signalisierung
    DE102013220707B4 (de) Verfahren zum Betreiben eines Datenbusses, entsprechender Datenbus und Fahrzeug mit einem solchen Datenbus
    DE112021003136T5 (de) Verfahren zum durchführen von system- und energieverwaltung über eine serielle datenkommunikationsschnittstelle
    DE102018202168A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zum Senden einer Nachricht in einem seriellen Bussystem
    DE102018202170A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zum Senden einer Nachricht in einem seriellen Bussystem
    DE102018202167A1 (de) Teilnehmerstation für ein serielles Bussystem und Verfahren zum Senden einer Nachricht in einem seriellen Bussystem
    DE60120944T2 (de) Verfahren und anordnung zur verminderung von rücken-an-rücken-spannungsglitch auf einem hochgeschwindigkeitsdatenbus

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed