-
Die
Erfindung liegt auf dem Gebiet der Fehlererkennung und Fehlerkorrektur
in digitalen Schaltungen.
-
Hintergrund der Erfindung
-
Aufgrund
des hohen Integrationsgrades elektronischer Schaltungen nimmt die
Häufigkeit
von Fehlern zu. Es ist bekannt, digitale Schaltungen etwa durch
Verdopplung und Vergleich, durch Verwendung von Kodes und allgemein
durch Fehlererkennungsschaltungen zu überwachen (vgl. Goessel et al. „Error
Detecting Circuits",
McGrawHill, 1994; Rao et al. „Error
Control Coding for Computer Systems", Prentice Hall, 1989).
-
Durch
eine Fehlererkennungsschaltung wird ein Fehler in der zu überwachenden
Schaltung erkannt. Treten nun relativ häufig Fehler in elektronischen
Schaltungen auf, dann ist es besonders nachteilig, dass die Fehler
durch die Fehlererkennungsschaltung nicht korrigiert werden können, so
dass die Schaltung aufgrund ihrer Fehler relativ oft nicht funktionsfähig ist.
-
Bekannt
ist es ebenfalls, fehlerkorrigierenden Schaltungen einzusetzen,
um die auftretenden Fehler zu korrigieren. So ist es etwa bekannt,
fehlerkorrigierenden Schaltung durch Systemverdreifachung und einen
oder mehrere nachfolgende Voter und aufgrund von Fehlerkorrigierenden
Kodes zu entwerfen (vgl. Lala, P. K., „Self-Checking and Fault-Tolerant
Digital Design",
Morgan Kaufman Publishers, San Francisco, 2001). Nachteilig ist
hier insbesondere, dass der erforderlich Hardwareaufwand hoch und
dass bei Verwendung eines fehlerkorrigierenden Kodes nur relativ
wenige Fehler korrigiert werden können.
-
Aufgrund
des hohen Integrationsgrades elektronischer Schaltungen nehmen die
Fehleranfälligkeit
und die Fehlerhäufigkeit
für nicht
permanente oder transiente Fehler zu. Diese Fehler können zu „weichen
Fehlern", die auch
Soft-Errors genannt werden, in den Speicherelementen führen.
-
Elektronische
digitale Schaltungen bestehen in der Regel aus einem kombinatorischen
Schaltungsteil und Speicherelementen, die als Latches oder als Flip-Flops
realisiert sein können.
-
Tritt
ein transienter Fehler in dem kombinatorischen Schaltungsteil auf,
dann müssen
gleichzeitig logische, elektrische und zeitliche Bedingungen erfüllt sein
(vgl. Liden et al. „On
Latching Probability of Particle Induced Transients in Combinational
Networks", Proc.
Int. Symp. On Fault-Tolerant Computing, S. 340–349, 1994), damit sich ein
solcher Fehler in einem Speicherelement als weicher Fehler oder Soft-Error
auswirken kann.
-
Häufiger tritt
ein weicher Fehler in einem Speicherelement direkt auf, wobei das
Speicherelement ein Latch oder ein Flip-Flop sein kann, indem ein
solcher Fehler zum Beispiel durch Strahlung hervorgerufen wird.
Die Entstehung von weichen Fehlern in Latches oder Flip-Flops ist bekannt
und zum Beispiel in Buchner et al. „Comparison of Error Rates in
Combinational and Sequential Logic", IEEE Trans. Nucl. Science. vol. 44,
S. 2209–2216,
1997 beschrieben. Hierbei ist bekannt, dass die Empfindlichkeit
eines Latches oder Flip-Flops bezüglich der Entstehung eines
weichen Fehlers vom Wert des Clock-Signals clock abhängt. Ist
zum Beispiel clock = 1, dann betimmt der Dateneingang des Latches
oder Flip-Flops den Zustandes Speicherelementes und das Speicherelement
ist immun gegenüber
weichen Fehlern. Ist clock = 0, so ist der Zustand des Speicherelementes
vom Dateneingang entkoppelt, und der Zustand des Latches oder Flip-Flops
ist empfindlich für
weiche Fehler. Tritt also ein weicher Fehler in einem Speicherelement
auf, der in dem Speicherelement zum Beispiel durch Strahlung erzeugt
wurde, so ist der Zustand des Speicherelementes für den Wert clock
= 1 des Clock-Signals korrekt und für den Wert clock = 0 des Clocksignals
fehlerhaft.
-
In
einem Taktzyklus ändert
sich das Clock-Signal von 1 auf 0. Damit ist der Zustand für einen weichen
Fehler, der in dem Speicherelement hervorgerufen wurde, in der ersten
Takthälfte
korrekt und in der zweiten Takthälfte
fehlerhaft. Liegt hingegen ein transienter Fehler in dem kombinatorischen
Schaltungsteil vor und sind die logische, die elektrische und die
zeitliche Bedingung erfüllt,
so wird der fehlerhafte Dateneingang am Eingang eines Speicherelementes
von dem Speicherelement übernommen
und der Zustand des Speicherelementes ist den ganzen Takt fehlerhaft.
-
Es
sind C-Elemente in verschiedenen Ausführungsformen und Implementierungen
bekannt (vgl. Muller et al., „A
Theory of Asynchronous Circuits",
Proc. Int. Symp. an the Theory of Switching, S. 2004–43, Hartward
Univ. Press, 1959; Shams et al. „Optimizing CMOS Implementations
of the C-element",
Proc. ICCD 97, S. 700–705,
1997; „Modeling and
Compari son CMOS Implementations of the C-Element, Trans. VLSI-Systems,
vol 6, S. 563–567, 1998).
Zur Verbesserung der elektrischen Eigenschaften von C-Elementen,
etwa zur Vermeidung von Ruheströmen,
kann der Entwurf, insbesondere der Ausgang des C-Elementes in unterschiedlicher
Weise realisiert werden. Da der Entwurf verschiedener C-Elemente
als solches dem Fachmann bekannt ist, muß darauf hier nicht detaillierter
eingegangen werden.
-
Das
C-Element hat üblicherweise
zwei Eingänge
und einen Ausgang. Es gibt dabei in dem Fall, dass beide Eingangswerte
gleich sind, seinen Eingangswert aus. Sind seine beiden Eingangswerte
ungleich, so gibt es den vorherigen Wert aus. Ein C-Element mit
mehreren Eingängen
wurde zur Fehlererkennung verwendet (vgl. Kundu et al. „Self-Checking Komparator
with One Periodic Eingang, IEEE Trans. Comp. vol. 45, S. 379–380, 1996).
Das C-Element kann daher zur Korrektur von weichen Fehlern, die
in den Speicherelementen erzeugt worden sind, verwendet werden,
wenn die Speicherelemente verdoppelt sind. Die Eingänge eines
C-Elementes mit
zwei Eingängen
werden hierbei an die beiden Ausgänge von verdoppelten Speicherelementen
angeschlossen. Sind die Ausgänge
der verdoppelten Speicherelemente gleich, so wird am Ausgang des
C-Elementes an seinem Ausgang der gleiche Ausgabewert ausgegeben.
Unterscheiden sich die beiden Ausgaben der beiden Speicherelemente,
so gibt das C-Element den vorhergehenden Wert aus.
-
Wird
nun ein weicher Fehler in einem der beiden Speicherelemente etwa
durch Strahlung hervorgerufen, dann ändert sich der Zustand des
einen Speicherelementes nur für
den Wert clock = 0 des Clocksignals. Dann stimmen die Ausgaben der
beiden Speicherelemente für
den Wert clock = 1 des Clock-Signales überein, während sie für den Wert clock = 0 des Clocksignals
unterschiedlich sind. Am Ausgang des C-Elementes wird der Wert,
der zu dem Zeitpunkt am Eingang der Speicherelemente anliegt, für den das
Clocksignal 1 ist, ausgegeben und der vorliegende weiche Fehler,
der in einem der Speicherelemente zum Beispiel durch Strahlung hervorgerufen
wurde, korrigiert.
-
In
Mitra et al. („Logic
Soft-Errors a Major Barrier to Robust Platform Design", Proc. ITC 2005,
paper 28.5) werden Schaltungen, die spezielle Redundanz für den funktionellen
Test, für
den Scan-Test und das Debuggen aufweisen und in verschiedenen Modi
betrieben werden, betrachtet. Es werden spezielle Speicherelemente,
sogenannte Scan-out Flip-Flops zum Aufbau der Schaltungen verwendet. Für derartige
Schaltungen wird das Erkennen von weichen Fehlern, die ausschließlich in
Latches dieser speziellen Speicherelemente hervorgerufen wurden und
die Korrektur von weichen Fehlern, die ebenfalls in Latches dieser
speziellen Speicherelementen hervorgerufen wurden, durch die XOR-Verknüpfung der Ausgänge von
zwei Latches dieser Speicherelemente und durch das Hinzufügen eines
C-Elementes beschrieben.
-
Es
ergibt sich, dass die Speicherelemente, die als „Scan-out flip-flog" Elemente bezeichnet
werden, relativ aufwendig sind. Sie werden in verschiedenen Modi
betrieben, die über
Steuerleitungen und spezielle Steuersignale ausgewählt werden,
was aufwendig ist. Zur Fehlererkennung erlaubt die von Mitra et
al. vorgeschlagene Lösung
nur den Vergleich oder die XOR-Verknüpfung der Ausgänge von
verdoppelten Latches der Speicherelemente, wobei über eine Steuerleitung
durch ein Steuersignal ein bestimmter Mode ausgewählt werden
muß. Es
ergibt sich weiterhin, dass nur die Fehler, die direkt in einem
Latch eines Speicherelementes, das ein „Scan-out Flip-Flop" ist, entstanden
sind, durch Vergleich oder XOR-Verknüpfung der
Ausgänge
von verdoppelten Latches dieser Speicherelemente auf die beschriebene
Weise erkannt werden können.
Nachteilig ist, dass Fehler in den kombinatorischen Schaltungsteilen
der Schaltung nicht erkannt werden, da Fehler in der kombinatorischen
Schaltung stets zu identischen Werten in den verdoppelten Latches
der Speicherelemente führen.
Ebenso können
Fehler in den korrigierten und von der Schaltung weiterverarbeiteten oder
ausgegebenen Werten und in den verwendeten C-Elementen nicht erkannt
werden, so dass die Richtigkeit der korrigierten Werte nicht überprüft werden kann,
was ebenfalls nachteilig ist.
-
Aus
dem Dokument
US
2006/0067531 A1 ist ein Verfahren zur Optimierung der Übertragung
von Datenpaketen über
einen Übertragungskanal
bekannt. Insbesondere beschäftigt
sich das Dokument mit der effizienten Übertragung der Kopfinformation („header") von Datenpaketen.
Es wird ein Verfahren vorgeschlagen, bei dem zwischen einer Sendeeinrichtung
und einer Empfangseinrichtung ein Datenpaket mittels eines aus mehreren
Verschlüsselungskodes
ausgewählten
Kodes verschlüsselt
wird.
-
Zusammenfassung der Erfindung
-
Aufgabe
der Erfindung ist es, eine möglichst einfache
Schaltungsanordnung mit einer funktionalen Schaltung, die mindestens
einen kombinatorischen Schaltungsteil umfasst, sowie mit Fehlerkorrektur
und Fehlererkennung zu schaffen, bei der weiche Fehler in Registern
korri giert und auch Fehler im laufenden Betrieb in dem mindestens
einen kombinatorischen Schaltungsteil, den Registern und korrigierten
Ausgabewerten möglichst
gut erkannt werden können.
-
Diese
Aufgabe wird erfindungsgemäß durch eine
Schaltungsanordnung nach dem unabhängigen Anspruch 1 gelöst. Vorteilhafte
Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Unteransprüchen.
-
Die
vorgeschlagene Schaltungsanordnung ermöglicht es, auf spezielle steuerbare
Speicherelemente mit verschiedenen Funktionsbetriebsarten zu verzichten.
Insbesondere ist es auch nicht notwendig, dass eine spezielle Scan-Betriebsart
oder eine Betriebsart für
das Debuggen vorhanden ist. Der Aufwand für Fehlererkennung ist an die
erforderliche Sicherheit der Fehlererkennung anpassbar, etwa durch Verwendung
verschiedener fehlererkennender Kodes.
-
Dadurch,
dass die Schaltungsanordnung eine Fehlererkennungsschaltung für kombinatorische
Schaltungsteile und Register enthält, können auch transiente Fehler
und permanente Fehler in kombinatorischen Schaltungsteilen, Registern
und dem Korrektor erkannt werden, die durch C-Elemente nicht korrigierbar
sind. In vorteilhafter Weise sind auch die korrigierten Ausgänge des
Korrektors in die Fehlererkennungsschaltung integriert, so dass
fehlerhaft korrigierte Werte, etwa durch Fehler in einem C-Element,
als fehlerhaft erkannt werden können.
-
Dadurch,
dass verschiedenen Kodes für
die Realisierung der Fehlererkennungsschaltung verwendet werden
können,
kann der Aufwand für
die Fehlererkennung in vorteilhafter Weises an die erforderliche
Sicherheit für
die Fehlererkennung angepasst werden.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass der Korrektor
unter Verwendung wenigstens eines C-Elementes gebildet ist.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass die Fehlererkennungsschaltung
konfiguriert ist, um im laufenden Betrieb mindestens eine Komponente
des k-dimensionalen korrigierten Datenausganges (y[k](korr)) in die
Fehlererkennung einzubeziehen.
-
Eine
vorteilhafte Ausführungsform
der Erfindung sieht vor, dass für
i = 1, .., k ein i-ter Datenausgang eines der mindestens zwei Register
an einen (2i – 1)-ten
Dateneingang des Korrektors und ein i-ter Datenausgang eines anderen
der mindestens zwei Register an einen 2i-ten Dateneingang des Korrektors
geführt
sind.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass der Korrektor
unter Verwendung einer Parallelschaltung von k C-Elementen (C1 21,
..., Ck 2k) gebildet ist.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass bei der Parallelschaltung
der k C-Elemente (C1 21, ..., Ck 2k) ein 1-ter
und ein 2-ter Dateneingang, ..., ein (2k – 1)-ter und ein (2k)-ter Dateneingang
des Korrektors mit den jeweils beiden Dateneingängen der k C-Elemente (C1 21,
..., Ck 2k) verbunden sind und ein Datenausgang eines j-ten C-Elementes
(Cj 2j; j = 1, ..., k) ein j-ter Datenausgang des Korrektors ist.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass die Fehlererkennungsschaltung
im laufenden Betrieb ein Fehlersignal bildend ausgeführt ist,
welches von einer oder mehreren der folgenden auswertbaren Informationen abhängt: der
m-dimensionale binäre Dateneingang (x1,
..., xm), Datenwerte auf internen Schaltungslinien der funktionalen
Schaltung, Dateninhalt der mindestens zwei Register und der k-dimensionale
korrigierte Datenausgang (y(korr)).
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein dass für den Fall k = n die folgenden
Merkmale ausgebildet sind: die funktionelle Schaltung ist eine kombina torische
Schaltung mit einem m Bit breiten Dateneingang und einem n Bit breiten
Datenausgang zur Realisierung des n-dimensionalen Datenausganges
(y = y1, ..., yn), und ein Verdopplerschaltungsteil ist vorgesehen,
um aus dem n-dimensionalen Datenausgang (y) zwei jeweils n Bit breite
verdoppelte Datenausgänge
(y, y') zu erzeugen,
wobei ein erster verdoppelter Datenausgang (y) des Verdopplerschaltungsteils
auf einen n dimensionalen Dateneingang eines ersten Registers und
ein zweiter verdoppelter Datenausgang (y') des Verdopplerschaltungsteils auf
einen n Bit breiten Dateneingang eines zweiten Registers geführt sind und
wobei ein n Bit breiter Datenausgang des ersten Registers und ein
n Bit breiter Datenausgang des zweiten Registers stellenrichtig
in einen 2n Bit breiten Dateneingang des Korrektors geführt sind,
der einen n-dimensionalen korrigierten Datenausgang (y(korr)) liefert.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass die Fehlererkennungsschaltung
einen Prädiktor,
ein L Bit breites weiteres Register, einen Komparator und einen
Generator aufweist, wobei L die Anzahl von Kontrollstellen eines
verwendeten Kodes ist, und dass mindestens eine Schaltungskonfiguration
aus der folgenden Gruppe von Schaltungskonfigurationselemente realisiert
ist: der m-dimensionale binäre
Dateneingang (x1, ..., xm) ist an einen Dateneingang des Prädiktors
geführt,
ein L Bit breiter Datenausgang des Prädiktors ist an einen L Bit
breiten Dateneingang des weiteren Registers angeschlossen, ein L
Bit breiter Datenausgang des weiteren Registers ist an einen ersten
L Bit breiten Dateneingang des Komparators geführt, ein Datenausgang des Generators
ist an einen zweiten L Bit breiten Dateneingang des Komparators
geführt,
und ein Dateneingang des Generators ist mit dem n-dimensionalen korrigierten
Datenausgang (y(korr)) des Korrektors verbunden.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass mindestens
eine Schaltungskonfiguration aus der folgenden Gruppe von Schaltungskonfigurationselemente
realisiert ist: der Prädiktor
ist konfiguriert, um L Kontrollbits (c1(x), ..., cL(x)) eines fehlererkennenden
Kodes mit m Informationsbits und L Kontrollbits aus dem m-dimensionalen
binären
Dateneingang (x1, ..., xm) zu bestimmen, der Generator ist konfiguriert,
um aus dem vom Korrektor ausgegebenen, k-dimensionalen korrigierten
Datenausgang (y(korr)) L weitere Kontrollbits (c(y1(korr)), ..., c(yL(korr)))
des fehlererkennenden Kodes zu bilden, und der Komparator ist konfiguriert,
um die L Kontrollbits (c1(x), ..., cL(x)) mit den L weiteren Kontrollbits (c(y1(korr)),
..., c(yL(korr))) zu vergleichen und einen Fehler anzuzeigen, wenn
die L Kontrollbits (c1(x), ..., cL(x)) und die L weiteren Kontrollbits
(c(y1(korr)), ..., c(yL(korr))) nicht bitweise übereinstimmen.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass für L = 1 der Prädiktor konfiguriert
ist, um ein als Paritätsbit
ausgebildetes Kontrollbit zu erzeugen, und der Generator ein XOR-Baum
mit n binären
Dateneingängen
ist, an denen der k-dimensionale korrigierte Datenausgang (y(korr))
anliegt.
-
Eine
vorteilhafte Ausführungsform
der Erfindung sieht vor, dass der Komparator aus einer Ausgangsleitung
des weiteren Registers, bei dem ein Dateneingang mit einem Datenausgang
des Prädiktors verbunden
ist, und aus einer Ausgangsleitung des XOR-Baumes gebildet ist.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass die den Komparator
realisierenden Ausgangsleitungen, nämlich die Ausgangsleitung des
weiteren Registers und die Ausgangsleitung des XOR-Baumes, mittels
eines XOR-Gatters oder eines XNOR-Gatters zu einem Datenausgang
verknüpft sind,
der ein binäres
Fehlersignal trägt.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass die funktionale
Schaltung aus einer ersten kombinatorischen Schaltung und aus einer zweiten
kombinatorischen Schaltung gebildet ist, die funktional gleich zur
ersten kombinatorischen Schaltung ist.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass die funktionale Schaltung
aus zwei verdoppelten funktional gleichen Schaltungen gebildet ist,
wobei: eine erste Schaltung zwei kombinatorische Schaltungsteile
und ein Register zum Speichern eines internen Zustandes (z) umfaßt, eine
zweite Schaltung zwei weitere kombinatorische Schaltungsteile und
ein weiteres Register zum Speichern eines weiteren internen Zustandes
(z') umfaßt, eines
der zwei kombinatorischen Schaltungsteile funktional gleich einem
der weiteren zwei Schaltungsteile ist und ein anderes der zwei kombinatorischen
Schaltungsteile funktional gleich einem anderen der weiteren zwei
Schaltungsteile ist.
-
Eine
vorteilhafte Ausführungsform
der Erfindung sieht vor, dass mindestens eine Schaltungskonfiguration
aus der folgenden Gruppe von Schaltungskonfigurationselemente realisiert
ist: Leitungen, die den m-dimensionalen binären Dateneingang (x, x' mit x = x') tragen, sind an
einen jeweiligen primären
Dateneingang der zwei kombinatorischen Schaltungsteile und der zwei
weiteren kombinatorischen Schaltungsteile geführt; ein L Bit breiter Datenausgang
des anderen der zwei kombinatorischen Schaltungsteile, welcher einen
Wert des internen Zustandes (z) trägt, ist an einen L Bit breiten
Dateneingang des Registers zum Speichern des internen Zustandes
(z) der ersten der verdoppelten Schaltungen geführt, während ein L Bit breiter Datenausgang
des anderen der zwei kombinatorischen Schaltungsteile, welcher einen
Wert des weiteren internen Zustandes (z') der zweiten der verdoppelten Schaltungen
trägt,
an einen L Bit breiten Dateneingang des weiteren Registers zum Speichern
des weiteren internen Zustandes (z') geführt ist; ein k Bit breiter
Datenausgang des einen der zwei kombinatorischen Schaltungsteile
ist an einen k Bit breiten Dateneingang des einen der mindestens
zwei Register geführt,
wobei ein k Bit breiter Datenausgang des einen der mindestens zwei
Register stellenrichtig mit k Dateneingängen eines ersten Korrektors mit
2k Dateneingängen
und k Datenausgängen
verbunden ist, während
ein k Bit breiter Datenausgang des anderen der zwei kombinatorischen
Schaltungsteile an den k Bit breiten Dateneingang des anderen der
mindestens zwei Register geführt
ist, wobei ein k Bit breiter Datenausgang des anderen der mindestens
zwei Register stellenrichtig mit restlichen k Dateneingängen des
ersten Korrektors verbunden ist, an dessen k Bit breitem Datenausgang
der k-dimensionale korrigierte Datenausgang (y1(korr), ..., yk(korr))
ausgegeben wird; und ein L Bit breiter Datenausgang des Registers
zum Speichern des internen Zustandes (z) ist stellenrichtig an L
Dateneingänge
eines zweiten Korrektors mit 2L Dateneingängen und L Datenausgängen geführt, während ein
L Bit breiter Datenausgang des weiteren Registers zum Speichern
des weiteren internen Zustandes (z') stellenrichtig mit restlichen L Dateneingängen des
zweiten Korrektors verbunden ist, wobei ein L Bit breiter Datenausgang
des zweiten Korrektors, welcher ein korrigiertes Signal (z(korr))
trägt,
gleichzeitig mit jeweils zweiten Dateneingängen der zwei kombinatorischen
Schaltungsteile und der zwei weiteren kombinatorischen Schaltungsteile
verbunden ist.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass die Fehlererkennungsschaltung
konfiguriert ist, um mindestens einen Datenausgang des Registers,
welches den Wert des internen Zustandes (z) führt, und mindestens einen Datenausgang
des weiteren Registers, welches den Wert des weiteren internen Zustandes
(z') führt, in
die Fehlererkennung einzubeziehen.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass die Fehlererkennungsschaltung
konfiguriert ist, um mindestens einen Datenausgang des zweiten Korrektors
in die Fehlererkennung einzubeziehen.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass weiterhin die folgenden
Schaltungskonfigurationselemente realisiert sind: ein Datenausgang
eines der mindestens zwei Register ist gleichzeitig mit einem ersten
Dateneingang eines ersten Komparators und mit einem ersten Dateneingang
eines dritten Komparators verbunden, ein Datenausgang eines der
mindestens zwei Register ist gleichzeitig mit einem zweiten Dateneingang
des ersten Komparators und mit einem ersten Dateneingang eines zweiten
Komparators verbunden, ein Datenausgang des Korrektors, welcher
einen korrigierten Ausgabewert y(korr) trägt, ist gleichzeitig mit einem
zweiten Dateneingang des zweiten Komparators und mit einem zweiten
Dateneingang des dritten Komparators verbunden, und der erste, der
zweite und der dritte Komparator sind konfiguriert, um an einem
jeweiligen Datenausgang ein Fehlersignal auszugeben, wenn Dateneingaben nicht übereinstimmen.
-
Eine
vorteilhafte Ausführungsform
der Erfindung sieht vor, dass ein jeweiliger Datenausgang des ersten
Komparators, des zweiten Komparators und des dritten Komparators
mit Dateneingängen
einer Auswertelogik verbunden ist, wobei die Auswertelogik konfiguriert
ist, um ein fehlerhaftes Schaltungselement zu bestimmen.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass weiterhin die
folgenden Schaltungskonfigurationselemente realisiert sind: ein
Datenausgang des anderen der mindestens zwei Register ist mit Dateneingängen eines
ersten Generators zum Erzeugen von Kontrollbits eines fehlererkennenden Kodes
verbunden, wobei der erste Generator konfiguriert ist, um an einem
Datenausgang Kontrollbits von Eingangswerten des ersten Generators
auszugeben, ein Datenausgang des einen der mindestens zwei Register
ist mit Dateneingängen
eines zweiten Generators zum Erzeugen von Kontrollbits des fehlererkennenden
Kodes verbunden, wobei der zweite Generator konfiguriert ist, um
an einem Datenausgang Kontrollbits von Eingangswerten des zweiten Generators
auszugeben, und ein Datenausgang des Korrektors, welcher einen korrigierten
Ausgabewert y(korr) trägt,
ist mit einem Dateneingang eines dritten Generators zum Erzeugen
von Kontrollbits des fehlererkennenden Kodes verbunden ist, wobei
der dritte Generator konfiguriert ist, um an einem Datenausgang
Kontrollbits von Eingangswerten des dritten Generators auszugeben.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass der fehlererkennende
Kode ein Paritätskode
ist und dass der erste Generator, der zweite Generator und der dritte
Generator zum Erzeugen von Kontrollbits als ein XOR-Baum zum Erzeugen von
Paritätsbits
des Paritätskodes
ausgeführt
sind.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass weiterhin die folgenden
Schaltungskonfigurationselemente realisiert sind: ein Datenausgang
eines ersten XOR-Baumes ist gleichzeitig an einen ersten Dateneingang
eines ODER-Gatters und invertiert an einen ersten Dateneingang eines
weiteren ODER-Gatters geführt, ein
Datenausgang eines zweiten XOR-Baumes ist an einen zweiten Dateneingang
des ODER-Gatters und invertiert an einen zweiten Dateneingang des
weiteren ODER-Gatters geführt,
ein Datenausgang eines dritten XOR-Baumes ist an einen dritten Dateneingang
des ODER-Gatters und invertiert an einen dritten Dateneingang des
weiteren ODER-Gatters geführt,
und ein Datenausgang des ODER-Gatters ist an einen ersten Dateneingang
eines AND-Gatters und ein Datenausgang des weiteren ODER-Gatters an
einen zweiten Dateneingang des AND-Gatters geführt, wobei ein Datenausgang
des AND-Gatters ein Fehlersignal trägt.
-
Eine
vorteilhafte Ausführungsform
der Erfindung sieht vor, dass Datenausgänge des ersten Generators,
des zweiten Generators und des dritten Generators mit Dateneingängen einer
Auswertelogik verbunden sind, wobei die Auswertelogik konfiguriert ist,
um ein fehlerhaftes Schaltungselement zu bestimmen.
-
Eine
bevorzugte Fortbildung der Erfindung sieht vor, dass wenigstens
einer der Ausgänge
des Registers zum Speichern des internen Zustandes (z), des weiteren
Registers zum Speichern des weiteren internen Zustandes (z') oder des zweiten
Korrektors in die Fehlererkennung einbezogen ist, indem wenigstens
ein Ausgang des weiteren Registers mit einem weiteren Eingang des
Prädiktors,
wenigstens ein Ausgang des Registers mit einem weiteren Eingang
des Prädiktors
oder wenigstens ein Ausgang des zweiten Korrektors mit einem weiteren
Eingang des Prädiktors
verbunden ist.
-
Eine
bevorzugte Weiterbildung der Erfindung sieht vor, dass die funktionale
Schaltung mehrere kombinatorische Schaltungsteile umfaßt und konfiguriert
ist, um eine Pipelineverarbeitung des m-dimensionalen binären Dateneingangs
(x1, ..., xm) in den n-dimensionalen Da tenausgang (y1, ..., yn)
zu realisieren, wobei Ausgänge
mindestens eines der mehreren kombinatorischen Schaltungsteile in
verdoppelte Register geführt
sind und an die Datenausgänge
der verdoppelten Register der mindestens eine Korrektor gekoppelt
ist.
-
Bei
einer zweckmäßigen Ausgestaltung
der Erfindung kann vorgesehen sein, dass die Fehlererkennungsschaltung
als eine gemeinsame Fehlererkennungsschaltung für mindestens zwei Pipelinestufen
gebildet ist.
-
Vorteilhafterweise
können
auch Ausgänge der
verdoppelten Register in die Fehlererkennungsschaltung integriert
sein, so dass permanente Fehler in den Registern sofort erkannt
werden können.
In speziellen Ausgestaltung sind auch weitere zusätzlich Ausgangssignale
der getakteten digitalen Schaltung vorhanden, die es neben der Anzeige
eines Fehlers im Fehlerfall erlauben, fehlerhafte Schaltungsteile
unmittelbar zu identifizieren. In speziellen Ausgestaltungen ist
es vorgesehen, dass die Hardware der verschiedenen funktionell beschriebenen Schaltungsteile
wenigstens teilweise gemeinsam genutzt wird.
-
Ist
eine Pipeline-Struktur für
die Verarbeitung der Eingabewerte in die Ausgabewerte vorgesehen, dann
kann die Fehlerkorrektur, ebenfalls aus Aufwandsgründen nur
für eine
Teilmenge der Pipeline-Register realisiert sein.
-
Beschreibung von bevorzugten Ausführungsbeispielen
der Erfindung.
-
Die
Erfindung wird im folgenden anhand von bevorzugten Ausführungsbeispielen
unter Bezugnahme auf Figuren einer Zeichnung näher erläutert. Hierbei zeigen:
-
1 eine
Schaltungsanordnung zur Korrektur und Fehlererkennung einer funktionalen Schaltung;
-
2 einen
Korrektor aus C-Elementen mit 2k Eingängen und k Ausgänge;
-
3 eine
Implementierung eines C-Elementes aus Transistoren in CMOS;
-
4 die
Wertetabelle eines C-Elementes;
-
5 eine
Schaltungsanordnung zur Korrektur und Fehlererkennung für eine kombinatorische Schaltung
unter Verwendung eines separierbaren fehlererkennenden Kodes;
-
6 eine
Fehlererkennungsschaltung unter Verwendung eines Paritätskodes;
-
7 eine
Schaltungsanordnung für
eine spezielle kombinatorische Schaltung;
-
8 eine
Schaltungsanordnung für
eine spezielle, kombinatorische Schaltung, in der Teile der funktionellen
Schaltung und der Fehlererkennungsschaltung gemeinsam verwendet
werden;
-
9 eine
Schaltungsanordnung zur Korrektur und Fehlererkennung für eine verdoppelte kombinatorische
Schaltung;
-
10a eine Schaltungsanordnung zur Korrektur und
Fehlererkennung für
eine verdoppelte sequentielle Schaltung unter Verwendung eines Paritätskodes;
-
10b eine Modifikation der Schaltungsanordnung
in 10a;
-
11 die
Wertetafel für
eine Auswertelogik für
die Paritätssignale
der Schaltungsanordnung aus 10a;
und
-
12 eine
Schaltungsanordnung zur Korrektur und Fehlererkennung für eine Datenverarbeitung
in einer Pipeline.
-
1 zeigt
eine Schaltungsanordnung zur Korrektur und zur Fehlererkennung einer
funktionalen Schaltung.
-
Die
Schaltungsanordnung besteht aus der funktionalen Schaltung S 11,
an deren Eingang der m-dimensionale Eingabewert x anliegt und die
an ihren ersten n Datenausgängen
den n-dimensionalen Ausgabewert
y = y[k], y[n – k]
and an ihren weiteren k Datenausgängen den n-dimensionalen Ausgabewert y[k]' ausgibt, wobei der
Ausgabewert y[k]' entweder
gleich y[k] oder bitweise invertiert gleich y[k] ist. Hierbei bezeichnen
y[k], y[k]' jeweils
einen k Bit breiten Ausgabewert und y[n – k] einen n – k Bit
breiten Ausgabewert. y[k] und y[n – k] bilden zusammen einen
n-dimensionalen Ausgabewert. Die funktionelle Schaltung kann zusätzliche
Schaltungsausgänge 16 aufweisen,
die zur Fehlererkennung dienen.
-
Die
ersten k Datenausgänge
des ersten Datenausganges der Schaltung S 11, die den Ausgabewert
y[k] tragen, sind in die k Eingänge
eines ersten Registers R1 12 mit k Eingängen und k Ausgängen geführt, während die
folgenden n – k
Datenausgänge y[n – k] des
ersten Datenausganges direkt mit n – k Komponenten des Schaltungsausganges
verbunden sind. Die zweiten k Datenausgänge, die den Ausgabewert y[k]' tragen sind in die
k Eingänge
eines zweiten Registers R2 13 mit k Eingängen und
k Ausgängen
geführt.
-
Für i = 1,
..., k ist der jeweils i-te Ausgang des Registers R1 12 mit
dem (2i – 1)-ten
Eingang eines Korrektors K 14 mit 2k Eingängen und
k Ausgängen verbunden,
während
der i-ten Ausgang des Registers R2 mit dem 2i-ten Eingang des Korrektors
K 14 verbunden ist. Der Korrektor K gibt an seinen k Ausgängen den
korrigierten Wert y[k](korr) aus.
-
Die
Ausgänge
der Register R1 12, R2 13, des Korrektors K 14,
ein zusätzlicher
Ausgang 16 der funktionellen Schaltung S 11 und
die Eingabewerte x tragenden Eingänge der Schaltung S 11 sind
in die entsprechenden Eingänge
einer Fehlererkennungsschaltung F 15 geführt, die
an ihrem Ausgang ein Fehlersignal „Fehlersignal" ausgibt.
-
Der
Ausgang des Korrektors 14, der das korrigierte Signal y[k](korr)
trägt,
ist ausdrücklich
in die Fehlererkennung einbezogen, so dass in der Fehlererkennungsschaltung
F 15 Fehler in fehlerhaft korrigierten Werten, in der funktionellen
Schaltung, in den Registern und in dem Korrektor erkannt werden
können.
-
Für k = n
wird y[k] = y[n] gleich y und ebenso y[k]' = y[n]' gleich y' bezeichnet, und für k = n wird y[k](korr) = y[n](korr)
mit y(korr) bezeichnet.
-
2 zeigt
den Aufbau des Korrektors K 14 mit 2k Eingängen und
k Ausgängen
als eine Parallelschaltung aus k C-Elementen C1 21, c2 22,
..., Ck 2k mit jeweils zwei Eingängen und einem Ausgang. Die an
dem 2k Eingängen
des Korrektors K anliegenden Eingabewerte sind y1, y1', y2, y2', ..., yk, yk'. Die an den k Ausgängen des
Korrektors ausgegebenen Werte sind y(korr)1, y(korr)2, ..., y(korr)k.
C-Elemente sind als solche in verschiedenen Ausführungen bekannt (vgl. beispielsweise
in Shams et al., „Optimizing
CMOS Implementations of the C-element", Proc. ICCD 97,
1997; in Shams et al., „Modelling
and Comparison CMOS Implementations of the C-Element", Trans. VLSI-Systems,
vol 6, S. 563–567,
1998).
-
3 zeigt
zur weiteren Erläuterung
der Funktionsweise eine spezielle CMOS-Implementierung eines CMOS-Elementes,
wie sie zum Beispiel in Kundu et al. „Self-Checking Komparator
with One Periodic Input",
IEEE Trans. Comp. vol. 45, pp 379–380, 1996, verwendet worden
ist.
-
Das
C-Element in 3 ist aus den p-Transistoren 31, 32, 35 und
den n-Transistoren 33, 34, 36 aufgebaut.
Der den Wert yi tragende Eingang des C-Elementes ist mit dem p-Transistor 31 und
mit dem n-Transistor 33 verbunden, während der den Wert yi' tragende Eingang
mit dem p-Transistor 32 und dem n-Transistor 34 verbunden
ist. Liegen nun die Werte yi = yi' = 0 an den Eingängen des C-Elementes an, dann
sind die Transistoren 31 und 32 leitend und die Transistoren 33, 34 gesperrt,
so dass die mit z markierte Leitung mit der Spannung VDD verbunden
ist und den Wert 1 (high) führt.
Der Transistor 36 ist dann leitend und der Transistor 35 ist
gesperrt, so dass der mit y(korr)i markierte Ausgang den Wert 0 (low)
trägt,
der mit dem Wert von yi = yi' =
0 übereinstimmt.
In gleicher Weise erkennt man, dass bei Eingabe von yi = yi' = 1 am Ausgang des
C-Elementes der Wert y(korr)i = 1 ausgegeben wird.
-
Es
wird nun der Fall betrachtet, dass yi = 1 und yi' = 0 gilt. Dann sind die Transistoren 31 und 34 gesperrt,
während
die Transistoren 32 und 33 leitend sind. Damit
ist die den Wert z tragende Leitung weder mit VDD noch mit GND verbunden,
und sie behält
ihren vorhergehenden Wert bei, so dass auch der vorhergehende Wert
von y(korr)i am Ausgang des C-Elementes
ausgegeben wird. Ein analoges Verhalten tritt für yi = 0 und yi' = 1 auf.
-
4 zeigt
die Wertetabelle für
die Ausgabe y(korr)i eines C-Elementes für die verschiedenen Eingaben
yi, yi' und die
entsprechenden vorhergehenden Werte yvi.
-
So
kann der ersten Zeile der Tabelle in 4 entnommen
werden, dass der Wert y(korr)i = 0 ausgegeben wird, wenn yi = 0
und yi' = 0 eingegeben werden
und der vorhergehende Wert yvi = 0 war. Der dritten Zeile entnimmt
man, dass die Ausgabe y(korr)i = 0 ist, wenn yi = 1, yi' = 0 eingegeben wurde,
wenn der vorhergehende Wert yvi = 0 war.
-
Modifikationen
von C-Elementen sind als solche bekannt (vgl. zum Beispiel Shams
et al., „Optimizing
CMOS Implementations of the C-element", Proc. ICCD 97, 1997; in Shams et al., „Modelling
and Comparison CMOS Implementations of the C-Element", Trans. VLSI-Systems, vol 6, S.
563–567, 1998).
-
5 zeigt
eine Schaltungsanordnung zur Fehlerkorrektur und zur Fehlererkennung
unter Verwendung eines systematischen fehlererkennenden Kodes.
-
Die
Schaltung S 51 besteht hier aus einer kombinatorischen
Schaltung f 56 mit n-dimensionalem
Ausgang u, der in die beiden n-dimensionalen Ausgänge y und
y' verdoppelt ist.
Der erste verdoppelte n-dimensionale Ausgang y ist in ein erstes
Register R1 52 mit n Eingängen und n Ausgängen geführt, während der
zweite verdoppelte n-dimensionale Ausgang y' ist in ein zweites Register R2 53 mit
n Eingängen
und n Ausgängen
geführt
ist.
-
Für i = 1,
..., n ist der jeweils i-te Ausgang des Registers R1 52 mit
dem (2i – 1)-ten
Eingang eines Korrektors K 54 mit 2n Eingängen und
n Ausgängen verbunden,
während
der i-ten Ausgange des Registers R2 53 mit dem 2i-ten Eingang
des Korrektors K 54 verbunden ist. Der Korrektor K 54 gibt
an seinen n Ausgängen
den n-dimensional korrigierten Wert y(korr) aus.
-
Die
Fehlererkennungsschaltung F 55 besteht aus einem Prädiktor 57,
einem Register 58, einem Generator 59 und einem
Komparator 510. Zur Fehlererkennung wird in 5 ein
separierbarer Kode mit n Informationsbits und L Kontrollbits verwendet.
-
Zur
Beschreibung der Funktionsweise der Schaltung wird davon ausgegangen,
dass die kombinatorische Schaltung f 56 in Abhängigkeit
von ihren Eingabewerten x = x1, ..., xm an ihren n Ausgängen die
Werte y1 = fi(x), ..., yn = fn(x) ausgibt, wobei f1, ..., fn jeweils
m-stellige Boolesche Funktionen sind.
-
Die
n Informationsbits des betrachteten Kodes sind die Bits y1, ...,
yn . Der Prädiktor
Pr 57 bestimmt nun in Abhängigkeit von den Eingabewerten
x die L Kontrollbits c1(x), ..., cL(x), die in einem Register 58 mit
L Eingängen
und L Ausgängen
zwischengespeichert werden. Der Generator Gen 59 bestimmt aus
den korrigierten Ausgabewerten des Korrektors 54 y(korr)
= y(korr)1, ..., y(korr)n der Informationsbits des betrachteten
Kodes nun in Abhängigkeit
von diesen Ausgabewerten ebenfalls die Kontrollbits c1(y(korr)),
..., cL(y(korr)). c1(x), ..., cL(x) und c1(y(korr)), ...cL(y(korr))
werden im Komparator Comp 510 auf Gleichheit geprüft. Ein
Unterschied zeigt einen Fehler an.
-
Die
Fehlerkorrektur und die Fehlererkennung in 5 sollen
nun erläutert
werden.
-
Ein
Fehler in der Funktion f, d. h. im kombinatorischen Schaltungsteil
der Schaltung wird durch die Fehlererkennungsschaltung überprüft. Ein
Fehler in der kombinatorischen Schaltung f 56 führt zu einem
fehlerhaften Ausgabenwert u' anstelle
von u am Ausgang von f. Der fehlerhafte Wert u' wird dann sowohl in dem Register R1 52 als
auch in dem Register R2 53 gespeichert und vom Korrektor 54,
da bei Eingaben (fehlerhaft) gleich sind, nicht korrigiert und y(korr)
= u' wird ausgegeben.
-
Ist
ein fehlerkorrigierender Kode gewählt worden, der diesen Fehler
erkennen kann, dann generiert der Generator Gen 55 fehlerhafte
Kontrollbits c1(u'),
...cL(u'), die sich
von den aus den Eingangswerten x generierten Kontrollbits c1(x),
...cL(x) unterscheiden, und der Fehler wird erkannt.
-
Ein
Fehler in einem der Register, etwa in R1 52 führt dazu,
dass an mindestens zwei sich entsprechenden Eingängen des Korrektors, etwa am
(2j – 1)-ten
Eingang und am 2j-ten Eingang des Korrektors des 54 unterschiedliche
Werte anliegen und der Korrektor am j-ten Ausgang den vorhergehenden
Wert y(korr)vj ausgibt. Stimmt y(korr)vj mit dem erwarteten korrekten
Wert überein,
so tritt kein Fehler auf und ein Fehler wird natürlich nicht erkannt. Stimmt
y(korr)vj mit dem erwarteten korrekten Wert nicht überein,
so tritt ein Fehler am Ausgang des Korrektors auf. Der Generator
Gen 55 generiert fehlerhafte Kontrollbits die sich von
den aus den Eingangswerten x generierten Kontrollbits c1(x), ...,
cL(x) unterscheiden, wenn der gewählte Kode den Fehler zu erkennen
erlaubt. Ein derartiger Fehler wird durch den Komparator Comp 510 erkannt.
-
Ist
ein Ausgabewert des Korrektors 54 infolge eines Fehlers
des Korrektors fehlerhaft, so erzeugt der Generator Gen 59 fehlerhafte
Kontrollbits des Kodes, die mit den korrekten, durch die Eingabewerte
x bestimmten Kontrollbits verglichen werden und die ein Fehlersignal
verursachen.
-
Tritt
nun ein weicher Fehler in einem der Register, zum Beispiel in dem
Register R2 53 auf, der den j-ten Ausgang dieses Registers
beeinflusst. Dann ist der Ausgabewert am j-ten Ausgang des Registers
in der ersten Takthälfte
für den
Wert des Clocksignals clock = 1 korrekt und in der zweiten Takthälfte für den Wert
des Clocksignals clock = 0 fehlerhaft. Am (2j – 1)ten Eingang liegt dann
sowohl für
clock = 1 als auch für
clock = 0 der korrekte Wert yj an, während am 2j-ten Eingang für clock
= 1 der korrekte Wert yj' =
yj und für
clock = 0 der (invertierte), fehlerhafte Wert von yj anliegt. Der
Korrektor 54 gibt dann an seinem j-ten Ausgang sowohl für clock
= 1 als auch für
clock = 0 den korrerkten Wert yj aus.
-
Es
soll hervorgehoben werden, dass zur Korrektur der weichen Fehler
und zur Fehlererkennung sowohl der Fehler im kombinatorischen Schaltungsteil
f 56, den Registern R1 52, R2 53, des
Korrektors 54 als auch der korrigierten Ausgabewerte nur
die Register R1 52 und R2 53 zu verdoppeln sind,
die auch relativ aufwandsarm als Latches realisiert werden können und
dass der Aufwand für
die Fehlererkennung durch die Auswahl unterschiedlicher fehlererkennender
Kodes an die erforderliche Fehlererkennungssicherheit anpaßbar ist.
-
Die
Fehlererkennung in der Fehlererkennungsschaltung erfolgt ebenfalls
durch den Vergleich der aus den Eingabewerten bestimmten Kontrollbits und
der aus den korrigierten Ausgabewerten bestimmten Kontrollbits.
-
Wird
ein Korrektor verwendet, dessen C-Elemente bei zueinander paarweise
gleichen Eingangswerten den vorhergehenden Ausgangswert ausgibt, so
sind die Ausgänge
eines der Register R1 oder R2 zu invertieren.
-
6 zeigt
eine besonders einfache Form der Fehlererkennungsschaltung für den einfachsten separierbaren
Kode, den Paritätsbitkode.
-
Es
wird angenommen, dass die kombinatorische Schaltung f 56 in 5 die
n Booleschen Funktionen f1(x), ..., fn(x) realisiert, so dass die
Ausgabewerte y1, ..., yn durch y1 = f1(x), ..., yn = fn(x) bestimmt
sind. Der Prädiktor 67 in 6 bestimmt
dann die Funktion v = y1(x) XOR y2(x) XOR ... XOR yn(x) = f1(1)
XOR f2(X) XOR ... XOR fn(x).
-
Praktisch
kann der Prädiktor 67 dann
so realisiert werden, dass die Ausgänge der kombinatorischen Schaltung
durch einen Paritätsbaum
XOR-verknüpft
sind und die so erhaltene Schaltung mit einem CAD-Synthesetool optimiert
ist. Dieses Vorgehen ist in 6 dadurch
veranschaulicht, dass der Prädiktor 67 als
Reihenschaltung der kombinatorischen Schaltung f und einem Paritätsbaum dargestellt
ist, wobei diese Reihenschaltung zu optimieren ist.
-
Das
Register R3 68 ist hier nur 1 Bit breit, und der Generator
G 59 in 5 besteht in 6 aus
einem XOR-Baum 69, der die Parität der Ausgänge y(korr)1, ..., y(korr)n
bildet. Bin Vergleicher kann hier entweder entfallen, wenn man eine
zweidimensionale Ausgabe zulässt
oder er kann durch ein einfaches XOR-Element mit zwei Eingänge und
einem Ausgang reali siert werden, das mit dem Ausgang des XOR-Baumes 69 und
mit dem Ausgang des Registers R3 zu verbinden ist, das in 6 nicht gezeigt
ist.
-
7 zeigt
eine konkrete Realisierung einer Schaltung nach 5,
wobei der fehlererkennende Kode als Paritätskode gewählt ist.
-
Die
kombinatorische Schaltung f hat drei Eingänge x1, x2 und x3 und zwei
Ausgänge
y1 und y2, die in y1' und
y2' aufgespaltet
sind. Es gilt y1(x) = f1(x) = (x1 AND x2) XOR x3, y2(x) = f2(x)
= (x1 OR x2) AND x3. Der Prädiktor
Pr bestimmt die Parität P(x)
von y1(x) und y2(x) zu P(x) = y1(x) XOR y2(x) = (x1 AND x2) OR (x - 1
AND x - 2 AND x3).
-
Der
das Eingangssignal x1 tragende Eingang ist mit dem ersten Eingang
eines UND-Gatters 71, dem ersten Eingang eines ODER-Gatters 72,
mit dem ersten Eingang eines UND-Gatters 75 und invertiert
mit dem ersten Eingang eines weiteren UND-Gatter 76 verbunden.
Der das Eingangssignal x2 tragende Eingang ist mit dem zweiten Eingang des
UND-Gatters 71, dem zweiten Eingang des ODER-Gatters 72,
mit dem zweiten Eingang des UND-Gatters 75 und invertiert
mit dem zweiten Eingang des UND-Gatters 76 verbunden.
-
Der
das Eingangssignal x3 tragende Eingag ist gleichzeitig mit dem ersten
Eingang eines XOR-Gatters 73, mit dem ersten Eingang eines UND-Gatters 74 und
mit dem dritten Eingang des UND-Gatters 76 verbunden. Der
Ausgang des UND-Gatters 71 ist in den zweiten Eingang des XOR-Gatters 73 geführt, dessen
Ausgang der erste Ausgang der kombinatorischen Schaltung f ist,
der das Ausgangssignal y1 trägt.
Der Ausgang des ODER-Gatters 72 ist mit dem zweiten Eingang
des UND-Gatters 74 verbunden, dessen Ausgang der zweite
Ausgang der kombinatorischen Schaltung f ist, der das Ausgabesignal
y2 trägt.
Der Ausgang des UND-Gatters 75 ist
mit dem ersten Eingang eines ODER-Gatters 77 verbunden,
in dessen zweiten Eingang der Ausgang des UND-Gatters 76 geführt ist und
dessen Ausgang der Ausgang des Prädiktors Pr ist, der in den
Eingang des 1-Bit breiten Registers R3 geführt ist und der die Parität P(x) der
Funktionen y1(x) = f1(x) und y2 = f2(x) an seinem Ausgang bildet.
-
Die
Ausgangsleitung des XOR-Gatters 73, die der erste Ausgang
der kombinatorischen Schaltung f ist, ist in zwei Leitungen aufgespalten,
die die Werte y1 und y1' führen und
die mit den Eingängen der
beiden Speicherelemente R11 und R21 verbunden sind. Die Ausgangsleitung des
UND-Gatters 74, die der zweite Ausgang der kombinatorischen
Schaltung f ist, ist in zwei Leitungen aufgespalten, die die Werte
y2 und y2' führen und
die mit den Eingängen der
beiden Speicherelemente R12 und R22 verbunden sind.
-
Die
Speicherelemente R11 und R12 sind zu einem Register R1 79 und
die Speicherelemente R21 und R22 sind zum Register R2 710 zusammengefasst.
Der erste Ausgang des Registers R1 79 ist in den ersten
Eingang des Korrektors 711 und der erste Ausgang des Registers
R2 710 ist in den zweiten Eingang des Korrektors 711 geführt. Der
zweite Ausgang des Registers R1 79 ist in den dritten Eingang des
Korrektors 711 und der zweite Ausgang des Registers R2 710 ist
in den vierten Eingang des Korrektors 711 geführt. Der
Korrektor 711 besteht aus der Parallelschaltung zweier
C-Elemente C1, C2. Der erste Ausgang des Korrektors 711 führt das
erste korrigierte Signal y(korr)1, und der zweite Ausgang des Korrektors 711 führt das
zweite korrigierte Signal y(korr)2.
-
Der
erste Ausgang des Korrektors 711 ist mit dem ersten Eingang
eines XOR-Gatters 712 verbunden, während der zweite Ausgang des
Korrektors 711 mit dem zweiten Eingang des XOR-Gatters 712 verbunden
ist. Das XOR-Gatter 712 bildet den Generator Gen der Schaltungsanordnung.
An seinem Ausgang wird die Parität
P(y(korr)1, y(korr)2) = y(korr)1 XOR y(korr)2 ausgegeben. Dieser
Ausgang bildet zusammen mit dem Ausgang des Registers R3 78 den
zwei Bit breiten Ausgang 713 der Fehlererkennungsschaltung
F, der das Fehlersignal trägt.
Stimmen die beiden Bits des Fehlersignal am Ausgang 713 überein,
dann wird kein Fehler angezeigt. Sind die beiden Bits dieses Signal
unterschiedlich, dann liegt ein Fehler entweder in der kombinatorischen Schaltung
f, in den Registern R1 79, R2 710, im Register
R3 78, im Korrektor 711, im Generator 712 oder
im Prädiktor
Pr vor.
-
Soll
ein 1 Bit breites Fehlersignal bestimmt werden, so sind der 1-Bit
breite Ausgang des Registers R3 78 und der Ausgang des
Generators 721 einfach durch ein weiteres XOR-Gatter zu
verknüpfen, das
in 7 nicht eingezeichnet ist.
-
Die
Funktionsweise der Fehlerkorrektur und der Fehlererkennung soll
nun für
Beispiele erläutert werden.
-
Zunächst beschreiben
wir die Korrektur eines weichen Fehlers, der in dem Speicherelement R11
des Registers R1 79 auftritt. Beispielsweise sei der korrekte
Wert y1, der von dem XOR-Gatter 73 ausgegeben
wird, gleich 1. Dieser Wert wird in y1' = 1 verdoppelt, so dass sowohl am Eingang
des Speicherelementes R11 im Register R1 79 als auch am Eingang
des Registers R21 des Registers R2 710 der Wert 1 anliegt.
-
Tritt
nun ein weicher Fehler in dem Speicherelement R11 auf, dann ist
der Ausgabewert des Speicherelementes R11 in der ersten Hälfte das
Taktes, indem das Clock-Signal clock des Speicherelementes R11 gleich
1 ist, gleich 1 und in der zweiten Hälfte des Taktes, für den das
Clock-Signal clock gleich 0 ist, gleich 0. Der Ausgabewert des Speicherelementes
ist sowohl für
das Clock-Signal clock = 1 als auch für das Clocksignal clock = 0
jeweils gleich 1. Der Tabelle 4, in der die Wertetabelle eines C-Elementes dargestellt
ist, entnimmt man, das das C-Element C11
des Korrektors K 711 den Wert 1 sowohl in der ersten Hälfte des
Taktes als auch in der zweiten Hälfte
des betrachteten Taktes ausgibt, so dass der weiche Fehler korrigiert
wird, wie noch erläutert
werden soll.
-
In
der ersten Takthälfte
mit clock = 1 gilt y1 = y1' =
1, und der vierten und siebten Zeile von Tabelle 3 entnimmt man,
dass das C-Element C1 unabhängig
von vorherigen Wert den Wert y(korr)1 = 1 ausgibt. In der zweiten
Takthälfte
mit clock = 0 gilt y1 = 0 und y1' =
1. Der vorherige Wert der ersten Takthälfte ist hier gleich 1, und
das C-Element C1 korrigiert den Wert und gibt entsprechend der siebenten
Zeile von Tabelle 4 den korrekten Wert y(korr)1 = 1 aus.
-
Als
Beispiel für
die Erkennung eines Fehlers in der kombinatorischen Schaltung f
soll nun ein Stuck-at-0 Fehler am Ausgang des UND-Gatters 71 betrachtet
werden.
-
Als
Eingabewerte der Schaltung f werden die Werte x1 = 1, x2 = 1, x3
= 0 betrachtet. Die korrekten Ausgabewerte des XOR-Gatters 73 und
des UND-Gatters 74 sind dann y1 = y1' = 1, y2 = y2' = 0. Aufgrund des stuck-at-0 Fehlers
am Ausgang des XOR-Gatters 73 ist die fehlerhafte Ausgabe
dieses Gatters nun gleich y1f = y1'f = 0, sodass in den Speicherelementen
R11 und R12 der Register R11 79 und R2 710 die
fehlerhaften Werte 0 anstelle der korrekten Werte 1 gespeichert
werden. Die fehlerhaften Werte 0,0 liegen an den ersten beiden Eingängen des
Korrektors K 711 an der an seinem ersten Ausgang den Wert
y(korr)1f = 0 ausgibt.
-
Das
Gatter 74 gibt den korrekten Wert y2 = y2' = 0 aus, der in
den Speicherelementen R12 des Registers R1 79 und R22 des
Registers 71 gespeichert wird. Die korrekten Werte 0,0
liegen am dritten und vierten Eingang des Korrektors K 711 an,
so dass vom Korrektor K 711 an seinem zweiten Ausgang der
Wert 0 ausgegeben wird. Die beiden Ausgänge des Korrektors K 711 sind
in die beiden Eingänge
des Generators Gen 712 geführt, der als XOR-Gatter realisiert
ist und er an seinem Ausgang den Wert 0 XOR 0 = 0 ausgibt.
-
Die
Eingabesignale x1 = x2 = 1, x3 = 0 liegen ebenso an den Eingängen des
Prädiktors
Pr an, so dass am Ausgang des UND-Gatters 75 der Wert 1 und
am Ausgang des UND-Gatters 76 der Wert 0 ausgegeben werden,
die durch das ODER-Gatter 77 in den Wert P(x) = 1 verarbeitet
werden, so dass von dem Prädiktor
der Wert P(x) ausgegeben wird, der in dem Register R3 78 zwischengespeichert
wird. Die Ausgabe 1 des Registers R3 78 und die
Ausgabe des Generators 712, die gleich 0 ist, stimmen nicht überein,
wodurch ein Fehler angezeigt wird.
-
Weiterhin
soll nun die Erkennung eines Fehlers K 711 im Korrektor
betrachtet werden. Wir nehmen dabei an, dass das C-Element C1 wie
in 3 dargestellt implementiert ist.
-
Wir
betrachten den Fehler, dass der p-Transister 32 stuck-open
ist und stets keine leitende Verbindung herstellen kann. Liegen
nun die Eingabewerte x1 = 2 = 1 und x2 = 1 an den Schaltungseingängen an,
dann wird von dem UND-Gatter 74 der Wert y2 = y2' = 1 ausgegeben,
während
das Gatter 73 den Wert y1 = y1' = 0 ausgibt. Nach Zwischenspeicherung
in den Registern R1 79 und R2 710 liegen an den
ersten beiden Eingängen
des Korrektors 711 und damit an den beiden Eingängen des
fehlerhaften C-Elementes C1 die Werte 0,0 und an dem dritten und
vierten Eingang des Korrektors und damit an den beiden Eingängen des
korrekten C-Elementes C2 die Werte 1,1 an.
-
Da
der p-Transistor 32 in 3 stuck-open ist,
gibt es bei Eingabe von 0,0 in das C-Element C1 weder eine leitende
Verbindung der den Wert z tragenden Leitung zu VDD noch zu GND,
so dass der Wert z seinen bisherigen Wert beibehält, der invertiert auch als
y(korr)i am Ausgang des C-Elementes ausgegeben wird. Da es niemals
eine Verbindung der Leitung, die den Wert z führt, zu VDD gibt, geht der Wert
z im zeitlichen Verlauf auf Grund von Leckströmen in konstant 0 über, so
dass das C-Element C1 stets den Wert 1 an seinem Ausgang ausgibt.
-
Dieser
Fehler wird stets dann durch den Vergleich der Ausgabesignale Generators
Gen 712 und des im Registers R3 zwischengespeicherten Ausgabewertes
des Generators erkannt, wenn die korrekte Ausgabe des XOR-Gatters 73 gleich
0 ist. Der Grund ist, dass die Ausgabe y(korr)2 des C-Elementes
C2 und des Prädiktors
Pr durch diesen Fehler des Korrektors 711 nicht verfälscht werden
und der Generator Gen 712 durch ein XOR-Gatter, dass eine
eindeutig umkehrbare Funktion realisiert, implementiert ist.
-
8 zeigt
eine weitere Realisierung einer Schaltungsanordnung nach 5,
wobei die Schaltungsanordnung in 8 funktionell,
aber nicht strukturell, der Schaltungsanordnung gleich ist.
-
Die
Schaltung von 8 unterscheidet sich von der
Schaltungsanordnung von 7 nur dadurch, dass die kombinatorische
Schaltung f und der Prädiktor
Pr gemeinsame Schaltungsteile aufweisen. Bei der Schaltungsanordnung
in 7 erkennt man, dass die UND-Gatter 71 und 75 jeweils
die gleiche Funktion (x1 UND x2) realisieren. Das ist in 8 dadurch
berücksichtigt,
dass der Ausgang des UND-Gatters 71 sowohl in den ersten
Eingang des XOR-Gatters 73 als
auch in den Eingang des ODER-Gatters 77 geführt ist,
mit dem in der Schaltung von 7 der Ausgang
des UND-Gatters 75 verbunden ist. In der Schaltung von 8 kann
deshalb das Gatter 75 eingespart werden. Der Ausgang des
UND-Gatters 71 wird als zusätzlicher Ausgang der funktionellen
Schaltung in die Fehlererkennungsschaltung 714 geführt, wodurch
die Fehlererkennungsschaltung und die funktionelle Schaltung f das UND-Gatter 71 gemeinsam
nutzen.
-
9 zeigt
eine weitere Schaltungsanordnung zur Korrektur und Fehlererkennung.
-
Die
funktionelle Schaltung S 91 besteht aus zwei verdoppelten,
einander gleichen kombinatorischen Schaltungen f 92 und
f' 93.
Der Ausgang der kombinatorischen Schaltung f 92 ist in
den Eingang eines ersten Registers 94 geführt, während der
Ausgang der kombinatorischen Schaltung f' in den Eingang eines zweiten Registers 95 geführt ist.
Der Ausgang des Registers 94 ist gleichzeitig mit dem ersten Eingang
eines ersten Komparators Comp1 97, mit dem ersten Eingang
eines dritten Komparators Comp3 99 und mit dem ersten Eingang
eines Korrektors 96 verbunden. Der Ausgang des zweiten
Registers R2 95 ist gleichzeitig mit dem zweiten Eingang des
ersten Komparators Comp1, 97 mit dem ersten Eingang eines
zweiten Komparators Comp2 98 und mit dem zweiten Eingang
des Korrektors 96 verbunden. Der Ausgang 911 des
Korrektors 96, der das korrigierte Signal y(korr) ausgibt,
ist gleichzeitig in den jeweils zweiten Eingang des Komparators Comp2 98 und
des dritten Komparators Comp3 99 geführt.
-
Die
Fehlererkennungsschaltung F 910 besteht hier aus den drei
Komparatoren Comp1 97, Comp2 98, Comp3 99.
-
Anhand
der Ausgabesignale der Fehlererkennungsschaltung F 99 kann
hier identifiziert werden, welche Schaltungsteile fehlerhaft sind.
Zeigt zum Beispiel der Ausgang des Komparators Comp1 97 einen
Fehler an, dann liegt ein Fehler in einer der kombinatorischen Schaltung
f 92 oder f' 93 oder
einem der Register R1 94 oder 94 vor. Zeigt etwa
der Komparator Comp3 99 an seinem Ausgang und der Komparator
Comp2 einen Fehler an, während
der Komparator Comp1 97 keinen Fehler anzeigt, dann ist
der Ausgabewert des Korrektors 96 fehlerhaft korrigiert
worden, während
in den anderen Schaltungsteilen keine Fehler aufgetreten sind.
-
Die
Eingänge
und Ausgänge
der kombinatorischen Schaltungen f 92, f' 93, der
Register R1 94, R2 95 der Komparatoren Comp1 97,
Comp2 98 Comp3 99 und des Korrektors 96 können dabei
sowohl ein Bit breit als auch mehrere Bits breit sein.
-
In 10a zeigt eine weitere Schaltungsanordnung zur
Fehlerkorrektur und Fehlererkennung.
-
Die
funktionale Schaltung S 1018 besteht aus zwei zueinander
gleichen verdoppelten sequentiellen Schaltungen. Die erste sequentielle
Schaltung besteht aus kombinatorischen Schaltungsteilen g 101 und
f 102 und einem Register R1' 103. Sie wird als die originale
Schaltung bezeichnet. In dem Register R1' 103 wird der Zustand z der
originalen sequentiellen Schaltung gespeichert. Die Rückkopplung
des Zustandes erfolgt über
den Korrektor2 110. Sie wird später detailliert durch die Verbindungen
der entsprechenden Schaltungsteile beschrieben. Die zweite sequentielle
Schaltung, die als verdoppelte sequentielle Schaltung bezeichnet
wird, besteht aus kombinatorischen Schaltungsteilen g' 105, f 106 und
einem Register R2' 107.
In dem Register R2' 107 wird
der Zustand z' der
verdoppelten sequentiellen Schaltung gespeichert. Die Rückkopplung
des Zustandes erfolgt über
den Korrektor2 110. Sie wird später detaillierter durch die
Verbindungen der entsprechenden Schaltungsteile beschrieben. Die
kom binatorischen Schaltungsteile g 101 und g' 105 ebenso
wie die kombinatorischen Schaltungen f 102 und f' 106 sind gleich.
-
Der
n Bit breite Ausgang der kombinatorischen Schaltung g 101,
der den Wert y trägt,
ist in den Eingang des Registers R1' 103 geführt, während der L Bit breite Ausgang
der kombinatorischen Schaltung f 102, der den Wert z trägt, der
auch als Zustand der originalen Schaltung bezeichnet wird, mit dem Eingang
des Registers R1' 103 verbunden
ist.
-
Der
n Bit breite Ausgang der kombinatorischen Schaltung g' 105, der
den Wert y' trägt, ist
in den Eingang des Registers R2' 103 geführt, während der
L Bit breite Ausgang der kombinatorischen Schaltung f' 106, der
den Wert z' trägt, der
auch als Zustand der verdoppelten Schaltung bezeichnet wird mit
dem Eingang des Registers R2' 107 verbunden ist.
Hierbei sind sowohl n als auch L größer gleich 1.
-
Der
n Bit breite Ausgang des Registers R1 104 ist ebenso wie
der n Bit breite Ausgang des Registers R2 108 in den 2n
Bit breiten Eingang eines ersten Korrektors Korrektor1 109 geführt. Hierbei
ist jeweils für
i = 1, ..., n der i-te binäre
Ausgang des Registers R1 104 mit dem (2i – 1)-ten
Eingang und der i-te binäre
Ausgang des Registers R2 108 mit dem (2i)-ten Eingang des
Korrektors Korrektor1 109 verbunden.
-
Darüber hinaus
ist der n Bit breite Ausgang des Registers R1 104 in den
n-Bit breiten Eingang eines ersten XOR-Baumes 1012 zur
Bestimmung der Parität
P2 des n Bit breiten binären
Ausgangssignals dieses Registers geführt.
-
Weiterhin
ist der n Bit breite Ausgang des Registers R2 108 in den
n-Bit breiten Eingang eines zweiten XOR-Baumes 1013 zur
Bestimmung der Parität
P1 der n binären
Ausgangssignale dieses Registers geführt.
-
Der
L Bit breite Ausgang des Registers R1' 103 ist ebenso wie der L Bit
breite Ausgang des Registers R2' 107 in
den 2L Bit breiten Eingang eines zweiten Korrektors Korrektor2 1010 geführt. Dabei
ist jeweils für
j = 1, ..., L der j-te binäre
Ausgang des Registers R1' 103 mit
dem (2j – 1)-ten
Eingang und der j-te binäre
Ausgang des Registers R2' 107 mit
dem (2j)-ten Eingang des Korrektors Korrektor2 1010 verbunden.
-
Der
Korrektor1 109 korrigiert die weichen Fehler in den Registern
R1 104 und R2 108, während der Korrektor Korrektor2 1010 weiche
Fehler in den Registern R1' 103 und
R2' 107 korrigiert.
-
Der
n Bit breite Ausgang des Korrektors Korrektor1 109, der
die korrigierten Werte der Ausgabewerte y(korr) führt, ist
mit dem Schaltungsausgang und mit dem n Bit breiten Eingang eines
dritten XOR-Baumes P3 1011 zur Bestimmung der Parität P3 des
korrigierten n Bit breiten Ausgangssignals y(korr) verbunden. Die
jeweils ersten n Bit breiten Eingänge der kombinatorischen Schaltungen
f 102, g 101, f' 106 und g' 105 sind jeweils mit den das
Eingabesignal x bzw. x' tragenden
Eingängen
der Schaltung S 1018 verbunden. Dabei ist x = x'. Diese jeweils ersten
Eingänge
dieser kombinatorischen Schaltungen heißen auch primäre Eingänge.
-
Der
L Bit breite Ausgang des Korrektors Korrektor2 1010, der
die korrigierten Werte z(korr) des Zustandes der sequentiellen Schaltung
führt,
ist in die Schaltung S 1018 rückgekoppelt, indem dieser Ausgang
gleichzeitig mit einem zweiten jeweils L Bit breiten Eingang jeweils
der kombinatorischen Schaltungen f 102, g 101,
f' 106 und
g' 105 verbunden
ist. Die jeweils zweiten Eingänge
dieser Schaltungen heißen
auch sekundäre
Schaltungseingänge.
-
Der
Ausgang des XOR-Baumes 1013, der das Paritätssignal
P1 trägt,
ist in den ersten Eingang eines ersten ODER-Gatters 1015 und
invertiert in den ersten Eingang eines weiteren ODER-Gatters 1014 geführt.
-
Der
Ausgang des XOR-Baumes 1012, der das Paritätssignal
P2 trägt,
ist in den zweiten Eingang eines des ODER-Gatters 1015 und
invertiert in den zweiten Eingang des ODER-Gatters 1014 geführt.
-
Der
Ausgang des XOR-Baumes 1011, der das Paritätssignal
P3 trägt,
ist in den dritten Eingang des ODER-Gatters 1015 und invertiert
in den dritten Eingang des ODER-Gatters 1014 geführt. Der
Ausgang des ODER-Gatters 1014 ist in den ersten Eingang
eines UND-Gatters 1016 geführt. Der Ausgang des ODER-Gatters 1015 ist
mit dem zweiten Eingang des UND-Gatters 1016 verbunden.
Der Ausgang des UND-Gatters 1016 trägt das Fehlersignal. Die XOR-Bäume 1013, 1012, 1011,
die ODER-Gatter 1014 und 1015 und das UND-Gatter 1016 bilden
die Fehlererkennungsschaltung F 1017. Es ergibt sich, dass
die Fehlererkennungsschaltung F 1017 an ihrem Ausgang ein
Fehlersignal gleich 1 ausgibt, wenn nicht alle drei Paritätswerte
P1, P2 und P3 gleich sind.
-
Die
Fehlererkennungsschaltung erkennt damit durch die Parität erkennbare
Fehler in den kombinatorischen Schaltungsteilen g 101,
g' 105,
R1 104, R2 108 und in dem Korrektor Korrektor1 109 unmittelbar.
Das sind die Fehler, in denen sich die funktionellen Ausgaben der
beiden verdoppelten sequentiellen Schaltungen unterscheiden.
-
Es
ist ohne weiteres erkennbar, dass anstelle eines Paritätskodes
auch ein anderer Kode nutzbar ist, etwa ein Bergerkode oder ein
Hammingkode, die eine höhere
Fehlererkennung als ein Paritätskode aufweisen.
-
10b ist eine Modifikation der Schaltungsanordnung
von 10a.
-
Alle
Schaltungsteile in 10b, die sich von den entsprechenden
Schaltungsteilen von 10a nicht unterscheiden, sind
gleich bezeichnet, und werden deshalb auch nicht noch einmal ausführlich beschrieben
werden. Die Schaltungsanordnung von 10a unterscheidet
sich von der Schaltungsanordnung von 10 dadurch,
dass die L Bit breiten Ausgänge
der Register R1' 103,
R2' 107 und
des Korrektors Korrektor2 1010, die in der Schaltungsanordnung
von 10 nicht durch die Fehlererkennungsschaltung überwacht
werden, nun in der Schaltungsanordnung von 10a von
der Fehlererkennungsschaltung F überwacht
werden.
-
In 10b ist die Eingangswortbreite der XOR-Bäume 1011, 1012, 1013 jeweils
n + L Bits, während
sie in 10a jeweils n Bit ist.
-
Der
L Bit breite Ausgang des Registers R1' 103 ist ebenso wie der L Bit
breite Ausgang des Registers R2' 107 wie
in 10a in den 2L Bit breiten Eingang eines zweiten
Korrektors Korrektor2 1010 geführt. Dabei ist jeweils für j = 1,
..., L der j-te binäre Ausgang
des Registers R1' 103 mit
dem (2j – 1)-ten Eingang
und der j-te binäre
Ausgang des Registers R2' 107 mit
dem (2j)-ten Eingang des Korrektors Korrektor2 1010 verbunden.
-
Der
L-Bit breite Ausgang des Registers R1' 103 ist darüber hinaus
gleichzeitig mit den L ersten Eingängen des XOR-Baumes 1012 verbunden,
dessen weitere n Eingänge
mit dem n-Bit breiten Ausgang des Registers R1 104 verbunden
sind. Der L-Bit breite Ausgang des Registers R2' 107 ist darüber hinaus
gleichzeitig mit den L ersten Eingängen des XOR-Baumes 1013 verbunden,
dessen weitere n Eingänge
mit dem n-Bit breiten Ausgang des Registers R2 108 verbunden
sind. Der L-Bit breite Ausgang des Korrektors Korrektor2 1010,
der gleichzeitig mit den Eingängen
der kombinatorischen Schaltungen f 102, g 101,
f' 106 und
g' 105 verbunden
ist, ist darüber
hinaus mit den ersten L Eingängen
des XOR-Baumes 1011 verbunden, dessen weitere n Eingänge mit
dem n Bit breiten Ausgang des Korrektors Korrektor1 109 verbunden
sind.
-
Die
konkrete Ausgestaltung der Fehlererkennungsschaltung kann in einfacher
Weise von einem Fachmann variiert werden. So kann man zum Beispiel
den L Bit breiten Ausgang des Registers R2' 107 anstatt an die ersten
L Eingänge
des XOR-Baumes 1013 auch an die ersten L Eingänge des XOR-Baumes 1012 anschließen, wenn
man die L-Bit breiten Ausgänge
des Registers R1' 103 an
die ersten L Eingänge
des XOR-Baumes 1013 anschließt.
-
In
entsprechender Weise können
die jeweils L Bit breiten und die jeweils n Bit breiten Anschlüsse an die
XOR-Bäume 1013, 1012 und 1011 vertauscht werden.
-
Tritt
ein Fehler in den Schaltungsteilen f 102, f' 106, R1' 103, R2' 107 oder
in dem Korrektor Korrektor2 1010 auf, so wird ein derartiger
Fehler erkannt, wenn er die Parität der L-Bit breiten Ausgaben der
Register R1' 103,
R2' 107 oder
der Ausgaben des Korrektors Korrektor2 1010 verändert.
-
Wird
anstelle der ODER-Gatter 1014, 1015 eine Auswertelogik
mit drei Eingängen
P1, P2, P3 und zwei Ausgängen
u1, u2 an die Ausgänge
der drei XOR-Bäume 1013, 1014, 1015 angeschlossen,
so kann aus den Paritätssignalen
P1, P2, P3 in einfacher Weise bestimmt werden, in welchem Teil ein Fehler
aufgetreten ist.
-
11 zeigt
die Wertetabelle für
eine mögliche
Auswertelogik.
-
In
der Wertetabelle von 11 ist an der ersten Zeile und
an der letzen Zeile erkennbar, dass ein fehlerfreies Verhalten an
den Ausgabewerten u1 = 0, u2 = 0 angezeigt wird, wenn alle drei
Werte der Paritäten
P1, P2 und P3 gleich sind. An der zweiten und siebten Zeile dieser
Tabelle erkennt man, dass eine fehlerhafte Korrektur dann vorliegt,
wenn die Werte der Paritäten
P1 und P2 übereinstimmen
und sich der Wert von P3 von diesen Werten unterscheidet.
-
Die
Realisierung einer kombinatorischen Schaltung, die eine Auswertelogik
beispielsweise die Auswertelogik, die in 11 als
Wertetabelle dargestellt ist, realisiert, bereitet einem Fachmann
keine Schwierigkeiten, und sie soll deshalb hier nicht näher beschrieben
werden.
-
12 zeigt
eine weitere Schaltungsanordnung zur Fehlerkorrektur und Fehlererkennung,
wobei die n-dimensionalen Eingabewerte in aufeinander folgenden
Pipelinestufen verarbeitet werden.
-
Die
n Bit breiten Eingabewerte x sind in den Eingang einer ersten kombinatorischen
Schaltung f1 und gleichzeitig in einen Prädiktor Pr 1211 geführt. Der
die n1 Bit breiten Werte u tragende Ausgang der kombinatorischen
Schaltung f1 121 ist verdoppelt. Der erste der verdoppelten
Ausgänge,
der den Wert u führt,
ist in den n1 Bit breiten Eingang eines Registers R1 122 geführt, während der
zweite der verdoppelten Ausgänge,
der den Wert u' führt, mit
dem n1 bit breiten Eingang des Registers R2 123 verbunden ist.
Dabei gilt u = u'.
Sowohl der n1 Bit breite Ausgang des Registers R1 als auch der n1
Bit breite Ausgang des Registers R2 ist mit dem 2n1 Bit breiten
Eingang eitles Korrektors1 124 verbunden, dessen n1 Bit
breiter Ausgang in die kombinatorische Schaltung f2 125 geführt ist.
Dieser Ausgang trägt
das Signal u(korr). Der n2 Bit breite Ausgang der kombinatorischen Schaltung
f2 125 trägt
das Signal v. Er ist mit dem Eingang eines n2 Bit breiten Registers
R3 126 verbunden, dessen Ausgang mit dem Eingang einer kombinatorischen
Schaltung f3 127 verbunden ist.
-
Der
n Bit breite Ausgang der kombinatorischen Schaltung f3 127 ist
in einen ersten Ausgang, der den Wert y trägt, und in einen zweiten Ausgang, der
den Wert y' trägt, verdoppelt.
Dabei gilt y = y'.
Der erste Ausgang, ist in den Eingang eines n Bit breiten Registers
R4 128 geführt,
während
der zweite Ausgang in den Eingang eines n Bit breiten Registers
R5 129 geführt
ist.
-
Sowohl
der n Bit breite Ausgang des Registers R4 128 als auch
der n Bit breite Ausgang des Registers R5 ist mit dem 2n Bit breiten
Eingang eines Korrektors 2 1210 verbunden, an dessen Ausgang das
korrigierte Signal y(kor) ausgegeben wird. Der Ausgang des Korrektors 1210 ist
darüber
hinaus mit dem Eingang eines Generators Gen 1216 verbunden.
-
Der
L Bit breite Ausgang des Prädiktors 1211 ist
in den Eingang eines L-Bit breiten Registers R6 1212 geführt. Der
Ausgang dieses Registers ist mit dem Eingang eines weiteren Registers
R7 1213 und dessen Ausgang ist mit einem weiteren Register 1214 verbunden,
die beide die Wortbreite L aufweisen. Der L Bit breite Ausgang des
Registers R8 1214 ist mit dem ersten Eingang eines Komparators
Comp 1215 verbunden. Der Ausgang des Generators Gen 1216 ist
mit dem zweiten Eingang des Komparators Comp 1215 verbunden,
dessen Ausgang das Fehlersignal trägt.
-
Die
Fehlererkennungsschaltung F 1217 besteht aus dem Prädiktor 1211,
den in Reihe geschalteten L Bit breiten Registern R6 1212,
R7 1213, R8 1214, dem Komparator Comp 1215 und
dem Generator Gen 1216. Zur Fehlererkennung wird in 12 ein
separierbarer Kode mit n Informationsbits und L Kontrollbits verwendet.
-
Zur
Beschreibung der Funktionsweise der Schaltung wird davon ausgegangen,
dass die betrachtete Schaltung funktionell eine Reihenschaltung der
kombinatorischen Schaltungsteile f1 121, f2 125 und
f3 127 ist, deren Ausgangswerte in den Registern R1 122,
R2 123, R3 126, R4 128 und R5 128 um drei
Takte verzögert
werden. In Abhängigkeit
von ihren Eingabewerten x = x1, ..., xm gibt sie an ihrem n-Bit
breiten Ausgang die Werte y1 = h1(x), ..., yn = hn(x) aus, wobei
h1, ..., hn jeweils m-stellige Boolesche Funktionen sind und h(x)
= h1(x), ..., hn(x) = f3(f(2(f1(x))) gilt.
-
Die
n Informationsbits des betrachteten Kodes sind die Bits y1, ...,
yn. Der Prädiktor
Pr 1211 bestimmt nun in Abhängigkeit von den Eingabewerten
x die L Kontrollbits c1(x), ..., cL(x), die in den Registern R6 1212,
R7 12113, R8 1214 zwischengespeichert werden
-
Der
Generator Gen 1216 bestimmt aus den korrigierten Ausgabewerten
des Korrektors 54 y(korr) = y(korr)1, ..., y(korr)n der
Informationsbits des betrachteten Kodes nun in Abhängigkeit
von diesen Ausgabewerten ebenfalls die Kontrollbits c1(y(korr)), ...,
cL(y(korr)). c1(x), ..., cL(x) und c1(y(korr)), ..., cL(y(korr))
werden im Komparator 1215 auf Gleichheit geprüft. Ein
Unterschied zeigt einen Fehler an. Als spezieller Kode kann zum
Beispiel ein Paritätskode,
ein Berger-Kode, ein Hammingkode verwendet werden.
-
In 12 sind
die Ausgabewerte der kombinatorischen Schaltungen f1 121 verdoppelt
und als u und u' in
den verdoppelten Registern R1 122 und R2 122 gespeichert.
Weiche Fehler in diesen Register werden durch den Korrektor Korrektor1 124 in
die Ausgabewerte u(korr) korrigiert. Ebenso sind die Ausgabewerte
der kombinatorischen Schaltungen f3 127 verdoppelt und
als y und y' in
den verdoppelten Registern R4 128 und R5 129 gespeichert.
Weiche Fehler in diesen Registern werden durch den Korrektor Korrektor2 1210 in
die Ausgabewerte y(korr) korrigiert.
-
Die
Ausgabewerte der kombinatorischen Schaltung f2 125 sind
nicht verdoppelt, und die nur einfach in dem Register R3 126 gespeicherten
Werte können
auch beim Auftreten von weichen Fehlern nicht korrigiert werden.
-
Es
ergibt sich, dass es in einer Pipelineverarbeitung möglich ist,
einen Teil der Register, die etwa besonders wichtige Daten enthalten,
zu verdoppeln und weiche Fehler in diesen Registern zu korrigieren, während man
andere Register aus Aufwandsgründen
nicht verdoppeln wird. In die Fehlererkennung entsprechend dem gewählten Kode
sind alle Schaltungsteile der Schaltungsanordnung von 12 einbezogen.
Da unterschiedliche Kodes mit unterschiedlichen Fehlererkennungseigenschaften
und unterschiedlichem Aufwand verwendet werden können, lässt sich der Aufwand für Fehlererkennung
variable gestalten.
-
Die
in der vorstehenden Beschreibung, den Ansprüchen und der Zeichnung offenbarten
Merkmale der Erfindung können
sowohl einzeln als auch in beliebiger Kombination für die Verwirklichung
der Erfindung in ihren verschiedenen Ausführungsformen von Bedeutung
sein.