DE3689285T2 - CRC-Rechenmaschinen. - Google Patents
CRC-Rechenmaschinen.Info
- Publication number
- DE3689285T2 DE3689285T2 DE86309177T DE3689285T DE3689285T2 DE 3689285 T2 DE3689285 T2 DE 3689285T2 DE 86309177 T DE86309177 T DE 86309177T DE 3689285 T DE3689285 T DE 3689285T DE 3689285 T2 DE3689285 T2 DE 3689285T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- input
- bits
- crc
- checksum register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 136
- 238000000034 method Methods 0.000 claims description 40
- 230000004913 activation Effects 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 26
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 17
- 239000004020 conductor Substances 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 101100422771 Caenorhabditis elegans sup-9 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Analysing Materials By The Use Of Radiation (AREA)
- Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
- Heat Sensitive Colour Forming Recording (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Radar Systems Or Details Thereof (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Description
- Die Erfindung betrifft das Gebiet von Schaltungen zur Berechnung von zyklischen Redundanzcodes für das Detektieren von Fehlern bei der Übertragung serieller Daten über Kommunikationsverbindungen. Insbesondere betrifft die Erfindung bestimmte Verbesserungen bei in IC-Form ausgebildeten CRC-Berechnungseinrichtungen, um Chip-Fläche zu sparen.
- Fehlerdetektion und -korrektur, die unter Verwendung von Codes und Prüfbits durchgeführt werden, sind seit langem angewandt worden, um die Zuverlässigkeit von Datenübertragungen zwischen Einheiten eines Netzwerks oder Einheiten in einem Computersystem, etwa einer Diskette oder einem Hauptspeicher, und der zentralen Verarbeitungseinheit durchzuführen. Das am meisten übliche Konzept besteht in einer Paritätsprüfung. Bei diesem Konzept werden den Informationsbits Paritätsprüfbits hinzugefügt, um die Gesamtzahl von in einem Byte befindlichen Bits, die logische 1-Pegel führen, einer bekannten Zahl gleich zu machen. Dieses Konzept leidet jedoch unter dem bekannten Nachteil, daß, die Anzahl der Informationsbits groß wird, hinsichtlich der erforderlichen Prüfbits das Ausmaß an Redundanz übermäßig groß ausfällt.
- Es existiert ein weiteres Prüfkonzept, das als polynome oder zyklische Kodierung bezeichnet wird. Dieses Konzept kann derart ausgebildet sein, daß mit höherer Effizienz, d. h. mit weniger Redundanz, gearbeitet wird, als bei dem Konzept der Paritätsprüfung. Die hohe Effizienz dieser Konzepte veranlaßt Designer, sie immer häufiger zu verwenden.
- Die generellen Konzeptionen von Ansätzen zur zyklischen Kodierung lassen sich am besten mit Hilfe mehrerer mentaler Hilfen verstehen. Ein zweckmäßiges Verfahren, um sich einen aus K Bits bestehenden Bit-Strom aus in seriellem Format vorliegenden Daten vorzustellen, besteht darin, sich diesen Bit-Strom als einen polynomen Ausdruck in einer Dummy-Variablen x fit K Termen zu veranschaulichen. Die Bits der Meldung sind die Koeffizienten des Polynoms. Somit kann, falls die Bitstrom- Meldung 100100011011 ist, das Polynom geschrieben werden als
- (1) M(x) = 1,x¹¹ + 0,x¹&sup0; + 0,x&sup9; + 1,x&sup8; + 0,x&sup7; + 0,x&sup6; + 0,x&sup5; + 1,x&sup4; + 1 , x³ + 0,x² + 1,x¹ + 1,x&sup0;
- oder
- M(x) = x¹¹ + x&sup8; + x&sup4; + x³ + x + 1.
- Zum Berechnen der Prüfbits für zyklische Kodierung (im folgenden als CRC-Bits bezeichnet) einer Meldung wird ein weiteres Polynom P(x) gewählt, welches als Erzeugungspolynom bezeichnet wird. Der Grad dieses Polynoms, d. h. sein höchster Exponentenwert, ist größer als null, jedoch kleiner als der Grad von M(x). Das Erzeugerpolynom weist in dem x&sup0;-Term einen Nicht- Null-Koeffizienten auf. Für eine Meldung mit einer gegebenen hänge kann mehr als ein Erzeugungspolynom spezifiziert werden. Es existieren mehrere akzeptierte Norm-Erzeugerpolynome. Ein genormtes 32-Bit-Erzeugerpolynom ist für die Normen Autodin II und EthernetWZ definiert. Dieses Erzeugungspolynom findet sich in dem vorgeschlagenen Entwurf des American National Standard for FDDI Media Access Control X3T9.5/83-16, aktualisiert 6-01- 84. Dieses genormte Polynom lautet
- (2) P(x) = x³² + x²&sup6; + x³ + x²² + x¹&sup6; + x¹² + x¹¹ + x + x&sup8; + x&sup7; + x&sup5; + x&sup4; + x² + x +1.
- Zyklische Prüfung oder CRC-Bit-Berechnung verlangen des Dividieren des Meldungs-Polynoms durch das Erzeugungspolynom zum Erzeugen eines Quotientenpolynoms und eines Restpolynoms. Das Quotientenpolynom wird ausgesondert, und die Restpolynomkoeffizienten werden dem Meldungspolynom als CRC-Prüfbits hinzugefügt.
- Dann wenden die kombinierten Meldungs- und Prüfbits über die Kommunikationsverbindung übertragen und gelangen entweder modifiziert oder unmodifiziert zu dem Empfänger, und zwar in Abhängigkeit davon, ob während der Übertragung Fehler unterlaufen sind. Generell dividiert die Empfängereinrichtung die komplette empfangene Meldung, einschließlich der Prüfbits, durch das gleiche Erzeugungspolynom, das zur Erzeugung der Prüfbits am Sender-Ende der Verbindung verwendet wurde. Das Ergebnis dieser Division ist ein Null-Rest-Polynom, falls während der Übertragung kein Fehler aufgetreten ist. Ein Null- Rest-Polynom zeigt das Vorhandensein eines Fehlers an.
- Der Typ von Vorrichtung, der zur Durchführung der vor stehend beschriebenen Rechnung für Eingangsdaten in seriellem Format verwendet wird, ist in Fig. 1 gezeigt. Fig. 1 zeigt ein Blockschaltbild einer CRC-Prüfbit-Berechnungseinrichtung. Das CRC- Prüfsummenregister 30 weist mehrere Speicherzellen auf, die die CRC-Prüfbits speichern. Die Ausgänge dieser Speicherzellen sind mit den Eingängen eines Arrays 32 von Schiebeverbindungen verbunden, von denen einige Exklusiv-ODER-Gatter sind, wie Fig. 2 am deutlichsten zeigt.
- Fig. 2 zeigt ein detailliertes Schaltbild des Blockschaltbilds von Fig. 1. Das signifikanteste Ausgangsbit aus dem Prüfsummenregister 30 wird von einem Eingangsgatter 34 einer Exklusiv-ODER-Operation mit dem eingehenden seriellen Datenstrom des Meldungspolynoms unterzogen, und das Ausgangssignal des Exklusiv-ODER-Gatters 34, das diese Funktion erfüllt, ist mit einem Eingang sämtlicher weiterer Exklusiv-ODER-Gatter in dem Array verbunden. Die Array-Schiebeverbindungen, die keine Exklusiv-ODER-Gatter sind, sind schlichtweg Leiter, die die Eingangsdaten lediglich um eine Bitposition nach links oder zu der signifikantesten Bitposition verschieben. Die Ausgangssignale der Schiebeverbindungen des Arrays werden durch einen Bus 36 zu den Dateneingängen des Prüfsummenregisters 30 rückgeführt. Die Exklusiv-ODER-Gatter in dem Array 32 sowie die direkt durchlaufenden Leiter sind über ihre Ausgänge mit dem Eingang des Prüfsummenregisters der nächstsignifikantesten Bitposition relativ zu der Bitposition der Eingangsbitpositionen für jede Schiebeverbindung von dem Prüfsummenregister verbunden. Ein Bit-Taktsignal auf der Leitung 38 taktet die in seriellem Format vorliegenden Roh-Eingangsdaten des Meldungspolynoms in das Eingangsgatter 34 und veranlaßt, daß das Prüfsummenregister die Daten von dem Bus 36 in seine Speicherzellen einlädt. Nachdem sämtliche Roh-Eingangsdaten-Bits in der Meldung eingetaktet worden sind, besteht der Inhalt des Prüfsummenregisters 30 aus den CRC-Prüfbits für die so verarbeiteten Meldungsbits.
- Fig. 3 zeigt das Format des Pakets zusammengesetzter Daten, das nach der Berechnung der Prüfbits übermittelt wird. Bei dem Segment 40 handelt es sich um das Meldungspolynom, bei dem die CRC-Bits berechnet wurden. Diese Meldungspolynombits werden gleichzeitig mit der Berechnung der CRC-Bits übertragen, indem jedes Mal, wenn ein Bit in das Gate 34 eingegeben wird, das Bit gleichzeitig übertragen wird. Bei dem Segment 42 handelt es sich um das Komplement der CRC-Bits, die in dem Prüfsummenregister 30 gespeichert sind, nachdem sämtliche Bits in dem Segment 40 verarbeitet worden sind. Das Segment 42 besteht aus Komplementär-CRC-Bits, so daß, wenn CRC-Bits an dem Empfänger- Ende der kombinierten Segmente 40 und 42 berechnet werden, der Rest null ergibt. In einigen Protokollen wird das Prüfsummenregister insgesamt auf logische 1-Werte voreingestellt, bevor die CRC-Berechnung beginnt. In einem solchen Fall, wenn die CRC-Prüfbits für das aus den Segmenten 40 und 42 bestehende kombinierte Paket berechnet werden, besteht der Rest nicht insgesamt aus Nullen, sondern bildet ein Standard-Restpolynom. Dieses Restpolynom ergibt sich jedes Mal, wenn CRC-Prüfbits für die kombinierten Segmente 40 und 42 berechnet werden, und zwar unabhängig von dem Bit-Muster des Meldungs-Polynoms 40.
- Die CRC-Prüfbits in dem Segment 42 werden in Anschluß an das Segment 40 ausgegeben, indem ein Multiplexer 44 mit einem Wählsignal auf der Leitung 47 geschaltet wird, um die serielle Dateneingangsleitung 46 abzuwählen und die Ausgangsleitung 48 eines Inverters 50 zu wählen. Der Eingang des Inverters 50 ist mit dem Ausgang der signifikantesten Bitpositionsspeicherzelle in dem Prüfsummenregister verbunden. Der Inverter 50 invertiert die Prüfbits, während sie von dem Bit-Taktsignal auf der Leitung 38 in serieller Weise ausgetaktet werden. Das kombinierte Paket, das aus dem Segment 40, gefolgt von den CRC- Prüfbits 42, besteht, erscheint auf der seriellen Ausgangsleitung 52.
- Bei der Architektur gemäß Fig. 1 tritt dann ein Problem auf, wenn kein Bit-Taktsignal verfügbar ist, um Roh-Eingangsdaten in das Eingangsgatter 34 einzutakten. Einige Systeme sind byte-orientiert und erzeugen nur ein Byte-Taktsignal für jede acht Bits. Derartige Systeme müssen in der Lage sein, CRC-Bits zu berechnen, indem jedes Mal ein Byte von Roh-Eingangsdaten akzeptieren und gleichzeitig die CRC-Bits berechnen, wobei sie den Effekt jedes Bits in dem Roh-Eingangsdaten-Byte berücksichtigen. Eine Architektur zur Durchführung dieser parallelen CRC-Berechnung ist in Fign. 4A und 4B gezeigt.
- In Fign. 4A und 4B weist das Array von Schiebeverbindungen mehrere Reihen von Schiebeverbindungen auf, wobei jede Reihe zum Verarbeiten eines der Bits der Roh-Eingangsdaten-Bytes zugeteilt ist. Das Roh-Eingangsdaten-Byte ist in Form der Bits D7 bis D0 gezeigt, die mit den Eingangsgatter auf der linken Seite gekoppelt sind. Jedes dieser Eingangsdatenbits ist mit einem Eingang eines der Exklusiv-ODER-Gatter 67, 69, 70, 72, 74, 76, 78 und 80 verbunden. Jedes dieser Eingangsgatter ist übers seinen Ausgang mit einem Eingang jedes Exklusiv-ODER- Gatters in seiner Reihe und mit dem Eingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung in der nächsten Reihe verbunden. Somit arbeitet jede Reihe in dem Array 56 wie die Reihe 32 von Schiebeverbindungen, außer daß ihre Eingänge mit den Eingängen der nächsten Reihe verbunden sind. Die erste Reihe ist über ihre Eingänge mit den Ausgängen des Prüfsummenregisters 30 verbunden, und die letzte Reihe ist über ihre Ausgänge mit den Eingängen des Prüfsummenregisters verbunden. Jede Reihe ist über einen Eingang ihres Eingangsgatters mit dem Ausgang eines der Bits in dem Byte höchster Ordnung in dem Prüfsummenregister verbunden, wobei die erste Reihe mit dem Bit höchster Ordnung, die zweite Reihe mit dem zweitsignifikantesten Bit verbunden ist, usw. für sämtliche Reihen. Jede Schiebeverbindung in jeder Reihe verschiebt ihr Eingangsbit um eine Bitposition zu der signifikantesten Bitposition des Prüfsummenregisters. Mit der Architektur gemäß Fig. 4 werden somit die CRC-Bits berechnet, indem jedes Mal 8 Bits von Roh-Eingangsbytes verarbeitet werden.
- Falls die Architektur von Fig. 4 integriert werden soll, können mehrere Verbesserungen durchgeführt werden, die Chipfläche sparen und die die Architektur in die Lage versetzen, mehrere Funktionen auszuführen, die mit der Architektur von Fig. 1 nicht erfolgen können. Wenn z. B. in der Architektur von Fig. 1 oder Fig. 4 die CRC-Bits von dem Prüfsummenregister 30 in paralleles Format gebracht werden sollen, ist es notwendig, daß ein Leiter mit jedem Ausgang des Prüfsummenregisters 30 verbunden wird. Bei einem 32-Bit-Prüfsummenregister würde dies erfordern, daß ein großer Anteil an Chipfläche von den Ausgangsbusleitern verbraucht würde. Es wäre zweckmäßig, wenn nur das die höchste Ordnung aufweisende Byte der CRC-Ausgänge mit dem Ausgangsbus verbunden wäre und die anderen Bytes von CRC- Daten zur Ausgabe in das Byte höchster Ordnung verschoben würden. Dadurch würde die Anzahl von Leitern in dem Ausgangsbus von 32 auf 8 reduziert, wodurch beträchtliche Chipfläche gespart würde.
- Bei einigen Systemen ist es erforderlich, einen ersten Satz von CRC-Bits für ein erstes Datenpaket und einen zweiten Satz von CRC-Bits für ein zweites Datenpaket zu berechnen, und zwar unmittelbar anschließend an das erste Datenpaket oder unmittelbar anschließend an die Übertragung der für das erste Datenpaket berechneten CRC-Prüfbits. Bei vielen CRC-Berechnungseinrichtungen ist es üblich, unmittelbar vor dem Start der CRC-Berechnung den Inhalt des Prüfsummenregisters insgesamt auf 1 zu setzen. Dadurch wird die Leistung der CRC-Berechnungseinrichtung insofern verbessert, als Eingangsdatenfolgen, die lange Folgen logischer 0-Werte aufweisen, den Inhalt des Prüfsummenregisters immer noch derart beeinflussen, daß bei Auftreten einer Fehlfunktion in dem Prüfsummenregister oder dem Berechnungs-Array diese Fehlfunktion unmittelbar detektiert werden kann. Falls das Prüfsummenregister nicht insgesamt auf 1-Werte gesetzt wäre, könnte unter derartigen Umständen ein Defekt in dem Prüfsummenregister oder dem Berechnungs- Array nicht detektiert werden.
- Wenn bei zwei antiparallelen Paketen separate CRC-Prüfbits berechnet werden sollen, existiert zwischen den ersten und zweiten Paketen kein Taktzyklus, während dessen das Prüfsummenregister voreingestellt werden kann, indem sämtlich logische 1-Werte in die Speicherzellen eingegeben werden. Es wäre zweckmäßig, einen Weg zu finden, um die CRC-Berechnungseinrichtung für das zweite Datenpaket in einer Situation voreinzustellen, in der kein überschüssiger Taktzyklus zwischen dem ersten Paket und dem zweiten Paket existiert.
- Bei Netzwerken von Computern ist es üblich, Datenpakete mit Header-Bits zu formulieren, welche das Netzwerk und den bestimmten Schaltungspunkt desjenigen Netzwerks definieren, an das eine an die Header-Bits angehängte Datenmeldung adressiert ist. In solchen Situationen ist es wünschenswert, in der Lage zu sein, die CRC-Bits auf eine von zwei Arten zu berechnen. Ein erster Ansatz besteht darin, ein Header-CRC für die Header-Bits zu berechnen und dann ein Daten-CRC für die Datenmeldung zu berechnen. Der zweite Ansatz besteht darin, ein Header-CRC für die Header-Bits zu berechnen und dann ein Daten-CRC für das gesamte Paket einschließlich der Header-Bits, der Header-CRC-Prüfbits und der Datenmeldung zu berechnen. Es wäre zweckmäßig, eine CRC-Berechnungseinrichtung zu schaffen, die CRC-Prüfbits unter Verwendung eines der beiden Ansätze berechnen kann.
- In einer Token-Ring-Computernetzwerk-Umgebung, bei der sämtliche Schaltungspunkte in dem Netzwerk durch ein einziges Kabel in einem Ring verbunden sind, werden üblicherweise Mehr-Byte- Meldungen über das Netzwerk übermittelt, wobei das erste Byte bestimmte Anfangsbits aufweist, die durch einen jeden Schaltungspunkt in dem Netzwerk im Fluge verändert werden können. Es ist nicht wünschenswert, diese Anfangsbits, die unvorhersehbaren Veränderungen unterworfen sind, die keine Fehler in der CRC-Berechnung sind, einzubeziehen. Solche Veränderungen würden in den CRC-Bits als Fehler auftreten, falls eine Veränderung in einem dieser Bits erfolgen würde, während es einen Schaltungspunkt zwischen dem Sender- und dem Empfänger-Schaltungspunkt passieren würde. Es wäre zweckmäßig, eine CRC-Berechnungseinrichtung zu schaffen, die das CRC für ein Datenpaket unter Verwendung nur eines einzigen Byte-Taktes berechnen würde und dennoch imstande wäre, jede Anzahl von Anfangsbits in dem ersten Byte einer Meldung von der CRC-Berechnung auszuschließen.
- Die Erfindung schafft eine Einrichtung zum Berechnen mehrerer CRC-Bits aus Roh-Eingabedaten, mit einem CRC-Prüfsummenregister zum Speichern mehrerer CRC-Bits und mit einem Dateneingang zum Empfangen jedes CRC-Bits, einem Datenausgang für jedes gespeicherte CRC-Bit und einem Takteingang zum Empfangen eines Taktsignals; einer Berechnungseinrichtung mit Dateneingängen, die mit den Datenausgängen des CRC-Prüfsummenregisters verbunden sind, und mit einem Rohdateneingang zum Empfangen von Roh-Eingabedaten, die einer CRC-Berechnung unterzogen werden sollen, wobei die Berechnungseinrichtung die Roh-Eingangsdaten durch eine vorbestimmte binäre Zahl dividiert und den Divisionsrest als die CRC-Bits in dem CRC-Prüfsummenregister speichert; und mit einen Eingangsmultiplexer mit einem ersten Dateneingang, der mit Datenausgängen der Berechnungseinrichtung verbunden ist, mit einem zweiten Dateneingang, der mit dem Datenausgang des Prüfsummenregisters verbunden ist, und mit einem Datenausgang, der mit den Dateneingängen des CRC-Prüfsummenregisters verbunden ist, und mit einem Steuereingang zum Empfangen eines Steuersignals, das angibt, welcher der ersten oder zweiten Eingänge mit dem Multiplexer-Datenausgang verbunden werden soll.
- Nach einem ersten Aspekt der Erfindung weist der Eingangs- Multiplexer einen dritten Dateneingang auf, der mit einem vorbestimmten Bit-Muster verbunden ist, das eine Standard-Rest- Binärzahl repräsentiert, die ein Polynom darstellt, welches sich ergibt, wenn CRC-Bits für einen Datenblock berechnet werden, der irgendein beliebiges Bit-Muster plus der für das beliebige Bit-Muster berechneten CRC-Bits aufweist.
- Nach einem zweiten Aspekt der Erfindung weist die Einrichtung ferner auf: eine Voreinstelleinrichtung, um die Dateneingänge der Berechnungseinrichtung, die mit den Datenausgängen des Prüfsummenregisters verbunden sind, derart voreinzustellen, daß die Dateneingänge bei Beginn der Berechnung der CRC-Bits sämtlich logische 1-Signale führen; ein Schnappschußregister mit einem Eingang zum Empfangen eines Taktsignals END OF HEA- DER und mit mehreren Eingängen, die mit den Datenausgängen der Berechnungseinrichtung verbunden sind, wobei das Schnappschußregister bei Empfang des Taktsignals END OF HEADER eine erste Vielzahl von CRC-Bits speichert; und einen zweiten Multiplexer mit einem Ausgang, der mit dem Rohdateneingang der Berechnungseinrichtung verbunden ist, und mit einem ersten Eingang, der mit dem Datenausgang des Schnappschußregisters verbunden ist, einem zweiten Eingang zum Empfangen der in die Berechnungseinrichtung einzugebenden Roh-Eingangsdaten, und einem Steuereingang zum Steuern, welche der ersten oder zweiten Eingänge mit dem Rohdateneingang der Berechnungseinrichtung verbunden werden soll.
- Nach einem dritten Aspekt der Erfindung ist die Einrichtung vorgesehen zum Errechnen und Ausgeben separater CRCH-Bits aus Header-Bits eines Header-Bereiches und von CRCD-Bits aus Daten-Bits eines Daten-Bereiches einer digitalen Meldung, und weist ferner eine Voreinstelleinrichtung auf, um zu vorbestimmten Zeiten bei der durch die Berechnungseinrichtung erfolgenden Berechnung der CRC-Bits an den Dateneingängen der Berechnungseinrichtung, die mit den Datenausgängen des CRC- Prüfsummenregisters verbunden sind, sämtlich logische 1-Werte voreinzustellen, derart, daß die Berechnungseinrichtung bei Beginn der Berechnung jedes der CRCH-Bits und der CRCD-Bits sämtlich mit logischen 1-Werten startet.
- In der Beschreibung ist eine Einrichtung erläutert, die CRC- Prüfbits sowohl für das Header-Paket und das Datenpaket separat berechnen kann, wobei die CRC-Prüfbits für das Datenpaket entweder für das Datenpaket allein oder für das Datenpaket plus dem Header-Paket plus der CRC-Bits für das Header-Paket berechnet werden. Die Berechnungseinrichtung enthält ein Array von Schiebeverbindungen, und bei einer bevorzugten Ausführungsform weist das Array von Schiebeverbindungen mehrere Reihen auf, und zwar eine Reihe für jedes Bit jedes Eingangs- Bytes. Die Takteingänge der Speicherzellen des Prüfsummenregisters werden mit einem Byte-Taktsignal verbunden, was ein periodisches Laden von Daten an den Eingängen des Prüfsummenregisters veranlaßt. Die Eingänge des Prüfsummenregisters sind durch den Eingangsmultiplexer mit den Ausgängen der letzten Reihe des Arrays von Schiebeverbindungen verbunden. Die Ausgänge des Prüfsummenregisters sind mit den Dateneingängen der ersten Reihe von Schiebeverbindungen verbunden. Jede Reihe weist eine Spalte oder Schiebeverbindungsposition für jedes Bit in dem Prüfsummenregister auf. Bei einigen der Schiebeverbindungen handelt es sich um Exklusiv-ODER-Gatter, die über einen Eingang mit dem Ausgang eines Eingangsgatters verbunden sind. Der andere Eingang jeder Exklusiv-ODER-Gatter-Schiebeverbindung ist mit einem Ausgangsbit des Prüfsummenregisters für die Spalte dieses bestimmten Gates verbunden. Das Eingangsgatter für jede Reihe ist über einen Eingang mit einem Bit der Roh-Eingangsdaten und über einen Eingang mit einem Ausgang des Prüfsummenregisters in dem signifikantesten Byte verbunden. Das Eingangsgatter für die erste Reihe in dem Array ist über einen Eingang mit dem Roh-Eingangsdaten-Bit verbunden, welches zuerst eintreffen würde, wenn die Daten in seriellem Format eingegeben würden. Ein weiterer Eingang des Eingangsgatters der ersten Reihe ist mit dem Ausgang der die signifikanteste Bitposition aufweisenden Speicherzelle in dem Prüfsummenregister verbunden. Das Eingangsgatter der zweiten Reihe ist über einen Eingang mit dem Roh-Eingangsdaten-Bit verbunden, das als zweites eintreffen würde, falls die Daten in seriellem Format eingegeben würden. Ein weiterer Eingang des Eingangsgatters der zweiten Reihe ist mit dem Ausgang der die zweitsignifikanteste Bitposition aufweisenden Speicherzelle in dem Prüfsummenregister verbunden. Dieses Muster wird für jede Reihe in dem Array wiederholt. Jedes Eingangsgatter führt eine Exklusiv-ODER-Funktion zwischen einem Bit des Roh- Eingangsdaten-Bytes und einem Bit des signifikantesten Bytes der in dem Prüfsummenregister gespeicherten Daten aus.
- Das Ausgangssignal jeder Exklusiv-ODER-Gatter-Schiebeverbindung ist mit dem Eingang der Schiebeverbindung in der nächsten Reihe in der nächstsignifikantesten Bitposition verbunden. Die den Schiebeverbindungen, bei denen sich nicht um Exklusiv- ODER-Gatter handelt, sind Leiter, die das an ihren Eingängen anstehende Bit zu dem Eingang der Schiebeverbindung in der nächsten Reihe in der nächstsignifikantesten Bitposition leiten, d. h. sie führen eine einfache Ein-Bit-Schiebefunktion und sonst nichts aus.
- Bei einer bevorzugten Ausführungsform, bei der der Eingangs- Multiplexer drei Dateneingänge aufweist, ist der erste Eingang mit den Ausgängen der Schiebeverbindungen in der letzten Reihe des Array verbunden, der zweite Eingang mit den Datenausgängen des Prüfsummenregisters verbunden, und der dritte Eingang ist mit dem vorbestimmten Bit-Muster verbunden. Dieses Bit-Muster repräsentiert das CRC-Prüfbit-Muster, das sich ergibt, wenn eine CRC-Berechnung für irgendein Datenpaket plus der CRC- Prüfbits durchgeführt wird, die zuvor für dieses Datenpaket berechnet worden sind, und zwar beginnend mit einem Prüfsummenregister, das insgesamt auf logische Eins-Werte voreingestellt worden ist. Der Eingangs-Multiplexer weist Steuereingänge zum Empfangen von Signalen auf, die steuern, welcher der Eingänge zu irgendeiner bestimmten Zeit zur Verbindung mit dem Ausgang des Multiplexers gewählt wird. Durch geeignete Handhabung der Steuereingänge des Multiplexers kann veranlaßt werden, daß die Einrichtung CRC-Bits für den Header und die Datenpakete allein berechnet, oder sie kann dazu gezwungen werden, die CRC-Bits für das Datenpaket plus dem Header und den Header-CRC-Bits zu berechnen. Um die letztere Funktion auszuführen, wird der mit dem Rest-Bit-Muster verbundene Eingang des Eingangs-Multiplexers gewählt, nachdem die CRC-Bits für den Header berechnet und diese CRC-Bits herausgeschoben worden sind und unmittelbar vor dem ersten Taktzyklus des Intervalls, in dem das Datenpaket in das Array eingegeben wird.
- Bei weiteren Ausführungsformen, die das Schnappschußregister aufweisen, ist das Register zwischen den Ausgängen der letzten Reihe des Arrays und dem Dateneingang des Multiplexers geschaltet, der normalerweise mit den Datenausgängen der letzten Reihe des Array verbunden ist. Das Schnappschußregister wird getaktet, um eine Kopie der für den Header berechneten CRC- Bits zu erstellen, nachdem diese berechnet worden sind. In Abhängigkeit von dem gewünschten Verfahren für die Errechnung der CRC-Bits für das Datenpaket werden dann die CRC-Bits für den Header entweder ausgegeben oder zurück in die Dateneingänge des Arrays gemultiplext, und zwar durch einen Multiplexer, der entweder Roh-Eingangsdaten oder Daten von dem Schnappschußregister in die Dateneingänge des Arrays leitet.
- Bei jeder der erwähnten Ausführungsformen kann das Array eine einzige Reihe von Schiebeverbindungen sein. Die Roh-Eingangsdaten werden dann in serieller Weise um je ein Bit auf einmal eingegeben.
- Die Erfindung wird anhand von Beispielen im Zusammenhang mit den Zeichnungen näher erläutert.
- Fig. 1 zeigt ein Blockschaltbild einer CRC-Berechnungseinrichtung mit seriellem Format, bei der ein Bit-Takt verwendet wird.
- Fig. 2 zeigt ein Logikschaltbild der Einrichtung von Fig. 1.
- Fig. 3 zeigt ein Schaubild des Datenformats für eine typische Datenmeldung mit angehängten CRC-Bits.
- Fig. 4 (4A und 4B) zeigen ein Logikschaltbild einer CRC-Einrichtung mit parallelem Format, bei der ein Byte-Takt verwendet wird.
- Fig. 5 zeigt ein Blockschaltbild einer CRC-Berechnungseinrichtung, die einen einzelnen byte-breiten Ausgangsbus zum Ausgeben der CRC-Bytes verwendet.
- Fig. 6 zeigt ein Blockschaltbild einer weiteren Ausführungsform einer CRC-Berechnungseinrichtung, die einen einzelnen byte-breiten Ausgangsbus zum Ausgeben der CRC- Bytes verwendet, der durch einen Multiplexer mit jedem Byte der CRC-Daten verbunden ist.
- Fig. 7 (7A und 7B) zeigt ein Logikschaltbild der Logik der Ausführungsform von Fig. 5, wobei die UND-Gatter gezeigt sind, die bei dem Array von Schiebeverbindungen verwendet werden, um die Verschiebung der niedrigwertigen CRC- Bytes in die das signifikanteste Byte aufweisende Position zwecks Ausgabe zu veranlassen.
- Fig. 8 zeigt ein Blockschaltbild einer Einrichtung, um das Prüfsummenregister mittels eines Eingangsmultiplexers insgesamt auf 1-Werte voreinzustellen, und zum Durchführen der Voreinstellung in dem Taktzyklus vor dem ersten Taktzyklus der CRC-Berechnung.
- Fig. 9 zeigt ein Blockschaltbild einer Einrichtung mit seriellem Eingangdatenformat, um das Prüfsummenregister mittels ODER-Gattern insgesamt auf 1-Werte voreinzustellen, und zum Durchführen der Voreinstellung in dem ersten Taktzyklus der CRC-Berechnung.
- Fig. 10 zeigt ein Blockschaltbild einer Einrichtung mit parallelem Eingangdatenformat, um das Prüfsummenregister mittels ODER-Gattern insgesamt auf 1-Werte voreinzustellen, und zum Durchführen der Voreinstellung in dem ersten Taktzyklus der CRC-Berechnung.
- Fig. 11 zeigt ein Blockschaltbild einer Einrichtung mit seriellem Eingangdatenformat, um das Prüfsummenregister mittels Multiplexern insgesamt auf 1-Werte voreinzustellen, und zum Durchführen der Voreinstellung in dem ersten Taktzyklus der CRC-Berechnung.
- Fig. 12 zeigt ein Blockschaltbild einer Einrichtung mit parallelem Eingangdatenformat, um das Prüfsummenregister mittels Multiplexern insgesamt auf 1-Werte voreinzustellen, und zum Durchführen der Voreinstellung in dem ersten Taktzyklus der CRC-Berechnung.
- Fig. 13 zeigt ein Zeitsteuerungsdiagramm der Steuersignale, die die voreingestellte Funktion in der Schaltung der Fign. 8 bis 12 entweder in seriellem oder parallelem Eingangsdatenformat einstellen, wobei die Einstellung entweder in der Einrichtung, in der die Voreinstellung in der dem ersten Taktzyklus der CRC-Berechnung vorhergehenden Taktzyklus erfolgt, oder in der Einrichtung durchgeführt wird, in der die Voreinstellung während des ersten Taktzyklus der CRC-Berechnung erfolgt.
- Fign. 14A und 14B zeigen das Datenpaketformat einer typischen Netzwerkmeldung und veranschaulicht zwei verschiedene Verfahren zum Berechnen von CRCH-Prüfbits für den Header und von CRCD-Prüfbits für die gesamte Meldung oder für das Datenpaket allein.
- Fig. 15 zeigt eine Ausführungsform der Erfindung für Eingangsdaten mit seriellem Format zum Berechnen der CRCH- und CRCD-Prüfbits gemäß einem der in Fig. 14 gezeigten Verfahren.
- Fig. 16 zeigt eine Ausführungsform der Erfindung für Eingangsdaten mit parallelem Format zum Berechnen der CRCH- und CRCD-Prüfbits gemäß einem der in Fig. 14 gezeigten Verfahren.
- Fig. 17 zeigt die bevorzugte Ausführungsform der Erfindung für Eingangsdaten mit seriellem Format zum Berechnen der CRCH- und CRCD-Prüfbits gemäß einem der in Fig. 14 gezeigten Verfahren.
- Fig. 18 zeigt die bevorzugte Ausführungsform der Erfindung für Eingangsdaten mit parallelem Format zum Berechnen der CRCH- und CRCD-Prüfbits gemäß einem der in Fig. 14 gezeigten Verfahren.
- Fig. 19 zeigt die Zeitsteuerung für die Steuersignale, die die Ausführungsformen der Fign. 17 und 18 beim Berechnen der CRCH- und CRCD-Prüfbits gemäß den in Fig. 14 gezeigten Verfahren steuern.
- Fig. 20 (20A und 20B) zeigt die variable Bitgrenze und andere Merkmale der CRC-Berechnungseinrichtung.
- Fig. 21 zeigt ein Zeitsteuerungsdiagramm für die Ausführungsform von Fig. 20, wobei die Arbeitsweise der Funktion der variablen Bitgrenze veranschaulicht ist.
- Zu den Zeichnungen ist anzumerken, daß die in Fign. 5-7 gezeigten Ausführungsformen Gegenstand unserer mitanhängigen Anmeldung 86309176.5 (EP-A-0226353), die in Fign. 8-12 gezeigten Ausführungsformen Gegenstand unserer mitanhängigen Anmeldung 86309175.7 (EP-A-02257630), und die in Fign. 20-21 gezeigte Ausführungsform Gegenstand unserer mitanhängigen Anmeldung 86309147.6 (EP-A-0225761) sind.
- In Fign. 5 und 7 zeigen ein Blockschaltbild bzw. ein Logikschaltbild der bevorzugten Ausführungsform einer CRC-Einrichtung zum Berechnen von Mehrfach-CRC-Bytes und zu deren Ausgabe über einen einzelnen byte-breiten Ausgangsbus. In der Ausführungsform von Fig. 5 wird ein Prüfsummenregister 30 verwendet, das mehrere Speicherzellen aufweist, von denen jede einen Dateneingang, einen Datenausgang und einen Takteingang zum Empfangen eines Byte-Taktsignals hat. Bei Empfang des Byte- Taktsignals werden sämtliche Daten an den Eingängen der Speicherzellen in den Zellen gehalten und an den Datenausgängen der Zellen reflektiert. Jede Speicherzelle arbeitet unabhängig von den angrenzenden Zellen an ihrer linken und rechten Seite. Das Prüfsummenregister ist logisch in mehrere Bytes von CRC- Daten segmentiert, die in Fig. 5 als Bytes 0 bis 3 bezeichnet sind. Bei der bevorzugten Ausführungsform existieren 8 Bits pro Byte und insgesamt 32 Bits in dem Prüfsummenregister, wobei das Byte 3 das signifikanteste Byte ist. In Fig. 5 besteht das Byte 3 aus Speicherzellen 24 bis 31.
- Die Datenausgänge des Prüfsummenregisters sind mit den Eingängen eines Array von Schiebeverbindungen 60 verbunden, wie in Fig. 7 ,gezeigt ist. Dieses Array von Schiebeverbindungen weist für jedes Bit eines Roh-Eingangsdaten-Bytes, das aus den Datenbits D0 bis D7 besteht, die auf der linken Seite in das Array gelangen, eine Reihe von Schiebeverbindungen auf. Diese Roh-Eingangsdaten-Bits sind die Datenbits der Meldung, für die eine CRC-Berechnung gewünscht ist. Jedes Roh-Eingangsdaten-Bit ist mit einem Eingang eines Eingangsgatters verbunden. Es ist für jede Reihe ein Eingangsgatter bezeichnet, wobei für diese Reihe und dieses Eingangsgatter ein Roh-Eingangsdaten-Bit bezeichnet ist. Für die erste Reihe ist D7 das bezeichnete Roh- Eingangsdaten-Bit, und das Exklusiv-ODER-Gatter 62 ist das bezeichnete Eingangsgatter. Für die zweite Reihe ist D6 das bezeichnete Roh-Eingangsdaten-Bit, und das Exklusiv-ODER-Gatter 64 ist das bezeichnete Eingangsgatter. Eine ähnliche Situation existiert für jede Reihe und für sämtliche Bits des Roh-Eingangsdaten-Bytes. Falls die Datenbits in seriellem Format einträfen' und zwar mit dem signifikantetesten Bit zuerst (eine willkürliche Annahme) und D7 als signifikantestes Bit bezeichnet würde (eine weitere willkürliche Annahme), dann wäre das bezeichnete Roh-Eingangsdaten-Bit für die erste Reihe das signifikanteste Bit sämtlicher Bits, oder das zuerst eintreffende Bit, falls die Bits seriell einträfen. Das bezeichnete Bit für die zweite Reihe wäre das zweitsignifikanteste Bit oder das als zweites eintreffende Bit, falls die Bits in seriellem Format einträfen. Die dritte Reihe hätte als ihr bezeichnetes Bit das drittsignifikanteste Bit oder das zeitlich als drittes eintreffende Bit, usw. für sämtliche Reihen.
- Jedes Eingangsgatter ist über einen weiteren Eingang mit einem der Datenausgänge eines der Bits des signifikantesten CRC- Bytes verbunden. Das Eingangsgatter für die erste Reihe, Gate 62, ist über seinen anderen Eingang mit dem Datenausgang des signifikantesten CRC-Bits, Bit 31, verbunden. Das Eingangsgatter für die zweite Reihe ist über seinen anderen Eingang mit dem zweitsignifikantesten CRC-Bit, dem Bit 30, verbunden, usw. für sämtliche Reihen.
- Jede Reihe von Schiebeverbindungen weist mehrere direkt durchlaufende Leiter auf, die nichts anderes ausführen, als die an ihren Eingängen anstehenden Bits zu ihren Ausgängen zu verschieben, die mit den Eingängen der nächsten Reihe von Schiebeverbindungen in der nächstsignifikantesten Bitposition verbunden sind. Dies bedeutet, daß diese direkt durchlaufenden Leiter nichts anderes bewerkstelligen, als ihre Eingangsbits um eine Bitposition nach links zu verschieben. Der Ausgleich der Schiebeverbindungen in jeder Reihe besteht aus Exklusiv- ODER-Gattern, die einen Eingang als Biteingang für die CRC- Bits von dem Prüfsummenregister aufweisen und über einen weiteren Eingang mit dem Ausgang des für diese Reihe bezeichneten Eingangsgatters verbunden sind. Der letztere Eingang ist nicht direkt mit dem Ausgang des Eingangsgatters verbunden, sondern ist mit dem Ausgang eines UND-Gatters verbunden, das für diese bestimmte Reihe bezeichnet ist. Ein Eingang dieses UND-Gatters ist mit dem Ausgang des Exklusiv-ODER-Gatters verbunden, und ein weiterer Eingang dient zum Empfang eines Signals SHIFT NOT, dessen Zweck noch erläutert wird. Der Ausgang des UND- Gatters für jede Reihe ist ferner mit dem Eingang der am wenigsten signifikanten Schiebeverbindung der nächsten Reihe verbunden. Es gibt ein bezeichnetes UND-Gatter für jede Reihe, d. h. das Gate 66 für die erste Reihe und das Gate 68 für die zweite Reihe.
- Der Ausgang jeder Exklusiv-ODER-Gatter-Schiebeverbindung ist mit dem Eingang der die nächstsignifikanteste Bitposition aufweisenden Schiebeverbindung in der nächsten Reihe verbunden, d. h. jedes Exklusiv-ODER-Gatter verschiebt sein Eingangsbit um eine Bitposition nach links, nachdem es dieses der Exklusiv- ODER-Operation unterzogen hat.
- Die Relativposition der Exklusiv-ODER-Gatter-Schiebeverbindungen hängt von dem bestimmten verwendeten Erzeugungspolynom ab. Für das in dem obigen Ausdruck (2) gegebene Autodin II- und EthernetWz-Standart-Erzeugungspolynom müssen die Exklusiv-ODER- Gatter derart angeordnet sein, daß ihre Eingänge mit den Bits 0, 1, 3, 4, 6, 7, 9, 10, 11, 15, 21, 22, 25 und 31 des Prüfsummenregisters 30 verbunden sind. Der Grund dafür ist dem Fachmann auf dem Gebiet der CRC-Berechnung gut bekannt und wird aus Gründen der Kürze und Einfachheit hier nicht erläutert. Bei jeder Reihe sind die Exklusiv-ODER-Gatter in der gleichen Bitposition angeordnet. Die Eingänge der ersten Reihe sind mit den Ausgängen des Prüfsummenregisters verbunden, als ob es sich um die vorhergehende Reihe handelte, und die Ausgänge der letzten Reihe sind mit den Eingängen des Prüfsummenregisters verbunden, als ob es sich um die nächste Reihe handelte.
- Die Datenausgänge des signifikantesten Bytes des CRC-Registers sind ferner mit den einzelnen Leitern des CRC-Ausgangsbusses 70 verbunden. Vorzugsweise hat jede Speicherzelle einen komplementären Ausgang, und diese Ausgänge des signifikantesten Bytes sind mit dem Ausgangsbus 70 verbunden. Alternativ kann in jeder Leitung ein Inverter verwendet werden, um die CRC- Bits vor der Übertragung zu invertieren.
- Der Zweck der UND-Gatter und des Signals SHIFT NOT besteht darin, es zu ermöglichen, daß die Reihe von Schiebeverbindungen transparent gemacht wird, so daß während des Vorgangs Daten an dem Ausgang des Prüfsummenregisters das Array unverändert passieren und um ein Byte nach rechts verschoben und wieder in das Prüfsummenregister eingegeben werden. Wenn das Signal SHIFT NOT geltend gemacht wird, d. h. ein logischer 0- Wert, führen sämtliche UND-Gatter, wie z. B. die Gatter 66 und 68, logische 0-Ausgangssignale. Die logischen 0-Pegel auf den Leitungen 301 bis 308 machen die Exklusiv-ODER-Gatter in den Reihen von Schiebeverbindungen transparent, so daß sie ihre Eingangsdaten aus der vorhergehenden Reihe unverändert an ihre Ausgänge leiten, die mit der nächsten Reihe verbunden sind. Da jede Reihe ihre Eingangsdaten um ein Bit nach links schiebt, und da es 8 Reihen gibt, resultiert daraus, daß für jeden Zyklus des Byte-Taktsignals die Daten in dem Prüfsummenregister um ein Byte nach links verschoben werden, wenn das Signal SHIFT NOT geltend gemacht wird. In dieser Weise kann mittels des einzelnen, byte-breiten Ausgangsbusses 70 auf sämtliche Bytes der CRC-Daten zugegriffen werden.
- Die Ausführungsform von Fig. 5 kann mit einigen Modifikationen auch mit seriellem Format verwendet werden. Falls es sich bei dem Array von Schiebeverbindungen 84 um eine einzelne - Reihe von Schiebeverbindungen handelt, dann können die UND-Gatter von Fig. 7 nicht dergestalt arbeiten, daß sie um einzelne Bytes erfolgende Linksverschiebungen für jedes Byte-Taktsignal bewirken. In der Umgebung für seriellen Dateneingang würde die Roh-Daten-Eingabe zu dem Array 84 jedes Mal um ein Bit in seriellem Format erfolgen, und zwar in Synchronisation mit einem Bit-Taktsignal. Nachdem sämtliche der Roh-Eingangsdaten- Bits verarbeitet worden sind, würden sich die CRC-Prüfbits für die Meldung in dem Prüfsummenregister 30 befinden. Das signifikanteste Byte könnte unmittelbar auf dem Ausgangsbus 70 gelesen werden. Die übrigen Bits würden jedes Mal um ein Bit nach links verschoben, was durch eine zusätzliche Verbindung jedes CRC-Bit-Datenausgangs mit dem Eingang des nächtsignifikanten CRC-Bits erfolgen würde, d. h. dem Eingang der Nachbarzelle auf der linken Seite. Diese Verbindung würde für jedes Bit durch einen Multiplexer erfolgen, der über einen Eingang mit dem Bus 36 und über den anderen Eingang mit dem CRC-Bit- Datenausgang auf der rechten Seite verbunden ist. Der Ausgang des Multiplexers würde mit dem Dateneingang des linken Nachbars verbunden. Beim Ausgeben der CRC-Bytes 2, 1 und 0 würden diese Multiplexer derart eingestellt, daß die mit dem rechten Nachbarn jeder Zelle verbundenen Eingänge gewählt würden. Dann würde eine zusätzliche Logikschaltung den Ausgangsbus 70 für 8 Zyklen des Bit-Taktsignals, das mit dem Takteingang jeder Zelle in dem Prüfsummenregister verbunden ist, deaktivieren, und ihn aktivieren, wenn das Byte 2 in die Position von Byte 3 oder die signifikanteste Bitposition verschoben worden wäre. Der gleiche Vorgang würde für jedes Byte durchgeführt, bis sämtliche Bytes ausgelesen sind.
- Fig. 6 zeigt eine weitere Ausführungsform für eine Ausgangsbusstruktur einer CRC-Berechnungseinrichtung. Diese Ausführungsform verwendet einen Multiplexer mit vier Eingängen, von denen jeder mit einem byte-breiten Bus verbunden ist, der den Datenausgängen einer Gruppe von Speicherzellen, die ein Byte von CRC-Daten speichern, komplementär ist. Ein CRC-Nicht-Byte- Wähl-Signal auf einem Bus 74 wählt, welcher der vier Eingänge mit dem 8-Bit-Ausgangsbus verbunden wird. Die CRC-Berechnung wird wie oben beschrieben durchgeführt, und es spielt für das Ausgeben der CRC-Daten keine Rolle, ob das Array von Schiebeverbindungen 84 ein serielles Array oder ein paralleles Array ist oder ob zum Eintakten der Daten ein Bit-Takt- oder ein Byte-Takt-Signal verwendet wird, außer daß der Typ des Array und des Taktsignals konstant sein müssen.
- Wie bereits erwähnt, ist es eine akzeptierte Vorgehensweise, vor dem Start der Berechnung der CRC-Prüfbits das Prüfsummenregister insgesamt auf logische 1-Werte einzustellen. Fign. 8 bis 12 zeigen verschiedene Ausführungsformen zum Durchführen der Voreinstellfunktion auf zwei verschiedene Weisen und sowohl in der Umgebung der seriellen als auch in der Umgebung der parallelen Berechnung. Fig. 8 zeigt eine Ausführungsform einer CRC-Berechnungseinrichtung, bei der eine Voreinstelleinrichtung verwendet wird, die mindestens einen Taktzyklus vor dem ersten Taktzyklus der CRC-Berechnung betätigt werden muß. Die CRC-Einrichtung weist ein Prüfsummenregister 30 auf, das wie bei den zuvor beschriebenen Ausführungsformen über seine Datenausgänge mit den Dateneingängen eines Exklusiv- ODER- oder Verschiebungs-Arrays 84 verbunden ist. Da Array 84 kann wie das Array 32 von Fign. 1 und 2 seriell sein, oder es kann parallel sein, wie es bei dem Array 60 von Fign. 4 oder 7 der Fall ist. Tatsächlich ist jedes dieser Arrays für den Betrieb dieser Ausführungsform der Erfindung ausreichend, was auch für jedes andere im folgenden beschriebene Array von Schiebeverbindungen gilt. Wie bei den oben beschriebenen Ausführungsformen ist die letzte Reihe in dem Array durch einen Multiplexer 86 und mittels eines Datenbusses 36, der 32 Bit breit ist, mit den Dateneingängen des Prüfsummenregisters 30 verbunden.
- Der Multiplexer 86 hat drei 32 Bit breite Eingänge, die durch A, B und C gekennzeichnet sind, und einen 32 Bit breiten Ausgangsbus 88, der mit den Dateneingängen des Prüfsummenregisters verbunden ist. Der Multiplexer hat drei Wähleingänge zum Empfangen von Eingangswählsignalen. Das bestimmte Wählsignal, das zu irgendeiner bestimmten Zeit aktiv ist, bewirkt, daß sein entsprechender Eingang unter den Eingängen A bis C mit dem Ausgangsbus 88 verbunden wird. Der A-Eingang ist für 32 logische 1-Werte vorgesehen, und bei dem B-Eingang handelt es sich um die 32 Datenausgänge des Prüfsummenregisters, die kollektiv als Bus 90 bezeichnet werden. Der C-Eingang ist der 32-Bit-Bus 36, der die Datenausgänge von der letzten Reihe in dem Array 84 führt.
- Das Eingangswählsignal PRESET SELECT wird einen oder mehrere Taktzyklen vor dem ersten Taktzyklus der CRC-Berechnung aktiviert. Dies bewirkt, daß 32 logische 1-Werte von dem Eingangsbus A mit dem Bus 88 verbunden werden und in die Zellen des Prüfsummenregisters 30 geladen werden. Anschließend wird der COMPUTE SELECT-Eingang geltend gemacht, um den C-Eingang oder Bus 36 mit dem Bus 88 zu verbinden. Solange diese Bedingung existiert, schreitet die CRC-Berechnung fort, während die Daten der Meldung, für die die Prüfbits erzeugt werden sollen, in das Array 84 getaktet werden. Wenn es zu irgendeinem Zeitpunkt gewünscht ist, die CRC-Berechnung zu stoppen, kann der Eingang HOLD SELECT geltend gemacht werden, wodurch die Ausgänge des Prüfsummenregisters über die Busse 90 und 88 zurück zu den Eingängen geschaltet werden.
- Fign. 9 bis 12 zeigen verschiedene Ausführungsformen einer CRC-Berechnungseinrichtung, bei die voreingestellte Einrichtung es ermöglicht, daß die voreingestellten logischen 1-Werte während des ersten Taktzyklus der CRC-Berechnung geladen werden. Jede dieser Ausführungsformen und sämtliche weiteren hier beschriebenen Ausführungsformen, die keinen Feedback-Bus wie den Bus 130 in Fig. 17 benutzen, verwendet in der Taktleitung ein UND-Gatter 100. Diese UND-Gatter führen eine logische UND- Operation zwischen dem Taktsignal und einem Signal COMPUTE durch, daß als logischer 1-Wert geltend gemacht wird, wenn CRC-Bits berechnet werden sollen. Wenn es sich bei COMPUTE um einen logischen 1-Wert handelt, kann die CRC-Berechnung fortschreiten. Wenn es sich bei COMPUTE um einen logischen 0-Wert handelt, erfolgt keine CRC-Berechnung, und der Inhalt des Prüfsummenregisters ist konstant.
- Fign. 9 und 10 zeigen die mit seriellem bzw. parallelem Array versehenen Ausführungsformen, die zur Durchführung der Voreinstellfunktion ODER-Gatter verwenden. Fign. 11 und 12 zeigen seriellem bzw. parallelem Array versehene Ausführungsformen, die zur Durchführung der Voreinstellfunktion Multiplexer verwenden. Unter diesen Ausführungsformen ist diejenige gemäß Fig. 10 die bevorzugte Ausführungsform. Hinsichtlich der Voreinstelleinrichtung werden sämtliche dieser Ausführungsformen gleichzeitig erläutert, da die Elemente und die Arbeitsweise der Elemente für sämtliche Ausführungsformen die gleichen sind. Diese Elemente arbeiten auf die gleiche Weise wie bei den mit seriellem bzw. parallelem Array versehenen Ausführungsformen nach anderen Ausführungsformen der Erfindung, die oben erläutert wurden. Ferner kann es sich bei den Arrays selbst um jedes der hier beschriebenen seriellen oder parallelen Arrays handeln, was die Anwendung der Aspekte der Erfindung hinsichtlich der Voreinstellung während des ersten Taktzyklus der CRC-Berechnung angeht, ohne daß die Funktionsweise dieses Aspektes der Erfindung beeinträchtigt wird.
- Ein wichtiges Element bei jeder der Ausführungsformen der Fign. 9 bis 12 besteht im Verbinden der Datenausgänge des Prüfsummenregisters durch eine Schaltung, die während des gleichen Taktzyklus, zu dem die CRC-Berechnung startet, sämtliche Dateneingänge des Arrays von Schiebeverbindungen zwangsweise auf einen logischen 1-Zustand setzt. Die Schaltungen der Fign. 9 und 10 verwenden ODER-Gatter, um die Funktion des Erzwingens der logischen 1-Werte zum gewünschten Zeitpunkt durchzuführen, während die Schaltungen der Fign. 11 und 12 Multiplexer verwenden. In den Fign. 9 und 10 handelt es sich bei jedem der Gates 87, 89, 92 und 93 um 8 ODER-Gatter, und jedes führt eine ODER-Logikfunktion für die Bits eines der Bytes von CRC-Daten durch, die in dem Prüfsummenregister 30 gespeichert sind. Jedes der jeweiligen 8 ODER-Gatter, die von den Gates 87, 89, 92 und 93 repräsentiert werden, ist über einen Eingang mit einem der Datenausgänge einer Speicherzelle in der bestimmten Gruppe von Zellen in dem Prüfsummenregister verbunden, die mit dem entsprechenden ODER-Gatter 87, 89, 92 und 93 verbunden ist. Der Ausgang jedes ODER-Gatters ist mit einem Eingang einer der Schiebeverbindungen in der ersten Reihe des Array verbunden. Jedes ODER-Gatter ist über einen weiteren Eingang mit einem Signal NEW PRESET verbunden. Wenn dieses Signal als logischer 1-Wert geltend gemacht wird, nehmen sämtliche Ausgänge der ODER-Gatter einen logischen 1-Wert an, wodurch während des ersten Taktzyklus der CRC-Berechnung logische 1-Werte an den Eingängen des Arrays von Schiebeverbindungen erzwungen werden. Diese Situation ist derjenigen Situation äquivalent, die existieren würde, falls das Prüfsummenregister 30 während eines vorhergehenden Taktzyklus mit logischen 1-Werten geladen worden wäre und diese logischen 1- Werte beim ersten Taktzyklus der CRC-Berechnung zu den Eingängen der ersten Reihe des Arrays von Schiebeverbindungen übertragen würden.
- Nach dem ersten Taktzyklus der CRC-Berechnung kehrt das Signal NEW PRESET wieder in den logischen 0-Zustand zurück, wodurch die ODER-Gatter transparent gemacht werden. Danach werden sämtliche Daten in dem Prüfsummenregister unverändert durch die ODER-Gatter 87, 89, 92 und 93 geschickt, und die CRC- Berechnung schreitet auf normale Weise fort.
- Bei den Fign. 11 und 12 erfolgt das gleiche zwangsweise Anlegen von logischen 1-Werten an die Eingänge der ersten Reihe des Arrays von Schiebeverbindungen mittels Multiplexern 94 bis 97, um die Eingänge der ersten Reihe von Schiebeverbindungen in dem Array 32 oder 60 erneut zu einer Quelle von 32 logischen 1-Werten zu leiten. Die Multiplexer 94 bis 97 könnten als ein einziger Multiplexer mit zwei 32-Bit-Eingängen dargestellt sein. Ein der Eingänge wäre mit jedem der 32 Datenausgänge der Zellen in dem Prüfsummenregister 30 verbunden, und der andere Eingang wäre-zur Verbindung mit einer Quelle von 32 logischen 1-Werten vorgesehen, etwa einer Spannungsquelle, die mit jedem der Leiter des Eingangs verbunden ist. Der Ausgang des Multiplexers wäre ein 32 Bit-Bus, der mit den Dateneingängen der ersten Reihe von Schiebeverbindungen in dem Array verbunden wäre. Der Multiplexer hätte einen Eingang zum Empfangen eines Signals NEW PRESET SELECT. Dieses Signal wird während des ersten Taktzyklus der CRC-Berechnung geltend gemacht und veranlaßt, daß der Multiplexer den mit der Quelle logischer 1-Werte verbundenen Eingang wählt und diese logischen 1-Werte mit den Eingängen der ersten Reihe von Schiebe- Verbindungen in dem Array verbindet. Nach dem ersten Taktzyklus der CRC-Berechnung kehrt das Signal NEW PRESET SELECT in den Zustand zurück, in dem der Multiplexer die Datenausgänge des Prüfsummenregisters 30 mit den Dateneingängen des Array verbindet. Danach schreitet die CRC-Berechnung auf normale Weise fort.
- Fig. 13 zeigt ein Zeitsteuerungsdiagramm der Beziehungen zwischen dem Taktsignal und sämtlichen Steuersignalen der Ausführungsformen der Fign. 8 bis 12. Angesichts der vorstehenden Erläuterung der Beziehungen zwischen den Voreinstellsignalen zu dem ersten Taktsignal der CRC-Berechnung ist das Diagramm aus sich selbst verständlich.
- Bei vielen Anwendungen zur Übertragung serieller Daten werden Header-Pakete benutzt. Diese Header-Pakete sind Bits, die den adressierten Schaltungspunkt definieren, für den das an das Header-Paket angehängte Datenpaket vorgesehen ist. Eine derartige Meldungsorganisation wird üblicherweise bei Netzwerken von Computern, Terminals und Peripherieeinrichtungen verwendet. Fig. 14A zeigt eine schematische Zeichnung einer typischen Meldungsorganisation, wobei CRCH 101 eine Sammlung von CRC-Prüfbits ist, die für die Header-Bits 100 berechnet werden, und wobei CRCD 103 eine Sammlung von CRC-Prüfbits ist, die für die Datenmeldung 102 berechnet werden.
- Üblicherweise werden zwei verschiedene Verfahren zum Berechnen der CRC-Prüfbits verwendet. Fig. 14A zeigt das erste Verfahren, bei dem die CRCD-Prüfbits für die Datenmeldung 102 allein berechnet werden. Fig. 14B zeigt das zweite Verfahren, bei dem die CRCD-Prüfbits für das gesamte Paket einschließlich des Headers 100, der CRCH-Prüfbits 101 und der Datenbits 102 berechnet werden. Es ist zweckmäßig, eine CRC-Berechnungseinrichtung zur Verfügung zu haben, die separate CRCH- und CRCD- Prüfbit-Pakete auf jede der beiden Arten berechnen kann.
- Jede der bereits beschriebenen oder noch zu beschreibenden Ausführungsformen, die ein Gate in dem Feedback-Bus 36 aufweisen oder die den Halte-Bus, wie etwa den Bus 90, aufweisen, der über einen Eingangsmultiplexer 86 von dem Ausgang des Prüfsummenregisters 30 zu seinem Eingang führt, kann separate CRCH- und CRCD-Prüfbit-Pakete nach dem Verfahren von Fig. 14A berechnen. Dies erfolgt durch Stoppen der CRC-Berechnung, nachdem das Header-Paket verarbeitet worden ist, Ausgeben des dann existierenden Inhalts des Prüfsummenregisters 30 als CRCH-Paket und anschließendes Voreinstellen des Prüfsummenregisters, und indem die CRC-Berechnung erneut beginnen kann, wenn die Datenmeldung 102 einzutreffen beginnt.
- Bei der Ausführungsform von Fig. 15 handelt es sich um eine Schaltung einer CRC-Berechnungseinrichtung, die separate CRCH- und CRCD-Prüfbit-Pakete entsprechend dem Verfahren von Fig. 14B berechnen kann, indem ein für serielles Format vorgesehenes Array 32 von Schiebeverbindungen verwendet wird. Bei der Schaltung von Fig. 16 handelt es sich um eine Schaltung einer CRC-Berechnungseinrichtung, die separate CRCH- und CRCD-Prüfbit-Pakete entsprechend dem Verfahren von Fig. 14B berechnen kann, indem ein für paralleles Format vorgesehenes Array 32 von Schiebeverbindungen verwendet wird. Beide dieser Schaltungen verwenden ein separates Schnappschußregister 106 und einen Multiplexer 108, um das Verfahren von Fig. 14B auszuführen. Im folgenden werden die gemeinsamen Bereiche dieser Schaltungen beschrieben, ohne daß eine Unterscheidung dahingehend getroffen wird, ob ein serielles oder paralleles Array von Schiebeverbindungen verwendet wird, das dies für die Arbeitsweise bei diesem Aspekt der Erfindung unwesentlich ist.
- Ein Prüfsummenregister 30, das mit dem zuvor im Zusammenhang mit anderen Schaltungen beschriebenen Prüfsummenregistern in Aufbau, Arbeitsweise und Zweck identisch ist, ist über seine Dateneingänge mittels eines 32 Bit breiten Busses 88 mit den Datenausgängen eines Eingangsmultiplexers 86 verbunden. Der Multiplexer 86 weist drei Eingänge auf, die die gleichen Eingänge sind und die die gleichen Zwecke verfolgen wie die bereits erläuterten Eingänge für den Multiplexer 86 in Fig. 8.
- Der Ausgang des Prüfsummenregisters 30 ist mit dem Eingang des Arrays von Schiebeverbindungen entweder direkt, wie in Fig. 15 gezeigt, oder durch eine Voreinstelleinrichtung 109, wie in Fig. 16 gezeigt, verbunden. Bei der Schaltung von Fig. 15 wird das Voreinstellverfahren verwendet, bei dem die logischen 1- Werte während des Taktzyklus, der vor dem Start der CRC-Berechnung erfolgt, in das Prüfsummenregister 30 geladen werden. Dies erfolgt durch Geltendmachen des Signals INPUT SELECT, so daß während des Taktzyklus, der vor dem Start der CRC-Berechnung erfolgt, der Eingang C des Multiplexers 86 gewählt wird, um 32 logische 1-Werte in das Prüfsummenregister 30 zu laden. Bei der Schaltung von Fig. 16 wird das Voreinstellverfahren verwendet, bei dem die logischen 1-Werte während des ersten Taktzyklus des CRC-Berechungsvorgangs gemäß der obigen Beschreibung im Zusammenhang mit Fign. 9 bis 12 zwangsweise in den Eingang des Arrays von Schiebeverbindungen geladen werden. Bei der Voreinstelleinrichtung 109 kann es sich entweder um ODER-Gatter wie die ODER-Gatter 87,89,92,93 in Fign. 9 und 10 oder um Multiplexer wie die in Fign. 11 und 12 gezeigten Multiplexe 94 bis 97 handeln. Jedes Verfahren und jede Vorrichtung zum Voreinstellen kann für jede der Schaltungen von Fign. 15 oder 16 verwendet werden.
- Das Array von Schiebeverbindungen 32 oder 60 kann jedes der hier beschriebenen Arrays von Schiebeverbindungen sein. Unabhängig davon, ob das Array 32 oder 60 zum Verarbeiten von in seriellem Format vorliegenden Datenmeldungen oder von in parallelem Format vorliegenden Datenmeldungen vorgesehen ist, sind die Ausgänge des Arrays mit 32 Dateneingängen eines Schnappschußregisters 106 verbunden, das als Speicherplatz für eine Kopie der CRCH-Prüfbits dient. Das Schnappschußregister weist mehrere Speicherzellen auf, die wie die in dem Prüfsummenregister verwendeten Speicherzellen beschaffen sind; dem Fachmann wird jedoch ersichtlich sein, daß auch andere Typen von Speicherzellen verwendet werden können. Die Takteingänge der Speicherzellen in dem Schnappschußregister 106 sind zur Verbindung mit einem Taktsignal END OF HEADER vorgesehen, das zum Laden des Ausgangssignals des Arrays von Schiebeverbindungen 32 oder 60 in das Schnappschußregister 106 dient, nachdem sämtliche Header-Bits verarbeitet worden sind und das auf dem Bus 36 geführte Ausgangssignal des Arrays aus den CRCH- Bits besteht. Diese CRCH-Bits können auf dem CRCH-Ausgangsbus 110 Byte um Byte ausgegeben werden, und zwar mittels eines Multiplexers wie des Multiplexers 72 in Fig. 6 oder anderer Verfahren, die dem Fachmann ersichtlich sind.
- Zur Anwendung des CRCD-Berechnungsverfahrens von Fig. 14B müssen die CRCH-Bits als Roh-Eingangsdaten in das Arrays von Schiebeverbindungen rückgeführt werden, so daß die CRC-Bits für die CRCH-Bits berechnet werden können. Dies ist der Zweck des Multiplexers 108 und der mit diesem verbundenen Schaltung. Die Struktur dieser Schaltung wird hier kurz beschrieben, gefolgt von einer Beschreibung ihrer Arbeitsweise, und zwar bei Anwendung des Verfahrens von Fig. 14A und bei Anwendung des Verfahrens von Fig. 14B.
- Bei der Ausführungsform von Fig. 15 ist das Schnappschußregister 106 als Schieberegister geschaltet, so daß die CRCH-Bits in serieller Weise auf einer Leitung 112 in einen Eingang des Multiplexers 108 geschoben werden können. Der andere Eingang des Multiplexers 108 ist mit der Quelle serieller Roh-Eingangsdaten verbunden. Ein Wählsignal auf einer Leitung 114 bewirkt, daß der Multiplexer 108 entweder die Roh-Daten in der Meldung auf der Leitung 116 oder die CRCH-Daten auf der Leitung 112 an den Rohdateneingang 118 des Arrays 32 anlegt.
- Eine ähnliche Situation existiert für die Schaltung von Fig. 16 mit Ausnahme dessen, daß das Schnappschußregister 106 4 ein Byte breite Ausgangsbusse 118 bis 121 aufweist, die mit 4 Eingangsports eines Multiplexers 116 verbunden sind. Die parallelformatigen Eingangsdatenbits D7 bis D0 werden durch einen Bus 122 mit einem Eingangsport des Multiplexers 116 verbunden, und ein Signal BYTE SELECT auf einer Leitung 124 steuert, welche der Eingänge des Multiplexers 116 mit dem Rohdateneingang 126 des Arrays von Schiebeverbindungen verbunden werden soll.
- Die Ausführungsformen von Fign. 15 und 16 können verwendet werden, um die CRC-Prüfbits auf die in Fig. 14A gezeigte Weise zu berechnen. Zunächst muß eine Voreinstelloperation durchgeführt werden. Insbesondere werden in der Schaltung ,gemäß Fig. 15, indem das Signal INPUT SELECT zum Wählen des Eingangs C geltend gemacht wird, 32 logische 1-Werte in das Prüfsummenregister 30 geladen, um die CRC-Berechnung vorzubereiten. Die Schaltung gemäß Fig. 16 kann die Voreinstellung in der gleichen Weise durchführen, wenn der Eingangsmultiplexer 86 in Fig. 16 so modifiziert ist, daß er die Eingänge von Fig. 15 aufweist, und die Voreinstelloperation erfolgt auf die gleiche Art. Jede der Schaltungen von Fig. 15 oder Fig. 16 kann mittels der neuen Voreinstelleinrichtung 109 voreingestellt werden, indem das Signal NEW PRESET in der gleichen Weise wie zuvor beschrieben geltend gemacht wird. Als nächstes kann, indem das Signal INPUT SELECT zum Wählen des Eingangs A des Multiplexers 86 geltend gemacht wird, die CRC-Berechnung beginnen. Der Eingang A wird während der CRC-Berechnung für die Header-Bits 100 geltend gemacht.
- Nach dem Verarbeiten der Header-Bits wird, falls das Verfahren von Fig. 14A zum Berechnen der CRC-Prüfbits verwendet werden soll, der Eingang B während der Taktzyklen gewählt, wenn die CRCH-Bits aus dem Prüfsummenregister 30 ausgegeben werden. Bei diesem Ausgabevorgang zum Ausgeben der CRCH-Bits kann es sich um eines der oben beschriebenen Verfahren zum seriellen oder parallelen Verschieben von Arrays handeln, je nach dem Typ der mit dem Schnappschußregister verbundenen Ausgangsbusstruktur.
- Nachdem die CRCH-Bits ausgegeben worden sind, wird das Prüfsummenregister erneut insgesamt auf 1-Werte voreingestellt, falls das Verfahren von Fig. 14A durchgeführt werden soll. Die Roh-Eingangsdaten die Datenmeldung 102 werden dann in das Array 32 oder 60 eingegeben und zum Berechnen der CRCD-Prüfbits verarbeitet.
- Falls das Verfahren von Fig. 14B durchgeführt werden soll, sind die Voreinstellschritte und Berechnungsschritte die gleichen wie oben zum Berechnen der CRCH-Prüfbits. Diese müssen jedoch bei Abschluß der Berechnung der CRC-Prüfbits in das Schnappschußregister 106 kopiert werden, so daß sie ausgegeben werden können, während sie gleichzeitig in den Rohdateneingang des Arrays von Schiebeverbindungen rückgeführt werden. Um dies durchzuführen, wird das Signal END OF HEADER geltend gemacht, welches bewirkt, daß die CRCH-Bits in das Schnappschußregister 106 geladen werden. Das Taktsignal END OF HEADER kann das dem Prüfsummenregister zugeführte Taktsignal sein, d. h. das Signal BIT CLOCK, das durch ein Gate gegattert wird, das das Signal nur dann durchläßt, wenn-das Ende des Headers detektiert wird. Dies bewirkt, daß in dem Schnappschußregister 106 eine Kopie der CRCH-Bits erstellt wird und jedes Mal um ein Bit auf dem Bus 112 verschoben wird. Eine weitere Kopie der CRCH-Bits wird an dem Ende des Headers über den Bus 36 in das Prüfsummenregister 30 eingegeben. Bei der Ausführungsform von Fig. 15 wird durch das Signal SELECT auf der Leitung 114 veranlaßt, daß der Multiplexer 116 den seriellen Datenstrom auf der Leitung 112 mit dem Rohdateneingang 118 verbindet. Somit werden die CRCH- Prüfbits in das Array eingegeben und in der beschriebenen Weise verarbeitet. Nachdem sämtliche CRCH-Prüfbits verarbeitet worden sind, wird der Multiplexer 108 durch das Signal SELECT veranlaßt, seinen Ausgang 118 zurück zu den Datenmeldungsbits 102 auf der Leitung 117 zu schalten. Nachdem sämtliche Daten in der Meldung 102 verarbeitet worden sind, befinden sich die CRCD-Prüfbits in dem Prüfsummenregister 30 und können auf eine beliebige der bereits beschriebenen Arten ausgegeben werden.
- Die bevorzugte Ausführungsform zum Durchführen der CRCH- und CRCD-Prüfbitberechnungen ist in Fig. 17 in seriellem Array- Format und in Fig. 18 in parallelem Array-Format gezeigt. Jede Schaltung verwendet einen Eingangsmultiplexer 86, der über seine Datenausgänge mittels eines Busses 88 mit den 32 Dateneingängen des Prüfsummenregisters 30 verbunden ist. Jeder Multiplexer 86 ist über einen A-Eingang mit dem Feedback-Bus 36 verbunden, der mit dem Ausgang des Arrays von Schiebeverbindungen 32 oder 60 verbunden ist. Ferner ist jeder Multiplexer 86 über einen Eingang C mittels eines Busses 130 mit den Datenausgängen des Prüfsummenregisters 30 verbunden. Schließlich ist jeder Multiplexer 86 über einen B-Eingang mit einem Rest-Polynom-Bit-Muster verbunden. Dieses Bit-Muster repräsentiert die Koeffizienten des Standard-Rest-Polynoms, das sich ergibt, wenn CRC-Prüfbits für eine Datenmeldung berechnet werden und deren Prüfbits von einem insgesamt auf logische 1- Werte eingestellten Voreinstellzustand ausgehen.
- Bei den Arrays von Schiebeverbindungen kann es sich um jede der hier beschriebenen Array-Strukturen handeln. Der Ausgang des Arrays von Schiebeverbindungen ist durch den Eingangsmultiplexer 86 über den Feedback-Bus 36 mit dem Eingang des Prüfsummenregisters 30 verbunden. Die Eingänge der Arrays 32 oder 60 sind durch eine Voreinstelleinrichtung 109, die in Struktur, Arbeitsweise und Zweck der zuvor beschriebenen Voreinstelleinrichtung gleich ist, mit den Datenausgängen des Prüfsummenregisters 30 verbunden. Die Datenausgänge des Prüfsummenregisters 30 sind ferner mit einem Ausgangsbus 132 verbunden, der irgendeine der Strukturen aufweisen und auf irgendeine der Arten verwendet werden kann, wie sie zuvor zum Ausgeben von CRC-Daten aus dem Prüfsummenregister beschrieben worden sind.
- Die Weise, in der die Ausführungsformen von Fign. 17 und 18 zum Berechnen der CRC-Prüfbits und zum Berechnen der CRCD- Prüfbits arbeiten, läßt sich am besten anhand des Zeitsteuerungsdiagramms von Fig. 19 verstehen.
- Um die CRCH- und CRCD-Prüfbits in der in Fig. 14A gezeigten Weise zu berechnen, werden die Arrays von Schiebeverbindungen in den Ausführungsformen von Fign. 17 und 18 sämtlich auf logische 1-Werte voreingestellt, indem ein Signal NEW PRESET während des gleichen Taktzyklus geltend gemacht wird, bei dem das erste Bit oder Byte des Header-Pakets eintrifft, wie an der Zeitlinie 2 von Fig. 19 ersichtlich ist. Bei anderen Ausführungsformen, bei denen alternative Typen von Voreinstelleinrichtungen verwendet werden, wird das Eingangswählsignal OLD PRESET geltend gemacht, um den Eingang der Eingangsmultiplexers zu wählen, der mit einer Quelle von 32 logischen 1- Werten verbunden ist.
- Als nächstes wird das Eingangssignal COMPUTE geltend gemacht, wodurch veranlaßt wird, daß der Eingang A gewählt wird und die CRCH-Prüfbits für die Header-Bits berechnet werden. Nachdem sämtliche Bits für das Header-Paket 100 verarbeitet worden sind, befinden sich die CRCH-Prüfbits in dem Prüfsummenregister und können im Fall der Ausführungsform von Fig. 17 auf dem CRC-Ausgangsbus herausgeschoben werden oder können mittels der zuvor beschriebenen Einrichtung um jeweils ein Byte ausgegeben werden. Dieser Vorgang ist gekennzeichnet durch Geltendmachung des Signals MUX oder SHIFT auf der Zeitlinie 4 von Fig. 19. Bei alternativen Schaltungen können sämtliche 32 Bits von CRCH-Prüfbits parallel ausgegeben werden. Während der Zeit, während derer die CRCH-Bits ausgegeben werden, wird der Eingangsmultiplexer 86 durch die Geltendmachung des auf der Zeitlinie 6 gezeigten Signals HOLD veranlaßt, den Eingang C zur Verbindung mit dem Eingang des Prüfsummenregisters zu wählen. Dadurch wird der Inhalt des Prüfsummenregisters während der Zeit, in der die CRCH-Bits zur Ausführung des Verfahrens von Fig. 14A ausgegeben werden, konstant gehalten.
- Bei Abschluß des Ausgebens der CRCH-Bits wird das Prüfsummenregister erneut insgesamt auf 1-Werte voreingestellt, indem entweder das Signal NEW PRESET gemäß der Zeitlinie 7 von Fig. 19 geltend gemacht wird oder das Signal OLD PRESET gemäß der Zeitlinie 8 von Fig. 19 während des Taktzyklus vor dem Start der Datenmeldung geltend gemacht wird. Anschließend wird durch Geltendmachung des Signals COMPUTE der Eingangsmultiplexer dazu veranlaßt, erneut den A-Eingang zur Verbindung mit dem Eingang des Prüfsummenregisters 30 zu wählen. Dies bewirkt, daß die CRC-Berechnung für die Roh-Eingangsdaten-Bits wiederaufgenommen wird, die an den Roh-Eingangsdaten-Eingängen 118, 123 und 126 eintreffen. Nachdem sämtliche Datenbits in der Meldung 102 verarbeitet worden sind, befinden sich die CRCD- Prüfbits in dem Prüfsummenregister 30. Damit ist die nach dem Verfahren von Fig. 14A erfolgende Berechnung der CRCH- und CRCD-Prüfbits abgeschlossen.
- Um die CRCH- und CRCD-Prüfbits in der in Fig. 14B gezeigten Weise zu berechnen, werden die Schaltungen der Fign. 17 und 18 wie folgt betätigt. Das Signal NEW PRESET wird, wie zuvor erläutert und wie anhand der Zeitlinie 2 von Fig. 19 ersichtlich, während des ersten Taktzyklus des Headers geltend gemacht. Gleichzeitig wird das Eingangswählsignal COMPUTE geltend gemacht, wie anhand der Zeitlinie 1 von Fig. 19 ersichtlich ist. Dadurch wird der Eingangsbus A des Eingangsmultiplexers zur Verbindung mit dem Eingang des CRC-Prüfsummenregisters gewählt. Die CRC-Berechnung schreitet dann in der zuvor beschriebenen Weise fort. Die CRCH-Prüfbits sind in dem Prüfsummenregister enthalten, nachdem sämtliche Header-Bits verarbeitet worden sind.
- Wie zuvor müssen diese CRCH-Prüfbits in dem Prüfsummenregister 30 konstant gehalten werden, während sie ausgegeben werden. Es existiert jedoch kein Schnappschußregister, um eine Kopie von ihnen zu halten, so daß der Eingangsmultiplexer 86 durch Geltendmachen des Signals HOLD gezwungen werden muß, den Eingang C zu wählen, damit die CRCH-Bits in dem Prüfsummenregister 30 unverändert rezirkuliert werden, bis sie sämtlich ausgegeben worden sind. Der Ausgabevorgang für die CRCH-Bytes ist mit dem oben beschriebenen Vorgang identisch und ist durch die auf der Signallinie 4 von Fig. 19 gezeigte Signal-Geltendmachung gekennzeichnet.
- Während dieses Vorgangs zum Ausgeben der CRCH-Bits werden mehrere Taktzyklen durchgelaufen sein, ohne daß irgendeine CRCH-Prüfbit-Berechnung für die CRCH-Bits durchgeführt worden ist. Zur Anwendung des Verfahrens von Fig. 14B müssen die CRCD-Prüfbits für das gesamte Paket einschließlich des Headers 100, der CRCH-Bits 101 und des Datenpakets 102 berechnet werden. Um dies durchzuführen, wird der Eingangsmultiplexer gezwungen, am Ende des Ausgebens sämtlicher CRCH-Bits während des Taktzyklus unmittelbar vor dem ersten Taktzyklus beim Eingeben des Datenbereiches 102 der Meldung 99 den Eingang B zu wählen. Dies erfolgt durch Geltendmachung des Signals IN- ITIATE REMINDER, das auf der Zeitlinie 5 von Fig. 19 gezeigt ist. Dadurch wird das Rest-Polynom-Bit-Muster zu dem gleichen Zeitpunkt in das Prüfsummenregister 30 geladen, zu dem das Bit-Muster ohnehin in dem Prüfsummenregister existiert hätte, wenn die Berechnung der CRCD-Datenbits ausgehend von dem ersten Bit des Headers kontinuierlich gewesen wäre. Mit anderen Worten bedeutet dies, daß, falls am Ende des Headers der Eingang C nicht gewählt worden wäre, um die CRCH-Bits in dem Prüfsummenregister während deren Ausgabe konstant zu halten, die Bits, die sich zu dem Zeitpunkt in dem Prüfsummenregister befunden hätten, zu dem sämtliche CRCH-Prüfbits verarbeitet worden wären, die Bits in dem Rest-Polynom-Bit-Muster wären. Es ist bekannt, daß dieses Bit-Muster korrekt vorausgesagt werden kann, da jedes Mal, wenn eine CRC-Berechnung für eine Datenmeldung plus der für die Meldung allein berechneten CRC- Bits erfolgt, die resultierenden CRC-Bits ein bekanntes Polynom darstellen, das in der Norm veröffentlicht ist, die das Erzeugungspolynom für die Normen Autodin II und EthernetWz definiert, und die hiermit durch Verweis in die vorliegende Anmeldung eingeschlossen ist.
- Bei diesem Verfahren erfolgt keine Voreinstellung, bevor die Bits in dem Datenpaket 102 verarbeitet werden. Nachdem sämtliche Bits in dem Datenpaket 102 verarbeitet worden sind, befinden sich die CRCD-Prüfbits in dem Prüfsummenregister und können auf jede der beschriebenen Arten ausgegeben werden.
- In Computer-Netzwerken ist es üblich, Mehr-Byte-Meldungen zu anderen schaltungspunkten in dem Netzwerk zu übermitteln, wobei die ersten paar Bits oder das erste Byte durch verschiedene Schaltungspunkte in dem System im Fluge geändert werden. Dies ist insbesondere bei Token-Ring-Netzwerken üblich. Da diese Bits im Fluge geändert werden, dürfen sie nicht in die CRC-Berechnung eingeschlossen werden, damit sie nicht fälschlicherweise als Fehler interpretiert werden.
- Eine für paralleles Format vorgesehene Ausführungsform zur Berechnen von CRC-Prüfbits für eine variable Anzahl von Bits in dem ersten Byte einer Datenmeldung könnte die ersten paar Reihen der Schiebeverbindungen transparent machen. Dies würde erfolgen, nachdem das Prüfsummenregister insgesamt auf logische 1-Werte eingestellt worden ist. Die logischen 1-Werte werden durch die erste aktive Reihe von Schiebeverbindungen geleitet, die mit dem ersten Bit der in die CRC-Berechnung einzubeziehenden Roh-Eingangsdaten verbunden ist. Die Schiebeaktion der transparenten Reihen von Schiebeverbindungen muß jedoch zur Verwendung dieser Ausführungsform deaktiviert werden, so daß die am wenigsten signifikanten Bits der transparenten Reihen nicht mit logische 0-Werten gefüllt werden, während die logischen 1-Werte in den transparenten Reihen nach links geschoben werden. Diese Ausführungsform ist hinsichtlich ihrer Anwendung schwieriger als die im folgenden zu beschreibende Ausführungsform.
- Ein wichtiger Aspekt der Erfindung besteht darin, ein flexible Einrichtung zu schaffen, bei der ein oder mehrere Bits in dem ersten Byte einer Meldung, für die die Berechnung von CRC-Bits gewünscht ist, ignoriert werden können. Das Problem bei einer in parallelem Format erfolgenden Berechnung unter Verwendung eines Byte-Taktes, bei der mehrere Anfangsbits ignoriert werden sollen, besteht darin, die korrekte Reihe von Schiebeverbindungen insgesamt auf 1-Werte voreinzustellen. Die korrekte Reihe ist die Reihe, bei der das Eingangssignal für ihr Eingangsgatter (etwa das Gate 62 in Fig. 7) das erste Datenbit in den Roh-Eingangsdaten des ersten Byte in der Meldung ist, das in die Berechnung einbezogen werden soll. Fig. 20 zeigt die Einrichtung zum Durchführen dieser Funktion zusammen mit der Einrichtung zum Praktizieren der anderen wichtigen Funktionen der Erfindung.
- Die Funktion der variablen Bitgrenze wird von den ODER-Gattern 110 bis 125 durchgeführt. Die Weise, in der diese ODER-Gatter bewirken, daß die mit den zu ignorierenden Bits verbundenen Reihen von Schiebeverbindungen transparent werden, läßt sich am besten anhand eines Beispiels veranschaulichen. In diesem Zusammenhang sollte Fig. 21 beachtet werden, die ein Zeitsteuerungsdiagramm der Steuersignale ist, die zur Anwendung der Funktion der variablen Bitgrenze verwendet werden. Die Steuersignale, die verwendet werden, um die andere, in Fig. 20 gezeigte Einrichtung zum Durchführen der anderen erfindungsgemäßen Funktionen zu steuern, die die Ausführungsform von Fig. 20 durchführen kann, sind wie oben beschrieben vorgesehen.
- Um die Reihen von Exklusiv-ODER-Gattern transparent zu machen, damit die voreingestellten logischen 1-Werte in die nächste Reihe bewegt werden können, muß ein logischer 0-Wert an einen der Eingänge dieser Exklusiv-ODER-Gatter in den betreffenden Reihen angelegt werden, d. h. in den mit den zu ignorierenden Bits verbundenen Reihen. Dies ist die Funktion der ODER-Gatter 110 bis 117 und der Signale IGNORE, die mit jedem dieser ODER- Gatter verbunden sind. Es sei angenommen, daß die ersten drei Datenbits D7 bis D5 in der CRC-Berechnung ignoriert werden sollen. Es soll als Beispiel angenommen werden, daß der erste Taktzyklus der CRC-Berechnung in Fig. 21 zwischen den Zeitpunkten t&sub0; und t&sub1; liegt. Während des ersten Taktzyklus der CRC- Berechnung, der an dem Übergang 131 des Signals BYTE CLOCK beginnt, das auf der Zeitlinie 1 von Fig. 21 liegt, wird das Steuersignal CALCULATE für den Eingangsmultiplexer 86 geltend gemacht, um den Eingang A zu wählen, damit die CRC-Berechnung wie auf der Zeitlinie 3 gezeigt beginnen kann. Zudem wird während des ersten Taktzyklus das Signal NEW PRESET geltend gemacht, um, wie auf der Zeitlinie 2 gezeigt, insgesamt logische 1-Werte in die Dateneingänge der ersten Reihe von Schiebeverbindungen zu zwingen, die durch das Eingangsgatter 62 mit dem Eingangsdatenbit D7 verbunden sind. Zudem werden während des ersten Taktzyklus der CRC-Berechnung, jedoch nur während des ersten Taktzyklus, die Signale IGNORE 7, IGNORE 6 und IGNORE 5 geltend gemacht. Ungeachtet des logischen Zustandes der Datenbits D7, D6 und D5 existieren logische 1-Werte auf den Leitungen 132, 134 und 136. Die Eingangsgatter 200, 202 und 204 empfangen somit an ihren Eingängen zwei logische 1- Werte, da die Voreinstellgatter 138, 140 und 142 aufgrund des logischen 1-Zustandes des Signals NEW PRESET ihre Ausgänge auf logische 1-Werte zwingen. Dies gilt ungeachtet des Inhalts des Prüfsummenregisters 30 zu diesem Zeitpunkt. Die Ausgangsleitungen der Exklusiv-ODER-Gatter 200, 202 und 204 führen deshalb während des ersten Taktzyklus der CRC-Rechnung logische 0-Pegel. Die Voreinstellgatter 109 zwingen sämtliche Dateneingänge der ersten Reihe von Schiebeverbindungen, mit denen sie verbunden sind, in einen logischen 1-Zustand. Diese logischen 1-Werte werden durch sämtliche aus Drahtverbindungen bestehenden Schiebeverbindungen direkt durch die zweite Reihe geleitet und werden durch sämtliche aus Exklusiv-ODER-Gattern bestehenden Schiebeverbindungen geleitet, und zwar ohne Inversion aufgrund der logischen 0-Pegel an ihrer gemeinsamen Eingangsleitung 301. Diese gemeinsame Eingangsleitung führt das Ausgangssignal von dem Eingangsgatter 200, nachdem es von dem Gatter SHIFT NOT einer UND-Operation unterzogen worden ist, das sich während der gesamten CRC-Berechnung in einem logischen 1-Zustand befindet, wie auf der Zeitlinie 4 von Fig. 21 gezeigt ist.
- Die gemeinsame Eingangsleitung 301 der ersten Reihe führt ferner das Eingangsdatenbit für die die am wenigsten signifikante Bitposition aufweisende Schiebeverbindung der zweiten Reihe. Da sich für ein korrektes Arbeiten der Einrichtung dieses Bit auch im logischen 1-Zustand befinden muß, ist ein weiteres ODER-Gatter 118 zwischen die gemeinsame Leitung 301 und den Dateneingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung geschaltet. Dieses ODER- Gatter 118 ist über einen Eingang mit der gemeinsamen Eingangsleitung 301 und über einen weiteren Eingang mit der das Signal IGNORE 7 führenden Leitung verbunden. Das Ausgangssignal dieses ODER-Gatters ist mit dem Eingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung der zweiten Reihe von Schiebeverbindungen verbunden. Da das Signal IGNORE 7 während des ersten Taktzyklus der CRC-Berechnung einen logische 1-Pegel führt, wird ein Eins-Wert in den Eingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung der zweiten Reihe gezwungen.
- Jede Reihe von Schiebeverbindungen in dem Array weist ein ODER-Gatter wie das Gate 118 auf. Die Ausgänge sämtlicher dieser ODER-Gatter, d. h. der Gatter 119 bis 125, sind mit dem Eingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung der nächsten Reihe verbunden, und jedes Gate ist über einen Eingang mit dem Signal IGNORE für diese Reihe und über einen weiteren Eingang mit der gemeinsamen Eingangsleitung für diese Reihe verbunden. Somit können bei jeder Anzahl von Reihen logische 1-Pegel in ihre die am wenigsten signifikante Bitposition aufweisende Schiebeverbindung gezwungen werden, indem für diese Reihe das Signal IGNORE geltend gemacht wird. Ebenso kann jede Anzahl von Reihen transparent gemacht werden, indem das Signal IGNORE geltend gemacht wird, das mit den ODER-Gattern 110 bis 117 verbunden ist, deren Eingänge mit den Eingängen des Eingangsgatters für diese transparent zu machende Reihe verbunden ist.
- Bei dem bestimmten hier erörterten Beispiel werden die Signale IGNORE 7 bis IGNORE 5 während des ersten Taktzyklus der CRC- Berechnung geltend gemacht, wie an den Zeitlinien 5 bis 7 von Fig. 21 ersichtlich ist. Dies bewirkt, daß die ersten drei Reihen des Array 60 transparent werden und sämtlich logische 1-Werte zu den Dateneingängen der vierten Reihe von Schiebeverbindungen leiten. Somit werden während des ersten Taktzyklus der CRC-Berechnung CRC-Prüfbits für sämtliche Bits der ersten Eingangsbytes D7 bis D0 mit Ausnahme der Datenbits D7 bis D5 berechnet. Dies erfolgt deshalb, weil die voreingestellten 1-Werte direkt durch die mit den Datenbits D7 bis D5 verbundenen Reihen von Schiebeverbindungen übertragen werden und somit die mit dem Datenbit 4 verbundene Reihe von Schiebeverbindungen so wirkt, als wäre sie die erste Reihe in dem Array. Nachdem der erste Taktzyklus der CRC-Berechnung abgeschlossen ist, werden die Signale IGNORE 7 bis IGNORE 5 deaktiviert, und die CRC-Berechnung schreitet normal fort.
Claims (23)
1. Einrichtung zum Berechnen mehrerer CRC-Bits aus Roh-
Eingabedaten, mit:
einem CRC-Prüfsummenregister (30) zum Speichern mehrerer
CRC-Bits und mit einem Dateneingang zum Empfangen jedes
CRC-Bits, einem Datenausgang für jedes gespeicherte CRC-
Bit und einem Takteingang zum Empfangen eines Taktsignals,
einer Berechnungseinrichtung (32,60) mit Dateneingängen,
die mit den Datenausgängen des CRC-Prüfsummenregisters
verbunden sind, und mit einem Rohdateneingang zum
Empfangen von Roh-Eingabedaten, die einer CRC-Berechnung
unterzogen werden sollen, wobei die Berechnungseinrichtung (60)
die Roh-Eingangsdaten durch eine vorbestimmte binäre Zahl
dividiert und den Divisionsrest als die CRC-Bits in dem
CRC-Prüfsummenregister (30) speichert, und
gekennzeichnet durch einen Eingangsmultiplexer (86) mit
einem ersten Dateneingang, der mit Datenausgängen (36) der
Berechnungseinrichtung (32,60) verbunden ist, und mit
einem Datenausgang (88), der mit den Dateneingängen des
CRC-Prüfsummenregisters (30) verbunden ist, wobei der
Eingangsmultiplexer (86) einen zweiten Dateneingang, der
mit den Datenausgängen des Prüfsummenregisters (30)
verbunden ist, und einen dritten Dateneingang aufweist, der
mit einem vorbestimmten Bit-Muster verbunden ist, das eine
Standard-Rest-Binärzahl repräsentiert, die ein Polynom
darstellt, welches sich ergibt, wenn CRC-Bits für einen
Datenblock berechnet werden, der irgendein beliebiges Bit-
Muster plus der für das beliebige Bit-Muster berechneten
CRC-Bits aufweist.
2. Einrichtung nach Anspruch 1, ferner mit
Voreinstellungseinrichtungen (109) mit Eingängen und Ausgängen, wobei
jeder Eingang mit einem Datenausgang des
Prüfsummenregisters (30) verbunden ist und jeder Ausgang mit einem
Dateneingang der Berechnungseinrichtung (32,60) verbunden
ist, wobei die Voreinstellungseinrichtungen (109) bei
Empfang eines NEW PRESET-Signals den Empfang eines logischen
1-Wertes durch jeden-Dateneingang der
Berechnungseinrichtung (32,60) erzwingt.
3. Einrichtung nach Anspruch 1 oder Anspruch 2, ferner mit
einem CRC-Ausgangsbus, der mit den Datenausgängen nur des
signifikantesten Bytes von CRC-Bits in dem
CRC-Prüfsummenregister (30) verbunden ist, und wobei das
Prüfsummenregister (30) ein Schieberegister ist, das in der Lage ist,
sämtliche CRC-Bits zu der Position der signifikantesten
Bitposition hin zur Ausgabe an den Ausgangsbus zu
verschieben.
4. Einrichtung nach einem der vorhergehenden Ansprüche, bei
der die Berechnungseinrichtung (60) mehrere Reihen von
Schiebeverbindungen aufweist, wobei jede Schiebeverbindung
einen Eingang und einen Ausgang hat, und wobei die Roh-
Eingabedaten aus mehreren Datenbits in Parallelformat
bestehen und die Berechnungseinrichtung (60) für jedes
Eingangsdatenbit eine solche Reihe aufweist, und wobei
jede Schiebeverbindung in einer Reihe einen Eingang
aufweist, der mit einem Ausgang der Schiebeverbindung
nächstniedriger Signifikanz in der vorhergehenden Reihe
verbunden ist, mit Ausnahme der Schiebeverbindung mit der
Bitposition niedrigster Signifikanz in jeder Reihe, die einen
mit einem Ausgang der Schiebeverbindung mit der
Bitposition höchster Signifikanz in der vorhergehenden Reihe
verbundenen Eingang aufweist, und sämtliche Reihen die
gleichen Verbindungen aufweisen, mit Ausnahme der ersten
Reihe von Schiebeverbindungen, die Eingänge aufweist, die
mit den Datenausgängen des CRC-Prüfsummenregister (30)
verbunden sind, als ob die
Prüfsummenregister-Datenausgänge eine vorhergehende Reihe von Schiebeverbindungen
wären, und wobei die Datenausgänge der letzten Reihe von
Schiebeverbindungen mit den Dateneingängen des
CRC-Prüfsummenregisters (30) verbunden sind, und wobei bestimmte
Schiebeverbindungen in jeder Reihe von Schiebeverbindungen
Gatter sind, die eine logische Exklusiv-ODER-Operation
zwischen ihren Eingangsbits von der Schiebeverbindung mit
der Bitposition nächstniedriger Signifikanz in der
vorhergehenden Reihe und einem vorbestimmten Signal durchführen.
5. Einrichtung nach Anspruch 4, bei der das vorbestimmte
Signal für jede Reihe von Schiebeverbindungen von einem
Eingangsgatter (62,64) erzeugt wird, das derjenigen
bestimmten Reihe entspricht, die eine vorbestimmte logische
Operation zwischen einem vorbestimmten der CRC-Bits von
dem CRC-Prüfsummenregister (30) und einem Datenbit von dem
Eingangsdatenbyte durchführt.
6. Einrichtung nach Anspruch 5, bei der das der ersten Reihe
entsprechende Eingangsgatter ein Gatter (62) ist, das eine
logische Exklusiv-ODER-Operation zwischen dem in dem CRC-
Prüfsummenregister (30) gespeicherten signifikantesten
CRC-Bit und dem ersten Datenbit durchführt, das eintreffen
würde, wenn die Roh-Eingangsdaten seriell eingegeben
würden, und bei der das der zweiten Reihe entsprechende
Eingangsgatter ein Gatter (64) ist, das eine Exklusiv-ODER-
Operation zwischen dem in dem CRC-Prüfsummenregister (30)
gespeicherten nächstsignifikantesten CRC-Bit und dem
zweiten Bit durchführt, das eintreffen würde, wenn die Roh-
Eingangsdaten seriell eingegeben würden, usw. für jede
Reihe von Schiebeverbindungen.
7. Einrichtung nach Anspruch 6, ferner mit einer mit dem
Prüfsummenregister (30) verbundenen Schiebeeinrichtung zum
byte-weisen Ausgeben der Bytes von CRC-Daten auf dem CRC-
Ausgabebus, durch byte-weises Verschieben der CRC-Bytes
synchron mit einem Byte-Taktsignal in die ranghöchste
Byte-Position des CRC-Prüfsummenregisters.
8. Einrichtung nach Anspruch 7, bei der die
Schiebeeinrichtung mehrere UND-Gatter (66,68) enthält, eines für jede
Reihe von Schiebeverbindungen, wobei jedes UND-Gatter
einen Eingang aufweist, der mit dem Ausgang des
Eingangsgatters für eine bestimmte Reihe verbunden ist, und über
seinen Ausgang mit einem der Eingänge der Exklusiv-ODER-
Gatter in der bestimmten entsprechenden Reihe von
Schiebeverbindungen verbunden ist, wobei jedes UND-Gatter einen
weiteren Eingang zur Verbindung mit einer Quelle eines
SHIFT NOT-Signals aufweist, welches angibt, wann keine
CRC-Berechnung durchgeführt werden soll und nur eine
Verschiebung der CRC-Bits in dem CRC-Prüfsummenregister (30)
durchgeführt werden soll, wobei die Verschiebung um ein
Byte zu dem signifikantesten Byte in dem
CRC-Prüfsummenregister hin erfolgt.
9. Einrichtung nach einem der Ansprüche 1 bis 3, bei der die
Berechnungseinrichtung (32) aus einer einzigen Reihe von
Schiebeverbindungen besteht, die Eingänge aufweisen,
welche mit den Ausgängen des CRC-Prüfsummenregisters (30)
verbunden sind, und die Ausgänge aufweisen, die durch den
Eingangsmultiplexer mit den Dateneingängen des
CRC-Prüfsummenregisters verbunden, jedoch um eine Bitposition zu
der signifikantesten CRC-Bitposition hin verschoben sind,
wobei ausgewählte der Schiebeverbindungen Exklusiv-ODER-
Gatter mit ersten und zweiten Eingängen sind, wobei der
erste Eingang mit einem Datenausgang des
CRC-Prüfsummenregisters verbunden ist, wobei der das signifikanteste CRC-
Bit führende Datenausgang des CRC-Prüfsummenregisters mit
einem Eingang eines Exklusiv-ODER-Dateneingangs-Gatters
(34) verbunden ist, wobei das Gatter (34) einen weiteren
Eingang zur Verbindung mit einem seriellen Strom der Roh-
Eingangsdaten aufweist und einen Ausgang aufweist, der mit
einem zweiten Eingang jedes Exklusiv-ODER-Gatters in der
Reihe von Schiebeverbindungen verbunden ist.
10. Einrichtung zum Berechnen mehrerer CRC-Bits, mit:
einem CRC-Prüfsummenregister (30) zum Speichern mehrerer
CRC-Bits und mit einem Dateneingang zum Empfangen jedes
CRC-Bits, einem Datenausgang für jedes gespeicherte CRC-
Bit und einem Takteingang zum Empfangen eines Taktsignals,
einer Berechnungseinrichtung (32,60) mit Dateneingängen,
die mit den Datenausgängen des CRC-Prüfsummenregisters
verbunden sind, und mit einem Rohdateneingang zum
Empfangen von Roh-Eingangsdaten, die einer CRC-Berechnung
unterzogen werden sollen, wobei die Berechnungseinrichtung
(32,60) die Roh-Eingangsdaten durch eine vorbestimmte
binäre Zahl dividiert und den Divisionsrest als die CRC-
Bits in dem CRC-Prüfsummenregister (30) speichert,
gekennzeichnet durch einen Eingangsmultiplexer (86) mit
einem ersten Dateneingang, der mit Datenausgängen (36) der
Berechnungseinrichtung (32,60) verbunden ist, einem
zweiten Dateneingang, einem Datenausgang (88), der mit den
Dateneingängen des CRC-Prüfsummenregisters (30) verbunden
ist, und einem Steuereingang zum Empfangen eines
Steuersignals, das angibt, welcher der ersten oder zweiten
Dateneingänge mit dem Multiplexer-Datenausgang (88) verbunden
werden soll, und wobei der zweite Dateneingang des
Multiplexers mit den Datenausgängen des Prüfsummenregisters
(30) verbunden ist, und ferner mit
Voreinstellungseinrichtungen (86 Eingang C, 109) zum Voreinstellen der
Dateneingänge der mit den Datenausgängen des
Prüfsummenregisters (30) verbundenen Berechnungseinrichtung (32,60)
derart, daß die Dateneingänge beim Start der Berechnung
der CRC-Bits sämtlich logisch 1 sind; ein
Schnappschußregister (106), das einen Eingang zum Empfangen eines
END OF HEADER-Taktsignals und mehrere mit den
Datenausgängen der Berechnungseinrichtung (32,60) verbundene
Eingänge aufweist, wobei das Schnappschußregister bei Empfang
des END OF HEADER-Taktsignals eine erste Vielzahl von CRC-
Bits speichert; und einen zweiten Multiplexer (108) mit
einem Ausgang, der mit dem Rohdateneingang der
Berechnungseinrichtung verbunden ist, mit einem ersten
Dateneingang, der mit dem Datenausgang des Schnappschußregisters
(106) verbunden ist, mit einem zweiten Dateneingang zum
Empfangen der in die Berechnungseinrichtung (32,60)
einzugebenden Roh-Eingangsdaten, und mit einem Steuereingang
zum Steuern, welcher der ersten oder zweiten Dateneingänge
mit dem Rohdateneingang der Berechnungseinrichtung (32,60)
verbunden werden soll.
11. Einrichtung nach Anspruch 10, bei der die
Berechnungseinrichtung (60) mehrere Reihen von
Schiebeverbindungen aufweist, die in vorbestimmter Weise mit den
Datenausgängen des Prüfsummenregisters (30) oder den
Datenausgängen der vorhergehenden Reihe von
Schiebeverbindungen verbunden sind, wobei bestimmte der
Schiebeverbindungen zwei Eingangs-Exklusiv-ODER-Gatter
sind, wobei jede Reihe ein Eingangsgatter, das mit dem
Rohdateneingang der Berechnungseinrichtung (60) verbunden
ist, und ein Schiebegatter aufweist, das einen Eingang zur
Verbindung mit einer Quelle eines SHIFT-NOT-Signals hat
und einen Ausgang hat, der mit einer gemeinsamen
Signalleitung verbunden ist, welche mit einem Eingang jedes
Exklusiv-ODER-Gatters in der entsprechenden Reihe
verbunden ist, wobei die Schiebeverbindungen und Eingangsgatter
derart miteinander verbunden sind, daß sie in einem der
logischen Zustände des SHIFT-NOT-Signals die
Roh-Eingangsdaten durch ein vorbestimmtes binäres Polynom dividieren
und den Rest als CRC-Bits in dem Prüfsummenregister
speichern, und in einem anderen logischen Zustand des SHIFT-
NOT-Signals sämtliche in dem Prüfsummenregister
gespeicherten CRC-Bits unverändert zu dessen signifikantester
Byte-Position hin verschieben, und bei der der erste
Eingang des zweiten Multiplexers (108) mehrere byte-breite
Eingangsbusse aufweist und der zweite Multiplexer einen
byte-breiten Ausgangsbus aufweist, mit dem der
Rohdateneingang der Berechnungseinrichtung (60) verbunden ist, und
bei der das Schnappschußregister (106) mehrere byte-breite
Ausgänge aufweist, die jeweils mit einem Byte von in dem
Schnappschußregister gespeicherten CRC-Daten verbunden
ist, wobei jeder byte-breite Ausgang mit einem eigenen der
byte-breiten Eingangsbusse des zweiten Multiplexers (108)
verbunden ist, wobei der zweite Eingang des zweiten
Multiplexers (108) einen byte-breiten Eingangsdatenbus
aufweist, um Roh-Eingangsdaten, für die CRC-Bits berechnet
werden sollen, in Parallelformat zu empfangen.
12. Einrichtung nach Anspruch 10, bei der die
Berechnungseinrichtung (32) eine einzige Reihe von
Schiebeverbindungen aufweist, von denen bestimmte Exklusiv-ODER-
Gatter sind, wobei die Reihe von Schiebeverbindungen
aufweist: mehrere Eingänge, einschließlich eines ersten
Eingangs von jedem der Exklusiv-ODER-Gatter, die mit den
Ausgängen
des Prüfsummenregisters (30) verbunden sind, und
mehrere Ausgänge, die durch den Eingangsmultiplexer (86)
mit dem Dateneingang des Prüfsummenregisters verbunden
sind, und ein Eingangsgatter zum Durchführen einer
logischen Exklusiv-ODER-Operation zwischen an dem
Rohdateneingang eintreffenden seriellen Daten und in der
signifikantesten Bitposition des Prüfsummenregisters
gespeicherten CRC-Daten und zum Verbinden des so erzeugten
Ausgangssignals mit einem zweiten Eingang jedes Exklusiv-ODER-
Gatters in der besagten Reihe von Schiebeverbindungen,
wobei das Eingangsgatter, das Prüfsummenregister und die
Reihe von Schiebeverbindungen verbunden sind, um die
eintreffenden seriellen Roh-Daten durch ein vorbestimmtes
binäres Polynom zu dividieren und den Rest als die CRC-
Bits in dem Prüfsummenregister (30) zu speichern.
13. Einrichtung nach Anspruch 10, bei der die
Voreinstellungseinrichtung (109) beim ersten Taktzyklus der
CRC-Bit-Berechnung sämtlich logische 1-Werte an den Eingängen der
Berechnungseinrichtung (32, 60) erzwingt.
14. Einrichtung nach Anspruch 10, bei der die
Voreinstellungseinrichtung einen dritten Dateneingang zu dem
Eingangsmultiplexer (86) aufweist, wobei der dritte Eingang mit
einer Quelle sämtlicher logischer 1-Werte zum Laden in das
Prüfsummenregister (30) vor dem ersten Taktzyklus der CRC-
Bit-Berechnung verbunden ist.
15. Einrichtung nach Anspruch 12, bei der die
Berechnungseinrichtung versehen ist mit mit dem
Eingangsgatter und den Exklusiv-ODER-Gattern in der Reihe von
Schiebeverbindungen verbundenen
Verschiebegattereinrichtungen zum Empfangen eines SHIFT-NOT-Signals und Zulassen
einer CRC-Bit-Berechnung, während sich das
SHIFT-NOT-Signal in einem logischen Zustand befindet, und um in einem
anderen logischen Zustand des SHIFT-NOT-Signals zu
veranlassen, daß die Bits in dem Prüfsummenregister zu der
signifikantesten Bitposition hin verschoben werden.
16. Einrichtung zum Berechnen und Ausgeben separater CRCH-Bits
aus Header-Bits eines Header-Bereichs und CRCD-Bits aus
Datenbits eines Datenabschnitts einer digitalen
Mitteilung, mit:
einem Prüfsummenregister (30) mit einem Dateneingang zum
Empfangen von CRC-Bits, die in ihm gespeichert werden
sollen, und mit einem Datenausgang;
einer Berechnungseinrichtung (32,60) mit Dateneingängen,
die mit den Datenausgängen des Prüfsummenregisters
verbunden sind, einem Rohdateneingang zum Empfangen von
Rohdaten, für die CRC-Bits zu berechnen sind, und
Datenausgängen, wobei die Berechnungseinrichtung ein durch die
Rohdaten repräsentiertes Polynom durch ein vorbestimmtes
Polynom dividiert und den Rest als CRC-Bits in dem
Prüfsummenregister speichert, wobei die CRCH-Bits aus die
Header-Bits enthaltenden Roh-Eingangsdaten berechnet
werden und wobei die CRCD-Bits aus die Daten-Bits
enthaltenden Roh-Eingangsdaten berechnet werden;
gekennzeichnet durch einen Eingangsmultiplexer (86) mit
einem ersten Eingang, der mit dem Datenausgang des
Prüfsummenregisters verbunden ist, und einem zweiten Eingang,
der mit den Dateneingängen der Berechnungseinrichtung
(32,60) verbunden ist, und mit einem Datenausgang (88),
der mit dem Dateneingang des CRC-Prüfsummenregisters
verbunden ist, und mit einem Eingang zum Empfangen eines
Auswahl-Steuersignals, das steuert, ob die Daten an den
ersten oder den zweiten Eingängen des Eingangsmultiplexers
über den Datenausgang (88) in das CRC-Prüfsummenregister
geladen werden, und ferner umfassend
Voreinstellungseinrichtungen (86 Eingang C, 109), um zu
vorbestimmten Zeiten bei der durch die Berechnungseinrichtung
(32,60) erfolgenden Berechnung der CRC-Bits die mit den
Datenausgängen des CRC-Prüfsummenregisters verbundenen
Dateneingänge der Berechnungseinrichtung (32,60) sämtlich
auf logische 1-Werte voreinzustellen, derart, daß die
Berechnungseinrichtung beim Beginn der Berechnung jedes
dem CRCH-Bits und der CRCD-Bits sämtlich mit Logik-1-CRC-
Bits startet.
17. Einrichtung nach Anspruch 16, bei der die
Voreinstellungseinrichtung einen dritten Eingang des Eingangsmultiplexers
(86) zur Verbindung mit einer Quelle sämtlicher logischer
1-Werte aufweist, die vor dem Start der Berechnung jedes
der CRCH-Bits und der CRCD-Bits selektiv in das
Prüfsummenregister (30) geladen werden können.
18. Einrichtung nach Anspruch 16, bei der die
Voreinstellungseinrichtung Einrichtungen (109) aufweist, um während des
ersten Taktzyklus der Berechnung jedes der CRCH-Bits und
der CRCD-Bits sämtlich logische 1-Werte an den
Dateneingängen der Berechnungseinrichtung (32,60) zu erzwingen.
19. Einrichtung nach Anspruch 16 oder 17 oder 18, ferner mit
einem Schnapschußregister mit Dateneingängen, die mit den
Datenausgängen der Berechnungseinrichtung (32,60)
verbunden sind, mit einem Datenausgang zum Ausgeben der CRCH-
Bits und mit einem Eingang zum Empfangen eines END OF
HEADER CLOCK-Signals, das aktiv wird, wenn das letzte
Header-Bit an dem Rohdateneingang empfangen wird, wobei
das Schnapschußregister bei Aktivierung des END OF HEADER
CLOCK-Signals die CRCH-Bits an den Datenausgängen der
Berechnungseinrichtung (32,60) einlädt und die CRCH-Bits
an die Datenausgänge des Schnapschußregisters anlegt.
20. Einrichtung nach Anspruch 16 oder 17 oder 18 oder 19,
ferner mit einem byte-breiten Ausgangsbus und einem
zweiten Multiplexer (72), der mehrere byte-breite
Eingangsbusse aufweist, die jeweils über die jedem Byte dar CRC-
Bits entsprechenden Prüfsummenregister-Datenausgänge mit
einem Byte von CRC-Bits in dem Prüfsummenregister (30)
verbunden sind.
21. Einrichtung nach Anspruch 16 oder 17 oder 18 oder 19,
ferner mit einem byte-breiten Ausgangsbus, der mit den
Datenausgängen des signifikantesten Byte des
CRC-Prüfsummenregisters verbunden ist, und ferner mit mit der
Berechnungseinrichtung (32,60) verbundenen
Verschiebeeinrichtungen, die einen Eingang zum Empfangen eines SHIFT-NOT-
Signals aufweisen, um, wenn das SHIFT-NOT-Signal aktiv
ist, den Inhalt des Prüfsummenregisters (30) konstant zu
halten, jedoch gleichzeitig die CRC-Bits in dem
Prüfsummenregister (30) zu der signifikantesten Bitposition des
Prüfsummenregisters hin zu verschieben.
22. Verfahren zum Berechnen von CRC-Bits für ein ein Header-
Paket und ein Datenpaket enthaltendes Paket von Daten
unter Verwendung eines Prüfsummenregisters und einer
Berechnungseinrichtung, die ein Array von
Schiebeverbindungen, mit den Ausgängen des Prüfsummenregisters verbundene
Eingänge und einen Rohdateneingang aufweist, mit den
folgenden Verfahrensschritten:
entweder Voreinstellen des Prüfsummenregisters sämtlich
auf logische 1-Werte oder sämtlich zwangsweises Anlegen
logischer 1-Werte an die Ausgänge des mit dem
Prüfsummenregister verbundenen Array von Schiebeverbindungen,
Berechnen von CRCH-Bits für das Header-Paket unter
Verwendung von Bits aus dem Header-Paket und Bits aus dem
Prüfsummenregister als Eingaben, die von dem Array von
Schiebeverbindungen zu kombinieren sind; und anschließend
entweder
(a) Ausgeben der so berechneten CRCH-Bits, nachdem
sämtliche Bits in dem Header-Paket von der Recheneinrichtung
verarbeitet worden sind, während der Inhalt des
Prüfsummenregisters konstant gehalten wird;
zwangsweises Veranlassen der in dem Prüfsummenregister
gespeicherten Bits zur Annahme des Bit-Musters des
Standard-Rest-Polynoms, nachdem sämtliche CRCH-Bits ausgegeben
worden sind und vor dem ersten Taktzyklus von CRCD-Bit-
Berechnungen, wobei sich das Standard-Rest-Polynom ergibt,
wenn CRC-Bits für irgendein Datenpaket berechnet werden
plus der für dieses Datenpaket berechneten CRC-Bits; und
Berechnen von CRCD-Bits unter Verwendung von Datenbits aus
dem Datenpaket, beginnend mit den erzwungenen Bits des
Standard-Rest-Polynoms in dem Prüfsummenregister; oder
(b) Kopieren der so berechneten CRCH-Bits in ein
Schnappschußregister, und zwar nachdem sämtliche Bits des Header-
Pakets zur Berechnung von CRCH-Bits verarbeitet worden
sind;
Ausgeben der CRCH-Bits aus dem Schnappschußregister und
Kopieren der CRCH-Bits in das Prüfsummenregister und
Schalten der Rohdateneingänge des Arrays von
Schiebeverbindungen
derart, daß das Array Bits aus dem Datenpaket zu
empfangen beginnt, um die Berechnung der CRCD-Bits
basierend auf der Kombination der CRCH-Bits in dem
Prüfsummenregister (30) mit den an dem Rohdateneingang eintreffenden
Bits aus dem Datenpaket zu beginnen;
Fortsetzen der Berechnung der CRCD-Bits, bis sämtliche
Bits in dem Datenpaket verarbeitet worden sind, oder
(c) Ausgeben der so berechneten CRCH-Bits, nachdem
sämtliche Bits in dem Header-Paket verarbeitet worden sind,
während der Inhalt des Prüfsummenregisters konstant gehalten
wird;
entweder Voreinstellen des Prüfsummenregisters sämtlich
auf logische 1-Werte oder sämtlich Erzwingen logischer 1-
Werte an den Eingängen des mit dem Prüfsummenregister
verbundenen Array von Schiebeverbindungen; und
Berechnen von CRCD-Bits für die Bits des Datenpakets durch
Kombinieren der an dem Rohdateneingang eintreffenden
Datenpaket-Bits und der an die Eingänge des mit dem
Prüfsummenregister verbundenen Array von Schiebeverbindungen
angelegten logischen 1-Werte; und
Ausgeben der so berechneten CRCD-Bits.
23. Verfahren nach Anspruch 22, bei dem die Berechnung neuer
CRC-Bits deaktiviert wird, während die für das Header-
Paket berechneten CRC-Bits ausgegeben werden; und bei dem
die Berechnung von CRC-Bits für die Bits des Datenpakets
nur durchgeführt wird, wenn sämtliche Header-CRC-Bits
ausgegeben worden sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/803,367 US4712215A (en) | 1985-12-02 | 1985-12-02 | CRC calculation machine for separate calculation of checkbits for the header packet and data packet |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3689285D1 DE3689285D1 (de) | 1993-12-16 |
DE3689285T2 true DE3689285T2 (de) | 1994-05-11 |
Family
ID=25186354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE86309177T Expired - Fee Related DE3689285T2 (de) | 1985-12-02 | 1986-11-25 | CRC-Rechenmaschinen. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4712215A (de) |
EP (1) | EP0230730B1 (de) |
JP (1) | JPH0831802B2 (de) |
AT (1) | ATE97276T1 (de) |
DE (1) | DE3689285T2 (de) |
ES (1) | ES2046172T3 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005029515A1 (de) * | 2005-06-25 | 2006-12-28 | Bosch Rexroth Aktiengesellschaft | Verfahren zur Berechnung von CRC-Prüfwerten und Logikschaltung |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4897835A (en) * | 1985-11-27 | 1990-01-30 | At&E Corporation | High capacity protocol with multistation capability |
US5682148A (en) * | 1985-11-27 | 1997-10-28 | Seiko Corporation | Paging system with message numbering prior to transmission |
US4901316A (en) * | 1986-05-27 | 1990-02-13 | Nohmi Bosai Kogyo Co., Ltd. | Disaster prevention monitoring and control facility |
JPH0193933A (ja) * | 1987-10-06 | 1989-04-12 | Sony Corp | エラー訂正符号化装置 |
US4947484A (en) * | 1987-11-10 | 1990-08-07 | Echelon Systems Corporation | Protocol for network having a plurality of intelligent cells |
DE3890947C2 (de) * | 1987-11-10 | 1995-05-18 | Echelon Systems | Netzwerk und Verfahren zur Nachrichtenübertragung |
US4996690A (en) * | 1988-08-26 | 1991-02-26 | Stac Electronics | Write operation with gating capability |
EP0411110A4 (en) * | 1989-02-16 | 1993-02-24 | Grumman Aerospace Corporation | Very high speed error detection network |
GB2242104B (en) * | 1990-02-06 | 1994-04-13 | Digital Equipment Int | Method and apparatus for generating a frame check sequence |
US5121397A (en) * | 1990-02-14 | 1992-06-09 | Hewlett-Packard Company | Method and apparatus for producing order independent signatures for error detection |
US5321704A (en) * | 1991-01-16 | 1994-06-14 | Xilinx, Inc. | Error detection structure and method using partial polynomial check |
DE69217930T2 (de) * | 1992-07-14 | 1997-09-25 | Alcatel Bell Nv | Teiler zur Division eines ersten Polynoms durch ein zweites |
ES2100269T3 (es) * | 1992-07-14 | 1997-06-16 | Alcatel Bell Nv | Dispositivo de deteccion y correccion de error. |
GB9314479D0 (en) * | 1992-11-06 | 1993-08-25 | Hewlett Packard Co | Encoding data |
US5390196A (en) * | 1992-11-12 | 1995-02-14 | Bull Hn Information Systems Inc. | Byte-wise determination of a checksum from a CRC-32 polynomial |
SE470544B (sv) * | 1992-11-24 | 1994-07-25 | Ellemtel Utvecklings Ab | För en bitfelsövervakning i en väljarutrustning avsedd anordning |
CA2129236C (en) * | 1992-12-29 | 1998-12-22 | Shiping Li | Efficient crc remainder coefficient generation and checking device and method |
EP0614294A1 (de) * | 1993-03-03 | 1994-09-07 | International Business Machines Corporation | Verfahren zur Erzeugung eines Prüfmusters für Rahmen |
JP2814918B2 (ja) | 1994-07-07 | 1998-10-27 | 株式会社デンソー | マイクロコンピュータ |
US5592498A (en) * | 1994-09-16 | 1997-01-07 | Cirrus Logic, Inc. | CRC/EDC checker system |
FR2759796B1 (fr) * | 1997-02-19 | 2001-12-07 | Bull Sa | Dispositif et procede de detection d'erreurs sur un circuit integre comportant un port parallele serie |
US5951707A (en) * | 1997-06-27 | 1999-09-14 | International Business Machines Corporation | Method of partitioning CRC calculation for a low-cost ATM adapter |
US6075774A (en) * | 1997-11-18 | 2000-06-13 | 3Com Corporation | Method and device for generating a frame check sequence |
US6681203B1 (en) * | 1999-02-26 | 2004-01-20 | Lucent Technologies Inc. | Coupled error code protection for multi-mode vocoders |
US6320501B1 (en) | 1999-05-25 | 2001-11-20 | Pittway Corporation | Multiple sensor system for alarm determination with device-to-device communications |
US6681364B1 (en) | 1999-09-24 | 2004-01-20 | International Business Machines Corporation | Cyclic redundancy check for partitioned frames |
US6530061B1 (en) * | 1999-12-23 | 2003-03-04 | Intel Corporation | Method and apparatus for offloading checksum |
US6848072B1 (en) * | 2000-09-19 | 2005-01-25 | Bbn Solutions Llc | Network processor having cyclic redundancy check implemented in hardware |
US6643821B2 (en) * | 2000-11-30 | 2003-11-04 | Stmicroelectronics, Inc. | Method and device for computing incremental checksums |
US20040015771A1 (en) * | 2002-07-16 | 2004-01-22 | Menahem Lasser | Error correction for non-volatile memory |
US7607070B2 (en) * | 2004-09-13 | 2009-10-20 | National Instruments Corporation | System and method for in-line consistency checking of packetized data |
US20060253768A1 (en) * | 2005-05-03 | 2006-11-09 | Intel Corporation | Techniques to speculatively determine network protocol unit integrity |
KR101224591B1 (ko) * | 2006-02-23 | 2013-01-22 | 삼성전자주식회사 | 네트워크 중계 장치 및 그 방법 |
GB0607976D0 (en) * | 2006-04-22 | 2006-05-31 | Univ Belfast | Apparatus and method for computing an error detection code |
US7823043B2 (en) * | 2006-05-10 | 2010-10-26 | Sandisk Il Ltd. | Corruption-resistant data porting with multiple error correction schemes |
US8234539B2 (en) * | 2007-12-06 | 2012-07-31 | Sandisk Il Ltd. | Correction of errors in a memory array |
US9891985B1 (en) * | 2014-11-01 | 2018-02-13 | Netronome Systems, Inc. | 256-bit parallel parser and checksum circuit with 1-hot state information bus |
TWI658364B (zh) | 2018-03-20 | 2019-05-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
TWI698750B (zh) * | 2018-03-20 | 2020-07-11 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
CN113300716A (zh) * | 2020-07-14 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 循环冗余校验码的生成方法、设备以及计算机可读介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3703705A (en) * | 1970-12-31 | 1972-11-21 | Ibm | Multi-channel shift register |
US3798597A (en) * | 1972-06-26 | 1974-03-19 | Honeywell Inf Systems | System and method for effecting cyclic redundancy checking |
FR2225890B1 (de) * | 1973-04-13 | 1976-09-10 | Honeywell Bull Soc Ind | |
DE2347317A1 (de) * | 1973-09-20 | 1975-04-03 | Licentia Gmbh | Schaltungsanordnung zur erzeugung von pruefstellen in anlagen zur gesicherten datenuebertragung |
US3872430A (en) * | 1973-11-23 | 1975-03-18 | Paul Emile Boudreau | Method and apparatus of error detection for variable length words using a polynomial code |
JPS5425764A (en) * | 1977-07-28 | 1979-02-26 | Daifuku Machinery Works | Device for simultaneous measurement of volume and weight |
JPS5437460A (en) * | 1977-07-28 | 1979-03-19 | Chino Works Ltd | Integral ad converter |
US4282551A (en) * | 1979-04-11 | 1981-08-04 | Hitachi, Ltd. | PCM Recording and reproducing apparatus |
SE417760B (sv) * | 1979-05-15 | 1981-04-06 | Ellemtel Utvecklings Ab | Sett att vid dataoverforing mellan en sendande dator och en mottagande dator overvaka fel och anordning for genomforande av settet |
US4410989A (en) * | 1980-12-11 | 1983-10-18 | Cyclotomics, Inc. | Bit serial encoder |
US4380029A (en) * | 1981-03-13 | 1983-04-12 | Bti Computer Systems | Data recording format and method and apparatus for producing same |
DE3122381A1 (de) * | 1981-06-05 | 1982-12-23 | Ibm Deutschland Gmbh, 7000 Stuttgart | Verfahren und einrichtung zur erzeugung von pruefbits zur sicherung eines datenwortes |
JPS58206254A (ja) * | 1982-05-27 | 1983-12-01 | Nec Corp | 誤り検出符号生成/検査方式 |
US4498174A (en) * | 1982-08-25 | 1985-02-05 | Ael Microtel Limited | Parallel cyclic redundancy checking circuit |
US4454600A (en) * | 1982-08-25 | 1984-06-12 | Ael Microtel Limited | Parallel cyclic redundancy checking circuit |
JPS59177705A (ja) * | 1983-03-25 | 1984-10-08 | Fujitsu Ltd | デ−タ記録方式 |
US4593393A (en) * | 1984-02-06 | 1986-06-03 | Motorola, Inc. | Quasi parallel cyclic redundancy checker |
JPS60206227A (ja) * | 1984-03-30 | 1985-10-17 | Oki Electric Ind Co Ltd | 誤り訂正復号回路 |
-
1985
- 1985-12-02 US US06/803,367 patent/US4712215A/en not_active Expired - Lifetime
-
1986
- 1986-11-25 ES ES198686309177T patent/ES2046172T3/es not_active Expired - Lifetime
- 1986-11-25 AT AT86309177T patent/ATE97276T1/de not_active IP Right Cessation
- 1986-11-25 EP EP86309177A patent/EP0230730B1/de not_active Expired - Lifetime
- 1986-11-25 DE DE86309177T patent/DE3689285T2/de not_active Expired - Fee Related
- 1986-12-01 JP JP61286556A patent/JPH0831802B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005029515A1 (de) * | 2005-06-25 | 2006-12-28 | Bosch Rexroth Aktiengesellschaft | Verfahren zur Berechnung von CRC-Prüfwerten und Logikschaltung |
Also Published As
Publication number | Publication date |
---|---|
US4712215A (en) | 1987-12-08 |
EP0230730A3 (en) | 1990-03-14 |
DE3689285D1 (de) | 1993-12-16 |
EP0230730A2 (de) | 1987-08-05 |
EP0230730B1 (de) | 1993-11-10 |
ATE97276T1 (de) | 1993-11-15 |
JPS62133825A (ja) | 1987-06-17 |
ES2046172T3 (es) | 1994-02-01 |
JPH0831802B2 (ja) | 1996-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3689285T2 (de) | CRC-Rechenmaschinen. | |
DE3650102T2 (de) | Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode. | |
DE3688238T2 (de) | CRC-Rechenanordnung. | |
DE3689282T2 (de) | CRC-Rechenmaschine und Methode zur CRC-Berechnung. | |
DE3840969C2 (de) | ||
DE2828726C2 (de) | Monolithische integrierte Schaltungsstruktur mit einer Speichervorrichtung | |
DE69030016T2 (de) | Mit N-bit Zählern arbeitende Synchronisationsschaltung in einem Speicherbaustein | |
DE2612311A1 (de) | Datenschleifen-vielfachleitungs- verbindungssystem | |
DE4121444A1 (de) | System und verfahren zur fehlerdetektion und zur reduzierung von simultanem schaltrauschen | |
DE2916619A1 (de) | System zum uebertragen binaerer daten ueber eine anzahl von kanaelen | |
EP0424554A1 (de) | Mehrstufiger Seriell-zu-Parallel- und/oder Parallel-zu-Seriell-Umsetzer | |
DE69129889T2 (de) | Pipelineschaltung und Verfahren zum Vergleich der relativen Differenz zwischen zwei asynchronen Zeigern und einem programmierbaren Wert | |
EP0325318B1 (de) | Vermittlungsanlage | |
EP0628832A2 (de) | Integrierte Schaltung mit Registerstufen | |
DE69128835T2 (de) | Logische Maschine zur Verarbeitung von Kontrollinformation eines Telekommunikation-Übertragungsrahmens | |
DE2538802C2 (de) | Schaltung zum Nachweis von Fehlern unter den aus Informations- und Prüfbits erzeugten, einen fehlerhaften Speicherort angebenden Bits | |
EP0374436B1 (de) | Verfahren und Schaltungsanordnung zur Taktanpassung in der digitalen Nachrichtentechnik | |
DE2933830C2 (de) | Programmierbarer Polynomgenerator | |
EP0101056A2 (de) | Synchronisieranordnung | |
DE2242279C3 (de) | Schaltungsanordnung zur Ermittlung von Fehlern in einer Speichereinheit eines programmgesteuerten Datenvermittlungssystems | |
DE2524129C3 (de) | Zeitsteuereinheit für die Steuerung logischer Schaltungen | |
DE1296192B (de) | Binaere Codeschaltung | |
DE3688139T2 (de) | Gedoppelte Schaltungsanordnung zur schnellen Übertragung und Reparierbarkeit. | |
EP0489952B1 (de) | Schaltungsanordnung zur digitalen Bit-seriellen Signalverarbeitung | |
DE3923764C1 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |