Serial data transmission
17 claims: 17 independent, 0 dependent
- 1A method of communicating data between a control processor (1) and a slave processor (2) over a serial interface (3) comprising a bi-directional data line (DATA) and a uni-directional clock line (CK), comprising:transmitting a clock signal from the control processor (1) over the clock line (CK) to the slave processor (2), and at the same time transmitting control or data frames from the control processor (1) to the slave processor (2) or transmitting data frames from the slave processor (2) to the control processor (1), the slave processor synchronising its reading or transmitting of frames with the control processor (1) in response to the clock signal;each frame comprising a control portion (CTRL) to identify a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (DO-D7) bounded by idle bits (I1, I2), both the slave and the control processor freeing the data line for a change in the direction of data transmission during each idle bit. Procédé pour communiquer des données entre un processeur de commande (1) et un processeur esclave (2) par l'intermédiaire d'un interface série (3) comprenant une ligne de données (DATA) bidirectionnelle et une ligne d'horloge (CK) unidirectionnelle, consistant à: transmettre un signal d'horloge du processeur de commande (1) au processeur esclave (2) par l'intermédiaire de la ligne d'horloge (CK), et transmettre en même temps des blocs de commande ou des blocs de données du processeur de commande (1) au processeur esclave (2), ou transmettre des blocs de données du processeur esclave (2) au processeur de commande (1), le processeur esclave synchronisant sa lecture ou sa transmission de blocs avec le processeur de commande (1), en réponse au signal d'horloge;chaque bloc comprenant une partie de commande (CTRL) pour identifier un bloc comme bloc de commande ou comme bloc de données, et après la partie de commande, plusieurs bits de données (D0-D7) délimités par des bits vides (I1, I2), tant le processeur esclave que le processeur de commande libérant la ligne de données pour un changement de la direction de la transmission de données pendant chaque bit vide. Verfahren zum Kommunizieren von Daten zwischen einem Steuerprozessor (1) und einem Hilfsprozessor (2) über eine serielle Schnittstelle (3), die eine bidirektonale Datenleitung (DATA) und eine unidirektionale Taktleitung (CK) aufweist, das umfaßt: Übertragen eines Taktsignals von dem Steuerprozessor (1) über die Taktleitung (CK) zu dem Hilfsprozessor (2) und zur gleichen Zeit Übertragung von Steuer- oder Daten-Rahmen von dem Steuerprozessor (1) zu dem Hilfsprozessor (2) oder übertragung von Daten-Rahmen von dem Hilfsprozessor (2) zu dem Steuerprozessor (1), wobei der Hilfsprozessor sein Lesen oder übertragen von Rahmen mit dem Steuerprozessor (1) in Abhängigkeit des Taktsignals synchronisiert;wobei jeder Rahmen ein Steuerteil (CTRL) aufweist, um einen Rahmen als einen Steuer-Rahmen oder als einen Daten-Rahmen zu identifizieren, und wobei das Steuerteil einer Vielzahl von Daten-Bits (D0-D7) folgt, die an Leerlauf-Bits (I1, I2) angebunden sind, wobei sowohl der Hilfsprozessor als auch der Steuerprozessor die Datenleitung für eine Änderung in der Richtung der Datenübertragung während jedes Leerlauf-Bits frei machen.
- 2A method according to claim 1, in which each control frame includes as one of its data bits (D0-D7) a select bit which identifies the control frame as a slave select frame or as a slave control frame;each slave select frame including as a further one of its data bits a reset bit, when the reset bit takes one predetermined value the transmission of the slave select frame to the slave processor (2) causing the slave processor (2) to reset to a predetermined state otherwise the transmission of the slave select frame to the slave processor (2) selecting or de-selecting the slave processor (2);each slave control frame including as one or more of its data bits data transmission parameters to set the slave processor (2) to read or write one or more data frames subsequent to the current control frame. Procédé selon la revendication 1, dans lequel chaque bloc de commande comprend comme un de ses bits de données (DO-D7) un bit de sélection qui identifie le bloc de commande comme bloc de sélection d'esclave ou comme bloc de commande d'esclave;chaque bloc de sélection d'esclave comprenant comme autre de ses bits de données un bit de réinitialisation, et lorsque le bit de réinitialisation prend une valeur prédéterminée, la transmission du bloc de sélection d'esclave au processeur esclave (2) provoque la réinitialisation du processeur esclave (2) dans un état prédéterminé, et dans les autres cas, provoque la transmission du bloc de sélection d'esclave au processeur esclave (2), pour sélectionner ou dé-sélectionner la sélection du processeur esclave (2);chaque bloc de commande d'esclave comprenant comme un ou plusieurs de ses bits de données des paramètres de transmission de données pour régler le processeur esclave (2) pour qu'il lise ou écrive un ou plusieurs blocs de données à la suite du bloc de commande en cours. Verfahren nach Anspruch 1, wobei jeder Steuer-Rahmen als eines seiner Daten-Bits (D0-D7) ein Auswahl-Bit, das den Steuer-Rahmen als einen Hilfsauswahl-Rahmen oder als ein Hilfssteuer-Rahmen identifiziert, umfaßt;wobei jeder Hilfsauswahl-Rahmen als ein weiteres eines seiner Daten-Bits ein Reset-Bit umfaßt, wenn das Reset-Bit einen vorbestimmten Wert der übertragung des Hilfsauswahl-Rahmens zu dem Hilfsprozessor (2) annimmt, was bewirkt, daß sich der Hilfsprozessor (2) auf einen vorbestimmten Zustand zurücksetzt, wobei ansonsten die Übertragung des Hilfsauswahl-Rahmens zu dem Hilfsprozessor (2) den Hilfsprozessor auswählt oder deselektiert;wobei jeder Hilfssteuer-Rahmen als eines oder mehrerer seiner Daten-Bits Datenübertragungsparameter umfaßt, um den Hilfsprozessor (2) so einzustellen, um einen oder mehrere Daten-Rahmen auf den momentanen Steuer-Rahmen folgend zu lesen oder zu schreiben.
- 3A method according to claim 2, in which the transmission parameters for the slave control frame include a read/write bit to determine whether the slave processor reads or writes data in the succeeding data frame and a single/multi bit to determine whether the slave transmits or receives single or multiple units of data in the subsequent data frames. Procédé selon la revendication 2, dans lequel les paramètres de transmission pour le bloc de commande d'esclave comprennent un bit de lecture/écriture, pour déterminer si le processeur esclave lit ou écrit des données dans le bloc de données suivant, et un bit simple/multiple, pour déterminer si l'esclave transmet ou reçoit une ou plusieurs unités de données dans les blocs de données suivants. Verfahren nach Anspruch 2, wobei die Übertragungsparameter für den Hilfssteuer-Rahmem ein Lese/Schreib-Bit aufweisen, um zu bestimmen, ob der Hilfsprozessor Daten in dem darauffolgenden Daten-Rahmen liest oder schreibt und ein Einzel/Vielfach-Bit umfaßt, um zu bestimmen, ob die Hilfseinheit einzelne oder Vielfach-Einheiten von Daten in dem darauffolgenden Daten-Rahmen überträgt oder empfängt.
- 4A method according to claim 2 or 3, in which the data bits of the slave select frame include an identification field, the slave processor (2) being assigned a unique identification number, the slave processor (2) in response to any slave select frame including its unique identification number subsequently transmitting to the control processor (1) a data frame including a predetermined information field. Procédé selon la revendication 2 ou 3, dans lequel les bits de données du bloc de sélection d'esclave comprennent un champ d'identification, le processeur esclave (2) ayant reçu un numéro d'identification unique, tandis qu'en réponse à un bloc quelconque de sélection d'esclave comprenant son numéro d'identification unique, le processeur esclave (2) transmet ensuite au processeur de commande (1) un bloc de données comprenant un champ prédéterminé d'informations. Verfahren nach Anspruch 2 oder 3, wobei die Daten-Bits des Hilfseinheitauswahl-Rahmens ein Identifikationsfeld umfassen, wobei der Hilfsprozessor (2) einer einzigartigen Identifikations-Nummer zugeordnet ist, wobei der Hilfsprozessor (2) in Abhängigkeit irgendeines Hilfsauswahl-Rahmens, der seine einzigartige Identifikations-Nummer umfaßt, darauffolgend zu dem Steuerprozessor (1) einen Daten-Rahmen überträgt, der ein vorbestimmtes Informationsfeld umfaßt.
- 5A method according to claim 4, in which the control processor (1) adjusts the rate of the clock output to the maximum rate compatible with a particular slave processor (2) in response to the information field received from the slave processor (2). Procédé selon la revendication 4, dans lequel le processeur de commande (1) ajuste la vitesse de la sortie de l'horloge à la vitesse maximale compatible avec un processeur esclave (2) particulier, en réponse au champ d'informations reçu du processeur esclave (2). Verfahren nach Anspruch 4, wobei der Steuerprozessor (1) die Rate des Taktausgangs auf die maximale Rate, die mit einem bestimmten Hilfsprozessor (2) in Abhängigkeit des Informationsfelds, das von dem Hilfsprozessor (2) empfangen wird, einstellt.
- 6A system for communicating serial data comprising; a control processor (1);a slave processor (2); andand a serial interface (3) linking the control processor to the slave processor, the serial interface comprising a bi-directional data line (DATA) and a uni-directional clock line (CK), the control processor including clock means arranged to transmit a clock signal over the clock line (CK) to the slave processor (2) while at the same time the control processor (1) transmits control or data frames to the slave processor (2) or receives data frames transmitted from the slave processor (2);the control processor (1) including transmitting means arranged to transmit control frames and data frames onto the interface and reading means arranged to read data frames from the interface;the slave processor including transmitting means arranged to transmit data frames onto the interface and reading means arranged to read control frames and data frames from the interface;the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion (CTRL) identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), both the slave (2) and the control processor (1) freeing the data line for a change in the direction of data transmission during each idle bit, (I1, I2) the slave processor (2) being arranged to receive the clock signal from the clock line and to synchronise the operation of the slave processor transmitting and reading means with the control processor (1) in response to the clock signal. System zum Kommunizieren serieller Daten, das aufweist:einen Steuerprozessor (1);einen Hilfsprozessor (2): undeine serielle Schnittstelle (3), die den Steuerprozessor mit dem Hilfsprozessor verbindet, wobei die serielle Schnittstelle eine bidirektionale Datenleitung (DATA) und eine unidirektionale Taktleitung (CK) aufweist, wobei der Steuerprozessor eine Takteinrichtung umfaßt, die so angeordnet ist, um ein Taktsignal über die Taktleitung (CK) zu dem Hilfsprozessor (2) zu übertragen, während zur gleichen Zeit der Steuerprozessor (1) Steuer- oder Daten-Rahmen zu dem Hilfsprozessor (2) überträgt oder Daten-Rahmen, die von dem Hilfsprozessor (2) übertragen sind, empfängt;wobei der Steuerprozessor (1) Übertragungseinrichtungen, die so angeordnet sind, um Steuer-Rahmen und Daten-Rahmen auf der Schnittstelle zu übertragen, und Leseeinrichtungen umfaßt, die so angeordnet sind, um Daten-Rahmen von der Schnittstelle zu lesen;wobei der Hilfsprozessor Übertragungseinrichtungen, die so angeordnet sind, um Daten-Rahmen auf der Schnittstelle zu übertragen, und Leseeinrichtungen, die so angeordnet sind, um Steuer-Rahmen und Daten-Rahmen von der Schnittstelle zu lesen, umfaßt;wobei die Übertragungseinrichtungen und Leseeinrichtungen so angeordnet sind, um jeweils Rahmen, die ein Steuerteil (CTRL) aufweisen, das einen Rahmen als einen Steuer-Rahmen oder als einen Daten-Rahmen identifiziert, zu übertragen und zu lesen, und wobei dem Steuerbereich eine Vielzahl von Daten-Bits (D0-D7) folgt, die durch Leerlauf-Bits (I1, I2) angebunden sind, wobei sowohl die Hilfs- (2) als auch der Steuerprozessor (1) die Datenleitung für eine Änderung in der Richtung einer Datenübertragung während jedes Leerlauf-Bits (I1, I2) freigeben, wobei der Hilfsprozessor (2) so angeordnet ist, um das Taktsignal von der Taktleitung zu empfangen und den Betrieb der Hilfsprozessor-Übertragungs- und Leseeinrichtungen mit dem Steuerprozessor (1) in Abhängigkeit des Taktsignals zu synchroniseren. Système pour communiquer des données série, comprenant: un processeur de commande (1);un processeur esclave (2);etun interface série (3) reliant le processeur de commande au processeur esclave, l'interface série comprenant une ligne de données (DATA) bidirectionnelle et une ligne d'horloge (CK) unidirectionnelle, le processeur de commande comprenant des moyens d'horloge agencés pour transmettre par la ligne d'horloge (CK) un signal d'horloge au processeur esclave (2) pendant qu'en même temps le processeur de commande (1) transmet des blocs de commande ou des blocs de données au processeur esclave (2) ou reçoit des blocs de données transmis par le processeur esclave (2);le processeur de commande (1) comprenant un moyen de transmission agencé pour transmettre des blocs de commande et des blocs de données sur l'interface et un moyen de lecture agencé pour lire des blocs de données provenant de l'interface;le processeur esclave comprend un moyen de transmission agencé pour transmettre des blocs de données sur l'interface et un moyen de lecture agencé pour lire des blocs de commande et des blocs de données provenant de l'interface;le moyen de transmission et le moyen de lecture étant agencés respectivement pour transmettre et pour lire des blocs comprenant une partie de commande (CTRL) identifiant un bloc comme bloc de commande ou comme bloc de données, et après la partie de commande, plusieurs bits de données (D0-D7) délimités par des bits vides (I1, I2), tant le processeur esclave (2) que le processeur de commande (1) libérant pendant chaque bit vide (I1, I2) la ligne de données pour un changement de la direction de transmission de données, le processeur esclave (2) étant agencé pour recevoir le signal d'horloge par la ligne d'horloge et pour synchroniser le fonctionnement du moyen de transmission et du moyen de lecture du processeur esclave sur le processeur de commande (1), en réponse au signal d'horloge.
- 7A system according to claim 6, in which each control frame includes as one of its data bits (D0-D7) a select bit which identifies the control frame as a slave select frame or as a slave control frame;each slave select frame including as a further one of its data bits (D0-D7) a reset bit, the slave processor (2) being arranged to reset to a predetermined state when the reset bit takes one predetermined value, and otherwise to be selected or de-selected in response to the reading of a slave select frame by the slave processor reading means;each slave control frame including as one or more of its data bits (D0-D7) data transmission parameters, the slave processor being set in response to the data transmission parameters to read or write one or more data frames subsequent to the current control frame. System nach Anspruch 6, wobei jeder Steuer-Rahmen als eines seiner Daten-Bits (D0-D7) ein Auswahl-Bit umfaßt, das den Steuer-Rahmen als einen Hilfsauswahl-Rahmen oder als einen Hilfssteuer-Rahmen identifiziert;wobei jeder Hilfsauswahl-Rahmen als ein weiteres eines seiner Daten-Bits (D0-D7) ein Rücksetz-Bit umfaßt, wobei der Hilfsprozessor (2) so angeordnet ist, um auf einen vorbestimmten Zustand zurückzusetzen, wenn das Rücksetz-Bit einen vorbestimmten Wert annimmt, und um andererseits in Abhängigkeit von dem Lesen eines Hilfsauswahl-Rahmens durch die Hilfsprozessor-Leseeinrichtung ausgewählt oder deselektiert zu werden;wobei jeder Hilfssteuer-Rahmen als eines oder mehrere seiner Daten-Bits den D0-D7-Daten-Übertragungsparameter umfaßt, wobei der Hilfsprozessor in Abhängigkeit der Datenübertragungsparameter eingestellt wird, um einen oder mehrere Daten-Rahmen auf den momentanen Steuer-Rahmen folgend zu lesen oder zu schreiben. Système selon la revendication 6, dans lequel chaque bloc de commande comprend comme l'un de ses bits de données (D0-D7) un bit de sélection qui identifie le bloc de commande comme bloc de sélection d'esclave ou comme bloc de commande d'esclave;chaque bloc de sélection d'esclave comprenant comme autre de ses bits de données (D0-D7) un bit de réinitialisation, le processeur esclave (2) étant agencé pour être réinitialisé dans un état prédéterminé lorsque le bit de réinitialisation prend une valeur prédéterminée, et pour être, dans les autres cas, sélectionné ou désélectionné, en réponse à la lecture d'un bloc de sélection d'esclave par le moyen de lecture du processeur esclave;chaque bloc de commande d'esclave comprenant comme un ou plusieurs de ses bits de données (D0-D7) des paramètres de transmission de données, le processeur esclave étant réglé en réponse aux paramètres de transmission de données pour qu'il lise ou écrive un ou plusieurs blocs de données à la suite du bloc de commande en cours.
- 8A system according to claim 7, in which the transmission parameters for the slave control frame include a read/write bit, the slave processor being arranged to read or write data in the succeeding data frame according to the value of the read/write bit;and a single/multi bit, the slave processor being arranged to read or write single or multiple units of data in the subsequent data frame or frames according to the value of the single/multi bit. System nach Anspruch 7, wobei die Übertragungsparameter für den Hilfssteuer-Rahmen ein Lese/Schreib-Bit umfassen, wobei der Hilfsprozessor so angeordnet ist, um Daten in dem darauffolgenden Daten-Rahmen gemäß dem Wert des Lese/Schreib-Bit's zu lesen oder zu schreiben;und ein Einzel/Vielfach-Bit umfaßt, wobei der Hilfsprozessor so angeordnet ist, um einzelne oder vielfache Einheiten von Daten in den darauffolgenden Daten-Rahmen oder den Rahmen gemäß dem Wert des Einzel/Vielfach-Bits zu lesen oder zu schreiben. Système selon la revendication 7, dans lequel les paramètres de transmission pour le bloc de commande d'esclave comprennent un bit de lecture/écriture, le processeur esclave étant agencé pour lire ou pour écrire des données dans le bloc de données suivant en fonction de la valeur du bit de lecture/écriture;et un bit simple/multiple, le processeur esclave étant agencé pour lire ou écrire une ou plusieurs unités de données dans le ou les blocs de données suivants en fonction de la valeur du bit simple/multiple.
- 9A system according to claim 7 or 8, in which the data bits of the slave select frame include an identification field, the slave processor (2) connected to the interface (3) including means to store a unique identification number and being arranged in response to any slave select frame including as its identification field the said unique identification number subsequently to transmit to the control processor a data frame including a pre-determined information field. System nach Anspruch 7 oder 8, wobei die Daten-Bits für den Hilfsauswahl-Rahmen ein Identifikationsfeld umfassen, wobei der Hilfsprozessor (2) mit der Schnittstelle (3) verbunden ist, die Einrichtungen umfaßt, um eine einzigartige Identifikations-Nummer zu speichern und die in Abhängigkeit von irgendeinem Hilfsauswahl-Rahmen angeordnet ist, wobei sie als ihr Identifikationsfeld die einzigartige Identifikations-Nummer umfaßt, um zu dem Steuerprozessor darauffolgend einen Daten-Rahmen, der ein vorbestimmtes Informationsfeld umfaßt, zu übertragen. Système selon la revendication 7 ou 8, dans lequel les bits de données du bloc de sélection d'esclave comprennent un champ d'identification, le processeur esclave (2) relié à l'interface (3) comprenant un moyen pour conserver un numéro d'identification unique et étant agencé pour, en réponse à un bloc quelconque de sélection d'esclave comprenant comme champ d'identification ledit numéro d'identification unique, transmettre ensuite au processeur de commande un bloc de données comprenant un champ d'informations prédéterminé.
- 10A system according to claim 9, in which the clock means are variable and the control processor is arranged to adjust the rate of the clock to the maximum rate compatible with a particular slave processor (2) in response to the information field received from that slave processor (2). System nach Anspruch 9, wobei die Takteinrichtungen variabel sind und der Steuerprozessor so angeordnet ist, um die Rate des Takts auf die maximale Rate, die mit einem bestimmten Hilfsprozessor (2) in Abhängigkeit des Informationsfelds, das von dem Hilfsprozessor (2) empfangen wird, einzustellen. Système selon la revendication 9, dans lequel les moyens d'horloge sont modifiables, et le processeur de commande est agencé pour ajuster la vitesse de l'horloge à la vitesse maximale compatible avec un processeur esclave (2) particulier, en réponse au champ d'informations reçu de ce processeur esclave (2).
- 11A control processor for communicating serial data to a slave processor via a serial interface comprising a bi-directional data line (DATA) and a uni-directional clock line (CK);the control processor comprising clock means arranged, in use, to transmit a clock signal over the clock line (CK) for synchronising transmitting and reading means in the slave and control processors;the said transmitting means arranged, in use, to transmit control frames and data frames onto the serial interface;andthe said reading means arranged, in use, to read data frames from the serial interface;the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion (CTRL) identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), the control processor (1) freeing the data line for a change in the direction of data transmission during each idle bit (I1, I2). Processeur de commande pour communiquer des données série à un processeur esclave par l'intermédiaire d'un interface série, comprenant une ligne de données bidirectionnelle (DATA) et une ligne d'horloge unidirectionnelle (CK);le processeur de commande comprenant des moyens d'horloge agencés, en utilisation, pour transmettre un signal d'horloge sur la ligne d'horloge (CK), pour synchroniser le moyen de transmission et le moyen de lecture du processeur esclave et du processeur de commande;ledit moyen de transmission étant agencé, en utilisation, pour transmettre des blocs de commande et des blocs de données sur l'interface série;etledit moyen de lecture étant agencé, en utilisation, pour lire des blocs de données provenant de l'interface série;le moyen de transmission et le moyen de lecture étant agencés respectivement pour transmettre et pour lire des blocs comprenant une partie de commande (CTRL) identifiant un bloc comme bloc de commande ou comme bloc de données, et après la partie de commande, plusieurs bits de données (D0-D7) délimités par des bits vides (I1, I2) le processeur de commande (1) libérant la ligne de données pour un changement de la direction de la transmission de données pendant chaque bit vide (I1, I2). Steuerprozessor zum Kommunizieren von seriellen Daten zu einem Hilfsprozessor über eine serielle Schnittstelle, die eine bidirektionale Datenleitung (DATA) und eine unidirektionale Taktleitung (CK) aufweist;wobei der Steuerprozessor eine Takteinrichtung aufweist, die bei Benutzung so angeordnet ist, um ein Taktsignal über die Taktleitung (CK) für ein Synchronisieren der Übertragungs- und Leseeinrichtung in dem Hilfsund dem Steuerprozessor zu übertragen;wobei die Übertragungseinrichtung in Benutzung so angeordnet ist, um Steuer-Rahmen und Daten-Rahmen auf der seriellen Schnittstelle zu übertragen;undwobei die Leseeinrichtung bei Benutzung so angeordnet ist, um Daten-Rahmen von der seriellen Schnittstelle zu lesen;wobei die Übertragungseinrichtung und die Leseeinrichtung so angeordnet sind, um jeweilige Rahmen zu übertragen und zu lesen, die einen Steuerbereich (CTRL) aufweisen, der einen Rahmen als einen Steuer-Rahmen oder als einen Daten-Rahmen identifiziert, und wobei dem Steuerbereich eine Vielzahl von Daten-Bits (D0-D7) folgt, die durch Leerlauf-Bits (I1, I2) angebunden sind, wobei der Steuerprozessor (1) die Datenleitung für eine Änderung in der Richtung der Datenübertragung während jedes Leerlauf-Bits (I1, I2) freigibt.
- 12A hand-held or lap-top computer including a control processor according to claim 11. Ein in der Hand haltbarer oder Laptop-Computer, der einen Steuerprozessor gemäß Anspruch 11 umfaßt. Ordinateur à main ou portable comprenant un processeur de commande selon la revendication 11.
- 13A slave processor for communicating serial data to a control processor via a serial interface comprising a bi-directional data line (DATA) and a uni-directional clock line (CK), the slave processor comprising transmitting means arranged to transmit data frames onto the serial interface and reading means arranged to read control frames and data frames from the serial interface;the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion (CTRL) identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), the slave processor (2) freeing the data line for a change in the direction of data transmission during each idle bit (I1, I2),the slave processor (2) being arranged in use to receive the clock signal from the clock line and to synchronise the operation of the slave processor transmitting and reading means with a control processor (1) in response to the clock signal. Hilfsprozessor zum Kommunizieren von seriellen Daten zu einem Steuerprozessor über eine serielle Schnittstelle, der eine bidirektonale Datenleitung (DATA) und eine unidirektionale Taktleitung (CK) aufweist, wobei der Hilfsprozessor Übertragungseinrichtungen, die so angeordnet sind, um Daten-Rahmen auf der seriellen Schnittstelle zu übertragen, und Leseeinrichtungen aufweist, die so angeordnet sind, um Steuer-Rahmen und Daten-Rahmen von der seriellen Schnittstelle zu lesen;wobei die Übertragungseinrichtungen und Leseeinrichtungen so angeordnet sind, um jeweils Rahmen zu übertragen und zu lesen, die einen Steuerbereich (CTRL) aufweisen, der einen Rahmen als einen Steuer-Rahmen oder einen Daten-Rahmen identifiziert, und wobei dem Steuerbereich eine Vielzahl von Daten-Bits (D0-D7) folgt, die durch Leerlauf-Bits (I1, I2) angebunden sind, wobei der Hilfsprozessor (2) die Datenleitung für eine Änderung in der Richtung der Datenübertragung während jedes Leerlauf-Bits (I1, I2) freigibt,wobei der Hilfsprozessor (2) bei Verwendung so angeordnet ist, um das Taktsignal von der Taktleitung zu empfangen und den Betrieb der Hilfsprozessor-Übertragungs- und Leseeinrichtung mit einem Steuerprozessor (1) in Abhängigkeit des Taktsignals zu synchronisieren. Processeur esclave pour communiquer des données série à un processeur de commande par l'intermédiaire d'un interface série, comprenant une ligne de données bidirectionnelle (DATA) et une ligne d'horloge unidirectionnelle (CK), le processeur esclave comprenant un moyen de transmission agencé pour transmettre des blocs de données sur l'interface série et un moyen de lecture agencé pour lire des blocs de commande et des blocs de données provenant de l'interface série;le moyen de transmission et le moyen de lecture étant agencés respectivement pour transmettre et pour lire des blocs comprenant une partie de commande (CTRL) identifiant un bloc comme bloc de commande ou comme bloc de données, et après la partie de commande, plusieurs bits de données (D0-D7) délimités par des bits vides (I1, I2), le processeur esclave (2) libérant la ligne de données pour un changement de direction de la transmission de données pendant chaque bit vide (I1, I2),le processeur esclave (2) étant agencé, en utilisation, pour recevoir le signal d'horloge par la ligne d'horloge et pour synchroniser le fonctionnement du moyen de lecture et du moyen de transmission du processeur esclave sur un processeur de commande (1), en réponse au signal d'horloge.
- 14A peripheral for a hand-held or lap-top computer including a slave processor according to claim 13. Peripherie-Einrichtung für einen in der Hand haltbaren oder Laptop-Computer, der einen Hilfsprozessor gemäß Anspruch 13 umfaßt. Périphérique pour un ordinateur à main ou un ordinateur portable comprenant un processeur esclave selon la revendication 13.
- 15A peripheral according to claim 14, in which the peripheral is a mass storage device. Peripherie-Einrichtung gemäß Anspruch 14, in der die Peripherie-Einrichtung eine Massenspeichervorrichtung ist. Périphérique selon la revendication 14, dans lequel le périphérique est un dispositif de mémoire de masse.
- 16A peripheral according claim 15 in which the mass storage device includes an FE2PROM. Peripherie-Einrichtung gemäß Anspruch 15, wobei die Massenspeichervorrichtung einen FE2PROM umfaßt. Périphérique selon la revendication 15, dans lequel le dispositif de mémoire de masse comprend une FE2PROM.
- 17A peripheral device according to claim 15 further comprising means (9) electrically connected between the serial interface (3) and the FE2PROM for applying an erase voltage to the FE2PROM in response to a control signal from the slave processor (2). Dispositif périphérique selon la revendication 15 comprenant en outre un moyen (9) raccordé électriquement entre l'interface série (3) et la FE2PROM, pour appliquer une tension d'effacement à la FE2PROM, en réponse à un signal de commande provenant du processeur esclave (2). Peripherie-Einrichtung gemäß Anspruch 15, die weiterhin eine Einrichtung (19) aufweist, die elektrisch mit der seriellen Schnittstelle (3) und dem FE2PROM zum Beaufschlagen einer Löschspannung auf den FE2PROM in Abhängigkeit eines Steuersignals von dem Hilfsprozessor (2) verbunden ist.
Independent claims17
146 paragraphs in 3 sections, as filed
The present invention relates to the transmission of serial data and in particular to the communication of data between a control processor and one or more slave processors connected to a two wire serial bus.
It is known, for example, to use a serial interface in which data is transmitted between processors over a single bi-directional data line. US-A-4556958 discloses a smart card data carrier which is arranged to be coupled to a master processor in a data processing station over a serial interface. Such an interface has the advantage that since it requires only a few conductors it is physically robust and lends itself to miniaturisation.
EP-A-0183273 (NEC Corporation) discloses a prior art serial interface system in which a control processor termed a "master unit" communicates on a serial interface with a plurality of slave units. The interface comprises separate lines for, respectively, transmission of a clock from the master unit to the slave units, transmission of data from the master unit to the slave units, and for receiving data from the slave units in the master unit. An additional control path may be provided for use by the slave units to activate the master unit. The operation of the slave units in reading data is synchronised to the transmissions from the master unit in response to the clock signal on the clock line.
Serial interfaces suffer one major disadvantage in that they offer less bandwidth than an equivalent parallel interface. While this disadvantage may not be of significance in a specialised application such as smart cards it presents a major barrier to the adoption of a serial interface as a general purpose interface in, for example, a personal computer. Such a general purpose interface is typically used to connect a computer to peripherals such as mass storage devices or modems and so requires a wide bandwidth if the interface is not to become a bottleneck which seriously restricts the performance of the computer.
According to a first aspect of the present invention, a method of communicating data between a control processor and a slave processor over a serial interface comprising a bi-directional data line (DATA) and a unit-directional clock line (CK), comprises: <ul id="ul0001" list-style="none" compact="compact"><li>transmitting a clock signal from the control processor over the clock line (CK) to the slave processor, and at the same time transmitting control or data frames from the control processor to the slave processor or transmitting data frames from the slave processor to the control processor, the slave processor synchronising its reading or transmitting of frames with the control processor in response to the clock signal,</li><li>each frame comprising a control portion (CTRL) to identify a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), both the slave and the control processor freeing the data line for a change in the direction of data transmission during each idle bit.</li></ul>
Preferably each control frame includes as one of its data bits a select bit which identifies the control frame as a slave select frame or as a slave control frame; <ul id="ul0002" list-style="none" compact="compact"><li>each slave select frame including as a further one of its data bits a reset bit, when the resent bit takes one predetermined value the transmission of the slave select frame to the slave processor causing the slave processor to reset to a predetermined state otherwise the transmission of the slave select frame to the slave processor selecting or de-selecting the slave processor;</li><li>each slave control frame including as one or more of its data bits data transmission parameters to set the slave processor to read or write one or more data frames subsequent to the current control frame.</li></ul>
Although the control processor may be the CPU of a computer incorporating the serial interface it will in general be formed by dedicated logic circuits associated with the interface.
The present invention provides a system which maximises the efficiency with which data is transmitted across a serial interface and by so doing increases the effective bandwidth of the interface to such an extent that it is suitable for use as a general purpose interface in a personal computer.
The transmission of data is governed by a protocol which has a number of features which contribute to the high efficiency of the system. In particular, the protocol is designed to minimise the need for contention procedures and so to increase the proportion of the. available bandwidth which is available for useful data transmission. To this end the slave processor is arranged to function as an essentially passive device which accesses the bus only in response to control signals from the control processor, this serving to remove the possibility of conflict between the control processor and the slave. The efficiency of the control and data transmission procedures is further increased by the provision of two idle bits in each frame, one either end of the stream of data bits. At each idle bit the transmitting processor releases the bus and so provides an opportunity for the other processor to gain access to the bus. The frame structure therefore makes it possible for the direction of data transmission to be changed within the space of a single frame. The presence of an idle bit at the end of the frame after the data bits also makes it possible to transmit frames back-to-back without risk of metastability problems at the transition between frames.
Preferably the transmission parameters for the slave control frame include a read/write bit to determine whether the slave processor reads or writes data in the succeeding data frame and a single/multi bit to determine whether the slave transmits or receives single or multiple units of data in the subsequent data frames.
The units of data may be single bytes or byte pairs and the slave control frame may include a byte/two byte bit to indicate which unit of data is used.
Preferably the data bits of the slave select frame include an ID field, the slave processor connected to the interface being assigned a unique ID number, the slave processor in response to any slave select frame including its unique ID number subsequently transmitting to the control processor a data frame including a predetermined information field.
The slave processor may form part of a wide variety of different peripherals. The transmission of an information field from the slave processor to the control processor enables the control processor to identify the form of peripheral in which the slave processor is embedded and to adjust its operation to tailor the interface to the characteristics of the particular peripheral. When a number of peripherals are conected to the interface at one time a specific slave may be selected by the control processor by use of that slave's ID number. When the system is first booted the control processor may poll all possible ID numbers to determine which peripherals are present.
Preferably the control processor adjusts the rate of the clock output to the maximum rate compatible with a particular slave processor in response to the information field received from the slave processor.
A further important feature of the present system in maximising the efficiency of data transmission across the interface is the use of a variable clock rate which is set to an appropriate value by the master processor in accordance with the needs of the particular peripherals attached to the interface.
According to a second aspect of the present invention a system for communicating serial data comprises; <ul id="ul0003" list-style="none" compact="compact"><li>a control processor;</li><li>a slave processor; and</li><li>a serial interface linking the control processor to the slave processor, the serial interface comprising a bi-directional data line and a uni-directional clock line, the control processor including clock means arranged to transmit a clock signal over the clock line to the slave processor while at the same time the control processor transmits control or data frames to the slave processor or receives data frames transmitted from the slave processor;</li><li>the control processor including transmitting means arranged to transmit control frames and data frames onto the interface and reading means arranged to read data frames from the interface;</li><li>the slave processor including transmitting means arranged to transmit data frames onto the interface and reading means arranged to read control frames and data frames from the interface;</li><li>the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits bounded by idle bits, both the slave and the control processor freeing the data line for a change in the direction of data transmission during each idle bit, the slave processor being arranged to receive the clock signal from the clock line and to synchronise the operation of the slave processor transmitting and reading means with the control processor in response to the clock signal.</li></ul>
According to a third aspect of the present invention, there is provided a control processor for communicating serial data to a slave processor via a serial interface comprising a bi-directional data line (DATA) and a uni-directional clock line (CK); <ul id="ul0004" list-style="none" compact="compact"><li>the control processor comprising clock means arranged, in use, to transmit a clock signal over the clock line (CK) for synchronising transmitting and reading means in the slave and control processors;</li><li>the said transmitting means arranged, in use, to transmit control frames and data frames onto the serial interface; and</li><li>the said reading means arranged, in use, to read data frames from the serial interface;</li><li>the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion (CTRL) identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), the control processor freeing the data line for a change in the direction of data transmission during each idle bit (I1, I2).</li></ul>
According to a fourth aspect of the present invention there is provided a slave processor for communicating serial data to a control processor via a serial interface comprising a bi-directional data line (DATA) and a uni-directional clock line (CK), the slave processor comprising transmitting means arranged to transmit data frames onto the serial interface and reading means arranged to read control frames and data frames from the serial interface; <ul id="ul0005" list-style="none" compact="compact"><li>the transmitting means and reading means being arranged to transmit and read respectively frames comprising a control portion (CTRL) identifying a frame as a control frame or as a data frame, and following the control portion a plurality of data bits (D0-D7) bounded by idle bits (I1, I2), the slave processor freeing the data line for a change in the direction of data transmission during each idle bit (I1, I2),</li><li>the slave processor being arranged in use to receive the clock signal from the clock line and to synchronise the operation of the slave processor transmitting and reading means with a control processor in response to the clock signal.</li></ul>
The present invention also encompasses a hand-held or lap-top computer, or a peripheral for such a computer, including, in the case of the computer, a control processor in accordance with the third aspect of the present invention, or, in the case of the peripheral, including a slave processor in accordance with the fourth aspect of the invention.
The peripheral may be a mass storage device, and more particularly may be an FE<sup>2</sup>PROM.
A system in accordance with the present invention will now be described in detail with reference to the accompanying drawings, in which: <ul id="ul0006" list-style="none" compact="compact"><li>Figure 1 is a block diagram;</li><li>Figure 2.1 to 2.3 are timing diagrams for control, data output and data input frames respectively;</li><li>Figure 3 is a block diagram of a RAM based memory for use in the system of the present invention;</li><li>Figure 4 is a block diagram of a FEEPROM based memory for use in the system of the present invention;</li><li>Figure 5A is a schematic block diagram of a processor configured for a control function;</li><li>Figure 5B is a schematic block diagram of a processor configured for a slave function; and</li><li>Figure 6 is a block diagram of a computer.</li></ul>
A serial data interface comprises a control processor 1, slave processors 2, and a serial bus 3 which communicates data between the control processor 1 and the slaves 2. In the present example, the control processor 1 and the serial bus 3 form part of a general purpose hand-held computer and the slave processors 2 are embedded in external mass storage devices for the computer.
The serial bus 3 consists of two wires, a bi-directional synchronised data line and a uni-directional clock line. The data line may be used to transfer data from the controller 1 to one or more of the slaves 2 or to transfer data from the slaves 2 to the controller 1. The clock line by contrast carries a signal in one direction only, that is from the controller 1 to the slaves 2. The clock is transmitted continuously during the transfer of the data to synchronise the slaves 2 to the controller 1.
Figure 3 shows the structure of a memory PAK incorporating a slave processor 2. A six pin connector 5 couples the PAK to the bus. Four RAMs 4 are connected by address, data and control buses to the slave processor 2, and by a supply line 7 to a battery 6. The PAK of Figure 4 is generally similar in structure but uses FE<sup>2</sup>PROMs 4′ in place of the RAMs. A control unit 9 is provided to control the application of erase voltages.
Data is transferred across the interface using a series of twelve bit frames, each frame including eight data bits. With a nominal clock rate of 1.536 Mhz this is equivalent to a maximum transfer rate of 128 Kbytes/second. The remaining four bits of each frame contain control information.
The operation of the interface is governed by a protocol which is defined in detail below. The protocol consists of two layers. A Physical layer defines the hardware interface and the frame structure. The Transport layer defines system control and register transfers between the controller 1 and the slaves 2. The two layers of the protocol described below are entirely general purpose in nature and by no means limited to the application described in the specific example. Where required, higher level protocols may be built on the two fundamental layers described below to meet the requirements of a specific application or category of applications.
Figures 5A and 5B show schematically the structure of processors suitable for implementing the serial interface protocol. The switches, data and control transmitters, and data and control receivers may be implemented in a suitable logic network or alternatively may be provided by appropriate programming of a microprocessor. In the case of the slave processor shown in Figure 5B, the information field, and identification store may be provided by a dedicated region of read only memory within the processor. The manner in which the different switches within the slave processor are set in response to incoming data from the control processor is set out below in the detail description of the serial interface protocol.
Figure 6 is a diagram showing a computer which may, for example, be a hand held or lap top computer such as that sold by the assignees as the PSION MC400. In the example shown, a peripheral in the form of a FE<sup>2</sup>PROM mass storage device is fitted to the computer. The serial interface links the FE<sup>2</sup>PROM via a serial bus 3 to the interface control processor 1. The CPU addresses the contents of the FE<sup>2</sup>PROM via the serial interface.
SERIAL INTERFACE PROTOCOL
Physical Layer
The physical layer of the protocol defines hardware requirements, low level frame structure and timing for the interface.
Hardware Interface
This consists of two lines that switch at 5V CMOS voltage levels:- <ul id="ul0007" list-style="none" compact="compact"><li>1. CLK - A clock input from the controller to the slaves. Nominally 1.536Mhz.</li><li>2. DATA - A bi-directional synchronous data line.</li></ul>
Clock Line
This line is used to clock synchronously data between the controller and slaves. It is always output from the controller.
Rest State
The clock should be active only during the transfer of data. At all other times it is tristate pulled low.
Clock Timing Parameters
The clock line timing is shown in figure 2.1. <tables id="tabl0001" num="0001"><table frame="all"><tgroup cols="5" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="31.50mm" /><colspec colnum="2" colname="col2" colwidth="31.50mm" /><colspec colnum="3" colname="col3" colwidth="31.50mm" /><colspec colnum="4" colname="col4" colwidth="31.50mm" /><colspec colnum="5" colname="col5" colwidth="31.50mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="left">Symbol</entry><entry namest="col2" nameend="col2" align="left">Parameter</entry><entry namest="col3" nameend="col3" align="center">Min</entry><entry namest="col4" nameend="col4" align="center">Typ</entry><entry namest="col5" nameend="col5" align="center">Max</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Tckh</entry><entry namest="col2" nameend="col2" align="left">Width of Clock High</entry><entry namest="col3" nameend="col3" align="right">200</entry><entry namest="col4" nameend="col4" align="right">260</entry><entry namest="col5" nameend="col5" align="right">- ns</entry></row><row><entry namest="col1" nameend="col1" align="left">Tckl</entry><entry namest="col2" nameend="col2" align="left">Width of Clock Low</entry><entry namest="col3" nameend="col3" align="right">350</entry><entry namest="col4" nameend="col4" align="right">391</entry><entry namest="col5" nameend="col5" align="right">- ns</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">Fck</entry><entry namest="col2" nameend="col2" align="left">Clock Frequency</entry><entry namest="col3" nameend="col3" /><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" align="right">1.536 Mhz</entry></row></tbody></tgroup></table></tables>
Data Line
This is a bi-directional line used to transfer data synchronously between the controller and slaves.
The direction of the data line is not determined by the physical layer but by the control information in the transport layer. This is described below.
Rest State
When no data transfers are in progress the data line is always set to input on both the controller and slaves. This line is pulled low.
Data Timing Parameters
The data line timings are shown in figure 2.1. <tables id="tabl0002" num="0002"><table frame="all"><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row><entry namest="col1" nameend="col4" align="left">Data Received by Controller</entry></row><row><entry namest="col1" nameend="col1" align="left">Symbol Parameter</entry><entry namest="col2" nameend="col2" align="left">Min</entry><entry namest="col3" nameend="col3" align="center">Typ</entry><entry namest="col4" nameend="col4" align="center">Max</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Trdset Data Set-Up Time</entry><entry namest="col2" nameend="col2" align="left">50</entry><entry namest="col3" nameend="col3" /><entry namest="col4" nameend="col4" align="right">ns</entry></row><row><entry namest="col1" nameend="col1" align="left">Trdhld Data Hold Time</entry><entry namest="col2" nameend="col2" align="left">10</entry><entry namest="col3" nameend="col3" /><entry namest="col4" nameend="col4" /></row></tbody></tgroup><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row><entry namest="col1" nameend="col4" align="left">Data Transmitted by Controller</entry></row><row><entry namest="col1" nameend="col1" align="left">Symbol Parameter</entry><entry namest="col2" nameend="col2" align="left">Min</entry><entry namest="col3" nameend="col3" align="left">Typ</entry><entry namest="col4" nameend="col4" align="left">Max</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Txdset Data Set-Up Time</entry><entry namest="col2" nameend="col2" align="left">Tclkl-90</entry><entry namest="col3" nameend="col3" /><entry namest="col4" nameend="col4" align="right">ns</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">Txdhld Data Hold Time</entry><entry namest="col2" nameend="col2" align="left">Tclkh</entry><entry namest="col3" nameend="col3" /><entry namest="col4" nameend="col4" align="right">ns</entry></row></tbody></tgroup></table></tables>
Data is changed on the falling edge of clock by the transmit device and latched into the receiving device on the rising edge of clock.
Physical Layer Protocol
The physical layer protocol consists of a series of 12 bit frames.
There are four types of frames:- <ul id="ul0008" list-style="none" compact="compact"><li>1. Null Frame. Transmitted by controller to synchronise slaves.</li><li>2. Control frame. Control information transmitted by controller to slaves.</li><li>3. Data output frame. Data frame transmitted by controller to slaves.</li><li>4. Data input frame. Data frame received by controller from a slave.</li></ul>
Null Frame
This is a special frame transmitted by the controller to ensure all slaves are synchronised. It is generated by transmitting 12 clock pulses with the data line set to input. Since the data line is pulled low this results in 12 zeroes being transmitted.
Frame Structure
The control and data frames have the following structure:- <tables id="tabl0003" num="0003"><table frame="all"><tgroup cols="13" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="12.11mm" /><colspec colnum="2" colname="col2" colwidth="12.11mm" /><colspec colnum="3" colname="col3" colwidth="12.11mm" /><colspec colnum="4" colname="col4" colwidth="12.11mm" /><colspec colnum="5" colname="col5" colwidth="12.11mm" /><colspec colnum="6" colname="col6" colwidth="12.11mm" /><colspec colnum="7" colname="col7" colwidth="12.11mm" /><colspec colnum="8" colname="col8" colwidth="12.11mm" /><colspec colnum="9" colname="col9" colwidth="12.11mm" /><colspec colnum="10" colname="col10" colwidth="12.11mm" /><colspec colnum="11" colname="col11" colwidth="12.11mm" /><colspec colnum="12" colname="col12" colwidth="12.11mm" /><colspec colnum="13" colname="col13" colwidth="12.11mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="center">Bit</entry><entry namest="col2" nameend="col2" align="center">0</entry><entry namest="col3" nameend="col3" align="center">1</entry><entry namest="col4" nameend="col4" align="center">2</entry><entry namest="col5" nameend="col5" align="center">3</entry><entry namest="col6" nameend="col6" align="center">4</entry><entry namest="col7" nameend="col7" align="center">5</entry><entry namest="col8" nameend="col8" align="center">6</entry><entry namest="col9" nameend="col9" align="center">7</entry><entry namest="col10" nameend="col10" align="center">8</entry><entry namest="col11" nameend="col11" align="center">9</entry><entry namest="col12" nameend="col12" align="center">10</entry><entry namest="col13" nameend="col13" align="center">11</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" /><entry namest="col2" nameend="col2" align="center">ST</entry><entry namest="col3" nameend="col3" align="center">CTL</entry><entry namest="col4" nameend="col4" align="center">I1</entry><entry namest="col5" nameend="col5" align="center">D0</entry><entry namest="col6" nameend="col6" align="center">D1</entry><entry namest="col7" nameend="col7" align="center">D2</entry><entry namest="col8" nameend="col8" align="center">D3</entry><entry namest="col9" nameend="col9" align="center">D4</entry><entry namest="col10" nameend="col10" align="center">D5</entry><entry namest="col11" nameend="col11" align="center">D6</entry><entry namest="col12" nameend="col12" align="center">D7</entry><entry namest="col13" nameend="col13" align="center">I2</entry></row></tbody></tgroup></table></tables><ul id="ul0009" list-style="dash" compact="compact"><li>ST Start bit. This bit goes high to indicate the start of a valid frame.</li><li>CTL Control bit. When low indicates this is a control frame. High indicates a data frame.</li><li>I1 Idle bit. Used to turn around direction of data line. Normally low.</li><li>D0-D7 Data bits.</li><li>I2 Idle bit. Used to turn around direction of data line. Normally low.</li></ul>
Control frame
This frame is transmitted from the controller to one or more slaves. The timing of a control frame is shown in figure 2.2.
The data line outputs from the controller throughout the whole frame.
The bits in the frame have the following value in a control frame. <ul id="ul0010" list-style="dash" compact="compact"><li>ST Start bit. This bit goes high to indicate the start of a valid frame.</li><li>CTL Control bit. Low to indicate this is a control frame.</li><li>I1 Idle bit set low.</li><li>D0-D7 Data bits. 8 bits of control information.</li><li>I2 Idle bit set low.</li></ul>
Data Output Frame
This frame is transmitted from the controller to one or more slaves. The timing of a data output frame is shown in figure 2
The data line outputs from the controller throughout the whole frame.
The bits in the frame have the following value in a data output frame. <ul id="ul0011" list-style="dash" compact="compact"><li>ST Start bit. This bit goes high to indicate the start of a valid frame.</li><li>CTL Control bit. High to indicate this is a data frame.</li><li>I1 Idle bit set low.</li><li>D0-D7 Data bits. 8 bits of transmitted data.</li><li>I2 Idle bit set low.</li></ul>
Data Input Frame
This frame is received by the controller from a slave. The timing of a data input frame is shown in Figure 2.3
The data line is output from the controller for cycles 1 and 2 and input to the controller for cycles 4 to 11.
The bits in the frame have the following value in a data input frame. <ul id="ul0012" list-style="dash" compact="compact"><li>ST Start bit. Output from controller. This bit goes high to indicate the start of a valid frame.</li><li>CTL Control bit. Output from controller. High to indicate this is a data frame.</li><li>I1 Idle bit. Used to turn around direction of data line. Both controller and slave should tristate the data line during this bit. Should be low due to pull down resistor on data line. The controller changes the data line from output to input at the end of cycle 2. The slave changes the data line from input to output at the start of cycle 4.</li><li>D0-D7 Data bits. Output from slave 8 bits of data transmitted by slave. Controller sets data line to input during these bits.</li><li>I2 Idle bit. Used to turn around direction of data line. Both controller and slave should tristate the data line during this bit. Should be low due to pull down resistor on data line. The slave changes data line from output to input at the end of cycle 11.</li></ul>
Data Line Direction
The following table summarises the direction of the data line. <tables id="tabl0004" num="0004"><img file="EP0419112B1_D0001.tif" /></tables><tables id="tabl0005" num="0005"><img file="EP0419112B1_D0002.tif" /></tables>
Transport Layer
This section defines the transport level protocol that operates above the Physical layer protocol. The transport layer protocol controls the serial communication between the control processor 1 and the slave processors 2. The following rules apply: <ul id="ul0013" list-style="dash" compact="compact"><li>The interface is controlled by the writing of control bytes from the controller 1 to the slaves 2.</li><li>Control bytes cannot be written by the slaves 2.</li><li>Unsolicited data cannot be sent from a slave to main controller 1.</li></ul>
The transport layer protocol provides that each slave 2 should have a unique identifying number. As described below, a 6 bit field is used for this purpose. In the present example therefore slave l might have the ID 000001 and slave 2 the ID 000010. No slave has an ID of 0 and so control frames with 0 in the ID field maybe used to reset all slaves or to deselect a slave.
The control processor 1 contains two registers to communicate to the slaves. <ul id="ul0014" list-style="none" compact="compact"><li>1. Control register (byte, write only).</li><li>2. Data register (byte or word, read/write) Control bytes are transmitted to the slaves by writing to the control register . The control word can have two distinct formats depending on the setting of bit 7, the select (S) bit. </li></ul>
Slave Select (Select=0)
This mode is for selecting, deselecting and resetting slaves. The format of the control word is as follows:- <tables id="tabl0006" num="0006"><table frame="all"><tgroup cols="9" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="17.50mm" /><colspec colnum="2" colname="col2" colwidth="17.50mm" /><colspec colnum="3" colname="col3" colwidth="17.50mm" /><colspec colnum="4" colname="col4" colwidth="17.50mm" /><colspec colnum="5" colname="col5" colwidth="17.50mm" /><colspec colnum="6" colname="col6" colwidth="17.50mm" /><colspec colnum="7" colname="col7" colwidth="17.50mm" /><colspec colnum="8" colname="col8" colwidth="17.50mm" /><colspec colnum="9" colname="col9" colwidth="17.50mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" /><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">6</entry><entry namest="col4" nameend="col4" align="left">5</entry><entry namest="col5" nameend="col5" align="left">4</entry><entry namest="col6" nameend="col6" align="left">3</entry><entry namest="col7" nameend="col7" align="left">2</entry><entry namest="col8" nameend="col8" align="left">1</entry><entry namest="col9" nameend="col9" align="left">0</entry></row><row><entry namest="col1" nameend="col1" align="left">NAME</entry><entry namest="col2" nameend="col2" align="left">S</entry><entry namest="col3" nameend="col3" align="left">R</entry><entry namest="col4" nameend="col4" align="left">I</entry><entry namest="col5" nameend="col5" align="left">I</entry><entry namest="col6" nameend="col6" align="left">I</entry><entry namest="col7" nameend="col7" align="left">I</entry><entry namest="col8" nameend="col8" align="left">I</entry><entry namest="col9" nameend="col9" align="left">I</entry></row><row><entry namest="col1" nameend="col1" /></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">STATE</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">x</entry><entry namest="col4" nameend="col4" align="left">x</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">x</entry><entry namest="col7" nameend="col7" align="left">x</entry><entry namest="col8" nameend="col8" align="left">x</entry><entry namest="col9" nameend="col9" align="left">x (x=see below)</entry></row></tbody></tgroup></table></tables><dl id="dl0001"><dt>S =</dt><dd>Select bit. CLEAR for select mode</dd><dt>R =</dt><dd>Reset bit.</dd><dt>IIIIII =</dt><dd>6 bit ID field.</dd></dl>
The 6 bit ID field is a property only of the slave. No slave may have an ID of zero, hence there can be 63 different slaves connected to one controller. <tables id="tabl0007" num="0007"><table frame="all"><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row rowsep="1"><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">R</entry><entry namest="col3" nameend="col3" align="center">ID</entry><entry namest="col4" nameend="col4" align="left">Description</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="center">0</entry><entry namest="col4" nameend="col4" align="left">Reset all slaves</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="center">xx<>0</entry><entry namest="col4" nameend="col4" align="left">Reset specific slave with ID = xx</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="center">0</entry><entry namest="col4" nameend="col4" align="left">Deselect slave (does not reset slave)</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="center">xx<>0</entry><entry namest="col4" nameend="col4" align="left">Select slave with ID=xx and read slave info (see below).</entry></row></tbody></tgroup></table></tables>
The Reset function is dependent on the slave. It would normally put the slave into a known state.
Select Slave with ID=xx (S=0,R=1)
This is a special command that causes a slave with ID=xx to transmit to the controller an 8 bit information field. This field depends entirely on the slave but must be non zero. A reply of 0 indicates that there is no slave of the requested ID present.
Slave Control (Select=1)
This mode is for communicating with a slave which has been previously selected using the select slave command described above. The format of the control word in this mode is described below:- <tables id="tabl0008" num="0008"><table frame="all"><tgroup cols="9" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="17.50mm" /><colspec colnum="2" colname="col2" colwidth="17.50mm" /><colspec colnum="3" colname="col3" colwidth="17.50mm" /><colspec colnum="4" colname="col4" colwidth="17.50mm" /><colspec colnum="5" colname="col5" colwidth="17.50mm" /><colspec colnum="6" colname="col6" colwidth="17.50mm" /><colspec colnum="7" colname="col7" colwidth="17.50mm" /><colspec colnum="8" colname="col8" colwidth="17.50mm" /><colspec colnum="9" colname="col9" colwidth="17.50mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" /><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">6</entry><entry namest="col4" nameend="col4" align="left">5</entry><entry namest="col5" nameend="col5" align="left">4</entry><entry namest="col6" nameend="col6" align="left">3</entry><entry namest="col7" nameend="col7" align="left">2</entry><entry namest="col8" nameend="col8" align="left">1</entry><entry namest="col9" nameend="col9" align="left">0</entry></row><row><entry namest="col1" nameend="col1" align="left">NAME</entry><entry namest="col2" nameend="col2" align="left">S</entry><entry namest="col3" nameend="col3" align="left">R/W</entry><entry namest="col4" nameend="col4" align="left">B/2B</entry><entry namest="col5" nameend="col5" align="left">S/M</entry><entry namest="col6" nameend="col6" align="left">X</entry><entry namest="col7" nameend="col7" align="left">X</entry><entry namest="col8" nameend="col8" align="left">X</entry><entry namest="col9" nameend="col9" align="left">X</entry></row><row><entry namest="col1" nameend="col1" /></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">STATE (see below)</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">x</entry><entry namest="col4" nameend="col4" align="left">x</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">x</entry><entry namest="col7" nameend="col7" align="left">x</entry><entry namest="col8" nameend="col8" align="left">x</entry><entry namest="col9" nameend="col9" align="left">x</entry></row></tbody></tgroup></table></tables><dl id="dl0002"><dt>S =</dt><dd>Select bit. Set for slave control.</dd><dt>R/W =</dt><dd>Read/write select. 0 = write 1 = read</dd><dt>B/2B =</dt><dd>Data transfer size. 0 = 1 byte transfer 1 = 2 byte transer</dd><dt>S/M =</dt><dd>Single/Multi transfer mode 0 = single 1 = multi</dd><dt>XXXX =</dt><dd>4 bits of data to slave.</dd></dl>
Note the meaning of the 4 bits of data (XXXX) is entirely dependent on the slave.
The settings of R/W,B/2B,S/M bits in the control word determine the size, type and direction of subsequent data transfers in the following manner:- <tables id="tabl0009" num="0009"><table frame="all"><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">R/W</entry><entry namest="col2" nameend="col2" align="center">B/2B</entry><entry namest="col3" nameend="col3" align="center">S/M</entry><entry namest="col4" nameend="col4" /></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">1) write a single byte to slave</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">2) write a number of single bytes to slave</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">3) write a byte pair to slave</entry></row><row><entry namest="col1" nameend="col1" align="right">0</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">4) write a number of byte pairs to slave</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">5) read a single byte from slave</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">0</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">6) read a number of single bytes from slave</entry></row><row><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">0</entry><entry namest="col4" nameend="col4" align="left">7) read a byte pair from slave</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="right">1</entry><entry namest="col2" nameend="col2" align="right">1</entry><entry namest="col3" nameend="col3" align="right">1</entry><entry namest="col4" nameend="col4" align="left">8) read a number of byte pairs from slave</entry></row></tbody></tgroup></table></tables>
Write a single byte
This command readies the currently selected slave to receive a byte of data and sets up the controller so that the next byte (or the LSB of a word) written to its data register will be transmitted to that slave. Anything further written to the controller's data register will have no effect.
Write a number of single bytes
This command readies the currently selected slave to receive a number of sequential bytes of data. The slave will expect to receive data bytes until another control byte is received. The controller is set up so that the next byte (or the LSB of a word) written to its data register will be transmitted to that slave. All subsequent bytes written to the controller's data register will be transmitted to the slave. This will continue until another byte is written to the controller's control register.
Write a byte pair
This command readies the currently selected slave to receive two bytes of data and sets up the controller so that the next word written to its data register will be transmitted to that slave (LSB first). Anything further written to the controller's data register will have no effect.
Write a number of byte pairs
This command readies the currently selected slave to receive a number of sequential byte pairs of data. The slave will expect to receive byte pairs until another control byte is received. The controller is set up so that the next word written to its data register will be transmitted to that slave (LSB first). All subsequent words written to the controller's data register will be transmitted to the slave. This will continue until another byte is written to the controller's control register.
Read a single byte
This command triggers a byte to be transmitted from the selected slave to the controller. This byte can then be read from the LSB of the controller's data register. Further reads of the controller's data register will return the same data but have no effect on the protocol.
Read a number of single bytes
This command triggers a byte to be transmitted from the selected slave to the controller. This byte can then be read from the LSB of the data register. This read will trigger the next byte to be transmitted to the data register of the controller. All subsequent reads of the controller's data register will trigger further bytes to be transmitted to the controller. This will continue until another byte is written to the controller's control register.
Read a byte pair
This command triggers a byte pair to be transmitted from the selected slave to the controller. This word can then be read from the controller's data register. Further reads of the controller's data register will return the same data but have no effect on the protocol.
Read a number of byte pairs
This command triggers a byte pair to be transmitted from the selected slave to the controller. This word can then be read from the controller's data register. This read will trigger the next byte pair to be transmitted to the data register of the controller. All subsequent reads of the controller's data register will trigger further byte pairs to be transmitted to the controller.
This will continue until another byte is written to the controller's control register.
Timing
The time for commands to be processed and data sent is shown below. The time is given in SIBO pack protocol. clock cycles. The length of a clock cycle is nominally 651 nanoseconds. <tables id="tabl0010" num="0010"><table frame="all"><tgroup cols="2" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="78.75mm" /><colspec colnum="2" colname="col2" colwidth="78.75mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Receive and process the control byte</entry><entry namest="col2" nameend="col2" align="right">12 cycles</entry></row><row><entry namest="col1" nameend="col1" align="left">Byte transfer to or from slave</entry><entry namest="col2" nameend="col2" align="right">12 cycles</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">Byte pair transfer to or from slave</entry><entry namest="col2" nameend="col2" align="right">24 cycles</entry></row></tbody></tgroup></table></tables>
When writing to the controller's data and control registers the following rules apply:- <ul id="ul0015" list-style="none" compact="compact"><li>1. After writing to the control register there must be a delay of at least 12 cycles before the data register is accessed or another control word is written.</li><li>2. To read a word from the data register after the command to read byte pair is issued there must be delay of a least 12 (for control byte)+24 (for the byte pair transfer)= 36 cycles.</li><li>3. To perform a multiple byte pair write there must be a delay of at least 12 cycles after the command is written to the control register before the first word can be written to the data register and a delay of at least 24 cycles between subsequent writes to the data register.</li></ul>
States
A slave can be in one of 5 states. Note a control byte can be received and interpreted at any time. <ul id="ul0016" list-style="none" compact="compact"><li>1. RB Waiting to receive a data byte or control byte.</li><li>2. RBP Waiting to receive a data byte pair or control byte.</li><li>3. TB Waiting to transmit a data byte or control byte.</li><li>4. TBP Waiting to transmit a data byte pair or control byte.</li><li>5. RC Waiting to receive control byte only.</li></ul>
The following table shows the state after each control word is received. <tables id="tabl0011" num="0011"><table frame="all"><tgroup cols="7" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="22.50mm" /><colspec colnum="2" colname="col2" colwidth="22.50mm" /><colspec colnum="3" colname="col3" colwidth="22.50mm" /><colspec colnum="4" colname="col4" colwidth="22.50mm" /><colspec colnum="5" colname="col5" colwidth="22.50mm" /><colspec colnum="6" colname="col6" colwidth="22.50mm" /><colspec colnum="7" colname="col7" colwidth="22.50mm" /><thead valign="top"><row rowsep="1"><entry namest="col1" nameend="col6" align="left">Control Word</entry><entry namest="col7" nameend="col7" rowsep="0" align="center">State</entry></row><row><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">R</entry><entry namest="col3" nameend="col3" align="center">IIIIII</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" /><entry namest="col6" nameend="col6" /><entry namest="col7" nameend="col7" /></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" /><entry namest="col6" nameend="col6" align="left">Reset all</entry><entry namest="col7" nameend="col7" align="left">RC</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left"><>0</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" /><entry namest="col6" nameend="col6" align="left">Reset slave</entry><entry namest="col7" nameend="col7" align="left">RC</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" /><entry namest="col6" nameend="col6" align="left">Deselect slave</entry><entry namest="col7" nameend="col7" align="left">RC</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left"><>0</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" /><entry namest="col6" nameend="col6" align="left">Select slave</entry><entry namest="col7" nameend="col7" align="left">TB</entry></row><row><entry namest="col1" nameend="col1" /></row></tbody></tgroup><tgroup cols="7" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="22.50mm" /><colspec colnum="2" colname="col2" colwidth="22.50mm" /><colspec colnum="3" colname="col3" colwidth="22.50mm" /><colspec colnum="4" colname="col4" colwidth="22.50mm" /><colspec colnum="5" colname="col5" colwidth="22.50mm" /><colspec colnum="6" colname="col6" colwidth="22.50mm" /><colspec colnum="7" colname="col7" colwidth="22.50mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">RW</entry><entry namest="col3" nameend="col3" align="center">B2B</entry><entry namest="col4" nameend="col4" align="center">SM</entry><entry namest="col5" nameend="col5" align="center">XXXX</entry><entry namest="col6" nameend="col6" /><entry namest="col7" nameend="col7" /></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">write byte</entry><entry namest="col7" nameend="col7" align="left">RB</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">write bytes</entry><entry namest="col7" nameend="col7" align="left">RB</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">1</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">write byte pair</entry><entry namest="col7" nameend="col7" align="left">RBP</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">1</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">write byte pairs</entry><entry namest="col7" nameend="col7" align="left">RBP</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">read byte</entry><entry namest="col7" nameend="col7" align="left">TB</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">read bytes</entry><entry namest="col7" nameend="col7" align="left">TB</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">1</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">read byte pair</entry><entry namest="col7" nameend="col7" align="left">TBP</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">1</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">read byte pairs</entry><entry namest="col7" nameend="col7" align="left">TBP</entry></row></tbody></tgroup></table></tables>
In the present example the peripherals connected via the interface to the computer are mass storage devices of a type which have been termed by the inventors "memory paks" (sic) . Each pak contains a region of memory divided into 256 byte tracks. The form and number of memory devices and the number of paks per device is dependent on the size and type of the pak. The slave processor 2 for each pak is termed a "pak chip" SPS (SIBO protocol slave) and allows communication between the control processor 1, that is a SIBO protocol master (SPM) and the memory pak. In the present example slave 1 includes a dedicated pak chip and slave 2 contains an ASIC in PAKCHIP mode.
Pakchip ID and Information Bytes
The PAKCHIP has an ID byte = 1.
ASIC5 in PAKCHIP mode has an ID byte = 2.
The format of the Information Byte returned when the PAKCHIP is selected is as follows:- <tables id="tabl0012" num="0012"><table frame="all"><tgroup cols="8" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="19.68mm" /><colspec colnum="2" colname="col2" colwidth="19.68mm" /><colspec colnum="3" colname="col3" colwidth="19.68mm" /><colspec colnum="4" colname="col4" colwidth="19.68mm" /><colspec colnum="5" colname="col5" colwidth="19.68mm" /><colspec colnum="6" colname="col6" colwidth="19.68mm" /><colspec colnum="7" colname="col7" colwidth="19.68mm" /><colspec colnum="8" colname="col8" colwidth="19.68mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="right">7</entry><entry namest="col2" nameend="col2" align="right">6</entry><entry namest="col3" nameend="col3" align="right">5</entry><entry namest="col4" nameend="col4" align="right">4</entry><entry namest="col5" nameend="col5" align="right">3</entry><entry namest="col6" nameend="col6" align="right">2</entry><entry namest="col7" nameend="col7" align="right">1</entry><entry namest="col8" nameend="col8" align="right">0</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="right">D</entry><entry namest="col2" nameend="col2" align="right">D</entry><entry namest="col3" nameend="col3" align="right">D</entry><entry namest="col4" nameend="col4" align="right">N</entry><entry namest="col5" nameend="col5" align="right">N</entry><entry namest="col6" nameend="col6" align="right">S</entry><entry namest="col7" nameend="col7" align="right">S</entry><entry namest="col8" nameend="col8" align="right">S</entry></row></tbody></tgroup></table></tables><dl id="dl0003" compact="compact"><dt>DDD</dt><dd>Device type</dd><dt>000</dt><dd>RAM pack</dd><dt>001</dt><dd>Flash EPROM pack (INTEL)</dd><dt>010</dt><dd>Flash EPROM pack type 2</dd><dt>011</dt><dd>Flash EPROM pack type 3</dd><dt>100</dt><dd>Flash EPROM pack type 4</dd><dt>101</dt><dd>Flash EPROM pack type 5</dd><dt>110</dt><dd>Read only pak</dd><dt>111</dt><dd>Write protected pak</dd><dt>NN</dt><dd>Number of memory devices</dd></dl><dl id="dl0004" compact="compact"><dt>00</dt><dd>1 device</dd><dt>01</dt><dd>2 devices</dd><dt>10</dt><dd>3 devices</dd><dt>11</dt><dd>4 devices</dd></dl><dl id="dl0005" compact="compact"><dt>SSS</dt><dd>Device size</dd><dt>000</dt><dd>Illegal (indicates no device present)</dd><dt>001</dt><dd>32k</dd><dt>010</dt><dd>64k</dd><dt>011</dt><dd>128k</dd><dt>100</dt><dd>256k</dd><dt>101</dt><dd>512k</dd><dt>110</dt><dd>1M</dd><dt>111</dt><dd>2M</dd></dl>
This info byte is set on a memory pak by a series of pull up and pull down resistors on the databus. It is accessed by reading the databus with none of the memory devices selected.
PAKCHIP selection and resetting
The PAKCHIP ID=1 hence a pak is selected and reset by the following control bytes: <tables id="tabl0013" num="0013"><table frame="all"><tgroup cols="5" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="31.50mm" /><colspec colnum="2" colname="col2" colwidth="31.50mm" /><colspec colnum="3" colname="col3" colwidth="31.50mm" /><colspec colnum="4" colname="col4" colwidth="31.50mm" /><colspec colnum="5" colname="col5" colwidth="31.50mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">R</entry><entry namest="col3" nameend="col3" align="center">IIIIII</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" align="left">ACTION</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">000000</entry><entry namest="col4" nameend="col4" align="left">00</entry><entry namest="col5" nameend="col5" align="left">Reset all slaves</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">000001</entry><entry namest="col4" nameend="col4" align="left">01</entry><entry namest="col5" nameend="col5" align="left">Reset PAKCHIP</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">000000</entry><entry namest="col4" nameend="col4" align="left">40</entry><entry namest="col5" nameend="col5" align="left">Deselect PAKCHIP</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">000001</entry><entry namest="col4" nameend="col4" align="left">41</entry><entry namest="col5" nameend="col5" align="left">Select PAKCHIP</entry></row></tbody></tgroup></table></tables>
ASIC5 selection and resetting
The ASIC5 ID=2 hence a pak is selected and reset by the following control bytes: <tables id="tabl0014" num="0014"><table frame="all"><tgroup cols="5" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="31.50mm" /><colspec colnum="2" colname="col2" colwidth="31.50mm" /><colspec colnum="3" colname="col3" colwidth="31.50mm" /><colspec colnum="4" colname="col4" colwidth="31.50mm" /><colspec colnum="5" colname="col5" colwidth="31.50mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">R</entry><entry namest="col3" nameend="col3" align="center">IIIIII</entry><entry namest="col4" nameend="col4" /><entry namest="col5" nameend="col5" align="left">ACTION</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">000000</entry><entry namest="col4" nameend="col4" align="left">00</entry><entry namest="col5" nameend="col5" align="left">Reset all slaves</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">000010</entry><entry namest="col4" nameend="col4" align="left">02</entry><entry namest="col5" nameend="col5" align="left">Reset PAKCHIP</entry></row><row><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">000000</entry><entry namest="col4" nameend="col4" align="left">40</entry><entry namest="col5" nameend="col5" align="left">Deselect PAKCHIP</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">0</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">000010</entry><entry namest="col4" nameend="col4" align="left">42</entry><entry namest="col5" nameend="col5" align="left">Select PAKCHIP</entry></row></tbody></tgroup></table></tables>
PAKCHIP Structure
The PAKCHIP is organised as a number of 8 or 16 bit registers which may be selected and written to/read from by the SPM: <tables id="tabl0015" num="0015"><table frame="all"><tgroup cols="3" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="52.50mm" /><colspec colnum="2" colname="col2" colwidth="52.50mm" /><colspec colnum="3" colname="col3" colwidth="52.50mm" /><thead valign="top"><row rowsep="1"><entry namest="col1" nameend="col1" align="left">REGISTER</entry><entry namest="col2" nameend="col2" align="center">SIZE</entry><entry namest="col3" nameend="col3" align="center">R/W</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">ADDRESS</entry><entry namest="col2" nameend="col2" align="right">16-BIT</entry><entry namest="col3" nameend="col3" align="left">W</entry></row><row><entry namest="col1" nameend="col1" align="left">DATA</entry><entry namest="col2" nameend="col2" align="right">8-BIT</entry><entry namest="col3" nameend="col3" align="left">R/W</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">CONTROL LINE LATCH</entry><entry namest="col2" nameend="col2" align="right">1-BIT</entry><entry namest="col3" nameend="col3" align="left">W</entry></row></tbody></tgroup></table></tables>
The PAKCHIP also contains a TRACK COUNTER which the SPM cannot access directly.
The registers and the TRACK COUNTER will be described in detail later.
Communicating with a PAKCHIP
To communicate with a PAKCHIP register the SPM must first specify the register and the type of data transfer to take place (ie read or write, byte or double byte, single or multiple mode) by writing a control byte. Subsequent data transfers will take place with the specified register in the mode specified by the control byte until the next control byte is received.
The format of the control byte for communicating with a selected PAKCHIP is as follows: <tables id="tabl0016" num="0016"><table frame="all"><tgroup cols="9" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="17.50mm" /><colspec colnum="2" colname="col2" colwidth="17.50mm" /><colspec colnum="3" colname="col3" colwidth="17.50mm" /><colspec colnum="4" colname="col4" colwidth="17.50mm" /><colspec colnum="5" colname="col5" colwidth="17.50mm" /><colspec colnum="6" colname="col6" colwidth="17.50mm" /><colspec colnum="7" colname="col7" colwidth="17.50mm" /><colspec colnum="8" colname="col8" colwidth="17.50mm" /><colspec colnum="9" colname="col9" colwidth="17.50mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">BIT</entry><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">6</entry><entry namest="col4" nameend="col4" align="left">5</entry><entry namest="col5" nameend="col5" align="left">4</entry><entry namest="col6" nameend="col6" align="left">3</entry><entry namest="col7" nameend="col7" align="left">2</entry><entry namest="col8" nameend="col8" align="left">1</entry><entry namest="col9" nameend="col9" align="left">0</entry></row><row><entry namest="col1" nameend="col1" align="left">NAME</entry><entry namest="col2" nameend="col2" align="left">S</entry><entry namest="col3" nameend="col3" align="left">W/R</entry><entry namest="col4" nameend="col4" align="left">B/2B</entry><entry namest="col5" nameend="col5" align="left">S/M</entry><entry namest="col6" nameend="col6" align="left">A</entry><entry namest="col7" nameend="col7" align="left">A</entry><entry namest="col8" nameend="col8" align="left">A</entry><entry namest="col9" nameend="col9" align="left">A</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">STATE</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">X</entry><entry namest="col4" nameend="col4" align="left">X</entry><entry namest="col5" nameend="col5" align="left">X</entry><entry namest="col6" nameend="col6" align="left">X</entry><entry namest="col7" nameend="col7" align="left">X</entry><entry namest="col8" nameend="col8" align="left">X</entry><entry namest="col9" nameend="col9" align="left">X</entry></row></tbody></tgroup></table></tables> S = Select Bit. Set for PAKCHIP control. W/R = Write/Read select. 0 = write 1 = read B/2B = Data transfer size. 0 = 1 byte transfer 1 = 2 byte transfer (NOT IMPLEMENTED) S/M = Single/Multi transfer mode 0 = single 1 = multi AAAA = Register Address :- <tables id="tabl0017" num="0017"><table frame="all"><tgroup cols="4" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="39.37mm" /><colspec colnum="2" colname="col2" colwidth="39.37mm" /><colspec colnum="3" colname="col3" colwidth="39.37mm" /><colspec colnum="4" colname="col4" colwidth="39.37mm" /><thead valign="top"><row><entry namest="col1" nameend="col1" align="center">AAAA</entry><entry namest="col2" nameend="col2" /><entry namest="col3" nameend="col3" align="center">R/W</entry><entry namest="col4" nameend="col4" align="left">REGISTER</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">0000</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">R/W</entry><entry namest="col4" nameend="col4" align="left">DATA</entry></row><row><entry namest="col1" nameend="col1" align="left">0011</entry><entry namest="col2" nameend="col2" align="left">3</entry><entry namest="col3" nameend="col3" align="left">W</entry><entry namest="col4" nameend="col4" align="left">ADDRESS (16 bit multiple write)</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">0111</entry><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">W</entry><entry namest="col4" nameend="col4" align="left">CONTROL LINE LATCH</entry></row></tbody></tgroup></table></tables>
Single/Multi Transfer Mode
For a PAKCHIP Single and Multi transfers may be specified for any register but the effect of subsequent data transfers will be no different except in the case of the Data Register or the Address register. <ul id="ul0017" list-style="dash"><li>DATA register. In multi-transfer mode the Track Counter will be incremented after a Data Register access.</li><li>ADDRESS register. In multi-transfer mode the first write will set up the LSB (bits 8-15) of the pak address addr. The second write will set up the MSB (bits 16-20) of the pak address and select which device to access.</li></ul>
For specifying communication with a PAKCHIP the following Control Bytes are normally used to specify data transfers:- <tables id="tabl0018" num="0018"><table frame="all"><tgroup cols="8" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="19.68mm" /><colspec colnum="2" colname="col2" colwidth="19.68mm" /><colspec colnum="3" colname="col3" colwidth="19.68mm" /><colspec colnum="4" colname="col4" colwidth="19.68mm" /><colspec colnum="5" colname="col5" colwidth="19.68mm" /><colspec colnum="6" colname="col6" colwidth="19.68mm" /><colspec colnum="7" colname="col7" colwidth="19.68mm" /><colspec colnum="8" colname="col8" colwidth="19.68mm" /><thead valign="top"><row><entry namest="col1" nameend="col6" align="center">Control Byte</entry><entry namest="col7" nameend="col8" align="center">Data Transfer Setup</entry></row><row><entry namest="col1" nameend="col1" align="center">S</entry><entry namest="col2" nameend="col2" align="center">WR</entry><entry namest="col3" nameend="col3" align="center">B2B</entry><entry namest="col4" nameend="col4" align="center">SM</entry><entry namest="col5" nameend="col5" align="center">XXXX</entry><entry namest="col6" nameend="col6" /><entry namest="col7" nameend="col7" align="center">R/W</entry><entry namest="col8" nameend="col8" align="left">Description</entry></row></thead><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">0011</entry><entry namest="col6" nameend="col6" align="left">93</entry><entry namest="col7" nameend="col7" align="left">W</entry><entry namest="col8" nameend="col8" align="left">Byte to Address Register</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">0111</entry><entry namest="col6" nameend="col6" align="left">87</entry><entry namest="col7" nameend="col7" align="left">W</entry><entry namest="col8" nameend="col8" align="left">Byte to Control line latch</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">0000</entry><entry namest="col6" nameend="col6" align="left">80</entry><entry namest="col7" nameend="col7" align="left">W</entry><entry namest="col8" nameend="col8" align="left">Byte to Data register</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">0</entry><entry namest="col5" nameend="col5" align="left">0000</entry><entry namest="col6" nameend="col6" align="left">C0</entry><entry namest="col7" nameend="col7" align="left">R</entry><entry namest="col8" nameend="col8" align="left">Byte from Data register</entry></row><row><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">0</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">0000</entry><entry namest="col6" nameend="col6" align="left">90</entry><entry namest="col7" nameend="col7" align="left">W</entry><entry namest="col8" nameend="col8" align="left">Byte to Data register incrementing Track Counter</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">1</entry><entry namest="col2" nameend="col2" align="left">1</entry><entry namest="col3" nameend="col3" align="left">0</entry><entry namest="col4" nameend="col4" align="left">1</entry><entry namest="col5" nameend="col5" align="left">0000</entry><entry namest="col6" nameend="col6" align="left">D0</entry><entry namest="col7" nameend="col7" align="left">R</entry><entry namest="col8" nameend="col8" align="left">Byte from Data register incrementing Track Counter</entry></row></tbody></tgroup></table></tables>
PAKCHIP Pinout
The PAKCHIP is a 44-pin device:- <tables id="tabl0019" num="0019"><img file="EP0419112B1_D0003.tif" /></tables><chemistry id="chem0001" num="0001"><img file="EP0419112B1_D0004.tif" /></chemistry><dl id="dl0006" compact="compact"><dt>CSO_B-CS3_B =</dt><dd>Memory Device chip selects</dd><dt>AO - A20 =</dt><dd>Memory Device address lines</dd><dt>DO - D7 =</dt><dd>Data</dd><dt>OE_B =</dt><dd>Output enable</dd><dt>WR_B =</dt><dd>Write enable</dd><dt>POR_B =</dt><dd>Power On Reset</dd><dt>SD =</dt><dd>Serial Data In/Out</dd><dt>CLK =</dt><dd>Clock In</dd><dt>NC =</dt><dd>No connection</dd></dl>
PAKCHIP REGISTERS
Address Register
The address register is written to in multi-transfer mode. LSB first.<img file="EP0419112B1_D0005.tif" /><img file="EP0419112B1_D0006.tif" /><dl id="dl0007"><dt>CC</dt><dd>Device select (only one memory device is chip selected when a read or write occurs as determined by CC.)</dd></dl><dl id="dl0008" compact="compact"><dt>00</dt><dd>Select device 1 (CSO_B is active output)</dd><dt>01</dt><dd>Select device 2 (CS1_B is active output)</dd><dt>10</dt><dd>Select device 3 (CS2_B is active output)</dd><dt>11</dt><dd>Select device 4 (CS3_B is active output)</dd></dl><dl id="dl0009"><dt>TT..</dt><dd>Track number (T0-T12 map directly onto output lines A8-A20. For example, if bit 1 = 1 in the address register then output A9 is HIGH)</dd><dt>x</dt><dd>Bit 13 is not used.</dd></dl>
A RESET (power on or SPM instigated) clears all bits of the address register.
A write to the address register clears the Track Counter.
Data Register
<tables id="tabl0020" num="0020"><table frame="all"><tgroup cols="9" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="17.50mm" /><colspec colnum="2" colname="col2" colwidth="17.50mm" /><colspec colnum="3" colname="col3" colwidth="17.50mm" /><colspec colnum="4" colname="col4" colwidth="17.50mm" /><colspec colnum="5" colname="col5" colwidth="17.50mm" /><colspec colnum="6" colname="col6" colwidth="17.50mm" /><colspec colnum="7" colname="col7" colwidth="17.50mm" /><colspec colnum="8" colname="col8" colwidth="17.50mm" /><colspec colnum="9" colname="col9" colwidth="17.50mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Bit:</entry><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">6</entry><entry namest="col4" nameend="col4" align="left">5</entry><entry namest="col5" nameend="col5" align="left">4</entry><entry namest="col6" nameend="col6" align="left">3</entry><entry namest="col7" nameend="col7" align="left">2</entry><entry namest="col8" nameend="col8" align="left">1</entry><entry namest="col9" nameend="col9" align="left">0</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">Label:</entry><entry namest="col2" nameend="col2" align="left">DR7</entry><entry namest="col3" nameend="col3" align="left">DR6</entry><entry namest="col4" nameend="col4" align="left">DR5</entry><entry namest="col5" nameend="col5" align="left">DR4</entry><entry namest="col6" nameend="col6" align="left">DR3</entry><entry namest="col7" nameend="col7" align="left">DR2</entry><entry namest="col8" nameend="col8" align="left">DR1</entry><entry namest="col9" nameend="col9" align="left">DR0</entry></row></tbody></tgroup></table></tables>
DR0 - DR7 correspond to PAKCHIP I/O lines D0-D7.
Data written to the Data Register is output on D0-D7 during a write cycle.
Data input to D0-D7 may be read from the data register during a read cycle.
The Track Counter is incremented after a data register read or write in MULTIPLE mode.
Control Latch Address $7 write only
<tables id="tabl0021" num="0021"><table frame="all"><tgroup cols="9" colsep="1" rowsep="0"><colspec colnum="1" colname="col1" colwidth="17.50mm" /><colspec colnum="2" colname="col2" colwidth="17.50mm" /><colspec colnum="3" colname="col3" colwidth="17.50mm" /><colspec colnum="4" colname="col4" colwidth="17.50mm" /><colspec colnum="5" colname="col5" colwidth="17.50mm" /><colspec colnum="6" colname="col6" colwidth="17.50mm" /><colspec colnum="7" colname="col7" colwidth="17.50mm" /><colspec colnum="8" colname="col8" colwidth="17.50mm" /><colspec colnum="9" colname="col9" colwidth="17.50mm" /><tbody valign="top"><row><entry namest="col1" nameend="col1" align="left">Bit:</entry><entry namest="col2" nameend="col2" align="left">7</entry><entry namest="col3" nameend="col3" align="left">6</entry><entry namest="col4" nameend="col4" align="left">5</entry><entry namest="col5" nameend="col5" align="left">4</entry><entry namest="col6" nameend="col6" align="left">3</entry><entry namest="col7" nameend="col7" align="left">2</entry><entry namest="col8" nameend="col8" align="left">1</entry><entry namest="col9" nameend="col9" align="left">0</entry></row><row rowsep="1"><entry namest="col1" nameend="col1" align="left">Label:</entry><entry namest="col2" nameend="col2" align="left">x</entry><entry namest="col3" nameend="col3" align="left">x</entry><entry namest="col4" nameend="col4" align="left">x</entry><entry namest="col5" nameend="col5" align="left">x</entry><entry namest="col6" nameend="col6" align="left">VPPEN</entry><entry namest="col7" nameend="col7" align="left">x</entry><entry namest="col8" nameend="col8" align="left">x</entry><entry namest="col9" nameend="col9" align="left">x</entry></row></tbody></tgroup></table></tables>
Setting VPPEN high enables VPP onto EPROM packs.
Reading from/Writing to PAKS
RAMPAKS
a)
Reading
To read a RAMPAK the memory device and Track number must first be specified by writing to the Address Register. The whole track is normally then read by means of a "Block Read" which involves a 256 byte read from the Data Register in Multiple mode. The Track Counter is incremented after each read of the Data Register and the CS_B, WR_B and OE_B lines are automatically controlled by the PAKCHIP during each read cycle.
b)
Writing
Writing to a RAMPAK is similar to reading from it. To write to a RAMPAK the memory device and Track number must first be specified by writing to the Address Register. The whole track is normally then written by means of a "Block write" which involves 256 byte writes to the Data Register in Multiple mode. The Track Counter is incremented after each write to the Data Register and the CS_B, OE_B and WR_B lines are automatically controlled by the PAKCHIP during each write cycle.
Contents3
13 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13
9 members in 6 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 8921143 | United Kingdom | A | |
| 8921143 | United Kingdom | A | |
| 8921143 | United Kingdom | – | |
| 8921143 | – | – | – |
| GB19890021143 | – | – | – |
Members9
| Document | Office | Kind | |
|---|---|---|---|
| GB8921143D0 | United Kingdom | D0 | |
| EP0419112A2 | European Patent Office (EPO) | A2 | |
| EP0419112A3 | European Patent Office (EPO) | A3 | |
| JPH03201055A | Japan | A | |
| US5247657A | United States of America | A | |
| EP0419112B1This record | European Patent Office (EPO) | B1 | |
| AT145738T | Austria | T | |
| DE69029238D1 | Germany | D1 | |
| DE69029238T2 | Germany | T2 |
34 legal events, as 3 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Gb: european patent ceased through non-payment of renewal feeCeasedGBPC | GBPC | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| European patent in force as of 2002-01-01IF02 | IF02 | GB | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| Nl: lapsed or annulled due to failure to fulfill the requirements of art. 29p and 29m of the patents actLapsedNLV1 | NLV1 | EP | |
| Fr: translation not filedEN | EN | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Corresponds to:REF | REF | EP | |
| Designated contracting statesAK | AK | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Corresponds to:REF | REF | EP | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOS IGRAGRAH | GRAH | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOS IGRAGRAH | GRAH | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Designated contracting statesAK | AK | EP | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 0419112
- Publication, DOCDB
- 0419112
- Publication, EPODOC
- EP0419112
- Application
- 90309946
- Application, DOCDB
- 90309946
- Application, EPODOC
- EP19900309946
Titles3
- German
- Serielle Datenübertragung
- English
- Serial data transmission
- French
- Transmission de données en série
Classification
- CPC, 1
- G06F13/4291
- IPC, 4
- G06F13 14
- G06F13 38
- G06F13 42
- H03M5 02
Designated states12
- Contracting states, 12
- Austria
- Belgium
- Switzerland
- Germany
- Denmark
- Spain
- France
- United Kingdom
- Italy
- Liechtenstein
- Netherlands (Kingdom of the)
- Sweden
