DE10249883B4 - Method and apparatus for handling SMBUS messages - Google Patents

Method and apparatus for handling SMBUS messages Download PDF

Info

Publication number
DE10249883B4
DE10249883B4 DE2002149883 DE10249883A DE10249883B4 DE 10249883 B4 DE10249883 B4 DE 10249883B4 DE 2002149883 DE2002149883 DE 2002149883 DE 10249883 A DE10249883 A DE 10249883A DE 10249883 B4 DE10249883 B4 DE 10249883B4
Authority
DE
Germany
Prior art keywords
register
instruction
data
smbus
value
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.)
Expired - Lifetime
Application number
DE2002149883
Other languages
German (de)
Other versions
DE10249883A1 (en
Inventor
René Röllig
Andreas Abt
Frank Schücke
Bernd Schönfelder
Daniel Schöne
Gert Springer
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to DE2002149883 priority Critical patent/DE10249883B4/en
Priority to DE10262080A priority patent/DE10262080B4/en
Priority claimed from DE10262080A external-priority patent/DE10262080B4/en
Priority to US10/679,623 priority patent/US8458367B2/en
Publication of DE10249883A1 publication Critical patent/DE10249883A1/en
Application granted granted Critical
Publication of DE10249883B4 publication Critical patent/DE10249883B4/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/10Program control for peripheral devices
    • 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
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol

Abstract

SMBus-Nachrichtenverwalter mit:
einem Speicher (202), der ausgebildet ist, eine Mikrocodierung mit mindestens zwei Programmen (210, 211, 212), die je ein Busbefehlsprotokoll handhaben und jeweils mindestens eine Instruktion aufweisen, zu speichern;
einer Schnittstelle für ein Register (SBM_PRTCL), die ausgebildet ist, eine START-Adresse eines Programms in dem Speicher zu identifizieren;
einer Instruktionsabrufeeinheit (203), die ausgebildet ist, eine Instruktion an einer Adresse in dem Speicher (202) zu lesen, wobei die Adresse durch einen Programmzähler (PC) spezifiziert ist; und
einer finiten Zustandsmaschine (201), die ausgebildet ist, die von der Instruktionsabrufeeinheit (203) ausgelesenen Instruktionen zu empfangen und zu interpretieren und den Datentransfer zwischen einer SMBus-(213, 214,)-Schnittstelle und einem Registersatz (208) in Übereinstimmung mit den aus dem Speicher gelesenen Instruktionen zu handhaben.
SMBus Message Manager with:
a memory (202) configured to store a microcode with at least two programs (210, 211, 212) each handling a bus command protocol and each having at least one instruction;
a register interface (SBM_PRTCL) adapted to identify a START address of a program in the memory;
an instruction fetch unit (203) arranged to read an instruction at an address in the memory (202), the address being specified by a program counter (PC); and
a finite state machine (201) configured to receive and interpret the instructions read from the instruction fetch unit (203) and to transfer data between an SMBus (213, 214) interface and a register set (208) in accordance with to handle instructions read from the memory.

Figure 00000001
Figure 00000001

Description

GEBIET DER VORLIEGENDEN ERFINDUNGAREA OF PRESENT INVENTION

Die vorliegende Erfindung betrifft das Gebiet der Herstellung integrierter Schaltungen und betrifft insbesondere integrierte Schaltungen und Verfahren, in denen eine SMBus-Steuerung implementiert ist. Gemäß einem Aspekt der vorliegenden Erfindung betrifft diese insbesondere einen SMBus-Nachrichtenverwalter zum Organisieren des Datentransfers zwischen einem SMBus und einem Registersatz. Gemäß einem weiteren Aspekt der Erfindung betrifft diese ein Verfahren zum Steuern eines SMBus. Gemäß eines noch weiteren Aspekt dieser Erfindung betrifft diese einen integrierten Schaltungschip zum Übertragen und Empfangen von Daten über einen SMBus.The The present invention relates to the field of integrated manufacturing Circuits and in particular relates to integrated circuits and Procedures in which an SMBus control is implemented. According to one Aspect of the present invention relates to this particular one SMBus message manager to organize the data transfer between an SMBus and a register file. According to another aspect of the The invention relates to a method for controlling an SMBus. According to one Yet another aspect of this invention relates to an integrated one Circuit chip for transmission and receiving data via an SMBus.

Für den Datenaustausch zwischen zwei oder mehreren Geräten wurden diverse Bussysteme entwickelt. Alle Geräte sind für gewöhnlich durch die Busleitungen verbunden. Daher kann möglicherweise nur ein Gerät pro Zeit Daten an ein oder mehrere andere Geräte, die an den Bus angeschlossen sind, übertragen und es müssen geeignete Maßnahmen ergriffen werden, um sicherzustellen, dass lediglich ein Gerät Daten auf den Bus ausgibt. Eine Maßnahme dafür sind die Verwendung von Drei-Zustandsausgängen in jedem Gerät. Eine weitere Maßnahme besteht darin, Ausgangsstufen mit offenem Drain oder offenem Kollektor zu verwenden und die Busleitungen mit einer Spannung zu beaufschlagen. Somit bilden die Ausgänge der Busgeräte, die Busleitungen und die Vorspannungswiderstände eine verdrahtete UND-Funktion. Eine entsprechende Systemmanagement-Bus-(SMBus) Spezifikation ist allgemein bekannt.For data exchange between two or more devices various bus systems have been developed. All devices are usually through the bus lines connected. Therefore, possibly only one device one time data to one or more other devices connected to the bus are, transferred and it has to appropriate measures be taken to ensure that only one device data on the bus. A measure for that are the use of tri-state outputs in each device. A further consequences consists of output stages with open drain or open collector to use and to apply a voltage to the bus lines. Thus, the outputs form the bus devices that Bus lines and the bias resistors have a wired AND function. A corresponding System Management Bus (SMBus) specification is well known.

Der SMBus ist ein Zwei-Draht-Bus. Mehrere Geräte, sowohl Bushaupt- (Master) geräte und Busneben- (Slave) geräte, können mit einem SMBus verbunden sein. Im Allgemeinen initiiert ein Bushauptgerät einen Datentransfer zwischen dem Bus und einem einzelnen Bus- Nebengerät und liefert die Taktsignale. Ein Bus-Nebengerät kann die von dem Hauptgerät gelieferten Daten empfangen oder kann Daten an das Hauptgerät liefern.Of the SMBus is a two-wire bus. Several devices, both bus master (master) equipment and bus ancillary (slave) devices, can be connected to a SMBus. In general, a Bush main unit initiates one Data transfer between the bus and a single bus slave and provides the clock signals. A bus slave can be the one supplied by the main unit Receive data or can provide data to the main unit.

Die beiden Leitungen des SMBus werden als SMBCLK und SMBDAT bezeichnet. Beide Leitungen sind bi-direktional und mit einer positiven Versorgungsspannung über einen Hochzieh- bzw. Vorspannungswiderstand, eine Stromquelle oder durch eine ähnliche andere Schaltung verbunden. Wenn der Bus frei ist, sind beide Leitungen hochpegelig. Ein Hauptgerät liefert den Takt auf der Leitung SMBCLK. Die SMBus-Leitung wird entweder vom Hauptgerät oder von dem Nebengerät abhängig von dem Übertragungsstatus angesteuert. Ferner können in Übereinstimmung mit dem Anhang A der SMBus-Spezifikation 2.0 zwei optionale Leitungen SMBus# und SMBalert# vorgesehen sein.The Both lines of the SMBus are referred to as SMBCLK and SMBDAT. Both lines are bi-directional and have a positive supply voltage across one Pull-up or bias resistor, a current source or through a similar connected to other circuit. When the bus is free, both are wires high level. A main unit delivers the clock on line SMBCLK. The SMBus line will either from the main unit or from the slave device dependent from the transmission status driven. Furthermore, can in accordance with Appendix A of the SMBus specification 2.0 two optional lines SMBus # and SMBalert # be provided.

Zu jeder Zeit kann lediglich ein Gerät den Bus kontrollieren. Da mehr als ein Gerät versuchen kann, die Steuerung des Busses als ein Hauptgerät zu übernehmen, stellt der SMBus einen Arbitrationsmechanismus bereit, der sich auf die verdrahtete UND-Verknüpfung der SMBus-Geräteschnittstellen zu dem SMBus stützt.To At any one time, only one device can control the bus. There more than one device try to take control of the bus as a main unit, The SMBus provides an arbitration mechanism that turns itself on the wired AND link the SMBus device interfaces to the SMBus supports.

Zwei einzigartige Bus-Situationen definieren eine Nachrichten-Start- und Stop-Bedingung. Eine abfallende Flanke der SMBDAT-Leitung bei gleichzeitigem hohen Pegel der SMBCLK-Leitung bezeichnet eine Nachrichten-Start-Bedingung. Eine ansteigende Flanke der SMBDAT-Leitung bei gleichzeitig hohem Pegel der SMBCLK-Leitung definiert eine Nachrichten-Stop-Bedingung. Start-Stop-Bedingungen werden stets durch das Bus-Hauptgerät erzeugt. Nach einer Start-Bedingung wird der Bus als belegt betrachtet. Der Bus wird wieder verfügbar nach einer gewissen Zeit nach einer Stop-Bedingung oder nach dem sowohl die SMBCLK- und SBMDAT-Leitung für mehr als Thigh max (50μ Sekunden) hochpegelig bleiben.Two unique bus situations define a message start and stop condition. A falling edge of the SMBDAT line at the same high level of the SMBCLK line denotes a message start condition. A rising edge of the SMBDAT line with a high level of the SMBCLK line defines a message stop condition. Start-stop conditions are always generated by the bus main unit. After a start condition, the bus is considered busy. The bus becomes available again after some time after a stop condition or after both the SMBCLK and SBMDAT lines remain high for more than T high max (50μ seconds).

Daten werden byte-weise übertragen, wobei jedes Byte aus 8 Bits besteht. Auf jedes auf den Bus übertragene Byte muss ein Bestätigungsbit folgen. Bytes werden mit dem höchsten signifikanten Bit zuerst übertragen. So wie jeder andere Taktpuls wird auch der bestätigungsbezogene Taktpuls durch das Hauptgerät erzeugt. Das Sende-Hauptgerät oder Nebengerät gibt die SMBDAT-Leitung während des Bestätigungstaktzyklus frei. Um ein Byte zu bestätigen, muss der Empfänger die SMBDAT-Leitung während der hochpegligen Phase des Taktpulses auf niedrigen Pegel ziehen. Ein Empfänger, der ein Byte nicht bestätigen will (NACK), muss die SMBDAT-Leitung während des Bestätigungstaktpulses hochpegelig halten. Ein SMBus-Gerät muss stets seine eigene Adresse bestätigen (ACK). Ein SMBus-Nebengerät kann ein Byte, das nicht das Adressbyte ist, nicht bestätigen (NACK), wenn das Nebengerät mit dem Ausführen einer Echtzeitausgabe beschäftigt ist, wenn angeforderte Daten nicht verfügbar sind, oder wenn das Nebengerät einen unzulässigen Befehl oder unzulässige Daten erkennt.Data is transmitted byte-by-byte, with each byte consisting of 8 bits. Each byte transferred to the bus must be followed by a confirmation bit. Bytes are transmitted first with the highest significant bit. Like any other clock pulse, the acknowledgment-related clock pulse is also generated by the main unit. The transmit master or slave releases the SMBDAT line during the acknowledge clock cycle. To assert a byte, the receiver must pull the SMBDAT line low during the high phase of the clock pulse. A receiver that does not want to acknowledge a byte (NACK) must hold the SMBDAT line high during the acknowledgment clock pulse. An SMBus device must always confirm its own address (ACK). An SMBus slave may not acknowledge (NACK) a byte that is not the address byte if the slave is busy performing a real-time output, if requested data is not available, or if the slave recognizes an illegal command or data.

Das Hauptgerät muss bei Erkennen der NACK-Bedingung eine Stop-Bedingung erzeugen, um den Transfer abzubrechen. Wenn ferner ein Hauptgeräteempfänger bei der Transaktion beteiligt ist, muss dieser das Ende der Daten an den Nebengerätempfänger durch Erzeugen eines NACK bei dem letzten Byte, das von dem Nebengerät ausgesendet wurde, signalisieren. Der Nebengerätsender muss die Datenleitung freigeben, um es dem Hauptgerät zu ermöglichen, eine Stop-Bedingung zu erzeugen.The main unit must generate a stop condition when the NACK condition is detected, to cancel the transfer. In addition, when a main unit receiver at involved in the transaction, this must be the end of the data through the slave receiver Generating a NACK on the last byte sent out by the slave was signal. The slave device transmitter must have the data line release it to the main unit to enable to create a stop condition.

Es kann eine Situation auftreten, in der mehr als ein Hauptgerät versucht, zur selben Zeit Taktsignale auf den Bus zu bringen. Das resultierende Bus-Signal wird die verdrahtete UND-Funktion aller Taktsignale sein, die von den Hauptgeräten geliefert werden. Eine abfallende Flanke auf der SMBCLK-Leitung bewirkt, dass alle beteiligten Geräte beginnen, ihre niedrigpegelige Periode zu zählen, und beginnen, die SBMCLK-Leitung auf niedrigen Pegel zu steuern, wenn das Gerät ein Hauptgerät ist. Sobald ein Gerät das Zählen seiner niederpegeligen Periode beendet, gibt es die SMBCLK-Leitung frei. Trotzdem kann das tatsächliche Signal auf der SMBCLK-Leitung in den hohen Zustand eines weiteren Hauptgerätes mit längerer niedrigpegeliger Periode übergehen, so dass die SMBCLK-Leitung auf niedrigem Pegel gehalten wird. In dieser Situation tritt das Hauptgerät, das die SMBCLK-Leitung freigegeben hat, in die S MBCLK-hochpegelige-Warteperiode ein. Wenn alle Geräte ihre niederpegelige Periode abgezählt haben, wird die SMBCLK-Leitung freigegeben und geht auf hohen Pegel. Alle zu diesem Zeitpunkt betroffenen Geräte beginnen mit dem Zählen ihrer hochpegeligen Perioden. Das erste Gerät, das seine Zählung der hochpegeligen Periode beendet, zieht die SMBCLK-Leitung auf niedrigen Pegel und der Zyklus beginnt von neuem. Aus Synchronisationszwecken wird somit die niederpegelige Periode durch das langsamste Gerät bestimmt und die hochpegelige Periode ist durch das schnellste Gerät festgelegt.It may cause a situation where more than one main device is trying to to put clock signals on the bus at the same time. The resulting Bus signal will be the wired AND function of all clock signals, those of the main units to be delivered. A falling edge on the SMBCLK line causes all participating devices to start their low level Counting period, and start controlling the SBMCLK line to low level, if the device a main unit is. Once a device the counting its low-level period ends, there is the SMBCLK lead free. Nevertheless, the actual Signal on the SMBCLK line in the high state of another main unit with a longer one pass over the low-level period, so the SMBCLK line is kept at a low level. In this situation, the main unit that the SMBCLK line has released into the S MBCLK high-level wait period one. If all devices have counted down their low-level period becomes the SMBCLK line released and goes to high level. All concerned at this time equipment start counting their high-level periods. The first device that its counting the high-level period, the SMBCLK line pulls low Level and the cycle starts again. For synchronization purposes Thus, the low-level period is determined by the slowest device and the high-level period is determined by the fastest device.

Ein oder mehrere Geräte können eine Start-Bedingung innerhalb der minimalen Haltezeit erzeugen, wodurch eine definierte Start-Bedingung auf dem Bus hervorgerufen wird. Da die Geräte, die die Start-Bedingung erzeugen, möglicherweise nicht wissen, dass sich andere Hauptgeräte um die Bus-Benutzung bemühen, kann der Zustand auf der SMBDAT-Leitung willkürlich sein, während die SMBCLK-Leitung hochpegelig ist. Ein Hauptgerät, das einen hohen Pegel aussendet, während das andere bzw. die anderen Hauptgeräte) einen niedrigen Pegel auf der SMBDAT-Leitung aussenden, verliert die Steuerung über den Bus in dem Arbitrationszyklus. Der Atbitrationszyklus kann die Nebengerätsadresse, die Transferdaten, einen wiederholten Start und die folgenden Datenbytes enthalten.One or more devices can generate a start condition within the minimum hold time, thereby a defined start condition is caused on the bus. Because the devices, that generate the start condition, you may not know that are other main devices to make the bus use can the state on the SMBDAT line will be arbitrary while the SMBCLK line is high. A main unit that sends out a high level, while the other or the other main devices) to a low level send the SMBDAT line loses control over the Bus in the arbitration cycle. The arbitration cycle can be the slave address, the transfer data, a repeated start and the following data bytes contain.

Zusätzlich zu Nebengeräten, die Befehle empfangen oder darauf antworten, erzeugen Hauptgeräte, die Befehle aussenden, die Taktsignale erzeugen und den Transfer beenden, definiert die SMBus-Spezifikation ein Host-Gerät. Ein Host-Gerät ist ein spezialisiertes Hauptgerät, das die Hauptschnittstelle zu einer System-CPU bereitstellt. Ein Host muss das SMBus-Hostverständigungsprotokoll unterstützen. Es kann höchstens einen Host in einem System geben.In addition to In addition to equipment, receive or respond to the commands generate main units that Send commands that generate clock signals and stop the transfer, The SMBus specification defines a host device. A host device is one specialized main unit, which provides the main interface to a system CPU. One Host must have the SMBus host understanding protocol support. It can be at most give a host in a system.

Ein beliebiges Gerät, das auf dem Systemmanagementbus als ein Nebengerät vorhanden ist, besitzt eine einzigartige Adresse, die als die Nebengerätsadresse bezeichnet wird. Eine Nebengerätsadresse umfasst sieben Bits, die von einem Lese- oder Schreib- (R/W) Bit zu einem Byte vollständig werden. Das R/W Bit ist das am wenigsten signifikante Bit des Bytes.One any device, which exists on the system management bus as a slave, has one unique address called the slave address. A slave device address includes seven bits from a read or write (R / W) bit to a byte completely become. The R / W bit is the least significant bit of the byte.

Die Version 1.1 der SMBus-Spezifikation führte einen Paketfehlerprüfmechanismus ein, um die Zuverlässigkeit und die Kommunikation mit Bussen zu verbessern. Paketfehlerüberprüfung wird implementiert durch Anhängen einer Paketfehlercodierung (PEC) am Ende jedes Nachrichttransfers. Jedes Protokoll mit Ausnahme eines schnellen Befehls und e ines Host-Benachrichtigungsprotokolls besitzt zwei Varianten: eine mit dem PEC-Byte und eine ohne dieses. Die PEC kann auf beliebige Weise berechnet werden, die der 8-Bit Zyklenredundanzprüfung (CRC-8), die durch das Polynorm C(X) = x8 + x2 + x1 + 1 repräsentiert wird, entspricht. Die PEC-Berechnung umfasst alle Bytes in der Sendung einschließlich der Adresse des Befehls und den Daten. Die PEC-Berechnung beinhaltet nicht die ACK, NACK, START, STOP – Bits oder die Bits für den wiederholten START.Version 1.1 of the SMBus specification introduced a packet error checking mechanism to improve bus reliability and communication. Packet error checking is implemented by appending packet error coding (PEC) at the end of each message transfer. Each protocol, with the exception of one fast command and one host notification protocol, has two variants: one with the PEC byte and one without it. The PEC can be calculated in any manner that corresponds to the 8-bit cycle redundancy check (CRC-8) represented by the polynomial C (X) = x 8 + x 2 + x 1 + 1. The PEC calculation includes all bytes in the transmission, including the address of the command and the data. The PEC calculation does not include the ACK, NACK, START, STOP bits or the repeated START bits.

1 zeigt ein generisches SMBus-Paketprotokolldiagramm. In 1 bis 22 bezeichnet S eine START-Bedingung, Sr eine wiederholte Startbedingung, Rd ein R/W-Bit mit einem Wert von 1, Wr ein R/W-Bitwert von 0. Ein "X", das unter einem Feld gezeigt ist, zeigt an, dass das Feld den Wert von "X" aufweisen muss. Ein "A" bezeichnet eine Bestätigungsbitposition, die einen Wert von 0 für die Bestätigung (ACK) oder von 1 die Nichtbestätigung (NACK) aufweisen kann. "P" bezeichnet eine STOP-Bedingung und PEC eine Paketfehlerkodierung. Weiße Teile bezeichnen eine Kommunikation von einem Hauptgerät zu einem Nebengerät, graue Teile bezeichnen eine Kommunikation von einem Nebengerät zu einem Hauptgerät. Drei Punkte bezeichnen eine Fortsetzung des Protokolls. 1 shows a generic SMBus package protocol diagram. In 1 to 22 S denotes a START condition, Sr a repeated start condition, Rd an R / W bit with a value of 1, Wr an R / W bit value of 0. An "X" shown below a field indicates that the field must have the value of "X". An "A" indicates an acknowledgment bit position that may have a value of 0 for the acknowledgment (ACK) or 1 for the non-acknowledgment (NACK). "P" indicates a STOP condition and PEC a packet error encoding. White parts indicate communication from a host device to a slave device, gray parts indicate communication from a slave device to a main device. Three points indicate a continuation of the protocol.

2 zeigt ein Protokoll für einen schnellen Befehl. Hierbei bezeichnet das R/W-Bit den Befehl, der verwendbar ist, um einfach eine Gerätefunktion ein- oder auszuschalten. 2 shows a protocol for a fast command. Here, the R / W bit designates the command that is usable to simply turn a device function on or off.

3 und 4 zeigen ein gesendetes Byteprotokoll, wobei das Protokoll aus 4 ein PEC-Byte umfasst. Das zu dem Nebengerät übertragene Datenbyte kann bis zu 256 mögliche codierte Befehle bezeichnen. 3 and 4 show a sent byte protocol, the log off 4 includes a PEC byte. The byte of data transmitted to the slave may specify up to 256 possible encoded instructions.

5 zeit ein Byteempfangsprotokoll. 5 time a byte receive protocol.

6 zeigt ein Byteempfangsprotokoll mit PEC. Das Byteempfangsprotokoll ist ähnlich zu einem Bytesendeprotokoll. Der einzige Unterschied besteht in der Richtung der übertragenen Daten. Ein NACK (eine "1" in der ACK-Bitposition) führt zu einem Ende eines Transfers. 6 shows a byte receive protocol with PEC. The byte receive protocol is similar to a byte send protocol. The only difference is the direction of the transmitted data. A NACK (a "1" in the ACK bit position) will result in an end to a transfer.

7 zeigt ein Byteschreibprotokoll, 8 zeigt ein Wortschreibprotokoll, 9 ein Byteschreibprotokoll mit PEC und 10. ein Wortschreibprotokoll mit PEC. Das erste Byte eines Byte/Wort-Schreibprotokolls ist die Befehlscodierung. Die nächsten ein oder zwei Bytes sind zu schreibende Daten. In diesem Falle fügt das Hauptgerät die Nebengerätsadresse gefolgt von dem Schreibbit ein. Das Nebengerät bestätigt dies und das Hauptgerät liefert die Befehlscodierung. Dieses Nebengerät bestätigt erneut, bevor das Hauptgerät das Datenbyte oder Datenwort sendet. Das Nebengerät bestätigt jedes Byte und die gesamte Transaktion wird mit einer STOP-Bedingung beendet. 7 shows a byte write protocol, 8th shows a word-writing protocol, 9 a byte write protocol with PEC and 10 , a word-writing protocol with PEC. The first byte of a byte / word write protocol is the command encoding. The next one or two bytes are data to be written. In this case, the main unit inserts the slave address followed by the write bit. The slave confirms this and the master provides the command code. This slave confirms again before the master sends the data byte or data word. The slave acknowledges each byte and the entire transaction is terminated with a STOP condition.

11, 12, 13 und 14 zeigen ein Byteleseprotokoll, ein Byteleseprotokoll mit PEC, ein Wortleseprotokoll und ein Wortleseprotokoll mit PEC. Beim Datenlesen muss das Hauptgerät einen Befehl zu dem Nebengerät übermitteln. Dann muss dieses dem Befehl mit einer wiederholten START-Bedingung folgen, um einen Lesevorgang aus der Adresse des Geräts zu kennzeichnen. Das Nebengerät ist dann ein oder zwei Datenbyts zurück. Es gibt keine STOP-Bedingung vor der wiederholten START-Bedingung. Ein NACK führt zu einem Ende des Transferleseprotokolls. 11 . 12 . 13 and 14 show a Bytelese protocol, a Byteleseprotokoll with PEC, a word reading protocol and a word reading protocol with PEC. When reading data, the main unit must transmit a command to the slave unit. Then it must follow the command with a repeated START condition to identify a read from the device's address. The slave device is then one or two bytes back. There is no STOP condition before the repeated START condition. A NACK leads to an end of the transfer reading protocol.

15 zeigt ein Prozessaufrufprotokoll. 16 stellt ein Prozessaufrufprotokoll mit PEC dar. Das Prozessaufrufprotokoll wird so bezeichnet, da ein Befehl Daten sendet und darauf wartet, dass das Nebengerät einen Wert abhängig von diesen Daten zurückgibt. Das Protokoll ist einfach ein Wort, das geschrieben wird, gefolgt von einem ausgelesenen Wort, ohne dem Wortlesebefehlsfeld und dem Wortschreib-STOP-Bit. 15 shows a process call log. 16 represents a process call log with PEC. The process call protocol is so called because a command sends data and waits for the slave to return a value based on that data. The protocol is simply a word being written, followed by a read-out word, without the word-read command field and the word-write STOP bit.

17 zeigt ein Blockschreibprotokoll. 18 zeigt ein Blockschreibprotokoll mit PEC. Das Blockschreibprotokoll beginnt mit einer Nebengerätsadresse und einer Schreibbedingung. Nach der Befehlscodierung sendet das Hauptgerät eine Bytezahl aus, die beschreibt, wie viele weitere Bytes in der Nachricht folgen. Wenn ein Hauptgerät 20 Bytes senden muss, besitzt das Bytezahlfeld einen Wert von 20 (14h), gefolgt von den 20 Datenbytes. Die Bytezahl beinhaltet nicht das PEC-Byte und kann nicht Null s ein. Ein Blockschreibbefehl darf maximal 32 Datenbytes übertragen. 17 shows a block write log. 18 shows a block write protocol with PEC. The block write protocol begins with a slave address and a write condition. After command coding, the main unit sends out a byte count that describes how many more bytes follow in the message. If a master device must send 20 bytes, the byte count field has a value of 20 (14h), followed by the 20 bytes of data. The byte count does not include the PEC byte and can not be zero s. A block write command may transmit a maximum of 32 bytes of data.

19 zeigt ein Blockleseprotokoll und 20 zeigt ein Blockleseprotokoll mit PEC. Eine Blocklesung unterscheidet sich von einem Blockschreiben darin, dass die wiederholte START-Bedingung vorliegt, um der Anforderung einer Änderung in der Transferrichtung zu genügen. Ein NACK unmittelbar vor der STOP-Bedingung kennzeichnet das Ende des Lesetransfers. Wiederum darf ein Blockleseprotokoll maximal 32 Datenbytes übertragen. 19 shows a block reading protocol and 20 shows a block reading protocol with PEC. A block read differs from a block write in that the repeated START condition is present to satisfy the request for a change in the transfer direction. A NACK immediately before the STOP condition marks the end of the read transfer. Again, a block reading protocol may transmit a maximum of 32 bytes of data.

21 zeigt ein Blockschreibe-Blockleseprozessaufrufprotokoll, wohingegen 22 ein derartiges Protokoll mit einer PEC zeigt. Der Blockschreibe-Blockleseprozessaufruf ist eine zweiteilige Nachricht. Diese beginnt mit der Nebengerätsadresse und einer Schreibbedingung. Nach der Befehlscodierung sendet der Host eine Schreibbytezahl, die beschreibt, wie viele weitere Bytes im ersten Teil der Nachricht geschrieben werden. Der zweite Teil der Nachricht ist ein Block aus Lesedaten beginnend mit einer wiederholten START-Bedingung und gefolgt von der Nebengerätsadresse und einem Lesebit. Das nächste Byte ist die Lesebytezahl, die sich von der Schreibbytezahl unterscheiden kann. Sowohl die Schreibbytezahl als auch die Lesebytezahl können nicht Null sein. Die Summe aus der Schreibbytezahl und der Lesebytezahl dart 32 Bytes nicht übersteigen. Die Lesebytezahl beinhaltet nicht das PEC-Byte. 21 shows a block write block read process call protocol, whereas 22 shows such a protocol with a PEC. The block write block read process call is a two-part message. This begins with the slave address and a write condition. After the command encoding, the host sends a write byte number that describes how many more bytes are written in the first part of the message. The second part of the message is a block of read data starting with a repeated START condition and followed by the slave address and a read bit. The next byte is the read byte number, which may differ from the write byte number. Both the write byte count and the read byte count can not be zero. The sum of the write byte number and the read byte number dart does not exceed 32 bytes. The read byte number does not include the PEC byte.

Eine Standardschnittstelle zum Steuern eines SMBusses ist in der Advanced Configuration and Power Interface (ACPI) Spezifikation 2.0 definiert, die allgemein bekannt ist. Mittels dieser in der Sektion 13.9 der ACPI-Spezifikation beschriebenen Schnittstelle kann ein ACPI-kompatibles Betriebssystem mit einer eingebetteter steuerungsbasierten SMBus-Host-Steuerung (EC-SMB-HG) kommunizieren. Die Schnittstelle besteht aus einem Block aus Registern, die in dem eingebetteten Steuerungsadressraum enthalten sind. Diese Register werden mittels Software angewendet, um SMBus-Transaktionen in Gang zu setzen und um SMBus-Meldungen zu empfangen. In 23 bezeichnet Bezugszeichen 208 ein Registersatz entsprechend dem ACPI.A standard interface for controlling an SMBuss is in the Advanced Configuration and Power Interface (ACPI) Specification 2.0, which is well known. Using this interface described in Section 13.9 of the ACPI Specification, an ACPI-compliant operating system can communicate with an embedded SMBus control-based host controller (EC-SMB-HG). The interface consists of a block of registers contained in the embedded control address space. These registers are used by software to initiate SMBus transactions and to receive SMBus messages. In 23 denotes reference numeral 208 a register set according to the ACPI.

Das als SMB_PRTCL bezeichnete Protokollregister bestimmt die Art der SMBus-Transaktion, die auf dem SMBus erzeugt wird. Ein Schreibvorgang in dieses Register bewirkt eine Transaktion auf dem SMBus. Wenn das höchste signifikante Bit (MSB) des Registers auf eins gesetzt wird, sollte ein PEC-Format für das spezifizierte Protokoll verwendet werden, während ein Wert Null anzeigt, dass das Standardformat ohne PEC verwendet werden sollte.The The protocol register called SMB_PRTCL determines the type of protocol SMBus transaction, which is generated on the SMBus. A write to this register causes a transaction on the SMBus. If the highest significant Bit (MSB) of the register is set to one, should be a PEC format for the specified Protocol used while a value of zero indicates that the default format uses no PEC should be.

Die folgende Tabelle 1 zeigt den Zusammenhang der Protokollwerte mit dem Protokoll. Ein "h", das auf eine Zahl folgt, zeigt an, dass in dieser Anmeldung die Zahl eine Hexadezimalzahl ist.The Table 1 below shows the relationship between the log values the protocol. An "h" pointing to a number follows, indicates that in this application the number is a hexadecimal number is.

Figure 00070001
Figure 00070001

Figure 00080001
Tabelle 1
Figure 00080001
Table 1

Das als SMB_STS bezeichnete Statusregister kennzeichnet den allgemeinen Status auf dem SMBus. Das Register wird auf Null gesetzt, mit Ausnahme des Alarmbits, immer wenn ein neuer Befehl ausgegeben wird, der einen Schreibvorgang in das Protokollregister verwendet. Das Register wird mit der Fehlercodierung beschrieben, bevor das Protokollregister zurückgesetzt wird.The Status registers called SMB_STS indicate the general status Status on the SMBus. The register is set to zero, except of the alarm bit whenever a new command is issued, the used a write to the protocol register. The registry is described with error coding before the log register reset becomes.

Das als SMB_ADDR bezeichnete Adressregister enthält die auf dem SMBus zu erzeugende 7-Bitadresse in den sieben am meisten signifikanten Bits (MSB). Das wenigste signifikante Bit (LSB) ist reserviert. Das als SMB_CMD bezeichnete Befehlsregister enthält das Befehlsbyte, das auf dem SMBus an das Zielgerät zu senden ist. Der Registersatz umfasst ferner 32 Datenregister, die als SMB_DATA[i], i = 0-31, bezeichnet sind. Die Datenregister enthalten die verbleibenden Bytes, die entsprechend den unterschiedlichen Protokollen, die auf den SMBus betreibbar sind, zu senden oder zu empfangen sind. Das als SMB_BCNT bezeichnete Blockzahlregister enthält die Anzahl der Datenbytes, die in den Datenregistern SMB_DATE [i] vorhanden sind. Ferner umfasst der ACPI-konforme Registersatz drei Alarmregister, die als SMB_ALRM_ADDR, SMB_ALRM DATA (0) und SMB_ALRM_DATA (1) bezeichnet sind.The The address register designated as SMB_ADDR contains the address register to be generated on the SMBus 7-bit address in the seven most significant bits (MSB). The least significant bit (LSB) is reserved. This as SMB_CMD contains designated command register the command byte to send the SMBus to the target device is. The register file further comprises 32 data registers which are referred to as SMB_DATA [i], i = 0-31. The data registers contain the remaining ones Bytes, which according to the different protocols that are on SMBus are operable to send or receive. The block count register called SMB_BCNT contains the number of data bytes, which are present in the data registers SMB_DATE [i]. Further includes the ACPI-compliant register set has three alarm registers, called SMB_ALRM_ADDR, SMB_ALRM DATA (0) and SMB_ALRM_DATA (1) are designated.

Die Lage jedes Registers ist durch einen Offset definiert, der zu einer Basisadresse zu addieren ist, wie dies in 23 in Spalte 209 links von dem ACPI-konformen Registersatz 208 gezeigt ist. Die Adresse des Protokollregisters ist äquivalent zu der Basisadresse.The location of each register is defined by an offset to be added to a base address as shown in FIG 23 in column 209 to the left of the ACPI-compliant register file 208 is shown. The address of the protocol register is equivalent to the base address.

Obwohl eine Spezifikation für einen SMBus und eine Spezifikation für einen Registersatz für ACPI-kompatible Betriebssysteme veröffentlicht worden ist, ist es wünschenswert, einen speichereffizienten SMBus-Nachrichtenverwalter, einen integrierten Schaltungschip und ein entsprechendes Verfahren bereitzustellen. Ferner ist es wünschenswert, ein SMBus-Testgerät zur Verifizierung der Chipsätze und ein entsprechendes Verfahren bereitzustellen.Although a specification has been published for an SMBus and a specification for a register set for ACPI-compatible operating systems, it is desirable to provide a memory-efficient SMBus message manager, an integrated circuit chip, and a corresponding method put. Further, it is desirable to provide an SMBus tester for chip set verification and a corresponding method.

Die US 5,636,342 beschreibt Systeme und Verfahren zum Zuweisen eindeutiger Adressen zu Agenten auf einem Systemmanagementbus.The US 5,636,342 describes systems and methods for assigning unique addresses to agents on a system management bus.

ÜBERBLICK ÜBER DIE ERFINDUNGOVERVIEW OF THE INVENTION

Der Erfindung liegt die Aufgabe zugrunde, einen speichereffizienten SMBus-Nachrichtenverwalter sowie einen zugehörigen integrierten Schaltungschip und ein entsprechendes Verfahren bereitzustellen.Of the Invention is based on the object, a memory-efficient SMBus message handler and an associated integrated circuit chip and to provide a corresponding method.

Diese Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche angegeben.These Task is through the objects the independent one claims specified.

Bevorzugte Ausgestaltungen sind in den Unteransprüchen definiert.preferred Embodiments are defined in the subclaims.

Gemäß einer Ausführungsform umfasst ein SMBus-Nachrichtenverwalter einen Speicher zum Speichern von Mikrocodierung, die mindestens zwei Programme für jeweils das Handhaben eines Busbefehlprotokolls mit mindestens einer Instruktion aufweist. Der SMBus-Nachrichtenvewalter umfasst ferner eine Schnittstelle zu einem Register zum Identifizieren einer Startadresse eines Programms in dem Speicherpunkt. Eine Instruktionsabrufeeinheit in dem SMBus-Nachrichtenverwalter liest eine Instruktion an einer Adresse in dem Speicher. Die Adresse wird von einem Programmzähler spezifiziert. Schließlich umfasst der SMBus-Nachrichtenverwalter eine finite Zustandsmaschine, die die Instruktionen von der Instruktionsabrufeeinheit empfängt und interpretiert und den Datentransfer zwischen einer SMBus-Schnittstelle und einem Registersatz entsprechend den Instruktionen, die aus dem Speicher gelesen werden, handhabt.According to one embodiment An SMBus message manager includes memory for storage of microcoding, which has at least two programs for each handling a bus command protocol with at least one instruction having. The SMBus message manager further includes an interface to a register for identifying a start address of a program in the memory point. An instruction fetch unit in the SMBus message manager reads an instruction at an address in the memory. The address is from a program counter specified. After all the SMBus Message Manager includes a finite state machine, which receives the instructions from the instruction fetch unit and interpreted and the data transfer between an SMBus interface and a register file according to instructions issued from the Memory to be read handles.

Gemäß einer weiteren Ausführungsform umfasst ein integrierter Schaltungschip zum Senden und Empfangen von Daten über einen SMBus eine Schnittstelle zu einem Speicher, der eine Mikrocodierung speichert, die mindestens zwei Programme für jeweils das Handhaben eines Busbefehlprotokolls mit mindestens einer Instruktion aufweist. Der Chip kann mittels einer Schnittstelle mit einem Register zur Identifizierung einer Startadresse eines Programmes in dem Speicher verbunden sein. Ferner umfasst der Chip eine Instruktionsabrufeeinheit zum Auslesen einer Instruktion an einer Adresse in dem Speicher, die durch einen Programmzähler spezifiziert ist. Schließlich umfasst der Chip eine finite Zustandsmaschine zum Empfangen und Interpretieren der Instruktionen und zum Handhaben des Datentransfers zwischen einer SMBus-Schnittstelle und einem Registersatz in Übereinstimmung mit den aus dem Speicher ausgelesenen Instruktionen.According to one another embodiment includes an integrated circuit chip for transmission and reception of data over an SMBus an interface to a memory that has a microcode stores at least two programs each for handling one Bus command protocol having at least one instruction. Of the Chip can be identified by means of an interface with a register a start address of a program in the memory to be connected. Furthermore, the chip comprises an instruction fetch unit for reading out an instruction at an address in the memory, which is replaced by a program counter is specified. After all For example, the chip includes a finite state machine for receiving and Interpret the instructions and handle the data transfer between an SMBus interface and a register set in accordance with the instructions read from the memory.

Gemäß einer noch weiteren Ausführungsform umfasst ein Verfahren zum Steuern eines SMBusses das Identifizieren einer Startadresse eines Programms, das mindestens eine Instruktion aufweist. Das Programm ist in einem Speicher gespeichert. Das Verfahren umfasst ferner das sequenzielle Einlesen der Instruktionen des Programms in eine finite Zustandsschiene. Schließlich werden gemäß des Verfahrens Daten zwischen einer SMBus-Schnittstelle und einem Registersatz in Übereinstimmung mit den Instruktionen, die in der finiten Zustandsmaschine vorhanden sind, übertragen.According to one yet another embodiment For example, a method for controlling an SMBus includes identifying a start address of a program that has at least one instruction having. The program is stored in a memory. The procedure further comprises the sequential reading of the instructions of the program into a finite state bar. Finally, according to the procedure Data between an SMBus interface and a register file in accordance with the instructions that exist in the finite state machine are, transferred.

KURZE BESCHREIBUNG DER ZEICHNUNGENSHORT DESCRIPTION THE DRAWINGS

Weitere Ausführungsformen, Vorteile und Aufgaben der vorliegenden Erfindung sind in den angefügten Patentansprüchen definiert und gehen deutlicher aus der folgenden detaillierten Beschreibung hervor, wenn diese mit Bezug zu den begleitenden Zeichnungen studiert wird; Es zeigen:Further Embodiments, Advantages and objects of the present invention are defined in the appended claims and go more clearly from the following detailed description when studying with reference to the accompanying drawings becomes; Show it:

1 ein generisches SMBus-Paktprotokolldiagramm; 1 a generic SMBus Pact Log Diagram;

2 ein Protokoll für einen schnellen Befehlsschritt; 2 a protocol for a quick command step;

3 ein Bytesendeprotokoll; 3 a byte end log;

4 ein Bytesendeprotokoll mit PEC; 4 a byte end protocol with PEC;

5 ein Byteempfangsprotokoll; 5 a byte receive protocol;

6 ein Byteempfangsprotokoll mit PEC; 6 a byte receive protocol with PEC;

7 ein Byteschreibeprotokoll; 7 a byte write protocol;

8 ein Wortschreibeprotokoll; 8th a word-writing protocol;

9 ein Byteschreibeprotokoll mit PEC; 9 a byte write protocol with PEC;

10 ein Wortschreibeprotokoll mit PEC; 10 a word-writing protocol with PEC;

11 ein Byteleseprotokoll; 11 a Byteleseprotokoll;

12 ein Byteleseprotokoll mit PCE; 12 a Bytelese protocol with PCE;

13 ein Wortleseprotokoll; 13 a word reading protocol;

14 ein Wortleseprotokoll mit PEC; 14 a word-reading protocol with PEC;

15 ein Prozessaufrufprotokoll; 15 a process call log;

16 ein Prozessaufrufprotokoll mit PEC; 16 a process call protocol with PEC;

17 ein Blockschreibeprotokoll; 17 a block writing protocol;

18 ein Blockschreibeprotokoll mit PEC; 18 a block write protocol with PEC;

19 ein Blockleseprotokoll; 19 a block reading protocol;

20 ein Blockleseprotokoll mit PEC; 20 a block reading protocol with PEC;

21 ein Blocklese-Blockschreibe-Prozessaufrufprotokoll; 21 a block read block write process call log;

22 ein Blockschreibe-Blocklese-Prozessaufrufprotokoll mit PCE; 22 a block write block read process call protocol with PCE;

23 ein Blockdiagramm einer SMBus-Hoststeuerung; 23 a block diagram of an SMBus host controller;

24 die Bits eines Statusregisters; 24 the bits of a status register;

25 eine Sechs-Bit-Instruktion für die finite Zustandsmaschine; 25 a six-bit instruction for the finite state machine;

26 ein Blockdiagramm einer finiten Hauptzustandsmaschine; 26 a block diagram of a finite main state machine;

27 einen Überblick über ein Testgerät; 27 an overview of a test device;

28 bis 32 Flussdiagramme zum Zuweisen von Zeichen bzw. Tasten zu Instruktionssätzen; 28 to 32 Flowcharts for assigning characters to instruction sentences;

33 ein Flussdiagramm zum Modifizieren eines einzelnen Bytes in dem Hilfs-RAM der eingebetteten Steuerung; 33 a flow chart for modifying a single byte in the auxiliary RAM of the embedded controller;

34 ein Flussdiagramm zum Steuern des Aussendens falscher Bestätigungs- oder Nichtbestätigungs-Bits; 34 a flow chart for controlling the transmission of false acknowledgment or non-acknowledgment bits;

35 ein Flussdiagramm zum Eingeben einer Offsetzahl zur PEC; 35 a flowchart for inputting an offset to the PEC;

36 ein Flussdiagramm zum Eingeben von Zeitablauffehlereinstellungen; 36 a flow chart for entering timing error settings;

37 ein Flussdiagramm zum Eingeben einer neuen Geräteadresse. 37 a flow chart for entering a new device address.

DETAILLIERTE BESCHREIBUNG DER ERFINDUNGDETAILED DESCRIPTION OF THE INVENTION

Obwohl die vorliegende Erfindung mit Bezug zu den Ausführungsformen beschrieben ist, wie sie in der folgenden detaillierten Beschreibung sowie in den Zeichnungen dargestellt sind, sollte es selbstverständlich sein, dass die folgende detaillierte Beschreibung sowie die Zeichnungen nicht beabsichtigen, die vorliegende Erfindung auf die speziellen anschaulichen offenbarten Ausführungsformen einzuschränken, sondern die beschriebenen anschaulichen Ausführungsformen stellen lediglich beispielhaft die diversen Aspekte der vorliegenden Erfindung dar, deren Schutzbereich durch die angefügten Patentansprüche definiert ist.Even though the present invention is described with reference to the embodiments, as in the following detailed description as well as in the following Drawings are shown, it should be self-evident that the following detailed description as well as the drawings not intended to limit the present invention to the specific ones illustratively disclosed embodiments restrict but merely the illustrative embodiments described exemplify the various aspects of the present invention, the scope of which is defined by the appended claims is.

Wie zuvor erläutert ist, umfasst ein SMBus-Nachrichtenverwalter eine finite Zustandsmaschine, die in einem Speicher gespeicherte Instruktionen empfängt und interpretiert und handhabt ferner den Datentransfer zwischen einer SMBus-Schnittstelle und einem Registersatz in Übereinstimmung mit den aus dem Speicher ausgelesenen Instruktionen. Ferner kann diese finite Zustandsmaschine in einen Schaltungschip integriert sein.As previously explained an SMBus message manager includes a finite state machine, receives the instructions stored in a memory and also interprets and handles the data transfer between one SMBus interface and a register set in accordance with the instructions read from the memory. Furthermore, this finite State machine to be integrated into a circuit chip.

Ferner umfasst ein SMBus-Testgerät eine SMBus-Schnittstelle, eine Steuerschnittstelle und einen Prozessor zum Zuweisen von Eingangszeichen bzw. -tasten zu Instruktionssequenzen. Die Instruktionen werden ausgeführt und entsprechende Befehle oder Daten werden über die SMBus-Schnittstelle gesendet oder empfangen.Further includes an SMBus tester an SMBus interface, a control interface and a processor for assigning input characters to instruction sequences. The instructions are executed and appropriate commands or data are sent via the SMBus interface sent or received.

23 zeigt eine Blockdarstellung einer SMBus-Hoststeuerung 200. Wie zuvor erläutert ist, umfasst die Hoststeuerung einen Registersatz 208, der dem ACPI-Standard entspricht. Die Speicheradresse 209 jedes Registers ist durch einen Offset von 0-40 spezifiziert, der einer Basisadresse "Base" des ersten Registers SMB_PRTCL hinzuzufügen ist. Die Hoststeuerung umfasst ferner ein Adressenregisterfeld 207, einen ROM 202, der mehrere Mikrocodierungssequenzen 210, 211 und 212 enthält, wovon jede eine oder mehrere Instruktionen aufweist. Die Hoststeuerung umfasst zusätzlich einen Schleifenzähler 204, eine Instruktionsabrufeeinheit 203 mit einem Programmzähler, eine finite Zustandsmaschine 201, einen Pufferzeiger 206, eine PEC-Einheit 215 und eine SMBus-Schnittstelle mit einer Taktleitung SMBCLK 213 und einer Datenleitung SMBDAT 214. 23 shows a block diagram of an SMBus host controller 200 , As previously explained, the host controller includes a register file 208 that complies with the ACPI standard. The memory address 209 Each register is specified by an offset of 0-40 to be added to a base address "Base" of the first register SMB_PRTCL. The host controller further includes an address register field 207 , a ROM 202 containing several microcode sequences 210 . 211 and 212 each of which has one or more instructions. The host controller additionally includes a loop counter 204 , an instruction fetch unit 203 with a program counter, a finite state machine 201 , a buffer pointer 206 , a PEC unit 215 and an SMBus interface with a clock line SMBCLK 213 and a data line SMBDAT 214 ,

Wie zuvor erläutert ist, wird in Übereinstimmung mit der Schnittstellensspezifikation der ACPI-eingebetteten Steuerung eine SMBus-Transaktion durch einen Schreibvorgang in das Protokollregister SMB_PRTCL in Gang gesetzt. Der geschriebene Wert kann im Bereich von 02h bis 0Dh ausschließlich des höchsten signifikanten Bits liegen, das spezifiziert, ob ein PEC-Format oder ein nicht PEC-Format in h exadezimaler Darstellung, die durch das Nachgestellte "h" gekennzeichnet ist, verwendet werden sollte. Der in das SMB_PRCTL geschriebene Wert kann ferner die Werfe 4Ah und 4Bh für einen Blocklese-Blockschreibebefehl annehmen, um eine I2C-Kompatibilität sicherzustellen. Die sieben am Wenigsten signifikanten Bits (LSB) des Protokollregisters werden als ein Zeiger zu einer Zelle innerhalb des Adressenregisterfelds 207 verwendet. Das Adressenregisterfeld 207 umfasst wiederum Zeiger zu jedem Startpunkt einer Mikrocodierungssequenz, die durch die gestrichelten Pfeile von den Einträgen des Adressenregisterfelds in die Mikrocodierungssequenzen 210, 211, 212 dargestellt ist.As previously explained, in accordance with the interface specification of the ACPI embedded controller, an SMBus transaction is initiated by a write to the protocol register SMB_PRTCL. The written value may be in the range of 02h to 0Dh excluding the highest significant bit specifying whether a PEC format or non-PEC format should be used in the h-hexadecimal notation indicated by the trailing "h". The value written to the SMB_PRCTL may further accept the latches 4Ah and 4Bh for a block read block write command to ensure I 2 C compatibility. The seven least significant bits (LSB) of the log register become a pointer to a cell within the address register field 207 used. The address register field 207 again comprises pointers to each starting point of a microcode sequence indicated by the dashed arrows from the entries of the address register field into the microcode sequences 210 . 211 . 212 is shown.

Nach einem Schreibvorgang in das Protokollregister wird der Wert der entsprechenden Zelle des Adressenregisterfeldes in den Programmzähler PC in der Instruktionsabrufeeinheit 203 übertragen. Das höchste signifikante Bit des Protokollregisters wird auch in die finite Zustandsmaschine (FSM) 201 eingespeist. Abhängig von dem Wert des MSB des Protokollregisters kann die finite Zustandsmaschine ein PEC-Format oder ein nicht-PEC-Formatprotokoll anwenden.After a write to the protocol register, the value of the corresponding cell of the address register field is written to the program counter PC in the instruction fetch unit 203 transfer. The highest significant bit of the log register is also put into the finite state machine (FSM) 201 fed. Depending on the value of the MSB of the protocol register, the finite state machine may apply a PEC format or a non-PEC format protocol.

In einer alternativen Ausführungsform können zwei Adressenregisterfelder vorgesehen sein. Das erste umfasst die Startadresse für Mikrocodierungssequenzen für nicht-PEC-Formatprotokolle, wohingegen das zweite Adressregisterfeld Zeiger zu dem Mikrocodierungssequenzen für PCE-Formatprotokolle aufweist.In an alternative embodiment can two address register fields may be provided. The first includes the Start address for Microcoding sequences for non-PEC format protocols whereas the second address register field contains pointers to the microcode sequences for PCE format protocols having.

Ein Pufferzeigerregister 206 umfasst den Offset-Wert eines der Datenregister SMB_DATA[...]. Nach einem Schreib- oder einem Lesevorgang von einem der Datenregister wird das Pufferzeichenregister 206 bufp um eins erhöht, so dass der nächste Lese- oder Schreibvorgang aus- oder zu dem nächsten Datenregister stattfindet. D. h., es werden Daten zu oder von einem der Datenregister SMB_DATA[bufp] geliefert oder auch ausgelesen. Zusätzliche Verbindungen zwischen den einzelnen Registern des Registersatzes 208 und den finiten Zustandsmaschinen sind so vorgesehen, dass die finite Zustandsmaschine 201 in ein beliebiges Register des Registersatz 208 schreiben oder davon lesen kann. Zusätzlich zu den von der ACPI Spezifikation vorgesehenen Registern ist ein zusätzliches Register SMB_SLAVE_ADDR für die Nebengerätadresse mit einem Offset von 40 in Bezug auf die Basisadresse des Registersatzes vorgesehen.A buffer pointer register 206 includes the offset value of one of the data registers SMB_DATA [...]. After a write or a read from one of the data registers, the buffer character register becomes 206 bufp is incremented by one so that the next read or write operation occurs out of or to the next data register. That is, data is supplied or read out to or from one of the data registers SMB_DATA [bufp]. Additional connections between the individual registers of the register set 208 and the finite state machines are provided so that the finite state machine 201 into any register of the register file 208 write or read about it. In addition to the registers provided by the ACPI specification, an additional register SMB_SLAVE_ADDR for the slave address is provided with a Offset of 40 with respect to the base address of the register set provided.

Eine Implementierung der für die Mikrocodierungssequenzen verwendenten Instruktionen ist in 25 gezeigt. Tabelle 3 umfasst Mikrocodierungssequenzen für nicht-PEC-Formate. Die drei am wenigsten signifikaten Bits (LSB) 300, 301, 302, spezifizieren das Register, aus dem Daten an die SMBbus-Schnittstelle 213, 214 übertragen werden, oder in das Daten von der SMBus-Schnittstelle geschrieben werden. Tabelle 2 zeigt die Bedeutungen der Bit 300, 301, 302 an.An implementation of the instructions used for the microcoding sequences is in 25 shown. Table 3 includes microcode sequences for non-PEC formats. The three least significant bits (LSB) 300 . 301 . 302 , specify the register from which data is sent to the SMBbus interface 213 . 214 or written to the data from the SMBus interface. Table 2 shows the meanings of the bits 300 . 301 . 302 at.

Figure 00150001
Tabelle 2
Figure 00150001
Table 2

Wenn Bit 3 gleich 1 ist, wird eine wiederholte Startbedingung auf der SMBus-Schnittstelle erzeugt. Wenn anderseits das zuletzt genannte Bit gleich Null ist, wird keine wiederholte Startbedingung erzeugt.If Bit 3 equals 1, a repeated start condition on the SMBus interface generated. If on the other hand the latter Bit equals zero, no repeated start condition is generated.

Wenn der Wert des STOP-Bits 4 304 gleich 1 ist und die Hoststeuerung als Sender fungiert, wird bei Empfang eines ACK eine STOP-Bedingung erzeugt. Wenn die SMBus-Hoststeuerung im Empfängermodus ist, wird ein NACK und eine STOP-Bedingung erzeugt. Wenn Bit 4 gleich Null ist, wird keine STOP-Bedingung erzeugt. Wenn Bit 4 einer Instruktion einen Wert von 1 aufweist, bedeutet dies, dass diese Instruktionen die letzte Instruktion in einer Mikrocodierungssequenz ist. Nach dieser Instruktion wird das Protokollregister SMB_PRTCL gleich Null gesetzt.If the value of the STOP bit is 4 304 is equal to 1 and the host controller acts as a transmitter, a STOP condition is generated upon receipt of an ACK. When the SMBus host controller is in receive mode, a NACK and STOP condition is generated. If bit 4 equals zero, no STOP condition is generated. If bit 4 of an instruction has a value of 1, it means that these instructions are the last instruction in a microcode sequence. After this instruction, the protocol register SMB_PRTCL is set equal to zero.

Wenn das höchste signifikante Schleifenbit 5 305 einen Wert von Null aufweist, wird eine Instruktion lediglich einmal ausgeführt. Dies bedeutet, dass nach der Ausführung der Programmzähler PC in der Instruktionsabrufeeinheit 203 um 1 erhöht wird und die nächste Instruktion abgerufen wird. Wenn Bit 5 einen Wert von 1 aufweist, bleibt die Instruktion in der finiten Zustandsmaschine 201 bis der Schleifenzähler 204 gleich Null wird. Jedes mal, wenn die Instruktion ausgeführt wird, wird der Schleifenzähler loopcnt um eins verringert. Für jede Start- oder wiederholte Startbedingung wird der Schleifenzähler auf eins für nicht-I2C- Transaktionen oder auf SMB_BCNT für I2C-Transaktionen gesetzt. Wenn ferner ein Zugriff auf das SMB_BCNT-Register stattfindet, wird der Schleifenzäher 204 auf SMB-BCNT gesetzt.When the highest significant loop bit 5 305 has a value of zero, an instruction is executed only once. This means that after the execution of the program counter PC in the instruction fetch unit 203 incremented by 1 and the next instruction is fetched. If bit 5 has a value of 1, the instruction remains in the finite state machine 201 until the loop counter 204 becomes zero. Each time the instruction is executed, the loop counter loopcnt is decremented by one. For each start or repeat start condition, the loop counter is set to one for non-I 2 C transactions or SMB_BCNT for I 2 C transactions. Further, if access to the SMB_BCNT register takes place, the loop toughen 204 set to SMB-BCNT.

Immer wenn eine START- oder eine wiederholte START-Bedingung erzeugt wird, wird das Pufferzeigerregister 206 bufp auf 04h gesetzt, das der Offset des Datenregisters SMB_DATA[0] ist. Immer wenn ein Zugriff zu dem Datenregister vorliegt, d. h. ein Lese- oder Schreibvorgang, wird das Pufferzeigerregister erhöht.Whenever a START or a repeated START condition is generated, the buffer pointer register becomes 206 bufp set to 04h, which is the offset of the data register SMB_DATA [0]. Whenever there is access to the data register, ie, a read or write, the buffer pointer register is incremented.

Tabelle 3

Figure 00160001
Table 3
Figure 00160001

Figure 00170001
Figure 00170001

Figure 00180001
Figure 00180001

Die linke Spalte der Tabelle 3 umfasst den Wert der sieben letzten signifikanten Bits des Protokollregisters SMB_PRTCL. Die zweite Spalte weist den Namen des Protokolls auf. Die dritte Spalte beinhaltet die hexadezimale Adresse im ROM 202. Die vierte Spalte beinhaltet die 6-Bit-binären Mikrocodierungsinstruktionen. Ein "S" in der fünften Spalte bezeichnet eine Startbedingung, wohingegen ein "Sr" in dieser Spalte eine wiederholte Startbedingung bezeichnet. Die rechte Spalte stellt die Werte dar, auf die das Pufferzeigerregister bufp 206 und der Schleifenzähler 204 gesetzt werden. Der Fachmann erkennt, dass ein zusätzliches Bit für Lese- oder Schreibvorgänge an der PEC-Einheit 215 hinzugefügt werden kann, und erkennt wie die Mikrocodierungssequenzen ergänzt werden können, um die PEC-Formate der SMBus-Protokolle zu handhaben.The left column of Table 3 includes the value of the seven last significant bits of the protocol register SMB_PRTCL. The second column shows the name of the log. The third column contains the hexadecimal address in the ROM 202 , The fourth column contains the 6-bit binary microcode instructions. An "S" in the fifth column indicates a start condition, whereas a "Sr" in this column indicates a repeated start condition. The right column represents the values to which the buffer pointer register bufp 206 and the loop counter 204 be set. Those skilled in the art will recognize that an extra bit is required for read or write operations on the PEC unit 215 and how the microcode sequences can be supplemented to handle the PEC formats of the SMBus protocols.

26 zeigt ein Flussdiagramm 400, das die Funktion einer finiten Hauptzustandsmaschine 201 darstellt. Für gewöhnlich ist die finite Zustandsmaschine im Wartemodus 401. Nach einem Schreibvorgang in das Protokollregister wird die Adresse der ersten Instruktion der Mikrocodierung aus dem Adressenregisterfeld ermittelt und die erste Instruktion der Mikrocodierungssequenz wird im Schritt 402 eingeladen. Im Schritt 403 wird bestimmt, ob Daten von der SMBus-Schnittstelle empfangen oder ob Daten an die SMBus-Schnittstelle gesendet werden sollen. Wenn Daten zu senden sind, wird ferner überprüft, ob eine wiederholte Startbedingung in Schritt 404 zu erzeugen ist, und wenn dies der Fall ist, wird die wiederholte START-Bedingung im Schritt 406 vorbereitet. Wenn keine wiederholte START-Bedingung erzeugt werden muss, wird i m Schritt 405 überprüft, ob eine START-Bedingung zu erzeugen ist, und wenn dies der Fall ist, wird die START-Bedingung im Schritt 407 erzeugt. Wenn eine wiederholte START-Bedingung im Schritt 406 vorbereitet worden ist, wird auch eine START-Bedingung im Schritt 407 erzeugt. 26 shows a flowchart 400 , which is the function of a finite main state machine 201 represents. Usually, the finite state machine is in wait mode 401 , After a write to the protocol register, the address of the first instruction of the microcode is determined from the address register field and the first instruction of the microcode sequence is in step 402 invited. In step 403 determines whether to receive data from the SMBus interface or to send data to the SMBus interface. If data is to be sent, it is further checked whether a repeated start condition in step 404 is to be generated, and if so, the repeated START condition in step 406 prepared. If no repeated START condition needs to be generated, in step 405 checks if a START condition is to be generated, and if so, the START condition in step 407 generated. If a repeated START condition in step 406 has been prepared, also becomes a START condition in the step 407 generated.

Anschließend werden im Schritt 408 die Daten von dem entsprechenden Register des ACPI-verträglichen Registersatzes 208 geladen. Im Schritt 409 wird ein Datenbyte an die SMBus-Schnittstelle gesendet. Im Schritt 411 wird entschieden, ob im Schritt 410 ein ACK empfangen worden ist. Wenn kein ACK empfangen wurde, wird das Protokoll im Bit 417 abgebrochen und es wird im Schritt 430 ein STOP erzeugt.Subsequently, in the step 408 the data from the corresponding register of the ACPI compliant register set 208 loaded. In step 409 a data byte is sent to the SMBus interface. In step 411 it is decided if in step 410 an ACK has been received. If no ACK was received, the protocol will be in bit 417 aborted and it gets in step 430 a STOP is generated.

Wenn eine Bestätigung im Schritt 411 empfangen wurde, wird im Schritt 412 überprüft, ob das Bit 5 305 einen Wert 1 aufweist. Wenn dies der Fall ist, wird im Schritt 413 bestimmt, ob der Schleifenzähler loopcnt 204 gleich Null ist. Wenn dies nicht der Fall ist, wird der Schleifenzähler um eins im Schritt 414 verringert und der nächste Ladeschritt eines Datenbytes im Schritt 408 findet von einem Register des ACPI-konformen Registersatzes statt.If a confirmation in step 411 is received in step 412 Check if the bit 5 305 has a value of 1. If this is the case, in step 413 determines if the loop counter loopcnt 204 is equal to zero. If not, the loop counter will increment by one 414 and the next loading step of a data byte in step 408 takes place from a register of the ACPI compliant register set.

Wenn Bit 5 305 einen Wert gleich Null aufweist oder wenn der Schleifenzähler gleich Null ist, wird im Schritt 415 bestimmt, ob das STOP-Bit 4 304 gesetzt ist. Wenn dies der Fall ist, wird im Schritt 416 überprüft, ob ein PEC-Format zu verwenden ist. Wenn das STOP-Bit 4 einen Wert Null aufweist, geht der Ablauf vom Schritt 414 zum Schritt 402 weiter, d. h. die nächste Instruktion wird aus dem Speicher 202 ausgelesen. Wenn im Schritt 416 entschieden wird, dass ein PEC-Format zu verwenden ist, dann wird das PEC-Datenbyte im Schritt 408 eingeladen. Wenn ein nicht-PEC-Format zu verwenden ist, wird im Schritt 430 eine STOP-Bedingung erzeugt.If bit 5 305 has a value equal to zero, or if the loop counter is zero, in step 415 determines if the STOP bit is 4 304 is set. If this is the case, in step 416 checks if a PEC format is to be used. If the STOP bit 4 has a value of zero, the process goes from the step 414 to the step 402 Next, ie the next instruction is from memory 202 read. When in step 416 is decided to use a PEC format, then the PEC data byte in step 408 invited. If a non-PEC format is to be used, in step 430 generates a STOP condition.

Wenn im Schritt 403 entschieden wird, dass Daten von der SMBus-Schnittstelle zu empfangen sind, geht der Prozessablauf zum Schritt 420 weiter, in dem das Datenbit von der SMBus-Schnittstelle empfangen wird. Dieses Datenbyte wird in einem der Register des ACPI-konformen Registersatzes im Schritt 421 gespeichert.When in step 403 is decided to receive data from the SMBus interface, the process flow goes to the step 420 continue, in which the data bit is received from the SMBus interface. This data byte is stored in one of the registers of the ACPI-compliant register set in step 421 saved.

Die Schritte 422 bis 426 sind ähnlich zu den Schritten 412 bis 416. Nachdem jedoch im Schritt 426 entschieden ist, dass ein nicht-PEC-Format zu verwenden ist, wird ein NACK im Schritt 427 nach dem Schritt 426 ausgesendet. Wenn im Schritt 423 bestimmt wird, dass der Schleifenzähler loopcnt nicht Null ist oder wenn im Schritt 425 entschieden wird, dass das STOP-Bit 4 304 einen Wert von Null aufweist oder wenn bestimmt wird, dass ein PEC-Format im Schritt 426 zu verwenden ist, wird ein ACK im Schritt 428 ausgesendet. Dann wird im Schritt 429 entschieden, ob das STOP-Bit 4 304 gesendet wird oder nicht. Wenn es einen Wert von eins aufweist, dann geht der Prozessablauf zum Schritt 420 weiter, in dem das nächste Datenbyte von der SMBus-Schnittestelle empfangen wird. Wenn das STOP-Bit 4 einen Wert Null aufweist, dann geht der Prozessablauf zum Schritt 402 weiter, in dem die nächste Instruktion aus dem Speicher 202 abgerufen wird.The steps 422 to 426 are similar to the steps 412 to 416 , However, after in step 426 it is decided that a non-PEC format is to be used, a NACK is in the step 427 after the step 426 sent out. When in step 423 it is determined that the loop counter loopcnt is not zero or if in step 425 it is decided that the STOP bit 4 304 has a value of zero, or if it determines that a PEC format is in step 426 is to use an ACK in step 428 sent out. Then in step 429 decided if the STOP bit 4 304 is sent or not. If it has a value of one, then the process flow goes to the step 420 Next, in which the next data byte is received by the SMBus interface. If the STOP bit 4 has a value of zero, then the process flow goes to the step 402 Next, in which the next instruction from the memory 202 is retrieved.

27 zeigt einen Testaufbau 500 für eine Chipsatzvalidisierung. Dieser umfasst einen SMBus-Verbinder 420, einen SMBus-Host 501, Schnellentwicklungsplatinen 521, 522 und 523. Der SMBus-Host 501 umfasst einen Personal-Computer (PC) mit einem Bildschirm 502, einem Gehäuse 503 mit einem Prozessorspeicher und einer Tastatur 504. Die SMBus-Schnittstelle 505 des SMBus-Host 501 und die Schnellentwicklungsplatinen 521 bis 523 sind mit dem SMBus-Verbinder 520 verbunden. Der SMBus-Verbinder verbindet die Taktleitungen im SMBCLK und die Datenleitungen SMBDAT und die optionale Alarmleitung SMBALERT# jeder der SMBus-Schnittstellen. Ferner sind Vorspannungs- bzw. Hochzieh-Widerstände mit 10 kΩ in dem SMBus-Verbinder 520 in Übereinstimmung mit der SMBus-Spezifikation, Abschnitt 2 vorgesehen. 27 shows a test setup 500 for a chipset validation. This includes a SMBus connector 420 , an SMBus host 501 , Fast-development boards 521 . 522 and 523 , The SMBus host 501 includes a personal computer (PC) with a screen 502 , a housing 503 with a processor memory and a keyboard 504 , The SMBus interface 505 the SMBus host 501 and the fast-development boards 521 to 523 are with the SMBus connector 520 connected. The SMBus connector connects the clock lines in the SMBCLK and the data lines SMBDAT and the optional alarm line SMBALERT # of each of the SMBus interfaces. Further, 10 kΩ biasing resistors are in the SMBus connector 520 in accordance with the SMBus Specification, Section 2.

Die Schnellentwicklungsplatinen sind zusätzlich zu der SMBus-Schnittstelle mit einer RS-232-Schnittstelle versehen, mittels derer die Schnellentwicklungsplatinen mit einem Terminal 511 verbunden werden können, das ein PC mit einer Anzeige 512 und einer Tastatur 514 sein kann. In einer Ausführungsform kann phyCORE-591 für die Schnellentwicklungsplatinen verwendet werden. PhyCORE-591 kann von PHYTEC bezogen werden. Diese Platine ist mit einem Philips-Prozessor 8xC591 ausgestattet, der die IZC-Verdrahtung aufweist, die verwendet wird, um die Kapazität des SMBus-Host zu testen. Es kann eine Software auf dem Terminal 511 verwendet werden, die jede Tastatureingabe in das Terminal 511 mittels der Tastatur 514 über die RS-232-Schnittstelle zu einer der Schnellentwicklungsplatinen weiterleitet. Die Software kann ferner ein beliebiges Zeichen oder Byte, das von der RS-232-Schnittstelle empfangen wird, auf der Anzeige 512 darstellen. Ferner kann nicht nur oder alternativ zu den von der RS-232-Schnittstelle empfangenen Bytes eine Erläuterung auf der Anzeige 212 angezeigt werden. Ferner kann die Software unterschiedliche Optionen bereitstellen, so dass unterschiedliche Kategorien von Bytes, die von der RS-232-Schnittstelle empfangen werden, angezeigt oder nicht angezeigt werden können.The fast development boards are provided in addition to the SMBus interface with an RS-232 interface, by means of which the fast-development boards with a terminal 511 that can be connected to a PC with a display 512 and a keyboard 514 can be. In one embodiment, phyCORE-591 can be used for the fast-development boards. PhyCORE-591 can be obtained from PHYTEC. This board is equipped with a Philips 8xC591 processor that has the IZC wiring used to test the capacity of the SMBus host. There may be software on the terminal 511 be used, any keystrokes in the terminal 511 by means of the keyboard 514 via the RS-232 interface to one of the fast-development boards. The software may further include any character or byte received from the RS-232 interface on the display 512 represent. Further, not only or alternatively to the bytes received from the RS-232 interface, an explanation on the display may be made 212 are displayed. Further, the software may provide different options such that different categories of bytes received from the RS-232 interface may be displayed or may not be displayed.

28 bis 32 zeigen ein Flussdiagramm, das die Betriebsweise der Anwenderschnittstelle der SMBus-Testausstattung darstellt. Die in 28 bis 32 gezeigten Schritte können durch den Prozessor des SMBus-Host ausgeführt werden, wenn die Tasten der Tastatur 204 betätigt werden. In einer weiteren Ausführungsform können die Schritte der 28 bis 32 durch den Prozessor der Schnellentwicklungsplatine ausgeführt werden, wenn das Loslassen von Tasten auf der Tastatur 514 gleichzeitig auf die RS-232-Schnittstelle übertragen wird. 28 to 32 show a flow chart illustrating the operation of the user interface of the SMBus test equipment. In the 28 to 32 Steps shown can be performed by the processor of the SMBus host when the keyboard keys 204 be operated. In a further embodiment, the steps of the 28 to 32 be executed by the processor of the fast development board when releasing keys on the keyboard 514 simultaneously transferred to the RS-232 interface.

Normalerweise ist das Testgerät in einem Wartezustand 601. Wenn im Schritt 602 bestimmt wird, dass eine Taste gedrückt wird, wird in den Schritten 603, 605, 608, 610, 613, 615, 617, 619, 622, 624, 627, 629, 632, 634, 637, 639, 641, 643, 645, 647, 649, 651, 653, 655 und 657 bestimmt, welche Taste losgelassen wird und welche Instruktion dieser Taste zugeordnet ist.Normally, the test device is in a wait state 601 , When in step 602 it is determined that a key is pressed in the steps 603 . 605 . 608 . 610 . 613 . 615 . 617 . 619 . 622 . 624 . 627 . 629 . 632 . 634 . 637 . 639 . 641 . 643 . 645 . 647 . 649 . 651 . 653 . 655 and 657 determines which key is released and which instruction is associated with that key.

Wenn im Schritt 603 bestimmt wird, dass eine "0" eingegeben wurde, wird ein Blockschreibevorgang gemäß der I2C-Spezifikation im Schritt 604 ausgeführt. Dies bedeutet, dass die Daten, die in der unteren Zeile aus Block 604 im hexadezimalen Format dargestellt sind, in die SMBus-Schnittstelle geschrieben werden. Ein "v" am Ende der Daten ist eine Abkürzung für ein ACK. Das Nebengerät empfängt ankommende Daten, bis eine STOP-Bedingung erkannt wird. Wenn im Schritt 601 bestimmt wird, dass eine "1" eingegeben wurde, wird I2C-Befehlsblockauslesevorgang ausgeführt. Dies bedeutet, dass das Testgerät Datenbytes aus seinem Hilfs-RAM sendet, beginnend mit einem Offset von 0, bis die Erkennung eines von dem Hauptgerät ausgesendeten NACK erfolgt. Die untere Zeile aus Block 606 kennzeichnet die Daten, die von dem Nebengerät zu dem Testgerät im hexadezimalen Format gesendet werden können. Das "v" am Ende des Datenstroms bezeichnet ein ACK.When in step 603 it is determined that a "0" has been input, a block write will be made in accordance with the I 2 C specification in step 604 executed. This means that the data is in the bottom line from block 604 in hexadecimal format, written to the SMBus interface. A "v" at the end of the data is an abbreviation for an ACK. The slave device receives incoming data until a STOP condition is detected. When in step 601 it is determined that a "1" has been input, I 2 C command block read operation is executed. This means that the tester sends data bytes out of its auxiliary RAM, starting with an offset of 0, until recognition of a NACK sent by the main unit. The bottom line from block 606 identifies the data that can be sent by the slave to the tester in hexadecimal format. The "v" at the end of the data stream designates an ACK.

Wenn eine "2" eingegeben wird, was im Schritt 608 bestimmt wird, so wird ein schneller Schreibvorgang im Schritt 609 ausgeführt, was bedeutet, dass das Datenbyte AEh von dem Hauptgerät ausgesendet wird, und das Nebengerät bestätigt seine eigene Adresse. Wenn eine "3" eingespeist wird, was im Schritt 610 bestimmt wird, wird ein schneller Auslesevorgang im Schritt 611 ausgeführt, was bedeutet, dass das Datenbyte AFh von dem Hauptgerät ausgesendet wird und das Nebengerät bestätigt seine eigene Adresse.If a "2" is entered, what happens in the step 608 is determined, then a fast write in step 609 executed, which means that the data byte AEh is transmitted from the main unit, and the slave confirms its own address. If a "3" is fed, what in the step 610 is determined, a fast read-out in step 611 executed, which means that the data byte AFh is transmitted from the main unit and the slave confirms its own address.

Wenn im Schritt 613 bestimmt wird, dass eine "4" eingegeben wird, wird im Schritt 614 ein Bytesendebefehl ausgeführt, was bedeutet, dass die Daten in den Zeilen 2 oder 3 von dem Hauptgerät ausgesendet werden, abhängig ob ein nicht-PEC- oder ein PEC-Format gewählt ist. Wenn im Schritt 615 bestimmt wird, dass eine "5" eingespeist wird, wird im Schritt 616 ein Byteempfangsprotokoll ausgefüllt. Das Testgerät empfängt das erste Datenbyte des Hilfs-RAM eines Nebengerätes. Das bedeutet, dass abhängig von dem Format die in der zweiten oder dritten Zeile des Blocks 616 gekennzeichneten Bytes über den SMBus gesendet werden. Anschließend wird, wie im Schritt 670 angedeutet ist, das PEC eingeschaltet oder ausgeschaltet, was bedeutet, dass ein nicht-PEC-Format ausgewählt ist, wenn bisher ein PEC-Format gewählt ist, oder umgekehrt.When in step 613 it is determined that a "4" is input, in step 614 a byte end command is executed, which means that the data in lines 2 or 3 are sent out by the main unit, depending on whether a non-PEC or a PEC format is selected. When in step 615 it is determined that a "5" is fed, in step 616 filled in a byte receive protocol. The tester receives the first data byte of the auxiliary RAM of a slave device. That means, depending on the format, that in the second or third line of the block 616 marked bytes are sent via the SMBus. Then, as in step 670 is indicated, the PEC is turned on or off, which means that a non-PEC format is selected if a PEC format has been selected so far, or vice versa.

Wenn im Schritt 617 bestimmt wird, dass eine "6" eingespeist wird, wird ein Byteschreibebefehlt ausgeführt, wie dies im Block 618 gezeigt ist. Wenn eine "7" eingelesen wird, wird wie immer im Schritt 620 ein Byteleseprotokoll ausgeführt, wobei die Daten, die über den SMBus überfragen werden, in den Zeilen 2 oder 3 des Blocks 620 gekennzeichnet sind. Dann wird im Schritt 621 die PCE eingeschaltet oder ausgeschaltet.When in step 617 it is determined that a "6" is input, a byte write command is executed, as in the block 618 is shown. If a "7" is read in, as always in step 620 a Byteleseprotokoll carried out, wherein the data, which will be transmitted over the SMBus, in the lines 2 or 3 of the block 620 Marked are. Then in step 621 the PCE is turned on or off.

Wenn eine "8" eingelesen wird, was im Schritt 622 bestimmt wird, wird im Schritt 623 ein Wortschreibebefehl ausgeführt. Wenn eine "9" gedrückt wird (Schritt 624), wird im Schritt 625 ein Wortlesebefehl ausgefüllt und die PEC wird im Schritt 626 ein- oder ausgeschaltet.If an "8" is read, what in the step 622 is determined in step 623 executed a word-spelling command. When a "9" is pressed (step 624 ), is in the step 625 a word-reading command is completed and the PEC is in step 626 on or off.

Wenn im Schritt 627 bestimmt wird, dass ein "A" eingegeben wird, wird ein Blockschreibeprotokoll im Schritt 628 ausgeführt. Wenn ein "B" eingegeben wird (Schritt 629), wird im Schritt 630 ein Blockleseprotokoll ausgeführt und anschließend wird im Schritt 631 die PEC ein- oder ausgeschaltet (Schritt 634). Wenn ein "C" eingegeben wird (Schritt 632), wird ein Prozessaufrufprotokoll im Schritt 633 ausgeführt. Wenn ein "D" eingegeben wird (Schritt 634), wird im Schritt 635 ein Blockschreib-Blockleseprozessaufruf ausgeführt und im Schritt 636 wird die PEC ein- oder ausgeschaltet. Wenn ein "E" eingegeben wird (Schritt 637), wird im Schritt 638 der Host über einen Alarm informiert. Dies wird mittels der Datensequenz aus Zeile 2 im Block 638 im hexadezimalen Format ausgeführt. 10h ist die Host-Benachrichtigungsadresse, AEh ist die eigene Adresse und 00h, 01h sind zwei Datenbytes.When in step 627 it is determined that an "A" is input, a block write protocol is set in step 628 executed. When a "B" is entered (step 629 ), is in the step 630 executed a block reading protocol and then in step 631 the PEC on or off (step 634 ). When a "C" is entered (step 632 ), becomes a process call log in step 633 executed. When a "D" is entered (step 634 ), is in the step 635 executed a block write block read process call and in step 636 the PEC is switched on or off. When an "E" is entered (step 637 ), is in the step 638 the host is informed of an alarm. This is done using the data sequence from line 2 in the block 638 executed in hexadecimal format. 10h is the host notification address, AEh is the own address, and 00h, 01h are two bytes of data.

Die Übertragung einer ferngesteuerten Steuernachricht wird durch Drücken von "F" gestartet, was im Schritt 639 erkannt wird. Die Nachricht liegt grundsätzlich in einem Byteschreibprotokoll vor und die übertragenen Daten hängen von der momentanen ausgewählten Fernsteuerungsgeräteadresse und dem Status ab, der durch Drücken von "G" änderbar ist, was wiederum im Schritt 657 bestimmt wird. Die folgende Tabelle 4 stellt die Fernsteuerungsstatuscodierungen und die übertragenen Daten dar.The transmission of a remote control message is started by pressing "F", which in step 639 is recognized. The message is basically in a byte write protocol, and the transmitted data depends on the currently selected remote controller address and the status changeable by pressing "G", again in step 657 is determined. Table 4 below shows the remote control status codes and the data transferred.

Figure 00230001
Tabelle 4
Figure 00230001
Table 4

Eine Änderung der Nebengerätsadresse kann durch Drücken "S", was im Schritt 641 bestimmt wird, bewirkt werden. Anschließend kann im Schritt 642 eine zweistellige Hexadezimalzahl eingegeben werden, wie dies beispielsweise in 35 im Zusammenhang mit dem Eingeben eines Offsets zu der PEC dargestellt ist.Changing the slave address can be done by pressing "S", which is in step 641 is determined to be effected. Subsequently, in step 642 a two-digit hexadecimal number can be entered, such as in 35 in connection with entering an offset to the PEC.

Wenn ein "P" eingegeben wird, was im Schritt 643 überprüft wird, wird im Schritt 644 die PEC ein- oder ausgeschaltet. Der Wortmodus kann durch Drücken von "V" im Schritt 645 ein- oder ausgeschaltet werden. Wenn der Wortmodus im Schritt 646 eingeschaltet wird, der auch die Grundeinstellung ist, dann wird jedes einzelne Byte einer SMBus-Nachricht auch auf dem Bildschirm 502 dargestellt oder mittels der RS-232-Schnittstelle an den Terminal 512 übertragen.If a "P" is entered, what in the step 643 is checked in step 644 the PEC on or off. Word mode can be selected by pressing "V" in step 645 be switched on or off. When the word mode in step 646 is turned on, which is also the default, then every single byte of an SMBus message is also on the screen 502 or via the RS-232 interface to the terminal 512 transfer.

Eingeben eines "M", was im Schritt 647 bestimmt wird, ermöglicht dem Anwender, ein einzelnes Byte in dem Hilfs-RAM in der eingebetteten Steuerung, die zur Speicherung ausgesandter Nachrichtendaten verwendet wird, zu ändern. Der Schritt 648 ist in 33 detailliert dargestellt. Es kann eine Bestätigungsfehlereigenschaft durch Drücken von "N" eingeschaltet werden, was im Schritt 649 bestimmt wird. Dann kann eine ACK oder NACK-Fehlerposition im Schritt 650 spezifiziert werden, was in Zusammenhang mit 34 detaillierter erläutert wird. Wenn "O" gedrückt wird, was im Schritt 641 bestimmt wird, kann ein Offset zur PEC im Schritt 652 eingegeben werden, was detaillierter in Verbindung mit 35 erläutert wird. Wenn "T" eingegeben wird, was im Schritt 653 bestimmt wird, können Zeitüberschreitungsfehlereinstellungen im Schritt 654 eingegeben werden, was detaillierter in Verbindung mit 36 dargestellt ist. Das Drücken von "R", was im Schritt 655 bestimmt wird, schaltet einen Arbitrationsfehler ein oder aus (Schritt 656).Enter an "M", which is in step 647 is determined allows the user to change a single byte in the auxiliary RAM in the embedded controller used to store sent message data. The step 648 is in 33 shown in detail. An acknowledgment error property can be turned on by pressing "N", which is in step 649 is determined. Then an ACK or NACK error position may be in step 650 be specified what is related to 34 will be explained in more detail. If "O" is pressed, what in step 641 is determined, an offset to the PEC in step 652 be entered, which is more detailed in connection with 35 is explained. If "T" is entered, what in step 653 may determine timeout error settings in step 654 be entered, which is more detailed in connection with 36 is shown. Pressing "R", what in step 655 is determined, turns on or off an arbitration error (step 656 ).

Drücken von "G", was im Schritt 657 bestimmt wird, ermöglicht dem Anwender, die Fernsteuerungseinstellungen zu ändern. Nach dem Schritt 657 wartet das Testgerät im Schritt 658 auf die Eingabe einer weiteren Taste. In den Schritten 659, 661, 663, 665, 667 und 669 wird überprüft, ob eine Aktion mit der betätigten Taste verknüpft ist.Pressing "G", what in step 657 is determined allows the user to change the remote control settings. After the step 657 the test device waits in step 658 on the input of another key. In the steps 659 . 661 . 663 . 665 . 667 and 669 Checks whether an action is linked to the pressed key.

Wenn die Taste "0" ist, wird der Status im Schritt 660 zurückgesetzt, d. h. ein Byteschreibeprotokoll wird ausgeführt, wobei ein 00h-Befehlscode und 52h Datenbyte (siehe Tabelle 4) gesendet werden.If the key is "0", the status becomes in step 660 reset, ie a byte write protocol is executed, sending a 00h command code and 52h data byte (see Table 4).

Wenn "1" eingegeben wird, was im Schritt 661 bestimmt wird, wird ein Abschaltstatus im Schritt 662 festgelegt. Die im Byteschreibeprotokoll gesendeten Bytes sind in Zeile 2 (ausschließlich der Kopfzeile) der Tabelle 4 dargestellt.If "1" is entered, what in the step 661 is determined, a shutdown status in step 662 established. The bytes sent in the byte write protocol are shown in line 2 (excluding the header) of Table 4.

Wenn eine "2" eingegeben wird, was im Schritt 663 bestimmt wird, wird ein Einschaltstatus im Schritt 664 festgelegt (siehe Zeile 3 der Tabelle 4). Wenn eine "3" eingegeben wird, wie dies im Schritt 665 überprüft wird, wird ein Betriebsstatus im Schritt 666 festgelegt (siehe Zeile 1 der Tabelle 4). Wenn eine "4" eingegeben wird (Schritt 667), werden beliebige Daten im Schritt 668 gesendet. Wenn sich herausstellt, dass ein "A" im Schritt 669 eingegeben wird, kann die Geräteadresse im Schritt 671 geändert werden, wie dies detaillierter in Verbindung mit 37 erläutert ist.If a "2" is entered, what happens in the step 663 is determined, a power-on status in step 664 determined (see row 3 of Table 4). If a "3" is entered, as in the step 665 is checked, an operating status in step 666 determined (see row 1 of Table 4). If a "4" is entered (step 667 ), any data in step 668 Posted. If it turns out that an "A" in the step 669 is entered, the device address in step 671 be changed as more in connection with 37 is explained.

33 zeigt den Vorgang des Modifizierens des Bytes im Schritt 648. Die Testanlage wartet im Schritt 701 auf das Betätigen einer Taste. Dann wird im Schritt 702 überprüft, ob die Tasteneingabe eine hexadezimale Eingabe ist. Eine hexadezimale Tasteneingabe ist eine Zahl zwischen 0 und 9 oder ein Buchstabe zwischen A und F. Wenn eine hexadezimale Tasteneingabe eingespeist wird, wird dessen Wert als a1 für die weitere Anwendung im Schritt 704 gespeichert. Wenn eine nicht-hexadezimale Tasteneingabe erfolgt, geht der Prozessablauf zum Schritt 703 weiter, in dem bestimmt wird, ob die Bestätigungstaste betätigt ist. Wenn dies der Fall ist, geht der Prozessablauf zum Ende im Schritt 718 weiter. Wenn im Schritt 703 bestimmt wird, dass nicht die Bestätigungstaste betätigt wurde, wartet die Testanlage im Schritt 701 auf die Betätigung einer weiteren Taste. 33 shows the process of modifying the byte in the step 648 , The test facility waits in the step 701 on pressing a button. Then in step 702 checks if the key input is a hexadecimal input. A hexadecimal key input is a number between 0 and 9, or a letter between A and F. When a hexadecimal key input is input, its value becomes a1 for the rest of the application in step 704 saved. If a non-hexadecimal key input occurs, the process flow goes to step 703 in which it is determined whether the confirmation key is pressed. If so, the process goes to the end of the step 718 further. When in step 703 it is determined that not the Confirmation button is pressed, the test facility waits in step 701 on the actuation of another button.

Die Schritte 705 bis 708, 709 bis 712 und 713 bis 716 sind ähnlich zu den Schritten 701 bis 704. Die Tastatureingabe im Schritt 705 wird jedoch als a2 für die spätere Anwendung gespeichert, die Tastatureingabe im Schritt 709 wird als v1 für die spätere Verwendung im Schritt 712 und die Tastatureingabe im Schritt 713 wird als v2 im Schritt 716 für die spätere Verwendung gespeichert. Schließlich wird im Schritt 717 ein einzelnes Byte in dem Hilfs-RAM der eingebetteten Steuerung geändert, das zur Speicherung ausgehender Nachrichtendaten verwendet wird. A1 bildet die 4 MSB und die vier LSB der hexadezimalen Adresse in dem RAM, und v1, v2 bilden die 4 MSB und die 4 LSB des Wertes selbst. Wenn anstelle einer hexadezimalen Taste die Bestätigungstaste gedrückt wird, geht der Prozessablauf nicht zum Schritt 717 weiter, so dass der ursprüngliche Wert beibehalten bleibt.The steps 705 to 708 . 709 to 712 and 713 to 716 are similar to the steps 701 to 704 , The keyboard input in step 705 however, is saved as a2 for later use, the keystroke in step 709 is called v1 for later use in the step 712 and the keyboard input in step 713 becomes as v2 in the step 716 saved for later use. Finally, in step 717 changed a single byte in the embedded controller's auxiliary RAM used to store outbound message data. A1 forms the 4 MSB and the four LSB of the hexadecimal address in the RAM, and v1, v2 constitute the 4 MSB and the 4 LSB of the value itself. If the confirmation key is pressed instead of a hexadecimal key, the process flow does not proceed to step 717 continue, so that the original value is maintained.

34 zeigt Schritt 650 in der eine ACK- oder NACK-Position spezifiziert werden kann. Die Schritte 721 bis 724 und die Schritte 725 bis 728 sind ähnlich zu den Schritten 701 bis 704 in 33. Es wird jedoch in Schritt 722 und im Schritt 726 überprüft, ob eine numerische Taste, d. h. eine Zahl zwischen 0 und 1, betätigt wird. Die erste Zahleneingabe wird im Schritt 721 gespeichert als "Z" im Schritt 724 für spätere Verwendung und bildet die Zehnerstelle, und die zweite Zeileneingabe im Schritt 725 und als "E" im Schritt 728 für die weitere Verwendung gespeichert, bildet die Einerstelle für die Byteposition des Fehlers. Die Byteposition für den Fehler wird im Schritt 729 gespeichert. 34 shows step 650 where an ACK or NACK position can be specified. The steps 721 to 724 and the steps 725 to 728 are similar to the steps 701 to 704 in 33 , However, it will be in step 722 and in the step 726 checks if a numeric key, ie a number between 0 and 1, is pressed. The first number input is in step 721 stored as "Z" in the step 724 for later use and forms the tens digit, and the second row input in step 725 and as "E" in the step 728 stored for further use, is the one-digit for the byte position of the error. The byte position for the error will be in step 729 saved.

35 zeigt den Schritt 652 zum Einspeisen eines Offsets zur der PEC. Der ganze Ablauf ist ähnlich zu dem in 34 gezeigten Ablauf. Dieser Ablauf akzeptiert jedoch hexadezimale Tastatureingaben im Schritt 742 und im Schritt 746. Die Tastatureingabe im Schritt 741 bildet die vier höchstens signifikanten Bits, wohingegen die Tastatureingaben im Schritt 745 die niedrigsten signifikanten Bits des Offsets, der dem PEC-Byte hinzuzuaddieren ist, bildet (Schritt 749). 35 shows the step 652 for feeding an offset to the PEC. The whole process is similar to the one in 34 shown procedure. However, this process accepts hexadecimal keystrokes in the step 742 and in the step 746 , The keyboard input in step 741 forms the four most significant bits, whereas the keystrokes in step 745 forming the least significant bits of the offset to be added to the PEC byte (step 749 ).

36 zeigt den Schritt 654 zum Eingeben der Zeitüberlauffehlereinstellungen. Diese Prozedur ist ähnlich zu der in 33 gezeigten Prozedur. Jedoch akzeptieren die Schritte 762, 766, 770 und 774 lediglich numerische Tasteneingaben. Die erste eingegebene und als l1 im Schritt 764 gespeicherte Zahl bildet die Zehner, während die zweite, im Schritt 768 für die spätere Verwendung als l2 gespeicherte Zahl die Einer der Fehlerposition bildet (Schritt 777). Die dritte numerische Tasteneingabe, die als t1 im Schritt 772 gespeichert wird, bildet die Zehner und die vierte numerische Tasteneingabe t2 bildet die Einer des Zeitüberlaufwerts. Wenn der Zeitüberlauffehler durch Drücken des t eingeschaltet wird, wird die SMBCLK-Leitung für eine vorgegebene Zeit auf niedrigen Pegel gezogen, während der Host auf die Bestätigung des letzten Bytes wartet. 36 shows the step 654 to enter the time overflow error settings. This procedure is similar to the one in 33 shown procedure. However, accept the steps 762 . 766 . 770 and 774 only numeric keystrokes. The first entered and as l1 in the step 764 stored number forms the tens, while the second, in step 768 for the later use as l2 stored number which forms one of the error position (step 777 ). The third numeric key input, called t1 in step 772 is stored, forms the tens and the fourth numeric key input t2 forms the one of the time overflow value. When the time overrun error is turned on by pressing the t, the SMBCLK line is pulled low for a predetermined time while the host waits for the last byte to be acknowledged.

37 zeigt die Änderung der Geräteadresse im Schritt 671. Dieses Flussdiagramm ist ähnlich zu dem in 35 gezeigten Flussdiagramm. Die erste hexadezimale Tasteneingabe a1 bildet die vier höchsten signifikanten Bits der neuen Geräteadresse, wohingegen die zweite hexadezimale Tasteneingabe a2 die vier am wenigsten signifikanten Bits der neuen Geräteadresse bilden, die im Schritt 790 gespeichert wird. Wenn anstelle einer hexadezimalen Taste die Bestätigungstaste gedrückt wird, findet keine Änderung statt. 37 shows the change of the device address in step 671 , This flowchart is similar to that in FIG 35 shown flow chart. The first hexadecimal key input a1 forms the four highest significant bits of the new device address, whereas the second hexadecimal key input a2 constitute the four least significant bits of the new device address identified in step 790 is stored. If the confirmation key is pressed instead of a hexadecimal key, no change takes place.

In einer weiteren Ausführungsform kann der Befehl, wie er in der ersten Zeile im Schritt 604, 606, 609, 611, 614, 616, 618, 620, 623, 625 und 628 angedeutet ist, ebenso über die RS-232-Schnittstelle gesendet werden und kann anschließend auf dem Bildschirm 512 des Terminals 511 angezeigt werden. Ferner können die Datenbytes, die von dem SMBus gesendet oder empfangen werden und als zweite und dritte Zeile der oben genannten Blöcke gekennzeichnet sind, auf die RS-232-Schnittstelle übertragen und auch auf dem Bildschirm 512 dargestellt werden. Ferner kann der SMBus-Host 501 die Befehle und/oder die Datenbytes, die von dem SMBus gesendet werden, auf seiner Anzeige darstellen.In a further embodiment, the command as shown in the first line in step 604 . 606 . 609 . 611 . 614 . 616 . 618 . 620 . 623 . 625 and 628 is also indicated via the RS-232 interface and can then be displayed on the screen 512 of the terminal 511 are displayed. Further, the data bytes sent or received from the SMBus and identified as second and third lines of the above-mentioned blocks may be transmitted to the RS-232 interface and also on the screen 512 being represented. Furthermore, the SMBus host 501 display the commands and / or data bytes sent by the SMBus on its display.

Weitere Modifikationen und Variationen der vorliegenden Erfindung werden für den Fachmann angesichts dieser Beschreibung offenkundig. Folglich ist diese Beschreibung als lediglich anschaulich und für die Zwecke gedacht, dem Fachmann die allgemeine Art und Weise des Ausführens der vorliegenden Erfindung zu vermitteln.Further Modifications and variations of the present invention will become for the One skilled in the art in light of this description. Consequently, it is this description as merely illustrative and for the purposes thought to the skilled person the general way of carrying out the to impart the present invention.

Claims (23)

SMBus-Nachrichtenverwalter mit: einem Speicher (202), der ausgebildet ist, eine Mikrocodierung mit mindestens zwei Programmen (210, 211, 212), die je ein Busbefehlsprotokoll handhaben und jeweils mindestens eine Instruktion aufweisen, zu speichern; einer Schnittstelle für ein Register (SBM_PRTCL), die ausgebildet ist, eine START-Adresse eines Programms in dem Speicher zu identifizieren; einer Instruktionsabrufeeinheit (203), die ausgebildet ist, eine Instruktion an einer Adresse in dem Speicher (202) zu lesen, wobei die Adresse durch einen Programmzähler (PC) spezifiziert ist; und einer finiten Zustandsmaschine (201), die ausgebildet ist, die von der Instruktionsabrufeeinheit (203) ausgelesenen Instruktionen zu empfangen und zu interpretieren und den Datentransfer zwischen einer SMBus-(213, 214,)-Schnittstelle und einem Registersatz (208) in Übereinstimmung mit den aus dem Speicher gelesenen Instruktionen zu handhaben.SMBus message manager with: a memory ( 202 ), which is adapted to microcode with at least two programs ( 210 . 211 . 212 ), each handling a bus command protocol and each having at least one instruction to store; a register interface (SBM_PRTCL) adapted to identify a START address of a program in the memory; an instruction fetch unit ( 203 ) which is adapted to receive an instruction at an address in the memory ( 202 ), the address being specified by a program counter (PC); and a finite state machine ( 201 ) which is formed by the instruction fetch unit ( 203 ) received and interpreted instructions and the data transfer between an SMBus ( 213 . 214 ,) Interface and a register file ( 208 ) in accordance with the instructions read from the memory. SMBus-Nachrichtenverwalter nach Anspruch 1, wobei der Registersatz mit der ACPI-Spezifikation kompatibel ist.The SMBus message manager of claim 1, wherein the register file with the ACPI specification is compatible. SMBus-Nachrichtenverwalter nach Anspruch 2, der ferner umfasst: ein Adressregisterfeld (207) mit mehreren START-Adressen von in dem Speicher gespeicherten Programmen, wobei das Register (SMB_PRCTL) einen Offsetwert zum Zeigen auf ein spezifiziertes Register in dem Adressenregisterfeld aufweist.The SMBus message manager of claim 2, further comprising: an address register field ( 207 ) having a plurality of START addresses of programs stored in the memory, the register (SMB_PRCTL) having an offset value for pointing to a specified register in the address register field. SMBus-Nachrichtenverwalter nach Anspruch 2, der ferner umfasst: Ein Pufferzeigerregister (206) zum Zeigen auf eines von mehreren Datenregistern (SMB_DATA); wobei die finite Zustandsmaschine (201) aus der SMBus-(213, 214)Schnittstelle ausgelesene Daten in das Datenregister überträgt, auf das das Pufferzeigeregister (206) zeigt, wenn die finite Zustandsmaschine (201) eine "empfange Daten von" – Instruktion erkennt; wobei die finite Zustandsmaschine (201) die von dem Datenregister, auf das das Pufferzeigeregister zeigt, ausgelesenen Daten an die SMBus-(213, 214) Schnittstelle überträgt, wenn die finite Zustandsmaschine (201) eine "übersendet Daten von"-Instruktion erkennt.The SMBus message manager of claim 2, further comprising: a buffer pointer register ( 206 pointing to one of a plurality of data registers (SMB_DATA); where the finite state machine ( 201 ) from the SMBus ( 213 . 214 ) Transfers data read out into the data register to which the buffer pointer register ( 206 ), when the finite state machine ( 201 ) recognizes a "receive data from"instruction; where the finite state machine ( 201 ) the data read from the data register to which the buffer pointer register points to the SMBus ( 213 . 214 ) Interface transfers when the finite state machine ( 201 ) detects a "sent data from" instruction. SMBus-Nachrichtenverwalter nach Anspruch 4, wobei die finite Zustandsmaschine bewirkt, dass das Pufferzeigeregister (206) erhöht wird, immer wenn eine "übersendet Daten zu"- oder eine "übersendet Daten von"-Instruktion ausgeführt wird.The SMBus message manager of claim 4, wherein the finite state machine causes the buffer pointer register ( 206 ) is incremented whenever a "sent data to" or a "sent data from" instruction is executed. SMBus-Nachrichtenverwalter nach Anspruch 1, der ferner umfasst: einen Schleifenzähler (204) zum Speichern des Wertes eines Blockzählerregisters SMB_BCNT in dem Schleifenzähler (204), wenn die finite Zustandsmaschine eine "übersendet Daten von SMB_BCNT"-Instruktion ausführt; wobei der Schleifenzähler (204) verringert wird, immer wenn ein Datenbyte an die SMBus (213, 214)-Schnittstelle übertragen wird, während eine "übersendet Daten von"-Instruktion ausgeführt wird, und die "übersendet Daten von"-Instruktion ist abgeschlossen, wenn der Wert des Schleifezählers (204) Null erreicht.The SMBus message manager of claim 1, further comprising: a loop counter ( 204 ) for storing the value of a block counter register SMB_BCNT in the loop counter ( 204 ) when the finite state machine executes a "sent data from SMB_BCNT"instruction; where the loop counter ( 204 ), whenever a byte of data is sent to the SMBus ( 213 . 214 ) Interface is executed while a "sent data from" instruction is executed and the "sent data from" instruction is completed when the value of the loop counter ( 204 ) Reaches zero. SMBus-Nachrichtenverwalter nach Anspruch 1, der ferner umfasst: einen Schleifenzähler (204) und ein Blockzahlregister (SMB_BCNT), die beide ein von der SMBus (213, 214)-Schnittstelle empfangenes Byte speichern, wenn die finite Zustandsmaschine (201) eine "empfange Daten von SMB_BCNT"-Instruktion ausführt, wobei der Schleifenzähler (204) verringert wird, immer wenn ein Datenbyte übertragen wird zu oder empfangen wird von der SMBus (213, 214)-Schnittstelle, während eine "empfange Daten zu"-Instruktion ausgeführt wird und die "empfangene Daten zu"-Instruktion beendet wird, wenn der Wert des Schleifenzählers (204) Null erreicht.The SMBus message manager of claim 1, further comprising: a loop counter ( 204 ) and a block number register (SMB_BCNT), both from the SMBus ( 213 . 214 ) Interface store received byte when the finite state machine ( 201 ) executes a "receive data from SMB_BCNT" instruction, the loop counter ( 204 ) is reduced whenever a data byte is transmitted to or received from the SMBus ( 213 . 214 ) Interface while a "receive data to" instruction is executed and the "received data to" instruction is terminated when the value of the loop counter ( 204 ) Reaches zero. SMBus-Nachrichtenverwalter nach Anspruch 1, wobei jede Instruktion ein Bit (304) aufweist, das anzeigt, ob eine Instruktion die letzte Instruktion in dem Programm ist oder nicht.The SMBus message manager of claim 1, wherein each instruction is a bit ( 304 ), which indicates whether an instruction is the last instruction in the program or not. SMBus-Nachrichtenverwalter nach Anspruch 1, wobei jede Instruktion ein Bit (305) aufweist, das anzeigt, ob eine auszuführende Instruktion lediglich einmal oder ob diese Instruktion wiederholt auszuführen ist, bis ein Schleifenzähler (204) Null wird, wobei der Schleifenzähler jedes mal verringert wird, wenn eine Instruktion wiederholt ausgeführt wird.The SMBus message manager of claim 1, wherein each instruction is a bit ( 305 ), which indicates whether an instruction to be executed only once or whether this instruction is to be executed repeatedly until a loop counter ( 204 ) Becomes zero, and the loop counter is decremented each time an instruction is repeatedly executed. Integrierter Schaltungschip zum Übertragen und Empfangen von Daten über einen SMBus, mit: einer Schnittstelle zu einem Speicher (202), der ausgebildet ist, eine Mikrocodierung mit mindestens zwei Programmen (210, 211, 212), um jeweils ein Busbefehlsprotokoll zu handhaben und die jeweils mindestens eine Instruktion aufweisen, zu speichern; einer Schnittstelle zu einem Register (SMB_PRTCL), die ausgebildet ist, eine START-Adresse eines Programms in dem Speicher zu erkennen; einer Instruktionsabrufeeinheit (203), die ausgebildet ist, eine Instruktion an einer Adresse in dem Speicher (202) auszulesen; wobei die Adresse durch einen Programmzähler (PC) spezifiziert ist; und einer finiten Zustandsmaschine (201), die ausgebildet ist, die von der Instruktionsabrufeinheit (203) ausgelesenen Instruktionen zu empfangen und zu interpretieren, und um den Datentransfer zwischen einer SMBus (213, 214)-Schnittstelle und einem Registersatz (208) entsprechend den von dem Speicher gelesenen Instruktionen zu handhaben.An integrated circuit chip for transmitting and receiving data via an SMBus, comprising: an interface to a memory ( 202 ), which is adapted to microcode with at least two programs ( 210 . 211 . 212 ) to respectively handle a bus command protocol and each having at least one instruction to store; an interface to a register (SMB_PRTCL) configured to detect a START address of a program in the memory; an instruction fetch unit ( 203 ) which is adapted to receive an instruction at an address in the memory ( 202 ) read out; the address being specified by a program counter (PC); and a finite state machine ( 201 ), which is formed by the instruction fetching unit (FIG. 203 ) to receive and interpret instructions read out and to transfer data between an SMBus ( 213 . 214 ) Interface and a register file ( 208 ) according to the instructions read from the memory. Verfahren zum Steuern eines SMBus mit: Identifizieren (402) einer START-Adresse eines Programms (210, 211, 212) mit einer oder mehreren Instruktionen; wobei das Programm (210, 211, 212) in einem Speicher (202) gespeichert ist; Einladen der Instruktionen des Programms der Reihe nach in eine finite Zustandsmaschine (201); und Übertragen von Daten zwischen einer SMBus (213, 214)-Schnittstelle und einem Registersatz in Übereinstimmung mit der in der finiten Zustandsmaschine (201) vorhandenen Instruktion.Method of controlling an SMBus comprising: identifying ( 402 ) a START address of a program ( 210 . 211 . 212 ) with one or more instructions; where the program ( 210 . 211 . 212 ) in a memory ( 202 ) is stored; Loading the instructions of the program into a finite state machine ( 201 ); and transferring data between an SMBus ( 213 . 214 ) Interface and a register file in accordance with the in the finite state machine ( 201 ) existing instruction. Verfahren nach Anspruch 11, wobei der Registersatz mit der ACPI-Spezifikation kompatibel ist.The method of claim 11, wherein the register file compatible with the ACPI specification. Verfahren nach Anspruch 11, wobei das Identifizieren umfasst: Lesen eines ersten Wertes eines Protokollregisters (SMB_PRTCL), das einen Offsetwert in einem Adressenregister fällt (207) spezifiziert; Lesen eines zweiten Wertes eines Registers des Adressenregisterfeldes (207), wobei das Register durch den Offsetwert spezifiziert ist; und wobei der zweite Wert die START-Adresse des Programms bildet.The method of claim 11, wherein the identifying comprises: reading a first value of a protocol register (SMB_PRTCL) that falls an offset value in an address register ( 207 ) specified; Reading a second value of a register of the address register field ( 207 ), wherein the register is specified by the offset value; and wherein the second value is the START address of the program. Verfahren nach Anspruch 12, wobei das Übertragen umfasst: Interpretieren einer "Daten empfangen von"-Instruktion; Lesen des Wertes eines Pufferzeigerregisters (206); und Übertragen der von der SMBuS (213, 214)-Schnittstelle gelesenen Daten in das Datenregister (SMB_DATA), auf das der in dem Pufferzeigerregister (206) gespeicherte Wert zeigt.The method of claim 12, wherein transmitting comprises: interpreting a "data received from"instruction; Reading the value of a buffer pointer register ( 206 ); and transferring the from the SMBuS ( 213 . 214 ) Data read into the data register (SMB_DATA) to which the in the buffer pointer register ( 206 ) stored value. Verfahren nach Anspruch 14, wobei das Übertragen ferner das Erhöhen des Wertes des Pufferzeigerregisters (206) umfasst.The method of claim 14, wherein transmitting further comprises increasing the value of the buffer pointer register (14). 206 ). Verfahren nach Anspruch 14, wobei das Übertragen ferner umfasst: Verringern eines Schleifenzählers (204) und Prüfen, ob der Schleifenzähler (204) den Wert Null besitzt.The method of claim 14, wherein the transmitting further comprises: reducing a loop counter ( 204 ) and checking whether the loop counter ( 204 ) has the value zero. Verfahren nach Anspruch 12, wobei das Übertragen umfasst: Interpretieren einer "übertragen Daten von"-Instruktion; Lesen des Wertes eines Pufferzeigerregisters (206); und Übertragen der von dem Datenregister (SMB_DATA) gelesenen Daten, auf das der in dem Pufferzeigerregister (206) gespeicherte Wert zeigt, zu der SMBus (213, 214)-Schnittstelle.The method of claim 12, wherein transmitting comprises: interpreting a "transmit data from"instruction; Reading the value of a buffer pointer register ( 206 ); and transferring the data read from the data register (SMB_DATA) to that in the buffer pointer register ( 206 ) stored value to the SMBus ( 213 . 214 )-Interface. Verfahren nach Anspruch 17, wobei das Übertragen ferner das Erhöhen des Pufferzeigerregisters (206) umfasst.The method of claim 17, wherein transmitting further comprises increasing the buffer pointer register (16). 206 ). Verfahren nach Anspruch 17, wobei das Übertragen ferner das Verringern des Schleifenzählers (204) umfasst.The method of claim 17, wherein said transmitting further comprises decreasing said loop counter ( 204 ). Verfahren nach Anspruch 11, wobei der Übertragungsschritt umfasst: Interpretieren einer "übertragen von Daten von SMB_BCNT"-Instruktion; Speichern des Wertes eines Blockzahlregisters SMB_BCNT in einen Schleifenzähler (204); und Übertragen des Wertes des Blockzahlregisters (SMB_BCNT) zu der SMBus (213, 214)-Schnittstelle.The method of claim 11, wherein the transmitting step comprises: interpreting a "transmit data from SMB_BCNT"instruction; Storing the value of a block number register SMB_BCNT in a loop counter ( 204 ); and transferring the value of the block count register (SMB_BCNT) to the SMBus ( 213 . 214 )-Interface. Verfahren nach Anspruch 11, wobei das Übertragen umfasst: Interpretieren einer "empfangene Daten an SMB_BCNT"-Instruktion; Übersenden eines Bytes von der SMBus (213, 214)-Schnittstelle zu einem Blockzahlregister SMB_BCNT; und Speichern des Wertes des von der SMBus (213, 214)-Schnittstelle empfangenen Bytes in einem Schleifenzählerregister (204).The method of claim 11, wherein transmitting comprises: interpreting a "received data to SMB_BCNT"instruction; Sending a byte from the SMBus ( 213 . 214 ) Interface to a block number register SMB_BCNT; and storing the value of the SMBus ( 213 . 214 ) Interface received bytes in a loop counter register ( 204 ). Verfahren nach Anspruch 11, wobei das Übertragen ferner umfasst: Bestimmen, ob ein STOP-Bit (304) einen vorbestimmten Wert aufweist, und wenn dies der Fall ist: Schreiben von 80h in ein Statusregister (SMB_STS) des Registersatzes (208).The method of claim 11, wherein the transmitting further comprises: determining whether a STOP bit ( 304 ) has a predetermined value, and if so: writing 80h to a status register (SMB_STS) of the register file ( 208 ). Verfahren nach Anspruch 11, wobei das Übertragen ferner umfasst: Bestimmen, ob ein Schleifenbit (305) einer Instruktion einen vorbestimmten Wert hat; wenn dies der Fall ist, Ausführen der Instruktion in wiederholter Weise; Verringern eines Schleifenzählers (204), immer wenn die Instruktion ausgeführt wird; Beenden der Ausführung der Schleifeninstruktion, wenn der Wert des Schleifenzählers (204) Null wird; und Abrufen der nächsten Instruktion.The method of claim 11, wherein the transmitting further comprises: determining whether a loop bit ( 305 ) an instruction has a predetermined value; If this is the case, Executing the instruction in a repeated manner; Decrease a loop counter ( 204 ) whenever the instruction is executed; Stop execution of the loop instruction when the value of the loop counter ( 204 ) Becomes zero; and retrieve the next instruction.
DE2002149883 2002-10-25 2002-10-25 Method and apparatus for handling SMBUS messages Expired - Lifetime DE10249883B4 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE2002149883 DE10249883B4 (en) 2002-10-25 2002-10-25 Method and apparatus for handling SMBUS messages
DE10262080A DE10262080B4 (en) 2002-10-25 2002-10-25 SMBus message handler, has finite state machine which receives and interprets instruction and handles data transfer between SMBus interface and register set
US10/679,623 US8458367B2 (en) 2002-10-25 2003-10-06 Method and device for handling SMBus messages

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE2002149883 DE10249883B4 (en) 2002-10-25 2002-10-25 Method and apparatus for handling SMBUS messages
DE10262080A DE10262080B4 (en) 2002-10-25 2002-10-25 SMBus message handler, has finite state machine which receives and interprets instruction and handles data transfer between SMBus interface and register set

Publications (2)

Publication Number Publication Date
DE10249883A1 DE10249883A1 (en) 2004-05-13
DE10249883B4 true DE10249883B4 (en) 2005-02-03

Family

ID=33565992

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2002149883 Expired - Lifetime DE10249883B4 (en) 2002-10-25 2002-10-25 Method and apparatus for handling SMBUS messages

Country Status (1)

Country Link
DE (1) DE10249883B4 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120448A (en) * 2017-01-26 2018-08-02 ソニーセミコンダクタソリューションズ株式会社 Arithmetic processing unit and information processing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636342A (en) * 1995-02-17 1997-06-03 Dell Usa, L.P. Systems and method for assigning unique addresses to agents on a system management bus
US20030163599A1 (en) * 2002-02-26 2003-08-28 Hills Michael P. SMBus notifications
US20030198185A1 (en) * 2002-04-19 2003-10-23 Compaq Information Technologies Group, L.P. Use of SMBus to provide JTAG support

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636342A (en) * 1995-02-17 1997-06-03 Dell Usa, L.P. Systems and method for assigning unique addresses to agents on a system management bus
US20030163599A1 (en) * 2002-02-26 2003-08-28 Hills Michael P. SMBus notifications
US20030198185A1 (en) * 2002-04-19 2003-10-23 Compaq Information Technologies Group, L.P. Use of SMBus to provide JTAG support

Also Published As

Publication number Publication date
DE10249883A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
DE3204905C2 (en)
DE2517831C3 (en) Data communication system
DE3110378C2 (en)
DE10262080B4 (en) SMBus message handler, has finite state machine which receives and interprets instruction and handles data transfer between SMBus interface and register set
DE2703394C3 (en) Data processing system
DE102012208803B4 (en) System and method for forwarding Fiber Channel input and output data
US5371892A (en) Method for configuring a computer bus adapter circuit board without the use of jumpers or switches
DE19900245A1 (en) System for transmission and reception of universal serial bus data
DE102012209011B4 (en) System and method for forwarding Fiber Channel input and output data
DE3732615A1 (en) Processing system for a portable electronic device
DE2806024A1 (en) STORAGE SYSTEM WITH ERROR DETECTION AND CORRECTION POSSIBILITY
DE3126721A1 (en) "DATA PROCESSING DEVICE WITH A PROGRAMMABLE FIXED MEMORY"
DE3823914A1 (en) METHOD FOR TRANSMITTING DEVICE DETERMINING PROGRAM PARAMETER DATA FROM A COMMUNICATION SYSTEM TO COMMUNICATION TERMINALS
DE10036160B4 (en) Control program development system and monitor device
CH629010A5 (en) CONNECTION CIRCUIT FOR AN INPUT / OUTPUT INTERFACE IN A DATA PROCESSING SYSTEM.
DE3027734A1 (en) FOLLOW-UP CONTROL DEVICE
DE19900251A1 (en) Control device for complex universal serial bus end point channel
DE102004042068B4 (en) Method, computer-readable medium and system for handling a failed connection training
EP1574004A2 (en) Method for transmitting data on a bus
DE19652290C2 (en) Microcomputer
DE60035298T2 (en) Entertainment system, information processing unit and portable data storage
DE102010006148A1 (en) A method of responding to a file delete command and data storage device command
DE10249883B4 (en) Method and apparatus for handling SMBUS messages
DE69734910T2 (en) Method for identifying a peripheral device in a semiconductor device
DE4100018C2 (en) Method for notification of operator requirements between two stations of a computer bus

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8172 Supplementary division/partition in:

Ref document number: 10262080

Country of ref document: DE

Kind code of ref document: P

Q171 Divided out to:

Ref document number: 10262080

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
R071 Expiry of right