-
Die
Erfindung bezieht sich auf Steuermodule und insbesondere auf ein
Verfahren zum Überprüfen der
Funktionsfähigkeit
eines Steuermoduls einer Arithmetik-Logik-Einheit (ALU).
-
Steuermodule
sind in einer Vielzahl von Systemen implementiert, um Daten zu verarbeiten
und um Steuersignale zu liefern. Zum Beispiel erzeugen Fahrzeugsteuermodule
Steuersignale, die den Betrieb von Fahrzeugkomponenten lenken. Das
Steuermodul empfängt
von verschiedenen Sensoren und anderen Vorrichtungen Signale, die
Betriebskennwerte (z. B. Motordrehzahl, Temperatur, Druck, Übersetzungsverhältnis und
dergleichen) überwachen. Die
Steuersignale beruhen auf den Signalen, die von den verschiedenen
Sensoren empfangen werden. Insbesondere verarbeitet das Steuermodul
Signalinformationen unter Verwendung einer Arithmetik-Logik-Einheit
(ALU). Das Steuermodul verarbeitet die Steuersignale anhand einer
vorprogrammierten Steuerstrategie.
-
In
einigen Anwendungen erzeugen Steuermodule sicherheitskritische Steuersignale.
Das heißt, die
Steuersignale lenken den Betrieb von Komponenten, die die Leistungsfähigkeit
des Fahrzeugs beeinflussen. Zum Beispiel erzeugt das Steuermodul
in einem Fahrzeug mit einem elektronisch gesteuerten Schaltungssystem
Steuersignale, die das Schalten eines Getriebes regulieren. Eine
Ungenauigkeit in den Steuersignalen kann zu einer Beschädigung an den
Komponenten des Getriebes und/oder zum falschen Betrieb des Getriebes
führen.
-
Eine
defekte ALU und/oder defekte Speicherregister können die Genauigkeit von Steuersignalen
beeinflussen. Somit sind Unversehrtheits- oder Funktionsfähigkeitsprüfungen entwickelt
worden, um zu bestimmen, ob die ALU und/oder die Speicherregister
richtig arbeiten. Allerdings prüfen
herkömmliche
ALU-Funktionsfähigkeitsprüfungen nicht
alle Operationen, die die ALU ausführt.
-
Dementsprechend
schafft die Erfindung ein Verfahren zum Überprüfen der Funktionsfähigkeit
einer Arithmetik-Logik-Einheit (ALU) eines Steuermoduls. Das Verfahren
enthält
das Eingeben eines ersten Testwerts in eines von mehreren Registern
der ALU und das Eingeben eines zweiten Testwerts in die verbleibenden
Register der mehreren Register. Zwischen dem einem der mehreren
Register und jedem der verbleibenden Register werden eine erste
Menge von Operationen ausgeführt,
um eine erste Menge von Ergebnissen zu erzeugen. Wenn sich ein Ergebnis
aus der ersten Menge von Ergebnissen von einem ersten vorgegebenen
Ergebnis unterscheidet, wird ein Fehler angegeben.
-
Gemäß weiteren
Merkmalen enthält
das Verfahren ferner das Eingeben des ersten Testwerts in die verbleibenden
Register und das Ausführen
einer zweiten Menge von Operationen zwischen dem einen der mehreren
Register und jedem der verbleibenden Register, um eine zweite Menge
von Ergebnissen zu erzeugen. Wenn sich ein Ergebnis aus der zweiten
Menge von Ergebnissen von einem zweiten vorgegebenen Ergebnis unterscheidet,
wird ein Fehler angegeben.
-
Gemäß weiteren
Merkmalen enthält
die erste Menge von Operationen logische Operationen. Die logischen
Operationen enthalten wenigstens eine logische Operation aus einer
Gruppe, die aus UND, ODER, XOR und NICHT besteht.
-
Gemäß weiteren
Merkmalen enthält
die zweite Menge von Operationen logische Operationen. Die logischen
Operationen enthalten wenigstens eine logische Operation aus einer
Gruppe, die aus UND, ODER, XOR und NICHT besteht.
-
Gemäß nochmals
weiteren Merkmalen enthält
die erste Menge von Operationen Vergleichsoperationen. Die Vergleichsoperationen
enthalten wenigstens eine Vergleichsoperation aus einer Gruppe, die
aus gleich (=), ungleich (≠),
kleiner als (<),
kleiner oder gleich (≤),
größer als
(>) und größer oder
gleich (≥)
besteht.
-
Gemäß nochmals
weiteren Merkmalen enthält
die zweite Menge von Operationen Vergleichsoperationen. Die Vergleichsoperationen
enthalten wenigstens eine Vergleichsoperation aus einer Gruppe, die
aus gleich (=), ungleich (≠),
kleiner als (<),
kleiner oder gleich (≤),
größer als
(>) und größer oder
gleich (≥)
besteht.
-
Die
Erfindung wird im Folgenden beispielhaft anhand der Zeichnungen
beschrieben; in diesen zeigt:
-
1 eine
schematische Darstellung eines Steuermoduls, das einen Prozessor
mit einer Arithmetik-Logik-Einheit (ALU) enthält;
-
2 einen
Ablaufplan, der eine Vergleichsfunktionsfähigkeitsprüfung für die ALU veranschaulicht;
-
3 einen
Ablaufplan, der eine UND-Logik-Funktionsfähigkeitsprüfung für die ALU veranschaulicht;
-
4 einen
Ablaufplan, der eine ODER-Logik-Funktionsfähigkeitsprüfung für die ALU veranschaulicht;
-
5 einen
Ablaufplan, der eine XOR-Logik-Funktionsfähigkeitsprüfung für die ALU veranschaulicht;
-
6 einen
Ablaufplan, der eine NICHT-Logik-Funktionsfähigkeitsprüfung für die ALU veranschaulicht;
-
7A einen
Ablaufplan, der einen ersten Abschnitt einer beispielhaften Anfangswert-Schlüssel-basierten
ALU-Prüfung
für Vergleichsoperationen gemäß der Erfindung
veranschaulicht; und
-
7B einen
Ablaufplan, der einen zweiten Abschnitt einer beispielhaften Anfangswert-Schlüssel-basierten
ALU-Prüfung
für Vergleichsoperationen gemäß der Erfindung
veranschaulicht.
-
Die
folgende Beschreibung der bevorzugten Ausführungsform ist dem Wesen nach
lediglich beispielhaft und soll die Erfindung, ihre Anwendung oder Verwendungen
in keiner Weise einschränken.
Aus Klarheitsgründen
werden in den Zeichnungen zur Identifizierung ähnlicher Elemente die gleichen
Bezugszeichen verwendet. Der Begriff Operation wird hier in der
Weise verwendet, dass er sich auf Vergleichsoperationen und logische
Operationen bezieht. Vergleichsoperationen enthalten, sind aber nicht
beschränkt
auf, gleich (=), ungleich (≠)
kleiner als (<),
kleiner oder gleich (≤),
größer als
(>) und größer oder
gleich (≥).
Logische Operationen enthalten, sind aber nicht beschränkt auf,
UND, ODER, XOR und NICHT.
-
In 1 ist
nun ein beispielhaftes Steuermodul 10 schematisch veranschaulicht.
Das Steuermodul enthält
einen Prozessor 12, einen Schreib-Lese-Speicher (RAM) 14 und
eine Datenverbindung 16, die die Kommunikation zwischen
dem Prozessor 12 und dem RAM 14 ermöglicht.
Der Prozessor 12 enthält
eine Arithmetik-Logik-Einheit (ALU) 18 und der RAM enthält Datenspeicherregister 20 (R1 bis RN). Obgleich
die Datenspeicherregister 20 als Teil des RAM 14 veranschaulicht
sind, ist klar, dass der Ort der Datenspeicherregister 20 anhand
der besonderen Steuermodularchitektur variieren kann. Die Anzahl
der Register 20 kann variieren und die Anzahl der Speicherbits
pro Register kann variierert.
-
Die
ALU 18 steuert die Übertragung
von Daten zu und von den Registern 20 und manipuliert die in
den Registern 20 gespeicherten Daten. Insbesondere führt die
ALU 18 unter Verwendung der gespeicherten Daten Berechnungen
aus, um Steuersignale für
den Betrieb eines Systems wie etwa eines Fahrzeugsystems zu bestimmen.
Einige der durch die ALU 18 ausgeführten Berechnungen werden als
sicherheitskritisch betrachtet. Somit ist die richtige Funktion
der ALU 18 notwendig, um sicherzustellen, dass die resultierenden
Steuersignale die Systemkomponenten sicher betreiben. Zum Beispiel
erzeugt das Steuermodul 10 in einem Fahrzeug mit einem elektronisch
gesteuerten Schaltsystem Steuersignale, die das Schalten eines Getriebes
regulieren. Eine defekte ALU 18 kann falsche Steuersignale
für die momentanen
Fahrzeugbetriebsbedingungen erzeugen. Im Ergebnis können Komponenten
des Getriebes beschädigt
werden und/oder kann das Getriebe falsch funktionieren.
-
Die
ALU-Funktionsfähigkeitsprüfungen der Erfindung
bestimmen, ob alle durch die ALU 18 ausgeführten Logikfunktionen
und Tests richtig sind, wodurch die Funktionsfähigkeit der ALU 18 sichergestellt
wird. Es ist klar, dass für
ein besonderes Steuermodul 10 nicht alle ALU-Funktionsfähigkeitsprüfungen ausgeführt zu werden
brauchen. Falls das Steuermodul 10 nicht alle Logikfunktionen
und Tests ausführt,
brauchen z. B. nur diejenigen ALU-Funktionsfähigkeitsprüfungen ausgeführt zu werden,
die den Logikfunktionen und Tests entsprechen, die es ausführt. Die
ALU-Funktionsfähigkeitsprüfungen werden
durch das Steuermodul 10 periodisch ausgeführt und
können
anhand einer Standardverarbeitungsschleife oder aussetzend zwischen
Verarbeitungsschleifen ablaufen. Eine ALU-Funktionsfähigkeitsprüfung wertet
die durch die ALU ausgeführten
Vergleichsoperationen einschließlich,
aber nicht beschränkt
auf, gleich (=), ungleich (≠),
kleiner als (<),
größer oder gleich
(≤), größer als
(>) und größer oder
gleich (≥) aus.
Eine weitere ALU-Funktionsfähigkeitsprüfung wertet
die durch die ALU ausgeführten
logischen Operationen einschließlich,
aber nicht beschränkt auf,
UND, ODER, XOR und NICHT aus.
-
Die
ALU-Funktionsfähigkeitsprüfungen der Erfindung
verwenden Testwerte, die in den Registern 20 gespeichert
sind. An den Testwerten werden Vergleichsoperationen und logische
Operationen ausgeführt.
Falls die Ergebnisse der Operationen gültig sind, gelten die Register 20 und
die ALU 18 als richtig arbeitend. Falls ein Ergebnis der
Operationen ungültig
ist, gelten das spezifische Register 20 und/oder die ALU 18 als
falsch arbeitend, wobei eine Abhilfsmaßnahme ergriffen wird. Die
Art der Abhilfsmaßnahme
kann je nach Systemtyp (z. B. Motorsteuerung, Getriebesteuerung
und dergleichen) variieren. Zum Beispiel kann die Abhilfsmaßnahme im
Fall eines Motorsteuersystems das Abschalten des Motors oder das
Begrenzen der Motordrehzahl enthalten, ist aber nicht darauf beschränkt. Im
Fall eines Getriebesteuersystems kann die Abhilfsmaßnahme das
geparkt Halten des Getriebes oder das Begrenzen der verfügbaren Gänge enthalten,
ist aber nicht darauf beschränkt.
Weitere Abhilfsmaßnahmen
einschließlich
des Auslösens
eines sichtbaren und/oder hörbaren
Fehlerindikators werden ebenfalls erwartet, sind aber nicht darauf
beschränkt.
-
Die
ALU 18 führt
an den Testwerten vorzeichenbehaftete und vorzeichenlose Operationen
aus. Ein Byte kann Werte von 0 bis 255 annehmen, was hexadezimal
(hex) $00 bis $FF oder binär
0000 0000 bis 1111 1111 ist. In vorzeichenlosen Operationen werden
die Werte des Bytes als ganze Zahlen 0 bis 255 interpretiert. In
typischen vorzeichenbehafteten Operationen, die Zweierkomplement
genannt werden, gibt das höchstwertige
Bit das Vorzeichen an. Zum Beispiel gibt 0 eine positive Zahl an,
während
1 eine negative Zahl angibt. Im Ergebnis sind die Bytewerte $00
bis $7F (d. h. 0000 0000 bis 0111 1111) die ganzzahligen Werte 0
bis 127. Alternativ sind die Bytewerte $FF bis $80 (d. h. 1111 1111
bis 1000 0000) die ganzzahligen Werte -1 bis -128. Obgleich die
im Folgenden ausführlich
diskutierte ALU-Prüfung
für Zweierkomplementoperationen
bestimmt ist, kann jede durch den Fachmann auf dem Gebiet für andere
Darstellungen negativer Zahlen (z. B. Einerkomplement) geändert werden.
-
Die
in der vorstehenden Diskussion implementierten beispielhaften Testwerte
enthalten $AAAA und $5555, die jeweils aus 2 Bytes, $AA bzw. $55,
bestehen. Der Hex-Wert $AA (d. h. 1010 1010) ist vorzeichenlos gleich
170 und vorzeichenbehaftet gleich -86. Der Hex-Wert $5555 (d. h.
0101 0101) ist vorzeichenbehaftet und vorzeichenlos gleich 85. Somit
ist für
vorzeichenlose Operationen $AA größer als $55 (d. h. 170 > 85), während für vorzeichenbehaftete
Operationen $AA kleiner als $55 (d. h. -86 < 85) ist. Außerdem wird angemerkt, dass
$AAAA ein entgegengesetztes Bitmuster zu $5555 besitzt. Es ist klar, dass
die Testwerte und die Anzahl ihrer Bytes dem Wesen nach beispielhaft
sind. Insbesondere enthalten die beispielhaften Testwerte jeweils
2 Bytes, die aus 16 Bits bestehen. Anhand der Größe der Register können die
Testwerte größer oder
kleiner sein. Zum Beispiel können
die Testwerte $AA und $55 verwendet werden, falls jedes Register
nur 1 Byte speichern kann. Falls jedes Register 3 Bytes
speichern kann, können
die Testwerte $AAAAAA und $555555 verwendet werden.
-
Wie
nun in 2 gezeigt ist, stellt eine ALU-Vergleichsprüfung die
Funktionsfähigkeit
der ALU 18 in Bezug auf Vergleichsoperationen sicher. In Schritt 200 wird
i gleich 1 gesetzt. In Schritt 202 wird der Hex-Testwert
$AAAA im Register R[i] gespeichert. In Schritt 204 wird
j gleich i+1 gesetzt. In Schritt 206 wird der Hex-Testwert
$5555 im Register R[j] gespeichert. In Schritt 208 bestimmt
die ALU-Prüfung unter
Verwendung einer vorzeichenlosen Operation, ob R[i] kleiner als
R[j] ist. Falls R[i] kleiner als R[j] ist, wird in Schritt 210 ein
Fehler angegeben. Falls R[i] nicht kleiner als R[j] ist, bestimmt
die ALU-Prüfung unter
Verwendung einer vorzeichenlosen Operation in Schritt 212,
ob R[i] kleiner oder gleich R[j] ist. Falls R[i] kleiner oder gleich
R[j] ist, wird in Schritt 210 ein Fehler angegeben. Falls
R[i] nicht kleiner oder gleich R[j] ist, wird die ALU-Prüfung in
Schritt 214 fortgesetzt. In Schritt 211 wird eine
Abhilfsmaßnahme
begonnen und die ALU-Prüfung
abgeschlossen.
-
In
Schritt 214 bestimmt die ALU-Prüfung unter Verwendung einer
vorzeichenbehafteten Operation, ob R[i] größer als R[j] ist. Falls R[i]
größer als
R[j] ist, wird in Schritt 210 ein Fehler angegeben. Falls R[i]
nicht größer als
R[j] ist, bestimmt die ALU-Prüfung
in Schritt 216 unter Verwendung einer vorzeichenbehafteten
Operation, ob R[i] größer oder
gleich R[j] ist. Falls R[i] größer oder
gleich R[j] ist, wird in Schritt 210 ein Fehler angegeben.
Falls R[i] nicht größer oder
gleich R[j] ist, wird die ALU-Prüfung
in Schritt 218 fortgesetzt. In Schritt 218 bestimmt
die ALU-Prüfung,
ob R[i] gleich R[j] ist. Falls R[i] gleich R[j] ist, wird in Schritt 210 ein
Fehler angegeben. Falls R[i] ungleich R[j] ist, bestimmt die ALU-Prüfung in
Schritt 220, ob R[i] ungleich R[j] ist. Falls R[i] gleich R[j]
ist, wird in Schritt 210 ein Fehler angegeben. Falls R[i]
ungleich R[j] ist, wird R[j] in Schritt 222 gleich $AAAA
gesetzt. In Schritt 224 bestimmt die ALU-Prüfung, ob
R[i] gleich R[j] ist. Falls R[i] ungleich R[j] ist, wird in Schritt 210 ein
Fehler angegeben. Falls R[i] gleich R[j] ist, bestimmt die ALU-Prüfung in Schritt 226,
ob R[i] ungleich R[j] ist. Falls R[i] ungleich R[j] ist, wird in
Schritt 210 ein Fehler angegeben. Falls R[i] gleich R[j]
ist, wird die ALU-Prüfung
in Schritt 228 fortgesetzt.
-
In
Schritt 228 bestimmt die ALU-Prüfung, ob j gleich N ist. Falls
j ungleich N ist, wird j um 1 inkrementiert und die ALU-Prüfung zu
Schritt 206 zurückgeschleift.
Auf diese Weise wird die ALU-Prüfung zwischen
R[i] und allen anderen Registern über R[i] (d. h. R[i+1] bis
R[N]) ausgeführt.
Falls j gleich N ist, bestimmt die ALU-Prüfung in Schritt 232,
ob i gleich N-1 ist. Falls i ungleich N-1 ist, wird i in Schritt
234 um 1 inkrementiert und die ALU-Prüfung zu Schritt 202 zurückgeschleift.
Auf diese Weise wird die ALU-Prüfung
zwischen allen Registern ausgeführt.
Falls i gleich N-1 ist, sind alle Register geprüft worden, wobei die ALU-Prüfung abgeschlossen
wird.
-
Nunmehr
anhand von 3 stellt die ALU-Logikprüfung die
Funktionsfähigkeit
der ALU 18 in Bezug auf die logische UND-Operation sicher.
In Schritt 300 wird i gleich 1 gesetzt. In Schritt 302 speichert
die ALU-Prüfung $AAAA
in R[i]. In Schritt 304 bestimmt die ALU-Prüfung, ob
R[i] UND $5555 ungleich $0000 ist. Falls R[i] UND $5555 ungleich $0000
ist, wird in Schritt 306 ein Fehler angegeben. Falls R[i]
UND $5555 gleich $0000 ist, bestimmt die ALU-Prüfung in Schritt 308,
ob R[i] UND $AAAA ungleich $AAAA ist. Falls R[i] UND $AAAA ungleich $AAAA
ist, wird in Schritt 306 ein Fehler angegeben. Falls R[i]
UND $AAAA gleich $AAAA ist, bestimmt die ALU-Prüfung in Schritt 310,
ob R[i] UND $FFFF ungleich $AAAA ist. Falls R[i] UND $FFFF ungleich $AAAA
ist, wird in Schritt 306 ein Fehler angegeben und in Schritt 307 eine
Abhilfsmaßnahme
begonnen. Falls R[i] UND $FFFF gleich $AAAA ist, bestimmt die ALU-Prüfung in
Schritt 312, ob R[i] UND $0000 ungleich $0000 ist. Falls
R[i] UND $0000 ungleich $0000 ist, wird in Schritt 306 ein
Fehler angegeben. Falls R[i] UND $0000 gleich $0000 ist, wird die ALU-Prüfung in
Schritt 314 fortgesetzt.
-
In
Schritt 314 speichert die ALU-Prüfung $5555 in R[i]. In Schritt 316 bestimmt
die ALU-Prüfung,
ob R[i] UND $5555 ungleich $5555 ist. Falls R[i] UND $5555 ungleich
$5555 ist, wird in Schritt 306 ein Fehler angegeben. Falls
R[i] UND $5555 gleich $5555 ist, bestimmt die ALU-Prüfung in
Schritt 318, ob R[i] UND $AAAA ungleich $0000 ist. Falls
R[i] UND $AAAA ungleich $0000 ist, wird in Schritt 306 ein
Fehler angegeben. Falls R[i] UND $AAAA gleich $0000 ist, bestimmt
die ALU-Prüfung
in Schritt 320, ob R[i] UND $FFFF ungleich $5555 ist. Falls
R[i] UND $FFFF ungleich $5555 ist, wird in Schritt 306 ein
Fehler angegeben. Falls R[i] UND $FFFF gleich $5555 ist, bestimmt
die ALU-Prüfung
in Schritt 322, ob R[i] UND $0000 ungleich $0000 ist. Falls
R[i] UND $0000 ungleich $0000 ist, wird in Schritt 306 ein
Fehler angegeben. Falls R[i] UND $0000 gleich $0000 ist, bestimmt
die ALU-Prüfung
in Schritt 324, ob i gleich N ist. Falls i ungleich N ist,
wird i in Schritt 326 um 1 inkrementiert und die ALU-Prüfung zu
Schritt 302 fortgesetzt. Falls i gleich N ist, wird die
ALU-Prüfung abgeschlossen.
-
Nunmehr
anhand von 4 stellt eine ALU-Logikprüfung die
Funktionsfähigkeit
der ALU 18 in Bezug auf die logische ODER-Operation sicher.
In Schritt 400 wird i gleich 1 gesetzt. In Schritt 402 speichert
die ALU-Prüfung $AAAA
in R[i]. In Schritt 404 bestimmt die ALU-Prüfung, ob
R[i] ODER $5555 ungleich $FFFF ist. Falls R[i] ODER $5555 ungleich $FFFF
ist, wird in Schritt 406 ein Fehler angegeben, in Schritt 407 eine
Abhilfsmaßnahme
begonnen und die ALU-Prüfung
abgeschlossen. Falls R[i] ODER $5555 gleich $FFFF ist, bestimmt
die ALU-Prüfung
in Schritt 408, ob R[i] ODER $AAAA ungleich $AAAA ist.
Falls R[i] ODER $AAAA ungleich $AAAA ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $AAAA gleich $AAAA ist, bestimmt
die ALU-Prüfung in
Schritt 410, ob R[i] ODER $FFFF ungleich $FFFF ist. Falls
R[i] ODER $FFFF ungleich $FFFF ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $FFFF gleich $FFFF ist, bestimmt
die ALU-Prüfung in
Schritt 412, ob R[i] ODER $0000 ungleich $AAAA ist. Falls
R[i] ODER $0000 ungleich $AAAA ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $0000 gleich $AAAA ist, wird die
ALU-Prüfung
in Schritt 414 fortgesetzt.
-
In
Schritt 414 speichert die ALU-Prüfung $5555 in R[i]. In Schritt 416 bestimmt
die ALU-Prüfung,
ob R[i] ODER $5555 ungleich $5555 ist. Falls R[i] ODER $5555 ungleich
$5555 ist, wird in Schritt 406 ein Fehler angegeben. Falls
R[i] ODER $5555 gleich $5555 ist, bestimmt die ALU-Prüfung in
Schritt 418, ob R[i] ODER $AAAA ungleich $FFFF ist. Falls R[i]
ODER $AAAA ungleich $FFFF ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $AAAA gleich $FFFF ist, bestimmt
die ALU-Prüfung
in Schritt 420, ob R[i] ODER $FFFF ungleich $FFFF ist.
Falls R[i] ODER $FFFF ungleich $FFFF ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $FFFF gleich $FFFF ist, bestimmt
die ALU-Prüfung
in Schritt 422, ob R[i] ODER $0000 ungleich $5555 ist.
Falls R[i] ODER $0000 ungleich $5555 ist, wird in Schritt 406 ein
Fehler angegeben. Falls R[i] ODER $0000 gleich $5555 ist, bestimmt
die ALU-Prüfung
in Schritt 424, ob i gleich N ist. Falls i ungleich N ist,
wird i in Schritt 426 um 1 inkrementiert und die ALU-Prüfung zu
Schritt 402 zurückgeschleift.
Falls i gleich N ist, wird die ALU-Prüfung abgeschlossen.
-
Nunmehr
anhand von 5 stellt eine ALU-Logikprüfung die
Funktionsfähigkeit
der ALU 18 in Bezug auf die logische XOR-Operation sicher.
In Schritt 500 wird i gleich 1 gesetzt. In Schritt 502 speichert
die ALU-Prüfung $AAAA
in R[i]. In Schritt 504 bestimmt die ALU-Prüfung, ob
R[i] XOR $5555 ungleich $FFFF ist. Falls R[i] XOR $5555 ungleich $FFFF
ist, wird in Schritt 506 ein Fehler angegeben, in Schritt 507 eine
Abhilfsmaßnahme
begonnen und die ALU-Prüfung
abgeschlossen. Falls R[i] XOR $5555 gleich $FFFF ist, bestimmt die
ALU-Prüfung
in Schritt 508, ob R[i] XOR $AAAA ungleich $0000 ist. Falls
R[i] XOR $AAAA ungleich $0000 ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $AAAA gleich $0000 ist, bestimmt
die ALU-Prüfung in
Schritt 510, ob R[i] XOR $FFFF ungleich $5555 ist. Falls
R[i] XOR $FFFF ungleich $5555 ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $FFFF gleich $5555 ist, bestimmt
die ALU-Prüfung
in Schritt 512, ob R[i] XOR $0000 ungleich $AAAA ist. Falls
R[i] XOR $0000 ungleich $AAAA ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $0000 gleich $AAAA ist, wird die
ALU-Prüfung
in Schritt 514 fortgesetzt.
-
In
Schritt 514 speichert die ALU-Prüfung $5555 in R[i]. In Schritt 516 bestimmt
die ALU-Prüfung,
ob R[i] XOR $5555 ungleich $0000 ist. Falls R[i] XOR $5555 ungleich
$0000 ist, wird in Schritt 506 ein Fehler angegeben. Falls
R[i] XOR $5555 gleich $0000 ist, bestimmt die ALU-Prüfung in
Schritt 518, ob R[i] XOR $AAAA ungleich $FFFF ist. Falls
R[i] XOR $AAAA ungleich $FFFF ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $AAAA gleich $FFFF ist, bestimmt
die ALU-Prüfung
in Schritt 520, ob R[i] XOR $FFFF ungleich $AAAA ist. Falls
R[i] XOR $FFFF ungleich $AAAA ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $FFFF gleich $AAAA ist, bestimmt
die ALU-Prüfung
in Schritt 522, ob R[i] XOR $0000 ungleich $5555 ist. Falls
R[i] XOR $0000 ungleich $5555 ist, wird in Schritt 506 ein
Fehler angegeben. Falls R[i] XOR $0000 gleich $5555 ist, bestimmt
die ALU-Prüfung
in Schritt 524, ob i gleich N ist. Falls i ungleich N ist,
wird i in Schritt 526 um 1 inkrementiert und die ALU-Prüfung zu
Schritt 502 zurückgeschleift.
Falls i gleich N ist, wird die ALU-Prüfung
abgeschlossen.
-
Nunmehr
anhand von 6 stellt eine ALU-Logikprüfung die
Funktionsfähigkeit
der ALU 18 in Bezug auf die logische NICHT-Operation sicher.
In Schritt 600 setzt die ALU-Prüfung i gleich 1. In Schritt 602 speichert
die ALU-Prüfung
$AAAA in R[i]. In Schritt 604 bestimmt die ALU-Prüfung, ob
NICHT R[i] ungleich $5555 ist. Falls NICHT R[i] ungleich $5555 ist,
wird in Schritt 606 ein Fehler angegeben, in Schritt 607 eine
Abhilfsmaßnahme
begonnen und die ALU-Prüfung
abgeschlossen. Falls NICHT R[i] gleich $5555 ist, wird in Schritt 608 $5555
in R[i] gespeichert. In Schritt 610 bestimmt die ALU-Prüfung ob NICHT
R[i] ungleich $AAAA ist. Falls NICHT R[i] ungleich $AAAA ist, wird
in Schritt 606 ein Fehler angegeben. Falls NICHT R[i] gleich
$AAAA ist, wird die ALU-Prüfung
in Schritt 612 fortgesetzt. In Schritt 612 bestimmt
die ALU-Prüfung,
ob i gleich N ist. Falls i ungleich N ist, wird i in Schritt 614 um
1 inkrementiert und die ALU-Prüfung zu
Schritt 602 zurückgeschleift. Falls
i gleich N ist, wird die ALU-Prüfung abgeschlossen.
-
Nunmehr
anhand der 7A und 7B kann
auf der Grundlage der oben beschriebenen ALU-Prüfung eine Anfangswert-Schlüssel-Prüfung entwickelt
werden. Wie im Folgenden ausführlicher erläutert wird,
ist klar, dass ein zweiter Prozessor implementiert sein kann, um
die Anfangswerte (Seeds) zu erzeugen und den Schlüssel (Key)
zu überprüfen. Die 7A und 7B veranschaulichen
eine beispielhafte Anfangswert-Schlüssel basierte ALU-Prüfung, die
für Vergleichsoperationen
entwickelt wurde. Die beispielhaften Testwerte (z. B. $AAAA und $5555)
werden durch zwei Anfangswerte, SEED1 bzw. SEED2, ersetzt. Der Schlüssel ist
ein erwarteter Wert. Die ALU-Prüfung
führt Vergleichsoperationen zwischen
SEED1 und SEED2 aus und weist für
jede ausgeführte
Vergleichsoperation einzelnen Bits eines Ergebniswerts (RESULT)
einen Wert zu. Die beispielhafte ALU-Prüfung der 7A und 7B enthält acht
Vergleichsoperationen. Somit enthält RESULT für die beispielhafte ALU-Prüfung 8 Bits,
BA bis BH. Falls
jede der Vergleichsoperationen gültig
ist, sind BA bis BH jeweils
gleich 1, wobei RESULT gleich 1111 1111 ist. In diesem Fall ist
KEY ebenfalls gleich 1111 1111, wobei kein Fehler angegeben wird,
da RESULT gleich KEY ist. Falls irgendeine der Vergleichsoperationen
ungültig
ist, sind eines oder mehrere der Bits BA bis
BH gleich 0, wobei RESULT eine 0 enthält. Da RESULT
eine 0 enthält,
ist RESULT ungleich KEY, der alles 1-en enthält, wobei ein Fehler angegeben wird.
-
Besonders
anhand von 7A wird i in Schritt 700 gleich
1 gesetzt. In Schritt 702 wird SEED1 in R[i] gespeichert.
In Schritt 704 wird j gleich i+1 gesetzt. In Schritt 706 wird
SEED2 in R[j] gespeichert. In Schritt 708 bestimmt die
ALU-Prüfung
unter Verwendung einer vorzeichenlosen Operation, ob R[i] kleiner
als R[j] ist. Falls R[i] kleiner als R[j] ist, gilt die Vergleichsoperation
als gültig,
wobei BA in Schritt 710 gleich
1 gesetzt wird. Falls R[i] ungleich R[j] ist, gilt die Vergleichsoperation
als ungültig,
wobei BA in Schritt 712 gleich
0 gesetzt wird. In Schritt 714 bestimmt die ALU-Prüfung unter
Verwendung einer vorzeichenlosen Operation, ob R[i] kleiner oder
gleich R[j] ist. Falls R[i] kleiner oder gleich R[j] ist, gilt die Vergleichsoperation
als gültig,
wobei BA in Schritt 716 gleich
1 gesetzt wird. Falls R[i] nicht kleiner oder gleich R[j] ist, gilt
die Vergleichsoperation als ungültig,
wobei BA in Schritt 718 gleich
0 gesetzt wird.
-
In
Schritt 720 bestimmt die ALU-Prüfung unter Verwendung einer
vorzeichenbehafteten Operation, ob R[i] größer als R[j] ist. Falls R[i]
größer als
R[j] ist, gilt die Vergleichsoperation als gültig, wobei BC in Schritt 722 gleich
1 gesetzt wird. Falls R[i] nicht größer als R[j] ist, gilt die
Vergleichsoperation als ungültig,
wobei BC in Schritt 724 gleich
0 gesetzt wird. In Schritt 726 bestimmt die ALU-Prüfung unter
Verwendung einer vorzeichenbehafteten Operation, ob R[i] größer oder
gleich R[j] ist. Falls R[i] größer oder gleich
R[j] ist, gilt die Vergleichsoperation als gültig, wobei BD in
Schritt 728 gleich 1 gesetzt wird. Falls R[i] nicht größer oder
gleich R[j] ist, gilt die Vergleichsoperation als ungültig, wobei
BD in Schritt 730 gleich 0 gesetzt
wird.
-
In
Schritt 732 bestimmt die ALU-Prüfung, ob R[i] gleich R[j] ist.
Falls R[i] ungleich R[j] ist, gilt die Vergleichsoperation als ungültig, wobei
BE in Schritt 734 gleich 1 gesetzt
wird. Falls R[i] gleich R[j] ist, gilt die Vergleichsoperation als
gültig,
wobei BE in Schritt 736 gleich
0 gesetzt wird. In Schritt 738 bestimmt die ALU-Prüfung ob
R[i] ungleich R[j] ist. Falls R[i] ungleich R[j] ist, gilt die Vergleichsoperation
als gültig, wobei
BF in Schritt 740 gleich 1 gesetzt
wird. Falls R[i] gleich R[j] ist, gilt die Vergleichsoperation als
ungültig,
wobei BF in Schritt 742 auf 0 gesetzt
wird.
-
In
Schritt 744 wird SEED1 in R[j] gespeichert. In Schritt 746 bestimmt
die ALU-Prüfung
ob R[i] gleich R[j] ist. Falls R[i] gleich R[j] ist, gilt die Vergleichsoperation
als gültig,
wobei BG in Schritt 748 gleich
1 gesetzt wird. Falls R[i] ungleich R[j] ist, gilt die Vergleichsoperation
als ungültig,
wobei BG in Schritt 750 gleich
0 gesetzt wird. In Schritt 752 bestimmt die ALU-Prüfung, ob
R[i] ungleich R[j] ist. Falls R[i] gleich R[j] ist, gilt die Vergleichsoperation
als gültig,
wobei BH in Schritt 754 gleich
1 gesetzt wird. Falls R[i] ungleich R[j] ist, gilt die Vergleichsoperation
als ungültig,
wobei BH in Schritt 756 gleich
0 gesetzt wird. Von diesem Punkt an wird der Ablaufplan im Punkt
X in 7B fortgesetzt.
-
In
Schritt 758 bestimmt die ALU-Prüfung, ob RESULT gleich KEY
ist. Falls RESULT ungleich KEY ist, wird in Schritt 760 ein
Fehler angegeben, in Schritt 761 eine Abhilfsmaßnahme begonnen
und die ALU-Prüfung
abgeschlossen. Falls RESULT gleich KEY ist, bestimmt die ALU-Prüfung in
Schritt 762, ob j gleich N ist. Falls j gleich N ist, wird
die ALU-Prüfung in
Schritt 764 fortgesetzt. Falls j ungleich N ist, wird j in
Schritt 766 um 1 inkrementiert und die ALU-Prüfung im Punkt Y in 7A fortgesetzt,
wobei sie zu Schritt 706 zurückgeschleift wird. In Schritt 764 bestimmt
die ALU-Prüfung,
ob i gleich N-1 ist. Falls i gleich N-1 ist, wird die ALU-Prüfung abgeschlossen. Falls
i ungleich N-1 ist, wird i in Schritt 770 um 1 inkrementiert und
die ALU-Prüfung
im Punkt Z in 7A fortgesetzt, wobei sie zu
Schritt 702 zurückgeschleift
wird.
-
Zusammengefasst
betrifft die Erfindung ein Verfahren zum Überprüfen der Funktionsfähigkeit
einer Arithmetik-Logik-Einheit (ALU) eines Steuermoduls, das das
Eingeben eines ersten Testwerts in eines von mehreren Registern
der ALU und das Eingeben eines zweiten Testwerts in die verbleibenden
Register der mehreren Register enthält. Zwischen dem einen der
mehreren Register und jedem der verbleibenden Register wird eine
erste Menge von Operationen ausgeführt, um eine erste Menge von
Ergebnissen zu erzeugen. Wenn sich ein Ergebnis aus der ersten Menge
der Ergebnisse von einem ersten vorgegebenen Ergebnis unterscheidet,
wird ein Fehler angegeben.