DE3650102T2 - Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode. - Google Patents
Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode.Info
- Publication number
- DE3650102T2 DE3650102T2 DE3650102T DE3650102T DE3650102T2 DE 3650102 T2 DE3650102 T2 DE 3650102T2 DE 3650102 T DE3650102 T DE 3650102T DE 3650102 T DE3650102 T DE 3650102T DE 3650102 T2 DE3650102 T2 DE 3650102T2
- Authority
- DE
- Germany
- Prior art keywords
- input
- data
- crc
- row
- bits
- 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
- 238000000034 method Methods 0.000 title claims description 46
- 125000004122 cyclic group Chemical group 0.000 title description 8
- 238000004364 calculation method Methods 0.000 claims abstract description 108
- 230000006870 function Effects 0.000 claims description 15
- 239000004020 conductor Substances 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 210000004027 cell Anatomy 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised 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)
- Data Exchanges In Wide-Area Networks (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 mit 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 Lä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¹&sup0; + 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 werden 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 vorstehend 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. 4 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, 172, 174, 176, 178 und 180 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 US-Patentschrift Nr. 3 676 469 beschreibt eine Zyklusteilerschaltung zum Entwickeln zyklischer Redundanzprüfungen für Daten, die für mehr als eine Zeichen-Bemessung und für mehr als ein Polynom verwendet werden können.
- IBM Technical Disclosure Bulletin Vol. 19, Nr. 6 vom November 1976 beschreibt eine Schaltung zum Prüfen zyklischer Redundanz zur Verwendung mit einer Architektur für synchrone Datenverbindungssteuerung.
- Die Erfindung erfüllt den Wunsch nach einer CRC-Prüfmaschine, die CRC-Prüfbits für Mehr-Byte-Meldungen berechnen kann, während sie ein oder mehrere Bits in dem ersten Byte der Meldung ignoriert.
- Somit schafft die Erfindung eine Einrichtung zum Berechnen von CRC-Bits aus einem Rohdatenpaket, das mehrere Daten-Bytes aufweist und bei dem ein oder mehrere gewählte Bits in einem gewählten Byte von Roh-Eingangsdaten aus der CRC-Berechnung ausgeschlossen werden können, mit:
- einem CRC-Prüfsummenregister mit mehreren Speicherzellen, die jeweils einen Dateneingang, einen Datenausgang und einen Byte- Takteingang aufweisen, der derart verbunden ist, daß auf ein Byte-Taktsignal an dem Byte-Takteingang hin an den Dateneingängen anstehende Daten in die jeweiligen Speicherzellen geladen werden;
- einer Berechnungseinrichtung, die mehrere Reihen von Schiebeverbindungen aufweist, von denen jede einen Rohdateneingang zum Empfang eines jeweiligen Bit des gewählten Byte von Roh- Eingangsdaten aufweist, wobei die Reihen von Schiebeverbindungen jeweils eine am wenigsten signifikante Schiebeverbindung aufweisen und die Reihen von Schiebeverbindungen derart miteinander verbunden sind, daß sie ein Array mit Datenausgängen bilden, die mit den Dateneingängen des CRC-Prüfsummenregisters verbunden sind; und die Dateneingänge aufweist, die derart verbunden sind, daß sie an den Datenausgängen des CRC-Prüfsummenregisters anstehende Daten empfangen; und die derart ausgelegt ist, daß sie die Roh-Eingangsdaten durch ein bestimmtes Erzeugungspolynomkoeffizienten-Bitmuster dividiert und das Ergebnis der Division als die CRC-Prüfbits in dem CRC-Prüfsummenregister speichert, wobei die Berechnungseinrichtung ferner für jede Reihe von Schiebeverbindungen jeweils ein Eingangsgatter aufweist, das derart verbunden ist, daß es auf ein gewähltes Bit des gewählten Byte von Roh-Eingangsdaten und ein Bit aus dem signifikantesten Byte des Ausgangssignals des Prüfsummenregisters reagiert, wobei die Einrichtung gekennzeichnet ist durch:
- eine Ignoriereinrichtung, um die Berechnungseinrichtung zu veranlassen, gewählte Bits in dem gewählten Byte von Roh-Eingangsdaten zu ignorieren, mit:
- einer Voreinstelleinrichtung zum selektiven Koppeln eines Eingangs jedes Eingangsgatters und der in der ersten Reihe angeordneten Schiebeverbindungen der Berechnungseinrichtung an einem entsprechenden Datenausgang des CRC-Prüfsummenregisters, um bei Geltendmachung eines Voreinstellsignals zwangsweise einen vorbestimmten logischen wert an den Eingang jedes Eingangsgatters und jede Schiebeverbindung anzulegen, jedoch bei Nicht-Geltendmachung des Voreinstellsignals die Daten in dem Prüfsummenregister an den Eingang des Eingangsgatters aus zugeben;
- mehrere Reihentransparenzsteuereinrichtungen, von denen jede mit einem von mehreren Ignoriersignalen gekoppelt ist, und von denen jede einer Reihe des Array von Schiebeverbindungen zugeordnet ist, um die Bits des gewählten Byte von Roh-Eingangsdaten selektiv mit den Reihen des Array von Schiebeverbindungen zu verbinden, wobei jedes Bit des gewählten Byte einer Reihe des Array zugeordnet ist; wobei jede der Reihentransparenzsteuereinrichtungen derart ausgelegt ist, daß sie das entsprechende Bit des gewählten Byte von Roh-Eingangsdaten mit der entsprechenden Reihe des Berechnungs-Array verbindet, wenn das betreffende Ignoriersignal für die entsprechende Reihe nicht geltend gemacht wird, und daß sie die Schiebeverbindungen jeder Reihe, für die das entsprechende Ignoriersignal geltend gemacht wird, transparent macht, indem die Daten unverändert durch die Reihe gelassen werden, wenn das betreffende Ignoriersignal für die entsprechende Reihe geltend gemacht wird.
- Gemäß einem weiteren Aspekt gibt die Erfindung ein Verfahren an, um CRC-Bits für ein Datenpaket zu berechnen, das ein oder mehrere Rohdaten-Bytes aufweist, bei denen ein gewähltes Rohdaten-Byte ein oder mehrere gewählte Bits hat, die bei der Durchführung der CRC-Berechnung ignoriert werden sollen, in einem System, bei dem ein CRC-Prüfsummenregister verwendet wird, um die berechneten CRC-Bits zu speichern, und das versehen ist mit einem CRC-Bit-Berechnungs-Array mit mehreren Reihen von Schiebeverbindungen, von denen jede einen Rohdateneingang hat, der ein jeweiliges der Rohdaten-Bits von dem gewählten Byte von Roh-Eingangsdaten empfängt, für die CRC- Bits berechnet werden sollen, und ferner mit mehreren Eingängen für berechnete Daten, die mit den Ausgängen des CRC-Prüfsummenregisters verbunden sind, wobei das CRC-Bit-Berechnungs- Array Datenausgänge aufweist, die mit Dateneingängen des CRC- Prüfsummenregisters verbunden sind, und wobei das CRC-Bit- Berechnungs-Array ferner mehrere Ignorier-Eingänge zum Empfangen jeweiliger Ignorier-Steuersignale aufweist, die jeder Reihe in dem Berechnungs-Array entsprechen; wobei das Verfahren den folgenden Schritt aufweist:
- Empfangen des gewählten Roh-Eingangsdaten-Byte an dem Rohdaten-Eingang des CRC-Bit-Berechnungs-Array, wobei für jedes Bit in einem Byte von Roh-Eingangsdaten eine Reihe bestimmt ist; und gekennzeichnet ist durch die folgenden Schritte:
- Zwingen jeder Reihe von Schiebeverbindungen, die einem der ein oder mehreren zu ignorierenden Bits entsprechen, einen logisch transparenten Zustand anzunehmen und den an dem Eingang für berechnete Daten empfangenen logischen wert um eine Position verschoben, jedoch anderweitig unverändert an die nächste Reihe weiterzugeben, wenn sich das Ignorier-Steuersignal für die entsprechende zu ignorierende Reihe in einem bestimmten Zustand befindet; und durch
- Berechnen der CRC-Bits beginnend mit der ersten Reihe in dem CRC-Bit-Berechnungs-Array, die nicht in den transparenten Zustand gezwungen worden ist, durch Durchleiten der Rohdaten- Bits und der Bits in dem CRC-Prüfsummenregister durch das Array zur Durchführung von Mehrfachverschiebungen und logischen Exklusiv-ODER-Operationen, um das durch die Daten-Bits repräsentierte Polynom durch ein vorbestimmtes Polynom zu dividieren und das Rest-Polynom der Division in dem CRC-Prüfsummenregister zu speichern.
- Bei einem weiteren Ausführungsbeispiel sind die ODER-Gatter durch Multiplexer ersetzt. Diese Multiplexer sind über einen Eingang mit einem logischen Eins-Signal und über den anderen Eingang mit dem Ausgang des Prüfsummenregisters verbunden. Während des ersten Taktzyklus der CRC-Berechnung wählen die Multiplexer zwangsweise den mit den logischen 1-Werten gekoppelten Eingang und legen diese logischen 1-Werte an die Eingänge der ersten Reihe von Schiebeverbindungen an.
- Bei einer weiteren Ausführungsform wird ein Eingangsmultiplexer verwendet, der über seinen Ausgang mit den Dateneingängen des Prüfsummenregisters verbunden ist. Ein Eingang des Eingangsmultiplexers ist mit einer Quelle logischer 1-Werte verbunden. Wenn die CRC-Berechnungsmaschine voreingestellt werden soll, wählt der Eingangssmultiplexer zwangsweise die logischen 1-Werte derart, daß diese in das Prüfsummenregister geladen werden. Dies muß in einem Taktzyklus geschehen, der dem ersten Taktzyklus in der CRC-Berechnung vorausgeht.
- Das erfindungsgemäße Merkmal der variablen Bitbegrenzung wird erzielt, indem die Eingangsdaten durch mehrere ODER-Gatter in das Array eingegeben werden. Ein Eingang jedes ODER-Gatters ist mit einem der Bits der Eingangsdaten gekoppelt. Der andere Eingang jedes ODER-Gatters ist mit einem IGNORE-Signal für dieses bestimmte Bit gekoppelt. Die Ausgänge der ODER-Gatter sind mit einem Eingang des Exklusiv-ODER-"Eingangsgatters" für die diesem bestimmten Datenbit zugeordnete Zeile verbunden. Die Ausgange der Eingangsgatter sind normalerweise mit dem Dateneingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung in der nächsten Reihe verbunden. Bei der Erfindung jedoch sind ODER-Gatter zwischen dem Ausgang des Eingangsgatters für jede Reihe und dem Eingang der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung in der nächsten Reihe angeordnet. Ein Eingang jedes der Gatter in dieser zweiten Gruppe von ODER-Gattern ist mit dem IGNORE-Signal für diese bestimmte Reihe verbunden.
- Wenn bestimmte Bits des ersten Byte ignoriert werden sollen, werden die IGNORE-Signale für diese Bits geltend gemacht, wenn die logischen 1-Werte aus der voreingestellten Logik in die erste Reihe des Array gelangen. Das IGNORE-Signal für jedes zu ignorierende Bit macht die diesem Bit zugeordnete Reihe des Array transparent, so daß die voreingestellten logischen 1- Werte durch die Reihe hindurch in die nächste Reihe bewegt werden. Die zweite Gruppe von ODER-Gattern invertiert die Signale von den Ausgängen der Eingangsgatter für jede transparente Reihe, so daß ein logischer 1-Wert in die die am wenigsten signifikante Bitposition aufweisende Schiebeverbindung der nächsten Reihe eingegeben wird.
- Diese und weitere Aspekte der Erfindung sind aus der folgenden detaillierten Erfindungsbeschreibung und den im folgenden kurz erläuterten Zeichnungen besser ersichtlich.
- 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 zeigt 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 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 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 ingesamt 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 Ausführungsform der Erfindung 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 Ausführungsform der Erfindung 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 Ausführungsform der Erfindung 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 der Ausführungsformen 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 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 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 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 veranschaulicht das erfindungsgemäße Merkmal der variablen Bitgrenze und andere Merkmale der Erfindung.
- Fig. 21 zeigt ein Zeitsteuerungsdiagramm für die Ausführungsform von Fig. 20, wobei die Arbeitsweise der Funktion der variablen Bitgrenze veranschaulicht ist.
- 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-Standard-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 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 Schiebeverbindungen 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 Multiplexer 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 Fign. 20A und 20B gezeigte Einrichtung zum Durchführen der anderen erfindungsgemäßen Funktionen zu steuern, die die Ausführungsform von Fign. 20A und 20B 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 130 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 62, 64 und 65 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 62, 64 und 65 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 63. Diese gemeinsame Eingangsleitung führt das Ausgangssignal von dem Eingangsgatter 62, nachdem es durch das Nicht SHIFT-Signal auf der Leitung 151 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 63 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 63 und den Dateneingang 153 der die am wenigsten signifikante Bitposition aufweisenden Schiebeverbindung geschaltet. Dieses ODER-Gatter 118 ist über einen Eingang mit der gemeinsamen Eingangsleitung 63 und über einen weiteren Eingang mit der das Signal IGNORE 7 führenden Leitung verbunden. Das Ausgangssignal dieses ODER- Gatters ist mit dem Eingang 153 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.
- Es wird verwiesen auf die mitanhängigen Europäischen Patentanmeldungen Nr. 86 309 176 und 86 309 177, veröffentlicht unter EP-A-0 226 353 bzw. EP-A-0 230 730.
Claims (7)
1. Einrichtung zum Berechnen von CRC-Bits aus einem
Rohdatenpaket, das mehrere Daten-Bytes aufweist und bei dem ein
oder mehrere gewählte Bits in einem gewählten Byte von
Roh-Eingangsdaten aus der CRC-Berechnung ausgeschlossen
werden können, mit:
einem CRC-Prüfsummenregister (30) mit mehreren
Speicherzellen, die jeweils einen Dateneingang, einen Datenausgang
und einen Byte-Takteingang aufweisen, der derart verbunden
ist, daß auf ein Byte-Taktsignal an dem Byte-Takteingang
hin an den Dateneingängen anstehende Daten in die
jeweiligen Speicherzellen geladen werden;
einer Berechnungseinrichtung (60), die mehrere Reihen von
Schiebeverbindungen aufweist, von denen jede einen
Rohdateneingang (D0-D7) zum Empfang eines jeweiligen Bit des
gewählten Byte von Roh-Eingangsdaten aufweist, wobei die
Reihen von Schiebeverbindungen jeweils eine am wenigsten
signifikante Schiebeverbindung aufweisen und die Reihen
von Schiebeverbindungen derart miteinander verbunden sind,
daß sie ein Array mit Datenausgängen bilden, die mit den
Dateneingängen des CRC-Prüfsummenregisters (30) verbunden
sind; und die Dateneingänge aufweist, die derart verbunden
sind, daß sie an den Datenausgängen des
CRC-Prüfsummenregisters (30) anstehende Daten empfangen; und die derart
ausgelegt ist, daß sie die Roh-Eingangsdaten durch ein
bestimmtes Erzeugungspolynomkoeffizienten-Bitmuster
dividiert und das Ergebnis der Division als die CRC-Prüfbits
in dem CRC-Prüfsummenregister (30) speichert, wobei die
Berechnungseinrichtung (60) ferner für jede Reihe von
Schiebeverbindungen jeweils ein Eingangsgatter (62,64,65
etc.) aufweist, das derart verbunden ist, daß es auf ein
gewähltes Bit des gewählten Byte von Roh-Eingangsdaten und
ein Bit aus dem signifikantesten Byte des Ausgangssignals
des Prüfsummenregisters reagiert,
gekennzeichnet durch:
eine Ignoriereinrichtung, um die Berechnungseinrichtung zu
veranlassen, gewählte Bits in dem gewählten Byte von Roh-
Eingangsdaten zu ignorieren, mit:
einer Voreinstelleinrichtung (109) zum selektiven Koppeln
eines Eingangs jedes Eingangsgatters und der in der ersten
Reihe angeordneten Schiebeverbindungen der
Berechnungseinrichtung an einem entsprechenden Datenausgang des CRC-
Prüfsummenregisters (30), um bei Geltendmachung eines
Voreinstellsignals (PRESET) zwangsweise einen
vorbestimmten logischen wert an den Eingang jedes Eingangsgatters
und jede Schiebeverbindung anzulegen, jedoch bei Nicht-
Geltendmachung des Voreinstellsignals die Daten in dem
Prüfsummenregister an den Eingang des Eingangsgatters
aus zugeben;
mehrere Reihentransparenzsteuereinrichtungen (110-117,
118-125), von denen jede mit einem von mehreren
Ignoriersignalen (IGNORE 0-7) gekoppelt ist, und von denen jede
einer Reihe des Array von Schiebeverbindungen zugeordnet
ist, um die Bits des gewählten Byte von Roh-Eingangsdaten
selektiv mit den Reihen des Array von Schiebeverbindungen
zu verbinden, wobei jedes Bit des gewählten Byte einer
Reihe des Array zugeordnet ist; wobei jede der
Reihentransparenzsteuereinrichtungen derart ausgelegt ist, daß
sie das entsprechende Bit des gewählten Byte von
Roh-Eingangsdaten mit der entsprechenden Reihe des Berechnungs-
Array verbindet, wenn das betreffende Ignoriersignal für
die entsprechende Reihe nicht geltend gemacht wird, und
daß sie die Schiebeverbindungen jeder Reihe, für die das
entsprechende Ignoriersignal geltend gemacht wird,
transparent macht, indem die Daten unverändert durch die Reihe
gelassen werden, wenn das betreffende Ignoriersignal für
die entsprechende Reihe geltend gemacht wird.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß
die mehreren Reihentransparenzsteuereinrichtungen
aufweisen:
mehrere erste ODER-Gatter (110-117), die jeweils mit einer
betreffenden Reihe in dem Array von Schiebeverbindungen
verbunden sind und die jeweils einen ersten Eingang zum
Empfang eines jeweiligen Roh-Eingangsdaten-Bit (D0-D7) von
dem gewählten Byte für die Reihe aufweisen, und die
jeweils einen zweiten Eingang zum Empfangen eines
entsprechenden der Ignoriersignale (IGNORE 0-7) aufweisen, das
angibt, wann das Roh-Eingangsdaten-Bit für diese Reihe in
der CRC-Berechnung ignoriert werden soll; und
mehrere zweite ODER-Gatter (118-125), die jeweils einer
betreffenden Reihe in dem Array von Schiebeverbindungen
zugeordnet sind, die jeweils einen ersten Eingang
aufweisen, der mit dem Ausgang des jeweiligen Eingangsgatters
für die entsprechende Reihe verbunden ist, die jeweils
einen zweiten Eingang zum Empfangen des jeweiligen der
Ignoriersignale (IGNORE 0-7) aufweisen, und die jeweils
einen Ausgang aufweisen, der mit dem Eingang der
Schiebeverbindung mit der am wenigsten signifikanten Bitposition
in der nächsten Reihe der Schiebeverbindungen verbunden
ist;
wobei die ersten und zweiten ODER-Gatter derart angeordnet
sind, daß sie veranlassen, daß die Reihen von
Schiebeverbindungen, die den Bits in dem gewählten Byte entsprechen,
ignoriert werden, damit die ODER-Gatter logisch
transparent werden, um die Daten von den Reihen-Eingängen zu den
Reihen-Ausgängen direkt unverändert durchzulassen, wenn
die jeweiligen Ignoriersignale (IGNORE 0-7) für die zu
ignorierenden Bits geltend gemacht werden; und ferner
dadurch gekennzeichnet, daß
jede Schiebeverbindung einen Eingang und einen Ausgang
aufweist und jede Schiebeverbindungs-Reihe über ihre
Eingänge mit den Ausgängen der Schiebeverbindungen
nächstgeringerer Signifikanz in der vorherigen Reihe verbunden
ist, mit Ausnahme der am wenigsten signifikanten
Schiebeverbindung in jeder Reihe, die über ihren Eingang mit dem
Ausgang der signifikantesten Schiebeverbindung in der
vorhergehenden Reihe verbunden ist, und mit Ausnahme der
ersten Reihe, die über ihre Eingänge mit den
Datenausgängen des CRC-Prüfsummenregisters (30) verbunden ist, als ob
das CRC-Prüfsummenregister eine vorhergehende Reihe von
Schiebeverbindungen wäre; und daß die letzte Reihe von
Schiebeverbindungen über ihre Datenausgänge mit den
Dateneingängen des CRC-Prüfsummenregisters verbunden ist; und
daß vorbestimmte der Schiebeverbindungen Exklusiv-ODER-
Gatter sind, die einen Eingang aufweisen, der derart
verbunden ist, daß er Daten von der Schiebeverbindung
nächstgeringerer Signifikanz in der vorhergehenden Reihe
empfängt, und die einen weiteren Eingang aufweisen, der
derart verbunden ist, daß er ein Signal empfängt, das aus dem
entsprechenden Roh-Eingangsdaten-Bit abgeleitet ist, mit
Ausnahme der Exklusiv-ODER-Gatter in der ersten Reihe, die
einen Eingang aufweisen, der derart verbunden ist, daß er
Daten von dem Prüfsummenregister empfängt.
3. Vorrichtung nach Anspruch 1 oder 2, dadurch
gekennzeichnet, daß das Eingangsgatter, das der ersten Reihe des
Berechnungseinrichtungs-Array entspricht, ein Exklusiv-
ODER-Gatter (62) ist, das derart angeordnet ist, daß es
zwischen dem signifikantesten in dem
CRC-Prüfsummenregister (30) gespeicherten CRC-Bit und dem ersten
Roh-Eingangsdaten-Bit
(D7) wirksam ist, welches eintreffen würde,
wenn die Daten seriell eingegeben würden, und daß das der
zweiten- Reihe entsprechende Eingangsgatter ein Exklusiv-
ODER-Gatter (64) ist, das zwischen dem nächstsignifikanten
in dem CRC-Prüfsummenregister (30) gespeicherten CRC-Bit
und dem zweiten Roh-Eingangsdaten-Bit (D6) betätigbar ist,
welches eintreffen würde, wenn die Roh-Eingangsdaten
seriell eingegeben würden, usw. für jede Reihe von
Schiebeverbindungen.
4. Verfahren zum Berechnen von CRC-Bits für ein Datenpaket,
das ein oder mehrere Rohdaten-Bytes aufweist, bei denen
ein gewähltes Rohdaten-Byte ein oder mehrere gewählte Bits
hat, die bei der Durchführung der CRC-Berechnung ignoriert
werden sollen, in einem System, bei dem ein
CRC-Prüfsummenregister (30) verwendet wird, um die berechneten CRC-
Bits zu speichern, und das versehen ist mit einem CRC-Bit-
Berechnungs-Array (60) mit mehreren Reihen von
Schiebeverbindungen, von denen jede einen Rohdateneingang (D&sub0;-D&sub7;)
hat, der ein jeweiliges der Rohdaten-Bits von dem
gewählten Byte von Roh-Eingangsdaten empfängt, für die CRC-Bits
berechnet werden sollen, und ferner mit mehreren Eingängen
für berechnete Daten, die mit den Ausgängen des
CRC-Prüfsummenregisters verbunden sind, wobei das
CRC-Bit-Berechnungs-Array (60) Datenausgänge aufweist, die mit
Dateneingängen des CRC-Prüfsummenregisters (30) verbunden sind,
und wobei das CRC-Bit-Berechnungs-Array ferner mehrere
Ignorier-Eingänge zum Empfangen jeweiliger
Ignorier-Steuersignale aufweist, die jeder Reihe in dem Berechnungs-
Array entsprechen; wobei das Verfahren den folgenden
Schritt aufweist:
Empfangen des gewählten Roh-Eingangsdaten-Byte an dem
Rohdaten-Eingang des CRC-Bit-Berechnungs-Array, wobei für
jedes Bit in einem Byte von Roh-Eingangsdaten eine Reihe
bestimmt ist; und gekennzeichnet ist durch die folgenden
Schritte:
Zwingen jeder Reihe von Schiebeverbindungen, die einem der
ein oder mehreren zu ignorierenden Bits entsprechen, einen
logisch transparenten Zustand anzunehmen und den an dem
Eingang für berechnete Daten empfangenen logischen wert um
eine Position verschoben, jedoch anderweitig unverändert
an die nächste Reihe weiterzugeben, wenn sich das
Ignorier-Steuersignal für die entsprechende zu ignorierende
Reihe in einem bestimmten Zustand befindet; und durch
Berechnen der CRC-Bits beginnend mit der ersten Reihe in
dem CRC-Bit-Berechnungs-Array, die nicht in den
transparenten Zustand gezwungen worden ist, durch Durchleiten der
Rohdaten-Bits und der Bits in dem CRC-Prüfsummenregister
durch das Array zur Durchführung von
Mehrfachverschiebungen und logischen Exklusiv-ODER-Operationen, um das durch
die Daten-Bits repräsentierte Polynom durch ein
vorbestimmtes Polynom zu dividieren und das Rest-Polynom der
Division in dem CRC-Prüfsummenregister zu speichern.
5. Verfahren nach Anspruch 4, gekennzeichnet durch das
Erzwingen eines gemeinsamen bestimmten Logikwertes als
Initial-Eingangsdatenwert an den Eingängen für berechnete
Daten des Berechnungs-Array gleichzeitig mit dem Empfang
des gewählten Roh-Daten-Byte, wobei das Erzwingen des
bestimmten Logikwertes nur für den ersten Taktzyklus der
CRC-Bit-Berechnung erfolgt.
6. Verfahren nach Anspruch 4 oder 5, bei dem einige der
Schiebeverbindungen Leiter sind und andere
Schiebeverbindungen Exklusiv-ODER-Gatter sind, die jeweils über einen
Eingang mit dem CRC-Prüfsummenregister verbunden sind und
über einen weiteren Eingang mit einem Eingangsgatter (62,
64,65 etc.) verbunden sind, wobei das Eingangsgatter eine
Exklusiv-ODER-Funktion zwischen einem der Bits in dem
signifikantesten in dem CRC-Prüfsummenregister
gespeicherten CRC-Byte und einem der Bits in dem Byte von
Roh-Eingangsdaten durchführt, und ferner dadurch gekennzeichnet,
daß der Schritt zum Erzwingen des transparenten Zustandes
bestimmter Reihen einen Schritt enthält, in dem an dem
Eingang jedes der Schiebeverbindungs-Exklusiv-ODER-Gatter,
die nicht direkt oder indirekt mit dem Prüfsummenregister
in einer transparent zu machenden Reihe des Array
verbunden sind, ein logischer 0-Zustand erzwungen wird, derart,
daß Daten, die an dem anderen Eingang des Exklusiv-ODER-
Gatters anstehen, unverändert durch dieses gelassen
werden, wobei der andere Eingang des
Schiebeverbindungs-Exklusiv-ODER-Gatters mit dem Prüfsummenregister verbunden
ist.
7. Verfahren nach Anspruch 6, bei dem die Ausgänge der
Eingangsgatter (62,64,65 etc.) jeweils mit dem Eingang der am
wenigsten signifikanten Schiebeverbindung in der nächsten
Reihe durch ein ODER-Gatter (118,119,120 etc.) verbunden
sind, das über seinen Ausgang mit dem Eingang (153) der am
wenigsten signifikanten Schiebeverbindung in der nächsten
Reihe verbunden ist, und ferner gekennzeichnet durch den
Schritt des Erzwingens eines logischen 1-Zustandes an dem
Ausgang des ODER-Gatters (118,119,120 etc.) für jede
Reihe, die einem der zu ignorierenden Roh-Eingangsdaten-Bits
entspricht, so daß ein logischer 1-Wert an die am
wenigsten signifikante Schiebeverbindung in der nächsten Reihe
weitergegeben wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/803,466 US4723243A (en) | 1985-12-02 | 1985-12-02 | CRC calculation machine with variable bit boundary |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3650102D1 DE3650102D1 (de) | 1994-11-24 |
DE3650102T2 true DE3650102T2 (de) | 1995-02-23 |
Family
ID=25186576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3650102T Expired - Fee Related DE3650102T2 (de) | 1985-12-02 | 1986-11-24 | Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4723243A (de) |
EP (1) | EP0225761B1 (de) |
JP (1) | JPS62133826A (de) |
AT (1) | ATE113148T1 (de) |
DE (1) | DE3650102T2 (de) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989211A (en) * | 1988-05-12 | 1991-01-29 | Digital Equipment Corporation | Sector mis-synchronization detection method |
US5170401A (en) * | 1988-06-02 | 1992-12-08 | Rockwell International Corporation | High integrity single transmission line communication system for critical aviation information |
JP2624299B2 (ja) * | 1988-06-09 | 1997-06-25 | 株式会社日立製作所 | 加速演算回路 |
US5144304A (en) * | 1989-07-17 | 1992-09-01 | Digital Equipment Corporation | Data and forward error control coding techniques for digital signals |
GB2242104B (en) * | 1990-02-06 | 1994-04-13 | Digital Equipment Int | Method and apparatus for generating a frame check sequence |
IT1241429B (it) * | 1990-03-01 | 1994-01-17 | Sip | Circuito elettronico per la generazione di codici per la rilevazione di errori in segnali numerici |
US5440570A (en) * | 1990-03-27 | 1995-08-08 | National Science Council | Real-time binary BCH decoder |
US5430739A (en) * | 1990-03-27 | 1995-07-04 | National Science Council | Real-time Reed-Solomon decoder |
US5644583A (en) * | 1992-09-22 | 1997-07-01 | International Business Machines Corporation | Soft error correction technique and system for odd weight row error correction codes |
US5390196A (en) * | 1992-11-12 | 1995-02-14 | Bull Hn Information Systems Inc. | Byte-wise determination of a checksum from a CRC-32 polynomial |
EP0614294A1 (de) * | 1993-03-03 | 1994-09-07 | International Business Machines Corporation | Verfahren zur Erzeugung eines Prüfmusters für Rahmen |
US5878057A (en) * | 1995-10-06 | 1999-03-02 | Tektronix, Inc. | Highly parallel cyclic redundancy code generator |
US5942002A (en) * | 1996-03-08 | 1999-08-24 | Neo-Lore | Method and apparatus for generating a transform |
US5951707A (en) * | 1997-06-27 | 1999-09-14 | International Business Machines Corporation | Method of partitioning CRC calculation for a low-cost ATM adapter |
GB9803117D0 (en) * | 1998-02-13 | 1998-04-08 | Sgs Thomson Microelectronics | Cyclic redundancy check in a computer system |
US6681364B1 (en) | 1999-09-24 | 2004-01-20 | International Business Machines Corporation | Cyclic redundancy check for partitioned frames |
US7356030B2 (en) * | 2000-11-17 | 2008-04-08 | Foundry Networks, Inc. | Network switch cross point |
US7236490B2 (en) * | 2000-11-17 | 2007-06-26 | Foundry Networks, Inc. | Backplane interface adapter |
US7596139B2 (en) | 2000-11-17 | 2009-09-29 | Foundry Networks, Inc. | Backplane interface adapter with error control and redundant fabric |
KR20020087822A (ko) * | 2001-05-16 | 2002-11-23 | 손승일 | 입력 파라미터의 사용한 가변 길이의 crc-10 계산 및 검증블록 회로 |
US20120155466A1 (en) * | 2002-05-06 | 2012-06-21 | Ian Edward Davis | Method and apparatus for efficiently processing data packets in a computer network |
US7266117B1 (en) * | 2002-05-06 | 2007-09-04 | Foundry Networks, Inc. | System architecture for very fast ethernet blade |
US20090279558A1 (en) * | 2002-05-06 | 2009-11-12 | Ian Edward Davis | Network routing apparatus for enhanced efficiency and monitoring capability |
US7187687B1 (en) | 2002-05-06 | 2007-03-06 | Foundry Networks, Inc. | Pipeline method and system for switching packets |
US7468975B1 (en) * | 2002-05-06 | 2008-12-23 | Foundry Networks, Inc. | Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability |
US7324421B1 (en) * | 2002-08-13 | 2008-01-29 | Adaptec, Inc. | Method and apparatus for data bit align |
US6901072B1 (en) | 2003-05-15 | 2005-05-31 | Foundry Networks, Inc. | System and method for high speed packet transmission implementing dual transmit and receive pipelines |
US7817659B2 (en) | 2004-03-26 | 2010-10-19 | Foundry Networks, Llc | Method and apparatus for aggregating input data streams |
US8730961B1 (en) | 2004-04-26 | 2014-05-20 | Foundry Networks, Llc | System and method for optimizing router lookup |
US7657703B1 (en) | 2004-10-29 | 2010-02-02 | Foundry Networks, Inc. | Double density content addressable memory (CAM) lookup scheme |
US7774676B2 (en) * | 2005-06-16 | 2010-08-10 | Mediatek Inc. | Methods and apparatuses for generating error correction codes |
US7430701B2 (en) * | 2005-06-16 | 2008-09-30 | Mediatek Incorporation | Methods and systems for generating error correction codes |
DE102005029515A1 (de) * | 2005-06-25 | 2006-12-28 | Bosch Rexroth Aktiengesellschaft | Verfahren zur Berechnung von CRC-Prüfwerten und Logikschaltung |
US20070067702A1 (en) * | 2005-09-05 | 2007-03-22 | Kuo-Lung Chien | Method and apparatus for syndrome generation |
US8448162B2 (en) | 2005-12-28 | 2013-05-21 | Foundry Networks, Llc | Hitless software upgrades |
KR100731985B1 (ko) * | 2005-12-29 | 2007-06-25 | 전자부품연구원 | 파이프라인 구조 병렬 순환 중복 검사 장치 및 방법 |
US7613256B2 (en) * | 2006-04-04 | 2009-11-03 | Qualcomm Incorporated | Forward error correction in a distribution system |
US7903654B2 (en) * | 2006-08-22 | 2011-03-08 | Foundry Networks, Llc | System and method for ECMP load sharing |
US8238255B2 (en) * | 2006-11-22 | 2012-08-07 | Foundry Networks, Llc | Recovering from failures without impact on data traffic in a shared bus architecture |
US7978614B2 (en) * | 2007-01-11 | 2011-07-12 | Foundry Network, LLC | Techniques for detecting non-receipt of fault detection protocol packets |
US8037399B2 (en) * | 2007-07-18 | 2011-10-11 | Foundry Networks, Llc | Techniques for segmented CRC design in high speed networks |
US8271859B2 (en) * | 2007-07-18 | 2012-09-18 | Foundry Networks Llc | Segmented CRC design in high speed networks |
US8149839B1 (en) | 2007-09-26 | 2012-04-03 | Foundry Networks, Llc | Selection of trunk ports and paths using rotation |
DE102008045813A1 (de) * | 2008-09-05 | 2010-03-11 | Robert Bosch Gmbh | Logikschaltung zur Berechnung von CRC-Prüfwerten |
US8090901B2 (en) | 2009-05-14 | 2012-01-03 | Brocade Communications Systems, Inc. | TCAM management approach that minimize movements |
US8599850B2 (en) | 2009-09-21 | 2013-12-03 | Brocade Communications Systems, Inc. | Provisioning single or multistage networks using ethernet service instances (ESIs) |
JP5724601B2 (ja) * | 2011-05-10 | 2015-05-27 | 富士通株式会社 | Crc演算回路及びプロセッサ |
CN107451008B (zh) * | 2017-06-29 | 2020-05-08 | 北京邮电大学 | 一种crc计算方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3678469A (en) * | 1970-12-01 | 1972-07-18 | Ibm | Universal cyclic division circuit |
US3703705A (en) * | 1970-12-31 | 1972-11-21 | Ibm | Multi-channel shift register |
US3863224A (en) * | 1973-01-30 | 1975-01-28 | Gen Electric | Selectively controllable shift register and counter divider network |
JPS6013538B2 (ja) * | 1977-04-22 | 1985-04-08 | 日本電気株式会社 | 可変演算方式 |
US4171765A (en) * | 1977-08-29 | 1979-10-23 | Data General Corporation | Error detection system |
US4413326A (en) * | 1978-10-18 | 1983-11-01 | Honeywell Inc. | Floating point division control |
GB2094041B (en) * | 1981-03-03 | 1985-08-21 | Sangamo Weston | Data receivers incorporating error code detection and decoding |
DE3376907D1 (en) * | 1982-06-15 | 1988-07-07 | Toshiba Kk | Apparatus for dividing the elements of a galois field |
US4583222A (en) * | 1983-11-07 | 1986-04-15 | Digital Equipment Corporation | Method and apparatus for self-testing of floating point accelerator processors |
US4597083A (en) * | 1984-04-06 | 1986-06-24 | Ampex Corporation | Error detection and correction in digital communication systems |
-
1985
- 1985-12-02 US US06/803,466 patent/US4723243A/en not_active Expired - Lifetime
-
1986
- 1986-11-24 EP EP86309147A patent/EP0225761B1/de not_active Expired - Lifetime
- 1986-11-24 AT AT86309147T patent/ATE113148T1/de not_active IP Right Cessation
- 1986-11-24 DE DE3650102T patent/DE3650102T2/de not_active Expired - Fee Related
- 1986-12-01 JP JP61286557A patent/JPS62133826A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JPS62133826A (ja) | 1987-06-17 |
US4723243A (en) | 1988-02-02 |
ATE113148T1 (de) | 1994-11-15 |
EP0225761A3 (en) | 1990-03-21 |
EP0225761B1 (de) | 1994-10-19 |
EP0225761A2 (de) | 1987-06-16 |
DE3650102D1 (de) | 1994-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3650102T2 (de) | Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode. | |
DE3689285T2 (de) | CRC-Rechenmaschinen. | |
DE3688238T2 (de) | CRC-Rechenanordnung. | |
DE3689282T2 (de) | CRC-Rechenmaschine und Methode zur CRC-Berechnung. | |
DE3490015C2 (de) | ||
EP0010173B1 (de) | Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen | |
DE3840969C2 (de) | ||
DE69030016T2 (de) | Mit N-bit Zählern arbeitende Synchronisationsschaltung in einem Speicherbaustein | |
DE2357168C2 (de) | Schaltungsanordnung für einen Speichermodul | |
DE69029643T2 (de) | Kanal für Datenverarbeitungssystem | |
DE3723121C2 (de) | ||
DE2916619A1 (de) | System zum uebertragen binaerer daten ueber eine anzahl von kanaelen | |
DE3727035C2 (de) | ||
EP0325318B1 (de) | Vermittlungsanlage | |
DE69129889T2 (de) | Pipelineschaltung und Verfahren zum Vergleich der relativen Differenz zwischen zwei asynchronen Zeigern und einem programmierbaren Wert | |
EP0282877B1 (de) | Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten | |
DE68924694T2 (de) | Verfahren zur Initialisierung oder Synchronisierung einer Übertragungsleitung. | |
EP0628832A2 (de) | Integrierte Schaltung mit Registerstufen | |
DE2641700C2 (de) | ||
DE3838940C2 (de) | ||
DE3814875A1 (de) | Logische verknuepfungseinrichtung und logisches verknuepfungsverfahren | |
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 | |
DE69122001T2 (de) | Integrierte Schaltung mit einer Standardzelle, einer Anwendungszelle und einer Prüfzelle | |
DE3918886C2 (de) | Rücksetzanordnung in einer Datenverarbeitungseinheit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |