DE19524863A1 - Mikroprozessor mit eingebautem Abschnitt zur zyklischen Redundanzprüfung und Verfahren zum Ausführen von Operationen zur zyklischen Redundanzprüfung unter Verwendung von diesem - Google Patents

Mikroprozessor mit eingebautem Abschnitt zur zyklischen Redundanzprüfung und Verfahren zum Ausführen von Operationen zur zyklischen Redundanzprüfung unter Verwendung von diesem

Info

Publication number
DE19524863A1
DE19524863A1 DE19524863A DE19524863A DE19524863A1 DE 19524863 A1 DE19524863 A1 DE 19524863A1 DE 19524863 A DE19524863 A DE 19524863A DE 19524863 A DE19524863 A DE 19524863A DE 19524863 A1 DE19524863 A1 DE 19524863A1
Authority
DE
Germany
Prior art keywords
circuit
data
bit
input
crc
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.)
Granted
Application number
DE19524863A
Other languages
English (en)
Other versions
DE19524863B4 (de
Inventor
Kyouichi Suzuki
Hideaki Ishihara
Akihiro Sasaki
Nobutomo Takagi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
NipponDenso Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NipponDenso Co Ltd filed Critical NipponDenso Co Ltd
Publication of DE19524863A1 publication Critical patent/DE19524863A1/de
Application granted granted Critical
Publication of DE19524863B4 publication Critical patent/DE19524863B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Description

Diese Anmeldung basiert auf der prioritätsbegründenden japanischen Patentanmeldung Nr. Hei 6-156201, deren Offenba­ rungsgehalt hiermit in vollem Umfang in den Offenbarungsge­ halt vorliegender Anmeldung übernommen wird.
Diese Erfindung bezieht sich auf einen Mikrocomputer, der CRC-Operationen (Operationen zur zyklischen Redundanzprüfung) ausführen kann, der bei der Fehlerprüfung von Übertragungsda­ ten und ähnlichem verwendet wird und der CRC-Kodes für solche CRC-Operationen erzeugen kann.
Herkömmliche Mikroprozessoren erzeugen CRC-Kodes von Übertragungsdaten und prüfen diese unter Verwendung von Hard­ ware zum Erzeugen und Prüfen von CRC-Kodes für spezielle Zwecke oder unter Verwendung einer vorhandenen arithmetischen Schaltung innerhalb einer Recheneinheit (im folgenden "ALU" genannt) in Verbindung mit Software zur Erzeugung und Prüfung von CRC-Kodes, die ausgebildet wurde, indem vorhandene Be­ fehle kombiniert wurden, die den jeweiligen arithmetischen Schaltungen entsprechen.
Da jedoch wie im früheren Fall, in dem Hardware zur Er­ zeugung und Prüfung von CRC-Kodes für spezielle Zwecke ver­ wendet wurde, ein Funktionsschaltblock zum Erzeugen und Prü­ fen von CRC-Kodes getrennt vom Funktionsblock des Mikropro­ zessors hinzugefügt werden muß, treten durch das Hinzufügen des Funktionsblocks für die CRC bedingt Probleme wie eine komplizierte Zusammenbauarbeit und erhöhte Kosten auf; ein solcher Fall ist zum Beispiel der, in dem ein an einem Fahr­ zeug montiertes lokales Netzwerk (im folgenden "LAN" bezeich­ net) aufgebaut wird, indem zahlreiche Steuervorrichtungen durch Verbindungsleitungen verbunden werden, wobei jeder Funktionsblock mit jeder der Steuervorrichtungen verbunden werden muß.
Andererseits besteht im letzteren Fall, bei dem die Er­ zeugung und Prüfung des CRC-Kodes auf Software basiert, nicht die Notwendigkeit des Vorsehens eines speziellen CRC-Funk­ tionsblocks; somit ergibt sich für die Vorrichtung ein einfa­ cherer Aufbau. Zum Beispiel wird der Zusammenbau des vorste­ hend beschriebenen, an einem Fahrzeug montierten lokalen Netzwerkes einfacher; da jedoch komplizierte Berechnungspro­ zesse ausgeführt werden müssen, um CRC-Kodes unter Verwendung von Software zu erzeugen und zu prüfen, wird zur Erzeugung und Prüfung von CRC-Kodes Zeit in Anspruch genommen; somit treten Probleme, wie zum Beispiel ein Abfall bei der Übertra­ gungs- und Empfangsgeschwindigkeit, auf.
Anders ausgedrückt würde beim Ausführen der Erzeugung und der Prüfung von CRC-Kodes, da die Verarbeitung der Übertra­ gungsdaten unter Verwendung eines komplizierten Polynoms aus­ zuführen ist, die Ausführung der Erzeugung und Prüfung von CRC-Kodes unter Verwendung der auf Software basierenden Her­ angehensweise eine Menge Zeit in Anspruch nehmen; somit kann diese Herangehensweise in den Fällen nicht verwendet werden, in denen ein schnelles Ansprechen der Steuerungen erforder­ lich ist, wie im Fall des vorstehend beschriebenen Fahrzeug­ steuersystems.
Unter Berücksichtigung dieser Probleme besteht die Auf­ gabe der vorliegenden Erfindung darin, die Erzeugung und Prü­ fung von CRC-Kodes mit hoher Geschwindigkeit durch das Hinzu­ fügen eines Abschnitts zum Prüfen und Erzeugen von CRC-Kodes zum Mikroprozessor vorzunehmen. Ferner soll ein Mikroprozes­ sor vorgesehen werden, der mit einer einfachen Struktur und niedrigen Kosten implementiert werden kann.
In einer ersten Ausführungsform löst die vorliegende Er­ findung diese Aufgabe, indem ein Mikroprozessor vorgesehen wird, der eine Recheneinheit mit einer arithmetischen CRC- Schaltung zum Erzeugen eines CRC-Kodes aufweist, die eine Ex­ klusiv-Oder-Schaltung hat, die die Exklusiv-Oder Operationen bei Daten ausführt, die in diese eingegeben wurden, wobei die Exklusiv-Oder-Schaltung entlang eines Teils eines Pfades aus­ gebildet ist, über den Bitdaten oder jeweilige Bitdaten der Wort- oder Bytedaten in eine Schiebeschaltung eingegeben wer­ den, die Wort- oder Bytedaten einschließlich Bitdaten ver­ schiebt und deren Eingänge ein Bit von Daten, die dem Pfad entsprechen, Bitdaten, die nach außen abgegeben werden, indem die Wort- oder Bytedaten verschoben werden, und Bitdaten auf­ weist.
Indem an einem Teil eines Pfades, über den jeweilige Bit­ daten der Wort- oder Bytedaten, die zu verschieben sind, und jeweilige Wort- oder Bytedaten, die jeweilige Bitdaten ver­ schieben, einer Schiebeschaltung einer Recheneinheit (ALU) zugeführt werden, eine Exklusiv-Oder-Schaltung vorgesehen wird, die das Exklusiv-Oder des einen Bits der Daten, die dem Pfad entsprechen, der Bitdaten von den Wort- oder Bytedaten, die die Schiebeschaltung durch ihre Schiebeoperation abgibt, und der Bitdaten berechnet, wird gemäß Vorbeschreibung eine arithmetische CRC-Schaltung, die CRC-Kodes erzeugt und prüft, in der ALU ausgebildet.
Kurz gesagt wird durch die Kombination der Schiebeschal­ tung, die gewöhnlich in der ALU vorgesehen ist und zum Aus­ führen von Schiebebefehlen, einem der Grundbefehle des Mikro­ prozessors, verwendet wird, und der Exklusiv-Oder-Schaltung, die ebenfalls gewöhnlich in der ALU vorgesehen ist, in der ALU eine arithmetische CRC-Schaltung zum Berechnen der CRC- Kodes ausgebildet.
Auf diese Weise führt die arithmetische CRC-Schaltung in der ALU die Berechnungsfunktionen für die Berechnung der CRC- Kodes unter Verwendung der arithmetischen CRC-Schaltung im Ansprechen auf einen CRC-Berechnungsbefehl aus; das Erzeugen und Prüfen der CRC-Kodes mit hoher Geschwindigkeit kann vor­ genommen werden.
Da die arithmetische CRC-Schaltung gemäß Vorbeschreibung ausgebildet wird, indem die Schiebe- und die Exklusiv-Oder- Schaltungen kombiniert werden, die durch Festlegung gewöhn­ lich in der ALU vorgesehen sind, kann die arithmetische CRC- Schaltung einfach implementiert werden, indem nur ein Teil der ALU des herkömmlichen Mikroprozessors ausgewechselt wird, ohne daß die ALU vergrößert oder ihre Herstellungskosten er­ höht werden.
Entsprechend einem weiteren Aspekt der Erfindung ist eine Wahlschaltung entlang eines Eingabepfades vorgesehen, auf dem sich die Exklusiv-Oder-Schaltung befindet; sie wählt zwischen den Daten, die durch die Exklusiv-Oder-Schaltung ausgegeben werden, und den Einbitdaten, die dem Pfad entsprechen, ent­ sprechend dem Wahlbefehl aus und sieht die ausgewählten Daten an der Schiebeschaltung vor.
Vorzugsweise sind alle Dateneingabepfade in die Schiebe­ schaltung mit den Exklusiv-Oder- und den Wahlschaltungen ver­ bunden.
Somit befindet sich eine Wahlschaltung, die die Daten in die Schiebeschaltung eingibt, indem zwischen den Daten, die durch die Exklusiv-Oder-Schaltung ausgegeben werden, und den Einbitdaten, die dem Eingabepfad entsprechen, entsprechend dem Wahlsignal ausgewählt wird, am Eingabepfad für die Daten zur Schiebeschaltung, in dem die Exklusiv-Oder-Schaltung aus­ gebildet ist.
Auf diese Weise arbeitet, wenn die Wahlschaltung die Da­ ten, die dem Pfad entsprechen, unter Verwendung eines Wahlbe­ fehls auswählt, die Schiebeschaltung als reguläre Schiebe­ schaltung, die die Daten entsprechend dem Schiebebefehl ver­ schiebt. Andererseits arbeitet, wenn die Wahlschaltung die Daten, die aus der Exklusiv-Oder-Schaltung ausgegeben wurden, auswählt, die Schiebeschaltung als arithmetische CRC-Schal­ tung zum Berechnen der CRC-Kodes.
Kurz gesagt kann entsprechend dieser Erfindung die arith­ metische CRC-Schaltung derart gestaltet werden, daß diese durch auf Software basierendes Schalten entweder als arithme­ tische CRC-Schaltung oder als reguläre Schiebeschaltung ar­ beitet. Dementsprechend besteht nicht die Notwendigkeit, mit Ausnahme der regulären Schiebeschaltung in der ALU, eine ge­ trennte Schiebeschaltung zum Berechnen der CRC-Kodes vorzuse­ hen; somit kann der Aufbau der ALU einfacher werden.
Da die Exklusiv-Oder-Schaltung und die Wahlschaltung für die jeweiligen Dateneingabepfade zur Schiebeschaltung vorge­ sehen sind, kann nicht nur die Funktion der Schiebeschaltung entweder als arithmetische CRC-Schaltung oder als reguläre Schiebeschaltung vorgesehen werden, sondern kann zusätzlich, wenn die Schiebeschaltung als arithmetische CRC-Schaltung ar­ beitet, der Typ des CRC-Kodes, der durch die CRC-Erzeugungs­ schaltung zu erzeugen ist, durch das willkürliche Einstellen der Werte, die durch die jeweilige Wahlschaltung auszuwählen sind, willkürlich eingestellt werden.
Anders ausgedrückt kann, wenn die arithmetische CRC- Schaltung am Dateneingabepfad zur Schiebeschaltung eine Ex­ klusiv-Oder-Schaltung aufweist, da das Erzeugungspolynom für die CRC-Kode-Erzeugung durch den Pfad bestimmt wird, der mit der Exklusiv-Oder-Schaltung versehen ist, die Exklusiv-Oder- Schaltung und die Wahlschaltung für die jeweiligen aller Ein­ gabepfade vorgesehen sind und das Einstellen der jeweiligen Daten, die durch die jeweilige Wahlschaltung durch den Wahl­ befehl auszuwählen sind, möglich ist, die CRC-Kode-Erzeu­ gungs-Polynomgleichung durch Software eingestellt werden; so­ mit ist es möglich, den Typ des CRC-Kodes, der durch den Be­ rechnungsbefehl erhalten wird, willkürlich einzustellen.
Somit kann in einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung das Erzeugungspolynom, das zum Erzeu­ gen und Prüfen der CRC-Kodes verwendet wird, entsprechend der Mikroprozessoranwendung, dem Übertragungsformat des LAN, das mit dem Mikroprozessor verbunden ist, und ähnlichem geändert oder verändert werden; somit ist der Geltungsbereich der An­ wendung des Mikroprozessors vergrößert.
Zusätzliche Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung ihrer bevorzug­ ten Ausführungsbeispiele schneller deutlich, wenn diese im Zusammenhang mit den beiliegenden Zeichnungen betrachtet wird, in denen:
Fig. 1 den Aufbau und die Operation einer arithmetischen CRC-Schaltung entsprechend einem bevorzugten Ausführungsbei­ spiel der vorliegenden Erfindung zeigt,
Fig. 2 ein Blockschaltbild ist, das den Aufbau eines ge­ samten Mikroprozessors entsprechend diesem Ausführungsbei­ spiel zeigt,
Fig. 3 den Aufbau und die Operation einer herkömmlichen Schiebeschaltung zeigt,
Fig. 4 ein Flußbild der Verarbeitungsprozedur zeigt, wenn ein CRC-Kode unter Verwendung der CRC-Berechnungsschal­ tung dieses Ausführungsbeispiels erzeugt wird,
die Fig. 5A und 5B ein Beispiel eines CRC-Kodes zei­ gen, der entsprechend dem Flußbild von Fig. 4 erzeugt wird,
Fig. 6 ein Flußbild der Verarbeitungsprozedur zeigt, wenn ein CRC-Kode unter Verwendung der CRC-Berechnungsschal­ tung dieses Ausführungsbeispiels geprüft wird, und
Fig. 7 ein Beispiel eines CRC-Kodes zeigt, der zur Prü­ fung verwendet wird, die entsprechend dem Flußbild von Fig. 6 vorgenommen wird.
Ein zur Zeit bevorzugtes Ausführungsbeispiel dieser Er­ findung ist nachstehend im Zusammenhang mit den beiliegenden Zeichnungen beschrieben.
Fig. 2 ist ein Blockschaltbild, das einen Einchipmikro­ prozessor entsprechend einem Ausführungsbeispiel der Erfin­ dung zeigt.
Wie es in Fig. 2 gezeigt ist, ist der Mikroprozessor eines bevorzugten Ausführungsbeispiels dieser Erfindung ein 8-Bit-Mikroprozessor, der eine CPU 10, einen Programmspeicher 12, der sich aus einem ROM zusammensetzt, einen Datenspeicher 14, der sich aus einem RAM zusammensetzt, einen Ein­ gabe/Ausgabe- oder E/A-Abschnitt 16, einen Taktgeber (nicht gezeigt), der ein nachstehend erläutertes CPU-Schaltsignal erzeugt, einen 8-Bit-Datenbus 18, der Daten sendet und emp­ fängt, einen Adreßbus 20, der ein Adreßsignal sendet und emp­ fängt, und Steuerbusse 22, 24 aufweist, die Lese- bzw. Schreibsignale senden und empfangen.
Außerdem ist zum Ausführen der parallelen Zeitmultiplex- Fließbandverarbeitung von zwei Typen von Aufgaben (die im folgenden als L-Aufgabe und A-Aufgabe bezeichnet werden) die CPU mit zwei Adreßregistern 26, 28 und zwei arithmetischen Registern 30, 32 versehen; durch das alternative Schalten dieser Adreßregister 26, 28 und der arithmetischen Register 30, 32 unter Verwendung des CPU-Schaltsignals, das durch den Taktgeber erzeugt wird, arbeitet die CPU effektiv, als ob diese aus zwei CPUs, CPU0 und CPU1, besteht, während alter­ nierend zwischen diesen geschaltet wird.
Ferner sind in diesem Ausführungsbeispiel der Adreßregi­ ster 26 und der arithmetische Register 30 die Register für die CPU0 (für die L-Aufgabe), während der andere Adreßregi­ ster 28 und arithmetische Register 32 die Register für die CPU1 (für die A-Aufgabe) sind. Der Wert des Programmzählers 34 (das heißt die Adresse des nächsten abzurufenden Befehls) wird entsprechend dem Schalten der Adreßregister 26, 28 ak­ tualisiert; die Adreßsignale der CPU0 (für die L-Aufgabe) und der CPU1 (für die A-Aufgabe) werden vom Programmzähler 34 zum Programmspeicher 12 alternierend ausgegeben.
Darüber hinaus sind eine Fehlererfassungsschaltung 36, die den Typ der Aufgabe identifiziert, zu der der Befehl, der vom Programmspeicher 12 gelesen wurde, gehört, und die die Fehler darin erfaßt, und ein Befehlsdekodie­ rer/Befehlssequenzer 38, der den Befehl dekodiert, der durch die Fehlererfassungsschaltung 36 gegangen ist, in der CPU 10 vorgesehen. Auf dem Inhalt des Befehls, der durch den Be­ fehlsdekodierer/Befehlssequenzer 38 dekodiert wurde, basie­ rend werden unter Verwendung der arithmetischen Register 30, 32 der arithmetischen Einheit 40, die als Recheneinheit ar­ beitet, Berechnungen ausgeführt; Lese- oder Schreibsignale werden zum Steuerbus 22, 24 ausgegeben.
Andererseits sind ein Programmbereich 42 für die CPU0 (für die L-Aufgabe), ein Programmbereich 44 für die CPU1 (für die A-Aufgabe) und ein Sofortadreßbuchdatenbereich 46 im Pro­ grammspeicher 12 vorgesehen. Für diesen Fall besteht die L- Aufgabe, die im Programmbereich 42 für die CPU0 gespeichert ist, aus einem Festschleifenprogramm, das Sprungbefehle ver­ hindert, die zu weglaufenden Programmen führen. Dementspre­ chend startet bei der Ausführung der Programme der L-Aufgabe die Ausführung bei der 0-Adresse und setzt sich über die auf­ einanderfolgende Ausführung der Befehle in der 1-Adresse, der 2-Adresse, der 3-Adresse, . . . fort, bis daß diese eine vorbe­ stimmte Adresse erreicht, in der der Programmzähler 34 über­ läuft und zur 0-Adresse zurückkehrt; wobei die Befehle wie­ derholt in der gleichen Abfolge wie vorstehend beschrieben ausgeführt werden. Es ist festzuhalten, daß für die L-Aufgabe die Befehle auf Einwortbefehle beschränkt sind. Der Grund da­ für besteht darin, daß in einem Befehlssystem, in dem die An­ zahl der Wörter für den Befehl nicht festgelegt ist (zum Bei­ spiel ein Befehlssystem, in dem sowohl Einwortbefehle als auch Zweiwortbefehle vorliegen), wenn ein Zweiwortbefehl un­ genau gelesen und als Einwortbefehl interpretiert wird, da das nächste Wort nicht notwendigerweise einen sinnvollen Be­ fehl darstellt, keine Anzeige dafür vorliegt, was als näch­ stes auszuführen ist.
Das Programm der L-Aufgabe, die zum Ausführen von aufein­ anderfolgend gesteuerten Prozessen geeignet ist, enthält ein Programm zum Überwachen des Weglaufens der anderen Aufgabe, die die A-Aufgabe ist, und ein Sicherungssequenzprogramm, um im System Fail-Safe-Funktionen zu implementieren. Ferner ist die L-Aufgabe ebenso mit einer Timer-Funktion versehen, die unter Verwendung einer festen Schleife, zum Beispiel der Er­ zeugung eines Timerinterrupts, wenn der Zählerwert nach dem Ausführen der Inkrementier- oder Dekrementierbefehle einen vorbestimmten Wert erreicht, implementiert ist; somit ist eine Festzeitverarbeitung, die einem Timerinterrupt ent­ spricht, möglich.
Die A-Aufgabe gestattet andererseits Sprungbefehle, die in der L-Aufgabe nicht gestattet sind, und ist für komplexe analytische und mathematische Verarbeitung geeignet. In der gleichen Weise wie für die L-Aufgabe ist die Länge der Be­ fehle für die A-Aufgabe ebenfalls auf jeweils ein Wort be­ grenzt. Für die A- und L-Aufgabe befinden sich der Opera­ tionskode und der Operand (die Adresse) beide jeweils in einem Wort.
Auch ist ein Aufgabenidentifikationsbit zum Identifizie­ ren des Typs der Aufgabe für jeden der Befehle der CPU0 und der CPU1, die im Programmspeicher 12 vorhanden sind, vorgese­ hen, zum Beispiel als signifikantestes Bit ("MSB"). In diesem Ausführungsbeispiel ist das Aufgabenidentifikationsbit als Paritätsbit eingestellt, bei dem die L-Aufgabe ungerade Pari­ tät hat, während die A-Aufgabe gerade Parität hat. Für diesen Fall wird nicht nur die Aufgabenidentifikation, sondern auch das Befehlskodeprüfen, umgesetzt. Entsprechend diesem Ziel identifiziert die Fehlererfassungsschaltung 36 durch die Pa­ ritätsprüfung den Typ der Aufgabe, zu der der Befehl, der vom Programmspeicher 12 gelesen wurde, gehört, erfaßt die Fehler darin und bestimmt, ob ein unvorhergesehener Fehler verur­ sacht hat, daß die Ausführung einer anderen Aufgabe irrtümli­ cherweise gestartet wurde.
Das heißt, daß die Fehlererfassungsschaltung 36, die aus einer Aufgabenidentifikationsschaltung, einer Fehlerflag­ schaltung, einer Nicht-Operation ("NOP")-Kodeschaltung, einem Paar von Übertragungsgattern vom High-aktiv-Typ und Low-ak­ tiv-Typ und ähnlichem (nicht gezeigt) besteht, durch die Pa­ ritätsprüfung den Typ der Aufgabe identifiziert, zu dem der Befehl, der vom Programmspeicher 12 gelesen wurde, gehört (und zwar wird die Aufgabe als L-Aufgabe identifiziert, wenn die Parität ungerade ist, und als A-Aufgabe identifiziert, wenn die Parität gerade ist). Das Identifikationsergebnis wird mit dem CPU-Schaltsignal verglichen, um zu bestimmen, ob ein Fehler aufgetreten ist oder nicht; wenn ein Fehler aufge­ treten ist, wird zusammen mit dem Rücksetzen des Adreßregi­ sters der Aufgabe, wo der Fehler aufgetreten ist, ein Fehler­ signal (zum Beispiel ein hochpegliges Signal) zur Fehlerflag­ schaltung ausgegeben; gleichzeitig wird das Fehlersignal ebenfalls an den Steueranschluß des Paares von Übertragungs­ gattern angelegt, während das High-aktive Übertragungsgatter eingeschaltet ist und das NOP-Kodesignal von der NOP-Schal­ tung zum Befehlsdekoder/Befehlssequenzer 38 ausgegeben wird, während das Low-aktive Übertragungsgatter ausgeschaltet wird; somit wird der Übergang des Befehls zum Befehlsdeko­ der/Befehlssequenzer 38 verhindert. Als Ergebnis wird für den Fall, in dem ein unvorhergesehener Fehler aufgetreten ist, wie zum Beispiel eine Störung usw., die durch einen Fehler zum Springen zu der Adresse einer anderen Aufgabe und zum Be­ ginnen der Ausführung des Befehls darin führt, die NOP sofort in nur einem Befehlszyklus ausgeführt; somit wird die Zerstö­ rung des Speichers und der Anschlußdaten vor dem Auftreten verhindert. Darüber hinaus hält, wenn kein Fehler aufgetreten ist, die Fehlererfassungsschaltung 36 den Ausgang der Aufga­ benidentifikationsschaltung auf niedrigem Pegel, schaltet das High-aktive Übertragungsgatter aus und verhindert die Über­ tragung des NOP-Kodes, während das Low-aktive Übertragungs­ gatter eingeschaltet wird und die Übertragung der Befehle zum Befehlsdekoder/Befehlssequenzer 38 gestattet wird.
Auf diese Weise scheint entsprechend diesem Ausführungs­ beispiel die CPU zu arbeiten, als ob diese zwei CPUs schaltet und bewegt; somit wird die Ausführung von Fließbandverarbei­ tung möglich; darüber hinaus können, wenn die Länge aller Be­ fehle auf ein Wort festgelegt ist, indem sowohl der Opera­ tionskode als auch der Operand einem Wort zugewiesen werden, Probleme, die auftreten, wenn der Befehl eine Mehrwortstruk­ tur hat, (zum Beispiel ein Weglaufen der Programme, die Zer­ störung von entscheidenden Informationen in dem Datenspeicher durch Fehler bei der Erkennung des Operationskodes und des Operators, oder Probleme, die durch Adreßfehler und ähnliches verursacht werden, die mit Beginn der Ausführung des Pro­ gramms den Sprung der Programmadresse zur Adresse des tabel­ larisch angrenzenden Datenbereiches 46 veranlassen, wobei der angrenzende Wert 46 der Tabelle als Operationskode behandelt wird) im voraus verhindert werden. Die Struktur der Rechen­ einheit 40, die Hauptteil dieser Erfindung ist, wird nachste­ hend erläutert.
Der Mikroprozessor kann über den E/A-Abschnitt 16 Daten mit anderen Mikroprozessoren austauschen; beim Ausführen die­ ses Datenaustausches wird die Recheneinheit 40 mit der arith­ metischen CRC-Schaltung versehen, die den CRC-Kode erzeugt, der an die zu übertragenden Daten anzufügen ist, um zu prü­ fen, ob die Daten korrekt sind oder nicht, und die den CRC- Kode prüft, der an die empfangenen Daten angefügt ist.
Diese arithmetische CRC-Schaltung, wie diese in Fig. 1 gezeigt ist, wird ausgebildet, indem die Schiebeschaltung SFT, die Bytedaten einschließlich Bitdaten entsprechend einem Schiebebefehl verschiebt und herkömmlicherweise in der Re­ cheneinheit 40 installiert ist, um die Befehle des Mikropro­ zessors aus zuführen, die Exklusiv-Oder-Schaltung EXOR zum Ausführen der Exklusiv-Oder-Berechnungen an den Eingangsdaten entsprechend Exklusiv-Oder-Befehlen, und die Wahlschaltung SL, die ein oder zwei Dateneingänge entsprechend einem Wahl­ befehl auswählt, kombiniert werden.
Während die Schiebeschaltung die Bytedaten [0]-[7] zur Seite des höchsten Bits [7] (oder niedrigsten Bits [0]) ver­ schiebt, und zwar ein Bit zu einem Zeitpunkt, der sich an den Schiebebefehl anschließt, und das höchste Bit [7] (oder nied­ rigste Bit [0]), das durch die Verschiebung verschoben wurde, als Bitdaten nach der Berechnung [RR] setzt, indem die Bitda­ ten, die im Bitdatenspeicherbereich im arithmetischen Regi­ ster [RR] gespeichert sind, in das niedrigste Bit [0] (oder höchste Bit [7]) der Bytedaten eingegeben werden, die im Bytedatenspeicherbereich des arithmetischen Registers gespei­ chert sind, verwendet die arithmetische CRC-Schaltung dieses Ausführungsbeispiels als ihre Schiebeschaltung, wie es in Fig. 3 gezeigt ist, die Schiebeschaltung (kurz gesagt, die Schiebeschaltung, die in Fig. 3 gezeigt ist), die die Daten zur Seite des höchsten Bits verschiebt.
Die arithmetische CRC-Schaltung wird ausgebildet, indem entlang jedes Datenpfades zur Schiebeschaltung SFT (insbesondere entlang jedes der Pfade, die die Bitdaten [RR], die zweiten Bitdaten von der unteren Seite der Bytedaten [1], die dritten Daten von dieser [2] und die vierten Daten [3] eingeben), Exklusiv-Oder-Schaltungen EXORa-EXORd, die das Ex­ klusiv-Oder der Daten berechnen, die jedem Pfad [RR], [1], [2] und [3] entsprechen, wobei die Bitdaten [RR] und die Da­ ten des höchsten Bits [7] nach außen verschoben werden, wenn die Schiebeschaltung SFT die Schiebeoperationen ausführt, Wahlschaltungen SLa-SLd, die entweder die Ausgänge jeder Ex­ klusiv-Oder-Schaltung EXORa-EXORd oder die Daten [RR], [1], [2] oder [3] wählen, die dem jeweils entsprechenden Pfad zur Eingabe von Daten in die Schiebeschaltung SFT entsprechen, und ferner die Wahleinrichtung SLe positioniert wird, die zwischen dem höchsten Bit [7], das verschoben wird, wenn die Schiebeschaltung SFT ihre Berechnungen durchführt, und den Bitdaten [RR] wählt und die ihre Wahl in die Schiebeschaltung SFT eingibt.
Für die arithmetische CRC-Schaltung dieses Ausführungs­ beispiels, die auf diese Weise aufgebaut ist, werden, wenn der Schiebebefehl eingegeben wird, alle Wahlschaltungen SLa- SLe zu der Seite geschaltet, wo diese die Eingangsdaten aus­ wählen, die an der rechten Seite (und zwar die Daten [RR], [1], [2], [3] und [7], die dem jeweiligen Pfad entsprechen) der entsprechenden Wahlschaltungen von Fig. 1 anliegen; die Schiebeschaltung führt die Schiebeoperation aus. Als Ergebnis arbeitet die arithmetische CRC-Schaltung als reguläre Schie­ beschaltung, die in Fig. 3 gezeigt ist, wo die Bytedaten [0]-[7] unter Verwendung der Bitdaten [RR] einzeln zur Seite des höchsten Bits verschoben werden.
Für die arithmetische CRC-Schaltung werden andererseits, wenn der arithmetische CRC-Befehl eingegeben wird, alle Wahl­ schaltungen SLa-SLe zu der Seite geschaltet, wo diese die Eingangsdaten auswählen, die an der linken Seite (und zwar die Ausgangsdaten der Exklusiv-Oder-Schaltungen EXORa-EXORd und die Bitdaten [RR]) der Wahlschaltungen von Fig. 1 vor­ liegen; bei der Ausführung der Schiebeoperationen durch die Schiebeschaltung SFT werden die Bytedaten [0]-[7] nach dem Ausführen der arithmetischen Operation durch die Gleichungen (1)-(8) gesetzt. Es ist festzuhalten, daß die Gleichungen (1)-(8) den Inhalt der Operationen bei den Daten [0]-[7] und den Bitdaten [RR] unter Verwendung der arithmetischen CRC-Be­ fehle der arithmetischen CRC-Schaltung zeigen und daß das Symbol ⊕ die Exklusiv-Oder-Operation anzeigt.
Daten [0] ← Daten [7] ⊕ Bitdaten [RR] (1)
Daten [1] ← Daten [0] (2)
Daten [2] ← Daten [7] ⊕ Bitdaten [RR] ⊕ Bitdaten [1] (3)
Daten [3] ← Daten [7] ⊕ Bitdaten [RR] ⊕ Bitdaten [2] (4)
Daten [4] ← Daten [7] ⊕ Bitdaten [RR] ⊕ Bitdaten [3] (5)
Daten [5] ← Daten [4] (6)
Daten [6] ← Daten [5] (7)
Daten [7] ← Daten [6] (8).
Diese Datenoperationen entsprechen dem Polynom [X⁸+X⁴+X³+X²+1] zum Erzeugen eines CRC-Kodes; die Bytedaten nach der Berechnung unter Verwendung dieser arithmetischen CRC-Schaltung [0]-[7] werden die CRC-Erzeugungsdaten. Kurz gesagt wird, wenn die arithmetische CRC-Schaltung wie vorste­ hend im Ansprechen auf den CRC-Berechnungsbefehl betrieben wird, die arithmetische CRC-Schaltung entsprechend der Bitpo­ sition (in diesem Ausführungsbeispiel [1], [2], [3], [4]) der Bytedaten während der Schiebeoperation nach dem Addieren von [Daten [7] ⊕ Bitdaten [RR]] durch die Verwendung der Exklu­ siv-Oder-Schaltungen EXORa-EXORb eine Schaltung, die ein Er­ zeugungspolynom umsetzt; entsprechend diesem Erzeugungspo­ lynom können die CRC-Erzeugungsdaten erzeugt werden. Für das Erzeugungspolynom [X⁸+X⁴+X³+X²+1], das durch die arithme­ tische CRC-Schaltung umgesetzt wird, drückt der Term [X⁸] ein Erzeugungspolynom vom achten Grad aus, das sich mit der Posi­ tion der Exklusiv-Oder-Schaltung EXOR nicht überdeckt.
Als nächstes werden unter Verwendung der arithmetischen CRC-Schaltung dieses Ausführungsbeispiels die CRC-Kodeerzeu­ gungsprozedur zum Anfügen der CRC-Kodes an die Übertragungs­ daten und die CRC-Prüfungsprozedur erläutert, die den an die aufgenommenen Daten angefügten CRC-Kode nutzt, um zu bestim­ men, ob in den aufgenommenen Daten eine Unregelmäßigkeit durch Störungen und ähnliches während der Datenübertragung auftritt.
Fig. 4 ist ein Flußbild, das die Schritte zum Erzeugen des CRC-Kodes zeigt.
Wie es in Fig. 4 gezeigt ist, wird während der Erzeugung des CRC-Kodes als erstes in Schritt 110 die Adresse des Da­ tenspeichers 14 zum Speichern des CRC-Kodes als zum Beispiel [$CRC.G] gesetzt; als nächstes wird in Schritt 120 der An­ fangswert des Speicherbereiches der Adresse [$CRC.G] [FF] ge­ setzt. [FF] ist ein Hexadezimalausdruck, während der äquiva­ lente Binärausdruck [11111111] sein würde.
Als nächstes wird in Schritt 130 ein Bit der Daten der Übertragungsdaten bei Beginn mit dem höchsten Bit zum Spei­ cherbereich der Bitdaten [RR] des arithmetischen Registers 30 oder 32 übertragen. Zum Beispiel werden unmittelbar nach Be­ ginn der CRC-Kodeerzeugung die Daten des signifikantesten Bits zum arithmetischen Register 30 oder zum arithmetischen Register 32 als Bitdaten [RR] übertragen.
Auf diese Weise wird nach der Übertragung eines Bits der Übertragungsdaten zu einem der arithmetischen Register 30 und als Bitdaten [RR] Schritt 140 ausgeführt, indem die Daten innerhalb [$CRC.G], der in Schritt 110 vorstehend als Spei­ cherbereich für den CRC-Kode gesetzt wurde, als Bytedaten ge­ setzt werden; es wird der CRC-Befehl zum Ausführen der arith­ metischen Operation der arithmetischen CRC-Schaltung, zum Beispiel [CRC $CRC.G], erzeugt.
Dann werden im folgenden Schritt 150 die Daten, die als die Bitdaten [RR] zum arithmetischen Register 30 oder zum arithmetischen Register 32 in Schritt 130 übertragen wurden, geprüft, um zu bestimmen, ob diese die niedrigsten Daten sind; anders ausgedrückt wird geprüft, ob diese das letzte Bit der CRC-Kode-Erzeugung sind; wenn diese es nicht sind, wird $CRC.G auf den CRC-Kode, der in Schritt 140 berechnet wurde, gesetzt; der Schritt 130 wird erneut ausgeführt, wobei ein Bit, das eine Position niedriger als die vorhergehenden Daten, die zum Register 30 oder 32 als Bitdaten [RR] übertra­ gen wurden, ist, zum Register 30 oder 32 als neue Bitdaten [RR] übertragen wird; dann wird in Schritt 140 ein arithmeti­ scher CRC-Befehl erzeugt.
Als Ergebnis wird für die arithmetische CRC-Schaltung, wobei der Wert [FF] (Hexadezimalausdruck) als Anfangswert (Bytedaten) verwendet wird, der CRC-Kode aufeinanderfolgend, wobei mit dem höchsten Bit der Übertragungsdaten begonnen wird, unter Verwendung des vorstehend erzeugten Polynoms be­ rechnet.
Wenn andererseits in Schritt 150 bestimmt wird, daß die Einbitdaten, die zum Register 30 oder 32 als Bitdaten [RR] übertragen werden, während der CRC-Kodeerzeugung das ab­ schließende Bit sind, schließt sich Schritt 160 an. In diesem Schritt wird jedes der Bits des erzeugten Wertes des CRC- Kodes, der durch die CRC-Kode-Berechnungsoperation abgeleitet wurde, invertiert; dieser invertierte Wert wird als CRC-Kode eingestellt, um an die Übertragungsdaten angefügt zu werden.
Auf diese Weise wird die Erzeugung des CRC-Kodes durch die folgende Prozedur ausgeführt, in der als erstes [FF] als Anfangswert des CRC-Kodes (kurz gesagt die Bytedaten) und als die Bitdaten [RR] gesetzt wird; Übertragungsdaten werden auf­ einanderfolgend als ein Bit zu einem Zeitpunkt übertragen, wobei mit dem höchsten Bit der Übertragungsdaten begonnen wird, wobei die CRC-Berechnung durch die arithmetische CRC- Schaltung aufeinanderfolgend durchgeführt wird, bis daß die Berechnung für alle Bits der Daten der Übertragungsdaten be­ endet ist. Wenn die Berechnung beendet ist, wird der erzeugte Wert des CRC-Kodes invertiert. Aus diesem Grund kann der CRC für jede Anzahl an Bytes der Übertragungsdaten unter Verwen­ dung des Erzeugungspolynoms berechnet werden.
Zum Beispiel zeigt Fig. 5 die Übertragungsdaten und den CRC-Kode, der durch die Berechnungsschaltung dieses Ausfüh­ rungsbeispiels erzeugt wird; diesem kann entnommen werden, daß, selbst wenn die Bytedaten drei Bytes von Daten, von den Bytedaten Daten0 zu den Bytedaten Daten2, oder selbst vier Bytes von Daten, von den Bytedaten Daten0 zu den Bytedaten Daten3, haben, der CRC-Kode erzeugt werden kann, indem die CRC-Berechnung für die einzelnen Bytedaten ausgeführt wird, wobei vom höchsten Bit begonnen wird.
Fig. 5A zeigt die Datenstruktur der Übertragungsdaten während der Datenübertragung. Die Übertragungsdaten von den Bytedaten Daten0 zu den Bytedaten Daten n, die dem CRC-Kode (CRC.G) beigefügt sind, der durch den vorstehend beschriebe­ nen CRC-Kode-Erzeugungsprozeß erzeugt wird, werden zu den an­ deren Einheiten als Übertragungsdaten übertragen. Außerdem zeigt Fig. 5B das Berechnungsergebnis des CRC-Kodes; zum Beispiel wird, wenn die Übertragungsdaten aus drei Bytes von Daten Daten0-Daten3 bestehen, die hexadezimal ausgedrückt [F2], [01] und [83] sind, der Hexadezimalausdruck [37] als CRC-Kode gesetzt.
Fig. 6 ist ein Flußdiagramm, das den CRC-Prüfprozeß zeigt, um die CRC-Prüfungen an den aufgenommenen Daten auszu­ führen.
Wie es in Fig. 4 gezeigt ist, wird, wenn die CRC-Prüfun­ gen ausgeführt werden, als erstes in Schritt 210 die Adresse des Datenspeichers 14 zum Speichern des CRC-Kodes zum CRC- Prüfen (auf den sich nachfolgend einfach als Prüfkode bezogen wird) auf zum Beispiel [$CRC.C] gesetzt; im folgenden Schritt 220 wird ein Anfangswert [FF] an die [$CRC.C] Adresse ge­ setzt.
Dann wird im folgenden Schritt 230 ein Bit von Daten der aufgenommenen Daten, wobei mit dem höchsten Bit begonnen wird, zum Speicherbereich der Bitdaten [RR] des Registers 30 oder 32 übertragen; im nächsten Schritt, dem Schritt 240, wird mit den Daten, die in [$CRC.C] gespeichert sind, der im vorstehenden Schritt 210 als Speicherbereich des Prüfkodes des Datenspeichers 14, der als Bytedaten gesetzt wurde, ge­ setzt wurde, der CRC-Berechnungsbefehl erzeugt, damit die arithmetische CRC-Schaltung die arithmetische Operation des CRC-Kodes ausführt, zum Beispiel [CRC, $CRC.C].
Dann werden in Schritt 250 die Daten, die in Schritt 230 als Bitdaten [RR] des Registers 30 oder 32 gesendet wurden, geprüft, um zu sehen, ob es das abschließende Bit der aufge­ nommenen Daten ist; anders ausgedrückt werden die Daten ge­ prüft, um zu sehen, ob diese das niedrigste Bit des CRC- Kodes, der den aufgenommenen Daten beigefügt ist, sind; wenn dem nicht so ist, wird $CRC.G auf den Wert des berechneten CRC-Kodes gesetzt; die Steuerung geht erneut zu Schritt 230; ein Bit der Daten, das eine Position niedriger als das Bit der Daten ist, das zuvor zum arithmetischen Register 30 oder 32 als Bitdaten [RR] gesendet wurde, wird als neue Bitdaten [RR] zum arithmetischen Register 30 oder 32 gesendet; in nächsten Schritt, dem Schritt 240, wird der CRC-Berechnungs­ befehl erzeugt.
Als Ergebnis wird in der arithmetischen CRC-Schaltung, wobei der Wert [FF] (Hexadezimalausdruck) als Anfangswert (Bytedaten) verwendet wird, der Prüfkode unter Verwendung des vorstehenden Erzeugungspolynoms berechnet, wobei aufeinander­ folgend vom höchsten Bit der aufgenommenen Daten begonnen wird.
Andererseits geht in Schritt 250, wenn ein Bit der Daten, die zum arithmetischen Register 30 oder 32 als Bitdaten [RR] gesendet werden, als das letzte Bit der aufgenommenen Daten bestimmt wird, die Steuerung zu Schritt 260. Dann wird in Schritt 260 der Prüfkode, der aus den vorstehenden arithme­ tischen Operationen abgeleitet wurde, geprüft, um zu sehen, ob dieser gleich einem vorbestimmten Wert ist (der der Hexa­ dezimalausdruck [C4] in diesem Ausführungsbeispiel ist); wenn der Prüfkode gleich einem vorbestimmten Wert ist [C4], werden in Schritt 270 die aufgenommenen Daten als normal bestimmt; wenn der Prüfkode ungleich dem vorbestimmten Wert [C4] ist, werden in Schritt 280 die aufgenommenen Daten als abnorm be­ stimmt. Nach diesen Operationen wird der CRC-Prüfprozeß been­ det.
Kurz gesagt ist, wie es in Fig. 5A und Fig. 5B gezeigt ist, wenn die Übertragungsdaten, denen ein CRC-Kode beigefügt ist, aufgenommen werden, bei normaler Ausführung der Daten­ übertragung der Prüfkode (CRC.C), der wie im vorstehend be­ schriebenen Prozeß erzeugt wird, gleich dem vorbestimmten Be­ trag, wie es in Fig. 7 gezeigt ist; somit wird für den CRC- Prüfprozeß die Korrektheit der aufgenommenen Daten bestimmt, indem geprüft wird, um zu sehen, ob der Prüfkode, der in der vorstehenden Weise aus den aufgenommenen Daten erzeugt wurde, den vorbestimmten Wert [C4] hat.
Es ist festzuhalten, daß der Prüfkode [C4] ist, da das Erzeugungspolynom des CRC-Kode [X⁸+X⁴+X³+X²+1] gesetzt wurde; somit muß bei Verwendung eines unterschiedlichen Erzeugungs­ polynoms ein Prüfkode, der diesem Polynom entspricht, auf den vorbestimmten Wert gesetzt werden.
Gemäß Vorbeschreibung ist für den Mikroprozessor dieses Ausführungsbeispiels die arithmetische CRC-Schaltung, die den CRC-Berechnungsbefehlen bei der Ausführung der Erzeugung und des Prüfens des CRC-Kodes folgt, im Berechnungselement 40 in­ stalliert, das als Recheneinheit (ALU) wirkt.
Dementsprechend besteht bei einem Mikroprozessor entspre­ chend dieser Erfindung, wenn dieser die Erzeugung und die Prüfung des CRC-Kodes ausführt, nicht die Notwendigkeit, einen getrennten, für einen speziellen Zweck geschaffenen Block für die CRC vorzusehen; somit kann die Erzeugung und Prüfung des CRC-Kodes mit einem Einchipmikroprozessor vorge­ nommen werden.
Da die Berechnung unter Verwendung des Erzeugungspolynoms zum Erzeugen und Prüfen des CRC-Kodes im Unterschied zur her­ kömmlichen Vorrichtung, bei der dieses durch ein auf Software basierendes Verfahren zum Kombinieren von Grundbefehlen aus­ geführt wird, einfach ausgeführt werden kann, indem die arithmetische CRC-Schaltung, die sich in der Recheneinheit 40 befindet, unter Verwendung von CRC-Berechnungsbefehlen be­ trieben wird, außerdem in einem Mikroprozessor entsprechend dieser Erfindung die Erzeugung und Prüfung des CRC-Kodes nicht nur mit nur einem Einchipmikroprozessor ausgeführt wer­ den, sondern kann auch die Berechnung der Erzeugung und Prü­ fung des CRC-Kodes mit hoher Geschwindigkeit ausgeführt wer­ den.
Daher kann ein Mikroprozessor entsprechend der vorliegen­ den Erfindung in den Fällen angewendet werden, in denen die Datenübertragung mit hoher Geschwindigkeit notwendig ist, zum Beispiel in einer Steuervorrichtung, die einen Knoten eines an einem Fahrzeug montierten lokalen Netzwerkes bildet.
Ferner führt die arithmetische CRC-Schaltung dieses Aus­ führungsbeispiels durch die CRC-Berechnungsbefehle nicht nur die Operationen zur Erzeugung und Prüfung von CRC-Kodes aus, sondern arbeitet ebenfalls, wenn ein Schiebebefehl eingegeben wird und der Datenpfad zur Schiebeschaltung SFT durch die Wahleinrichtungen SLa-SLe in eine Richtung geschaltet wird, die sich von der bei der CRC-Berechnung unterscheidet, durch die Schiebeschaltung SFT als reguläre Schiebeschaltung, die Bytedaten einschließlich Bitdaten verschiebt. Aus diesem Grund ist es nicht notwendig, in der Recheneinheit 40 ge­ trennt von der arithmetischen CRC-Schaltung eine reguläre Schiebeschaltung vorzusehen.
Da ferner die arithmetische CRC-Schaltung realisiert wird, indem die Schiebeschaltung, die Exklusiv-Oder-Schaltung und die Wahlschaltungen, die alle Grundbefehlen entsprechen, die in der Recheneinheit vorgesehen sind, kombiniert werden, kann diese ausgebildet werden, indem nur ein Teil der ALU in herkömmlichen Mikroprozessoren geändert wird; somit kann die arithmetische CRC-Schaltung einfach implementiert werden, ohne daß die ALU vergrößert wird oder sich die Herstellungs­ kosten erhöhen.
Während die arithmetische CRC-Schaltung entsprechend der vorliegenden Erfindung aufgebaut wurde, so daß diese die Be­ rechnung des CRC-Kodes unter Verwendung des Erzeugungspo­ lynoms [X⁸+X⁴+X³+X²+1] ausführt, sollte, da dieses Erzeu­ gungspolynom auf der Grundlage des Installationsortes der Ex­ klusiv-Oder-Schaltung am Eingabepfad der Schiebeschaltung SFT bestimmt wurde und da sich dieses ändert, wenn sich der Ort ändert, das Erzeugungspolynom, das beim Erzeugen und Prüfen von CRC-Kodes verwendet wird, entsprechend dem Ort und der Anzahl der Exklusiv-Oder-Schaltungen eingestellt werden.
Wenn zum Beispiel Exklusiv-Oder-Schaltungen EXOR und Wahlschaltungen SL an allen Eingabedatenpfaden zur Schiebe­ schaltung angebracht sind, und wenn die Wahlschaltung SL, die den Ausgang der Exklusiv-Oder-Schaltung EXOR auswählt, unter Verwendung von Software zum Vornehmen der CRC-Berechnungen unter Verwendung der arithmetischen CRC-Schaltung eingestellt wird, kann außerdem das Erzeugungspolynom, das zur Berechnung des CRC-Kodes verwendet wird, durch Software eingestellt wer­ den.
Auch in diesem Fall, in dem Exklusiv-Oder-Schaltungen EXOR und Wahlschaltungen SL für alle Eingabedatenpfade zur Wahlschaltung SL vorgesehen werden, zum Beispiel, indem im voraus mehrere CRC-Berechnungsbefehle zusammen mit dem Spei­ chern der Wahlschaltungen SL, die den Ausgang der Exklusiv Oder-Schaltung in den Registern und ähnlichem auswählen wür­ den, eingestellt werden, kann die Wahlschaltung SL, die dem Befehlskode entspricht, ebenfalls so gestaltet werden, daß diese den Daten im Register folgt, so daß diese bei Erzeugung eines CRC-Berechnungsbefehls automatisch schaltet.
Obwohl die vorliegende Erfindung in Verbindung mit ihrem bevorzugten Ausführungsbeispiel vollständig beschrieben wurde, sind zahlreiche Abänderungen und Abwandlungen für den Fachmann offensichtlich. Solche Abänderungen und Abwandlungen sind als im Geltungsbereich der vorliegenden Erfindung, wie dieser in den beiliegenden Patentansprüchen definiert ist, liegend aufzufassen.
Um einen Mikroprozessor vorzusehen, der die Erzeugung ei­ nes CRC-Kodes mit hoher Geschwindigkeit ausführen kann und einfach und mit niedrigen Kosten implementiert werden kann, weist ein Mikroprozessor an einem Teil eines Dateneingabepfa­ des in eine Schiebeschaltung, die in einer ALU des Mikropro­ zessors zum Ausführen von Schiebebefehlen in herkömmlicher Weise installiert ist, ein Bit von Daten (RR) auf, das dem Pfad entspricht; eine Exklusiv-Oder-Schaltung, die das Exklu­ siv-Oder eines höchsten Bits der Bytedaten und von Bitdaten (RR) berechnet, ist vorgesehen. Für diese Schaltung ist ein Ergebnis entsprechend eines Erzeugungspolynoms, wie zum Bei­ spiel [X⁸+X⁴+X³+X²+1], auf der Grundlage des Anbringortes der Exklusiv-Oder-Schaltung entlang des Pfades bestimmt; durch das Setzen eines Anfangswertes auf die Bytedaten, das aufein­ anderfolgende Eingeben eines Bits der Übertragungsdaten in die Bitdaten (RR) und das Betätigen der Schiebeschaltung wird ein Berechnungsergebnis für den CRC-Kode abgeleitet. Folglich kann der CRC-Kode für den Mikroprozessor mit hoher Geschwin­ digkeit unter Verwendung der Berechnungsbefehle des CRC- Kode-Abschnitts erzeugt werden. Entsprechende Verfahren zur Fehlerprüfung der aufgenommenen Daten sind ebenfalls offen­ bart.

Claims (17)

1. Berechnungsschaltung für einen Mikroprozessor, wobei die Schaltung aufweist:
eine Vielzahl von Eingabeleitungen (7-0, RR), die in der Lage sind, an diesen anliegende Eingabedaten aufzunehmen,
eine Funktionserzeugungseinrichtung (EXOR), die mit den Eingabeleitungen (7-0, RR) verbunden ist, um an einer Viel­ zahl ihrer Ausgänge einen Wert zu erzeugen, der auf den Ein­ gabedaten basiert,
einen Wahlabschnitt (SL), der mit den Eingabeleitungen (7-0, RR) und den Ausgängen des Funktionserzeugungsabschnitts (EXOR) verbunden ist, um im Ansprechen auf einen Wahlbefehl Signale von den Eingabeleitungen (7-0, RR) und Signale von den Ausgängen des Funktionserzeugungsabschnitts (EXOR) an seinen Ausgängen auswählend vorzusehen, und
eine Vielzahl von Ausgabeleitungen (7-0, RR), die mit den Ausgängen des Wahlabschnitts (SL) verbunden sind.
2. Schaltung nach Anspruch 1, bei der die Funktionserzeu­ gungseinrichtung (EXOR) ein Exklusiv-Oder-Gatter (d-a) auf­ weist.
3. Berechnungsschaltung für einen Mikroprozessor, wobei die Schaltung aufweist:
eine Vielzahl von Eingabeleitungen (7-0, RR), die in der Lage sind, an diesen anliegende Eingabedaten aufzunehmen,
ein Exklusiv-Oder-Gatter (EXORd-a), das zumindest einen Eingang hat, der mit einer entsprechenden Eingabeleitung (7-0, RR) verbunden ist,
eine erste Wahlschaltung (SLe-a), die einen ersten Ein­ gang, der mit einem Ausgang des Exklusiv-Oder-Gatters (EXORd-a) verbunden ist, und einen zweiten Eingang aufweist, der mit einer entsprechenden der Vielzahl von Eingabeleitungen (7-0, RR) verbunden ist, wobei die erste Wahlschaltung (SLe-a) im Ansprechen auf einen Wahlbefehl den ersten oder den zweiten Eingang (EXORd-a, 7-0, RR) an seinem Ausgang vorsieht, und
eine Vielzahl von Ausgabeleitungen (7-0, RR), die eine Ausgabeleitung aufweisen, die mit einem entsprechenden Aus­ gang der ersten Wahlschaltung verbunden ist.
4. Schaltung nach Anspruch 3, die ferner aufweist:
eine zweite Wahlschaltung (SLe-a), die einen ersten und zweiten Eingang, die mit entsprechenden der Vielzahl von Ein­ gabeleitungen (7-0, RR) verbunden sind, und einen Ausgang hat, der mit einer entsprechenden der Ausgangsleitungen (7-0, RR) verbunden ist.
5. Schaltung nach Anspruch 3, bei der zumindest eine der Vielzahl von Eingabeleitungen (7-0, RR) mit einer entspre­ chenden der Vielzahl von Ausgabeleitungen (7-0, RR) verbunden ist.
6. Schaltung nach Anspruch 3, die ferner aufweist:
eine zweite Wahlschaltung (SLe-a), die einen ersten und zweiten Eingang, die mit entsprechenden der Vielzahl von Ein­ gabeleitungen (7-0, RR) verbunden sind, und einen Ausgang aufweist, der mit einer entsprechenden der Ausgabeleitungen (7-0, RR) verbunden ist,
wobei zumindest eine der Vielzahl von Eingabeleitungen (7-0, RR) mit einer entsprechenden der Vielzahl von Ausgabe­ leitungen (7-0, RR) verbunden ist.
7. Schaltung nach Anspruch 6, bei der die erste und die zweite Wahlschaltung (SLe-a) und die zumindest eine Eingabe­ leitung (7-0, RR), die mit einer entsprechenden der Ausgabe­ leitungen (7-0, RR) verbunden ist, entsprechend einem Erzeu­ gungspolynom für den CRC-Kode angeordnet sind.
8. Schaltung nach Anspruch 3, wobei die Schaltung im Anspre­ chen auf den Wahlbefehl auswählend als Schieberegister und als Erzeugungsschaltung des CRC-Kodes wirkt.
9. Schaltung nach Anspruch 3, bei der:
die Vielzahl von Eingabeleitungen (7-0, RR) eine Vielzahl von Eingabeleitungen, die Bytedaten (7-0) entsprechen, und eine Eingabeleitung aufweist, die Bitdaten (RR) entspricht, und
die Vielzahl von Ausgabeleitungen (7-0, RR) eine Vielzahl von Ausgabeleitungen, die Bytedaten (7-0) entsprechen, und eine Ausgabeleitung aufweist, die Bitdaten (RR) entspricht.
10. Schaltung nach Anspruch 3, wobei die Schaltung ein Exklu­ siv-Oder-Gatter (EXORd-a) aufweist, das zumindest zwei Ein­ gänge hat, die mit verschiedenen Eingabeleitungen verbunden sind.
11. Verfahren zum Erzeugen von Daten der zyklischen Redun­ danzprüfung, wobei das Verfahren die Schritte aufweist:
das Setzen (120) des Anfangsbinärwertes als Basiswert,
das Vorsehen (120) des Basiswertes an einer Kodeerzeu­ gungsschaltung,
das Berechnen (140) eines Wertes der zyklischen Redun­ danzprüfung unter Verwendung einer Kodeerzeugungsschaltung auf dem Basiswert und einem Bit der Übertragungsdaten basierend, wobei mit ihrem signifikantesten Bit begonnen wird (130),
das Zuweisen (150) des berechneten Wertes der zyklischen Redundanzprüfung an den Basiswert und das Vornehmen des Vor­ sehschritts (120) und Berechnungsschritts (140) unter Verwen­ dung des nächsten signifikantesten Bits der Übertragungsda­ ten, wenn das Bit der Übertragungsdaten nicht ihr am wenig­ sten signifikanteste Bit ist, und
das Ausgeben (160) eines Wertes, der den berechneten Wert der zyklischen Redundanzprüfung darstellt, wenn das Bit der Übertragungsdaten ihr am wenigsten signifikanteste Bit ist.
12. Verfahren nach Anspruch 11, bei der der Vorsehschritt einen Schritt des Anlegens (120) des Basiswertes an eine Kodeerzeugungsschaltung beinhaltet, die eine Vielzahl von Eingabeleitungen, eine Vielzahl von Exklusiv-Oder-Gattern, die mit den Eingabeleitungen verbunden sind, eine Vielzahl von Wahlschaltungen, die mit den Exklusiv-Oder-Gattern und den Eingabeleitungen verbunden sind, und eine Vielzahl von Ausgabeleitungen, die mit den Wahlschaltungen verbunden sind, aufweist, wobei die Vielzahl von Exklusiv-Oder-Gattern und die Vielzahl von Wahlschaltungen angeordnet sind, so daß diese einem Erzeugungspolynom des Kodes der zyklischen Redun­ danzprüfung entsprechen.
13. Verfahren nach Anspruch 11, das ferner den Schritt des aufeinanderfolgenden Wiederholens des Vorsehschritts (120), des Berechnungsschritts (140) und des Zuweisschritts (150) unter Verwendung jeden Bits der Übertragungsdaten beinhaltet.
14. Verfahren nach Anspruch 11, das ferner den Schritt des Invertierens (160) des berechneten Wertes der zyklischen Redundanzprüfung aufweist, um den charakteristischen Wert zu erhalten.
15. Verfahren zum Prüfen von Aufnahmedaten, die Daten der zy­ klischen Redundanzprüfung aufweisen, wobei das Verfahren die Schritte aufweist:
das Setzen (220) eines Anfangsbinärwertes als Basiswert,
das Vorsehen (220) des Basiswertes an einer Kodeerzeu­ gungsschaltung,
das Berechnen (240) eines Wertes der zyklischen Redun­ danzprüfung unter Verwendung der Kodeerzeugungsschaltung auf dem Basiswert und einem Bit der Aufnahmedaten basierend, wo­ bei mit ihrem signifikantesten Bit begonnen wird (230),
das Zuweisen (250) des berechneten Wertes der zyklischen Redundanzprüfung an den Basiswert und das Ausführen des Vor­ sehschritts (220) und des Berechnungsschritts (240) unter Verwendung des nächsten signifikantesten Bits der Aufnahmeda­ ten, wenn das Bit der Aufnahmedaten nicht ihr am wenigsten signifikanteste Bit ist,
das Prüfen (260), ob der berechnete Wert der zyklischen Redundanzprüfung gleich einem vorbestimmten Wert ist, wenn das Bit der Aufnahmedaten ihr am wenigsten signifikanteste Bit ist,
das Bestimmen (270), daß die Aufnahmedaten normal sind, wenn der berechnete Wert der zyklischen Redundanzprüfung gleich dem vorbestimmten Wert ist, und
das Bestimmen (280), daß die Aufnahmedaten fehlerhaft sind, wenn der berechnete Wert der zyklischen Redundanzprü­ fung nicht gleich dem vorbestimmten Wert ist.
16. Verfahren nach Anspruch 15, bei dem der Vorsehschritt (220) einen Schritt zum Anlegen des Basiswertes an eine Kode­ erzeugungsschaltung vorsieht, die eine Vielzahl von Eingabe­ leitungen, eine Vielzahl von Exklusiv-Oder-Gattern, die mit den Eingabeleitungen verbunden sind, eine Vielzahl von Wahl­ schaltungen, die mit den Exklusiv-Oder-Gattern und den Einga­ beleitungen verbunden sind, und eine Vielzahl von Ausgabelei­ tungen, die mit den Wahlschaltungen verbunden sind, aufweist, wobei die Vielzahl von Exklusiv-Oder-Gattern und die Vielzahl von Wahlschaltungen angeordnet sind, daß diese einem Erzeu­ gungspolynom des Kodes der zyklischen Redundanzprüfung ent­ sprechen.
17. Verfahren nach Anspruch 15, das ferner den Schritt des aufeinanderfolgenden Wiederholens des Vorsehschritts (220), des Berechnungsschritts (240) und des Zuweisschritts (250) unter Verwendung jeden Bits als Aufnahmedaten beinhaltet.
DE19524863A 1994-07-07 1995-07-07 Mikroprozessor mit eingebautem Abschnitt zur zyklischen Redundanzprüfung und Verfahren zum Ausführen von Operationen zur zyklischen Redundanzprüfung unter Verwendung von diesem Expired - Lifetime DE19524863B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP6156201A JP2814918B2 (ja) 1994-07-07 1994-07-07 マイクロコンピュータ
JP6-156201 1994-07-07

Publications (2)

Publication Number Publication Date
DE19524863A1 true DE19524863A1 (de) 1996-01-11
DE19524863B4 DE19524863B4 (de) 2005-12-15

Family

ID=15622583

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19524863A Expired - Lifetime DE19524863B4 (de) 1994-07-07 1995-07-07 Mikroprozessor mit eingebautem Abschnitt zur zyklischen Redundanzprüfung und Verfahren zum Ausführen von Operationen zur zyklischen Redundanzprüfung unter Verwendung von diesem

Country Status (4)

Country Link
US (1) US6195779B1 (de)
JP (1) JP2814918B2 (de)
DE (1) DE19524863B4 (de)
FR (1) FR2722897B1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999014665A2 (en) * 1997-09-17 1999-03-25 Sony Electronics Inc. Digital signal processor particularly suited for decoding digital audio

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120858B2 (en) * 2002-08-21 2006-10-10 Sun Microsystems, Inc. Method and device for off-loading message digest calculations
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
JP5708210B2 (ja) * 2010-06-17 2015-04-30 富士通株式会社 プロセッサ

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3873971A (en) * 1973-10-31 1975-03-25 Motorola Inc Random error correcting system
US4312068A (en) * 1976-08-12 1982-01-19 Honeywell Information Systems Inc. Parallel generation of serial cyclic redundancy check
US4119945A (en) * 1977-07-01 1978-10-10 Rca Corporation Error detection and correction
US4404674A (en) * 1981-07-10 1983-09-13 Communications Satellite Corporation Method and apparatus for weighted majority decoding of FEC codes using soft detection
US4742520A (en) * 1984-09-26 1988-05-03 Texas Instruments Incorporated ALU operation: modulo two sum
US4712215A (en) * 1985-12-02 1987-12-08 Advanced Micro Devices, Inc. CRC calculation machine for separate calculation of checkbits for the header packet and data packet
US4750176A (en) * 1986-06-30 1988-06-07 U.S. Philips Corporation Single-channel communication bus system and station for use in such system
JP2544385B2 (ja) * 1987-05-27 1996-10-16 株式会社日立製作所 通信制御装置
DE3719404A1 (de) * 1987-06-11 1988-12-22 Bosch Gmbh Robert Verfahren und anordnung zur korrektur von fehlern in digitalen signalen
JPH01150940A (ja) * 1987-12-08 1989-06-13 Hitachi Ltd Crc演算方式
US5245346A (en) * 1989-12-28 1993-09-14 Kabushiki Kaisha Toyota Chuo Kenyusho Interrogator/transponder system and mobile transponder device
US5321704A (en) * 1991-01-16 1994-06-14 Xilinx, Inc. Error detection structure and method using partial polynomial check
US5251215A (en) * 1992-01-13 1993-10-05 At&T Bell Laboratories Modifying check codes in data packet transmission

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999014665A2 (en) * 1997-09-17 1999-03-25 Sony Electronics Inc. Digital signal processor particularly suited for decoding digital audio
WO1999014665A3 (en) * 1997-09-17 1999-08-12 Sony Electronics Inc Digital signal processor particularly suited for decoding digital audio
US6263420B1 (en) 1997-09-17 2001-07-17 Sony Corporation Digital signal processor particularly suited for decoding digital audio

Also Published As

Publication number Publication date
FR2722897A1 (fr) 1996-01-26
FR2722897B1 (fr) 1997-09-12
JPH0822448A (ja) 1996-01-23
JP2814918B2 (ja) 1998-10-27
DE19524863B4 (de) 2005-12-15
US6195779B1 (en) 2001-02-27

Similar Documents

Publication Publication Date Title
DE2714805C2 (de)
DE2753062C2 (de) Einrichtung zur wiederholten Durchführung von Programmschleifen
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE2328869C2 (de) Verfahren und Schaltungsanordnung zum Betreiben eines digitalen Speichersystems
DE2614000A1 (de) Einrichtung zur diagnose von funktionseinheiten
DE2806024A1 (de) Speichersystem mit fehlerfeststell- und korrekturmoeglichkeit
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE3116100A1 (de) Sprungabschaetz-zentraleinheit
DE10349581A1 (de) Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit
DE2524046A1 (de) Elektronische datenverarbeitungsanlage
DE69632655T2 (de) Pipeline-Datenverarbeitungsanordnung zur Durchführung einer Mehrzahl von untereinander datenabhängigen Datenprozessen
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
EP0282877B1 (de) Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten
DE3507584C2 (de)
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE3814875A1 (de) Logische verknuepfungseinrichtung und logisches verknuepfungsverfahren
DE19524863A1 (de) Mikroprozessor mit eingebautem Abschnitt zur zyklischen Redundanzprüfung und Verfahren zum Ausführen von Operationen zur zyklischen Redundanzprüfung unter Verwendung von diesem
EP0347970B1 (de) Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens
DE69817852T2 (de) Speicherschutzsystem für ein multitaskingsystem
DE2714681A1 (de) Mikroprogrammierter lsi-mikroprozessor
DE3138989A1 (de) Zusaetzliche funktionseinheit in einem mikroprozessor, mikroprozessorsystem und verfahren zu seinem betrieb
DE2242009C2 (de) Verfahren und Anordnung zum Erkennen, ob im Mikroprogramm einer Datenverarbeitungsanlage vorgesehene Verzweigungsoperationen ausgeführt werden
DE2622140C3 (de) Einrichtung zur Steuerung manueller Operationen
DE2725504C2 (de)
DE102004001651B4 (de) Verfahren und Prozessor zur automatischen Befehls-Betriebsartumschaltung zwischen N-Bit und 2N-Bit Befehlen unter Verwendung einer Paritätsüberprüfung

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: DENSO CORP., KARIYA, AICHI, JP

8110 Request for examination paragraph 44
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
R071 Expiry of right