DE10309255B4 - Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler - Google Patents

Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler Download PDF

Info

Publication number
DE10309255B4
DE10309255B4 DE2003109255 DE10309255A DE10309255B4 DE 10309255 B4 DE10309255 B4 DE 10309255B4 DE 2003109255 DE2003109255 DE 2003109255 DE 10309255 A DE10309255 A DE 10309255A DE 10309255 B4 DE10309255 B4 DE 10309255B4
Authority
DE
Germany
Prior art keywords
code
checker
output
codeword
bose
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE2003109255
Other languages
English (en)
Other versions
DE10309255A1 (de
Inventor
Steffen Dr. rer.nat. Tarnick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
4TECH GES fur TECHNOLOGIE und
4tech Gesellschaft fur Technologie- und Know-How-Transfer Mbh
Original Assignee
4TECH GES fur TECHNOLOGIE und
4tech Gesellschaft fur Technologie- und Know-How-Transfer Mbh
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 4TECH GES fur TECHNOLOGIE und, 4tech Gesellschaft fur Technologie- und Know-How-Transfer Mbh filed Critical 4TECH GES fur TECHNOLOGIE und
Priority to DE2003109255 priority Critical patent/DE10309255B4/de
Priority to EP04714325A priority patent/EP1609248A2/de
Priority to PCT/EP2004/001938 priority patent/WO2004077682A2/de
Publication of DE10309255A1 publication Critical patent/DE10309255A1/de
Application granted granted Critical
Publication of DE10309255B4 publication Critical patent/DE10309255B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
    • H03M13/49Unidirectional error detection or correction

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines fehlererkennenden Codes C(n, k) mit n > 1 und k ≥ 2, wobei für einen nicht-systematischen Code C(n, k) der Parametern die Wortlänge beschreibt und k die Anzahl der erkennbaren Bitfehler bestimmt, oder für einen systematischen Code C(n, k) der Parameter n die Anzahl der Informationsbits und k die Anzahl der Prüfbits bezeichnet,
dadurch gekennzeichnet, daß
(i) in einem ersten Schritt das zu prüfende Codewort x ∈ C(n, k) mit einem zweiten Codewort y desselben Codes C(n, k) verknüpft und auf ein drittes Codewort z eines fehlererkennenden Codes C(n, k – 1) abgebildet wird,
im Falle k > 2 der erste Verfahrensschritt mit dem durch die Verknüpfung erzeugten, dritten Codewort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Verknüpfung erzeugte Wort ein Codewort eines fehlererkennenden Codes C(n, 1) ist und
das im...

Description

  • Die Erfindung betrifft ein Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler in Code-Wörtern x eines fehlererkennenden Codes C(n, k), der durch zwei Parameter n und k bestimmt ist. Verfahren und Schaltung sind insbesondere einsetzbar für Verfahren des Online-Tests.
  • Online-Testverfahren gewinnen zunehmend an Bedeutung in vielen industriellen Bereichen bei denen sicherheitskritische Systeme zuverlässig und verfügbar sein müssen. Solche Bereiche umfassen Steuerungen im Zugverkehr, Satellitentechnik, Telekommunikation, Flugzeugtechnik, Elektronik in medizinischen Anwendungen und die Steuerung kritischer Funktionen in Automobilen. Fehler, die von fehlerbehafteten Schaltungen verursacht werden, müssen in dem Moment erkannt werden, in dem sie auftreten. Eine gängige Implementierung des Online-Tests besteht darin, die Schaltungsausgänge in einen fehlererkennenden Code C zu kodieren und sie permanent von einem Code-Checker überwachen zu lassen (T.R.N. Rao und E. Fujiwara, "Error-Control Coding for Computer Systems," Prentice-Hall, Englewood Cliffs, NJ, 1989; US 5,450,340 ; US 5,586,124 ; DE 44 06 391 C1 ). Die Wahl des Codes richtet sich dabei nach dem Typ der zu erwartenden Fehler.
  • Ein Code-Checker ist eine Code-trennende Schaltung, d.h. sie bildet Codewort-Eingaben auf Codewort-Ausgaben ab und Nichtcodewort-Eingaben auf Nichtcodewort-Ausgaben. Es ist Brauch, daß ein Checker zwei Ausgänge hat, und der Ausgabe-Code ist der (2-Bit-) Two-Rail-Code {01, 10}. Desweiteren muß der Checker in der Lage sein, seine eigenen Fehler zu erkennen. Eine Schaltung wird selbsttestend bezüglich einer Menge von Fehlern genannt, wenn für jeden Fehler aus dieser Menge ein Eingabe-Codewort existiert, das eine Nichtcodewort-Ausgabe bei Anwesenheit dieses Fehlers bewirkt. Die Fehlermenge, die hier betrachtet wird, ist die Menge aller einfachen Haftfehler.
  • Die Eigenschaft des Checkers, selbsttestend zu sein, hängt, neben seiner Konstruktion, hauptsächlich von der Menge der Codewörter ab, die von der überwachten Schaltung zur Verfügung gestellt wird. Diese Menge muß hinreichend groß sein, um alle in Betracht gezogenen Checker-Fehler zu testen. Wenn die überwachte Schaltung nur eine kleine Teilmenge C' des Codes C zur Verfügung stellt, kann es passieren, daß einige Checker-Fehler nicht getestet werden, so daß die Selbsttest-Eigenschaft verloren geht. Ein unerkannter Checker-Fehler kann zu dem Fall führen, daß einige Nichtcodewörter nicht erkannt werden – alle diejenigen Nichtcodewörter, die den Fehler testen. Somit geht auch die Eigenschaft des Checkers, Code-trennend zu sein, verloren.
  • Das Problem ist, daß der Checker so entworfen wurde, daß er selbsttestend für C ist, nicht jedoch für den Teilcode C'. Somit muß beim Entwurf des Checkers auch die Umgebung in Betracht gezogen werden, in die der Checker eingebettet wird. Checker, die noch selbsttestend sind für extrem kleine Teilcodes C' oder sogar unabhängig von Größe und Inhalt von C' werden eingebettete Checker genannt. Teilcode-unabhängige Checker reduzieren die Entwicklungskosten für die Implementierung des Online-Tests, da sie als Off-The-Shelf-Komponenten verwendet werden können. Dies ist von Interesse speziell bei Produktion mit geringem Volumen, wo die Entwicklungskosten im Vergleich zu den Produktionskosten relativ hoch sind.
  • Entwurfstechniken für eingebettete Checker können im wesentlichen in drei Gruppen eingeteilt werden. Bei der ersten Gruppe werden die Komponenten des Checkers entsprechend den verfügbaren Codewörtern oder Signalabhängigkeiten angeordnet. Ein zweiter Ansatz besteht darin, den Checker mit internen Offline-Test-Fähigkeiten auszurüsten. Techniken der dritten Gruppe fügen zusätzliche Hardware zum Checker hinzu, um abzusichern, daß der Checker alle oder eine hinreichend große Teilmenge von Codewörtern erhält, oder daß alle Teile des Checkers vollständig getestet werden.
  • In vielen regulären VLSI-Schaltungen, wie z.B. ROMs oder PLAs, sind unidirektionale Fehler der vorherrschende Bitfehlertyp. Ein unidirektionaler Fehler ist ein Mehrfach-Fehler bei dem alle fehlerbehafteten Bits entweder eine Verfälschung vom Typ 0 → 1 oder 1 → 0 haben, jedoch nicht beide zur gleichen Zeit. Unidirektionale Fehler jeglicher Vielfachheit können durch ungeordnete Codes, oder all-unidirectional error detecting (AUED) Codes, erkannt werden, von denen die gebräuchlichsten die m-aus-n Codes und die Berger-Codes sind. Daten sind oft in Blöcken organisiert und Operationen auf Daten werden durch separate Einheiten, die auf Blöcken operieren, durchgeführt. Wenn sich ein Schaltungsfehler in einer dieser Einheiten befindet, dann ist es wahrscheinlicher, daß ein daraus resultierender Bitfehler nicht jegliche Vielfachheit hat, sondern nur bis zu t Bits beeinflußt, wobei t die Blocklänge ist. Unidirektionale Fehler, die bis zu t Bits verfälschen, können von t-unidirectional error detecting (t-UED) Codes erkannt werden, welche eine höhere Informationsrate im Vergleich zu den AUED-Codes haben. Die t-UED-Codes die bei dieser Erfindung von Interesse sind, sind die Borden-Codes (J.M. Borden, "Optimal Asymmetric Error Detecting Codes," Information and Control, Vol. 53, April 1982, pp. 66-73) und die Bose-Lin-Codes (B. Bose und D.J. Lin, "Systematic Unidirectional Error-Detecting Codes," IEEE Transactions on Computers, Vol. C-34, No. 11, November 1985, pp. 1026-1032). Befinden sich die Bitfehler innerhalb einer Gruppe von höchstens k zusammenhängenden Bits, so werden diese Fehler Bündelfehler (Burst Errors) genannt (dabei wird das am weitesten rechts stehende Bit zu dem am weistesten links stehenden Bit benachbart angesehen). Der Burst-UED (BUED) Code, der in dieser Erfindung betrachtet wird, ist der Bose-Code (B. Bose, "Burst Unidirectional Error-Detecting Codes," IEEE Transactions on Computers, Vol. C-35, No. 4, April 1986, pp. 350-353).
  • Es existiert eine Reihe von Architekturen für Borden-Code-Checker. Solche Checker-Entwürfe verwenden mehrere m-aus-n-Code-Checker (N.K. Jha, "A Totally Self-Checking Checker for Borden's Code," IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 8, No. 7, July 1989, pp. 731-736; D. Nikolos, A. Paschalis, T. Haniotakis und G. Laskaris, "Totally Self-Checking Checkers for Optimal t-Unidirectional Error Detecting Codes," 13th International Conference on Fault-Tolerant Systems and Diagnostics, Varna, Bulgaria, June 1990, pp. 326-331), berechnen und vergleichen Gewichte modulo t + 1 (E. Fujiwara und M. Yoshikawa, "A Design Method for Cost-Effective Self-Testing Checker for Optimal d-Unidirectional Error Detecting Codes," IEICE Transactions on Information and Systems, Vol. E75-D, No. 6, November 1992, pp. 771-777) oder teilen die Codewörter in zwei Hälften und prüfen, ob die Gewichte beider Hälften zu gültigen Gewichtskombinationen gehören (S.J. Piestrak, "Design of Self-Testing Checkers for Borden Codes," IEEE Transactions on Computers, Vol. 45, No. 4, April 1996, pp. 461-469; G.P. Biswas und I. Sengupta, "A Design Technique of TSC Checkers for Borden's Code," 10th International Conference on VLSI Design, January 1997, pp. 529-530; T. Haniotakis, A. Paschalis und D. Nikolos, "Efficient Totally Self-Checking Checkers for a Class of Borden Codes," IEEE Transactions on Computers, Vol. 44, No. 11, November 1995, pp. 1318-1322). In weiteren Ansätzen wird ein Borden-Code in einen AN-Code umgewandelt und dieser anschließend von einem AN-Code-Checker geprüft (T. Haniotakis, D. Nikolos, A. Paschalis und D. Gizopoulos, "Totally Self-Checking Checkers for Borden Codes," International Journal of Electronics, Vol. 76, No. 1, 1994, pp. 57-64), oder es werden verschiedene Schwellwert-Schaltungen verwendet (D. Nikolos and X. Kavousianos, "Efficient Highly Testable Borden Code Checkers," IEEE European Test Workshop, May 1998, Sitges, Spain, pp. 246-250).
  • Bose-Lin- und Bose-Code-Checker sind von der Konstruktion her relativ ähnlich. Diese Checker berechnen erneut das Prüfsymbol aus dem Informationsbit-Vektor und vergleichen es mit dem Prüfsymbol des Codeworts (N.K. Jha, "Totally Self-Checking Checker Designs for Bose-Lin, Bose, and Blaum Codes," IEEE Transactions on Computer-Aided Design, Vol. 10, No. 1, January 1991, pp. 136-143; X. Kavousianos und D. Nikolos, "Modular TSC Checkers for Bose-Lin and Bose Codes," 17th IEEE VLSI Test Symposium, Dana Point, CA, April 1999; S.J. Piestrak, "Design of Encoders and Self-Testing Checkers for some Systematic Unidirectional Error Detecting Codes," IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems, Paris, France, October 1997, pp. 119-127; US 4,691,319 ).
  • Der Nachteil aller dieser Checker-Architekturen ist, daß der Checker, um selbsttestend zu sein, eine mehr oder weniger große Menge von Codewort-Testvektoren benötigt, die von der Schaltung, die der Checker überwacht, bereitgestellt werden müssen. Es ist jedoch nicht garantiert, daß die Schaltung alle benötigten Codewort-Tests produziert. Dies würde es notwendig machen, die Checker-Architektur auf die Menge der verfügbaren Codewörter zuzuschneiden.
  • Die Aufgabe der Erfindung besteht deshalb darin, Verfahren und Schaltungen für fehlererkennende Codes C(n, k) mit n > 1 und k ≥ 2 bereitzustellen, welche die vorstehend erwähnten Nachteile der bekannten Lösungen beheben, wobei für einen nicht-systematischen Code C(n, k) der Parameter n die Wortlänge beschreibt und k die Anzahl der erkennbaren Bitfehler bestimmt, oder für einen systematischen Code C(n, k) der Parameter n die Anzahl der Informationsbits und k die Anzahl der Prüfbits bezeichnet. Insbesondere soll die Struktur der Code-Checker unabhängig von der Menge der Codewörter sein, die von der überwachten Schaltung produziert wird. Darüber hinaus sollen die Verfahren bzw. Code-Checker mit möglichst wenigen Code-Wörtern getestet werden können.
  • Diese Aufgabe wird erfindungsgemäß gelöst durch die Merkmale im kennzeichnenden Teil der Ansprüche 1, 11, 23, 24, 25 und 29 im Zusammenwirken mit den Merkmalen im Oberbegriff. Zweckmäßige Ausgestaltungen der Erfindung sind in den Unteransprüchen enthalten.
  • Ein besonderer Vorteil der Erfindung liegt darin, dass bei dem Verfahren zur Erkennung unidirektionaler Fehler in Codewörtern x eines fehlererkennenden Codes C(n, k) mit n > 1 und k ≥ 2, wobei für einen nicht-systematischen Code C(n, k) der Parameter n die Wortlänge beschreibt und k die Anzahl der erkennbaren Bitfehler bestimmt, oder für einen systematischen Code C(n, k) der Parameter n die Anzahl der Informationsbits und k die Anzahl der Prüfbits bezeichnet, durch Verknüpfung von Codewörtern eine stufenweise Reduktion des Parameters k erfolgt, indem
    • (i) in einem ersten Schritt das zu prüfende Codewort x ∈ C(n, k) mit einem zweiten Codewort y desselben Codes C(n, k) verknüpft und auf ein drittes Codewort z eines fehlererkennenden Codes C(n, k – 1) abgebildet wird, im Falle k > 2 der erste Verfahrensschritt mit dem durch die Verknüpfung erzeugten, dritten Codewort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Verknüpfung erzeugte Wort ein Codewort eines fehlererkennenden Codes C(n, 1) ist und das im letzten Verfahrensschritt erzeugte Codewort z ∈ C(n, 1) mit einem Verfahren zur Prüfung von Parity-Codewörter geprüft und das Ergebnis dieses Verfahrens ausgegeben wird, oder
    • (ii) das zu prüfende Codewort x ∈ C(n, k) mit einem zweiten Codewort y desselben Codes C(n, k) verknüpft und auf ein drittes Codewort z eines fehlererkennenden Codes C'(n, k – 2) abgebildet wird und anschließend ein Verfahren zur Erkennung unidirektionaler Fehler in Wörtern z eines fehlererkennenden Codes C'(n, k – 2) gemäß (i) durchgeführt wird.
  • Zur Ausführung eines solchen Verfahrens können Checker mit einer sehr einfachen und regelmäßigen Struktur eingesetzt werden.
  • In einer speziellen Ausführungsform des erfindungsgemäßen Verfahrens, wobei der fehlererkennende Code C(n, k) ein Borden-Code B(n, 2k – 1) mit n > 1 und k ≥ 2 ist, n die Wortlänge und 2k – 1 die Maximalanzahl der durch den Code erkennbaren unidirektionalen Fehler angeben, ist vorgesehen, daß
    • • die Verknüpfung zweier Codewörter durch eine Gewichts-Mittelungsschaltung realisiert wird,
    • • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B(n, 2k – 1) durch die Gewichts-Mittelungsschaltung mit einem zweiten Codewort y desselben Codes B(n, 2k – 1) verknüpft und auf ein drittes Codewort z ∈ B(n, 2k–1 – 1) sowie ein Two-Rail-Signal d abgebildet wird, im Fall k > 2 der erste Verfahrensschritt mit dem jeweiligen durch die Gewichts-Mittelungsschaltung erzeugten Wort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Gewichts-Mittelungsschaltung erzeugte Wort ein Codewort aus B(n, 1) ist, das durch die vorangegangenen Verfahrensschritte zuletzt erzeugte Codewort z ∈ B(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  • In einer anderen Ausführungsform des erfindungsgemäßen Verfahrens, wobei der fehlererkennende Code C(n, k) ein Bose-Code B1(n, k) mit n > 1 und k ≥ 2 ist, n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, ist vorgesehen, daß
    • • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird,
    • • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B1(n, k) mit einem zweiten Codewort y desselben Codes B1(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Codes B1(n, k – 1) sowie ein Two-Rail-Signal d abgebildet wird, im Fall k > 2 der erste Verfahrensschritt mit dem jeweiligen durch die Verknüpfung erzeugten Wort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Mittelungsschaltung erzeugte Wort ein Codewort aus B1(n, 1) ist, das durch die vorangegangenen Verfahrensschritte zuletzt erzeugte Codewort z ∈ B1(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  • In einer weiteren speziellen Ausführungsform des erfindungsgemäßen Verfahrens, wobei der fehlererkennende Code C(n, k) ein Bose-Lin-Code B2(n, k) mit n > 1 und k ≥ 4 ist, n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, ist vorgesehen, daß
    • • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird,
    • • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B2(n, k) mit einem zweiten Codewort y desselben Codes B2(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Codes B1(n, k – 2) sowie ein Two-Rail-Signal d abgebildet wird, nachfolgend eine Ausführungsform des Verfahrens für einen Bose-Code B1(n, k – 2) mit z ∈ B1(n, k – 2) als zu prüfendem Codewort ausgeführt wird und das Ergebnissignal dieses Verfahrens zusammen mit dem im ersten Schritt erzeugten Signal d und den zwei am meisten signifikanten Prüfbits x(c)k–1 x(c)k–2 des zu prüfenden Codeworts x ∈ B2(n, k) mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  • Für den Fall, daß der fehlererkennende Code C(n, k) ein Bose-Lin-Code B2(n, k) mit n > 1 und k = 2 oder k = 3 ist, wobei n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, wird das erfindungsgemäße Verfahren dadurch ausgeführt, daß
    • • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird,
    • • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B2(n, k) mit einem zweiten Codewort y desselben Codes B2(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Lin-Codes B1(n, k – 1) sowie ein Two-Rail-Signal d abgebildet wird, falls k = 3, der erste Verfahrensschritt mit dem durch die Verknüpfung erzeugten Wort z als zu prüfendem Codewort wiederholt wird, das durch die vorangegangenen Verfahrensschritte zuletzt erzeugte Codewort z ∈ B2(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  • Ein Checker nach der Erfindung für einen fehlererkennenden Code C(n, k) ist charakterisiert durch: eine Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k) und eine Schaltungseinheit zum Prüfen von Wörtern aus C(n, k), wobei die Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) folgendes umfaßt:
    • • eine Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k),
    • • einen Two-Rail-Checker (TRC) und
    • • einen Checker für einen fehlererkennenden C(n, k – 1), falls k > 2, oder einen Parity-Checker, falls k = 2, oder
    • • eine Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k),
    • • eine Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k),
    • • einen Two-Rail-Checker (TRC) und
    • • einen Checker für einen fehlererkennenden Code C(n, k – 1), falls k > 2, oder einen Parity-Checker, falls k = 2,
    wobei
    der Checker für einen fehlererkennenden Code C(n, k – 1) einen gleichartigem Aufbau wie der ihn enthaltende C(n, k)-Checker oder die ihn enthaltende Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) aufweist oder als herkömmlicher Checker für einen fehlererkennenden Code C(n, k – 1) ausgebildet ist, und
    • • der Eingang der Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter mit dem Eingang des C(n, k)-Checkers und mit dem Ausgang der Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k) verbunden ist,
    • • der Ausgang der Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k) im Fall k > 2 mit dem Eingang des Checkers für den Code C(n, k – 1) oder im Fall k = 2 mit dem Eingang des Parity-Checkers verbunden ist,
    • • der Eingang des Two-Rail-Checkers (TRC) im Fall k > 2 mit dem Ausgang des Checkers für den Code C(n, k – 1) oder im Fall k = 2 mit dem Ausgang des Parity-Checkers verbunden ist,
    • • zusätzlich ein zweiter Ausgang der Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k) mit einem Eingang des Two-Rail-Checkers (TRC) verbunden ist,
    • • im Fall, daß der Checker für einen fehlererkennenden Code C(n, k – 1) einen gleichartigem Aufbau wie die ihn enthaltende Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) aufweist, der zweite Eingang des Checkers für einen fehlererkennenden Code C(n, k – 1) mit dem Ausgang einer in einem übergeordneten Code-Checker enthaltenen Schaltungseinheit zur Bereitstellung von Codewörtern verbunden ist und
    • • der Ausgang des Two-Rail-Checkers (TRC) den Ausgang des Checkers für den Code C(n, k) bildet.
  • Insbesondere ist ein Checker für einen Borden-Code B(n, 2k – 1) dadurch gekennzeichnet, daß
    • • die Schaltungseinheit zur Bereitstellung Codewörtern aus C(n, k) ein n-Bit Register R oder ein n-Bit Ringzähler RZ ist,
    • • die Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter eine Gewichts-Mittelungsschaltung GMS ist,
    und daß bei Verwendung eines n-Bit Registers R der Eingang dieses Registers mit dem Eingang des Checkers für den Code C(n, k) verbunden ist.
  • Ein Checker für einen Bose-Code B1(n, k) zeichnet sich dadurch aus, daß
    • • die Schaltungseinheit zur Bereitstellung Codewörtern aus C(n, k) ein n + k-Bit Register R oder ein Codewort-Generator CWG für einen Bose-Code B1(n, k) ist,
    • • die Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter eine Mitte- lungsschaltung MS ist,
    und daß bei Verwendung eines n + k-Bit Registers R der Eingang dieses Registers mit dem Eingang des Checkers für den Code C(n, k) verbunden ist.
  • Ein Checker für einen Bose-Lin-Code B2(n, k + 2) ist vorteilhafterweise so aufgebaut, daß ein Checker für einen Bose-Code B1(n, k) zusätzlich mit
    • • einer Schaltungseinheit zur Bereitstellung von Wörtern eines Bose-Lin-Codes B2(n, k + 2),
    • • einer Mittelungsschaltung MS zur Verknüpfung zweier Wörter eines Bose-Lin-Codes B2(n, k + 2) und
    • • einem 6-Bit-Two-Rail-Checker TRC
    kombiniert ist, wobei der Eingang des Checkers für Bose-Code B1(n, k) mit dem Ausgang der Mittelungsschaltung MS und der Ausgang des Checkers für den Bose-Code B1(n, k) mit dem Eingang des Two-Rail-Checkers TRC verbunden ist und der Eingang der Mittelungsschaltung MS mit dem Ausgang der Schaltungseinheit zur Bereitstellung von Wörtern eines Bose-Lin-Codes B2(n, k + 2) verbunden ist und zusätzlich ein zweiter Ausgang der Mittelungsschaltung MS mit einem Eingang des Two-Rail-Checkers TRC verbunden ist.
  • Eine bevorzugte Ausführungsform des erfindungsgemäßen Checkers sieht vor, daß der Checker ein n-Bit-Register R mit Reset aufweist. Gegebenenfalls kann es sich jedoch als sinnvoll erweisen, daß der Checker ein n-Bit-Register R ohne Reset aufweist.
  • Ein Codewort-Generator CWG nach der Erfindung ist gekennzeichnet durch:
    • • ein n-Bit linear rückgekoppeltes Schieberegister LFSR maximaler Länge mit externer Rückkopplungslogik, wobei die Rückkopplungslogik verdoppelt ist derart, daß der Ausgang der ersten Kopie der Rückkopplungslogik mit dem Schieberegister-Eingang und der Ausgang der zweiten Kopie der Rückkopplungslogik mit dem Eingang eines XOR-Gatters verbunden ist,
    • • ein XOR-Gatter mit zwei Eingängen und einem Ausgang, wobei ein Eingang seine Werte vom Ausgang der zweiten Kopie der LFSR-Rückkopplungslogik bekommt und der andere Eingang seine Werte vom seriellen Ausgang des LFSR erhält,
    • • einen k-Bit modulo 2k Aufwärts-/Abwärtszähler mit zwei Eingängen und k oder k + 1 Ausgängen, wobei der Count-Enable-Eingang mit dem Ausgang des XOR-Gatters und der up/down-Eingang mit dem Ausgang des Schieberegisters verbunden ist und, bei Vorhandensein, der k + 1-te Ausgang der Ausgabe des invertierten am meisten signifikanten Zählbits dient.
  • Eine n + k-Bit Mittelungsschaltung MS nach der Erfindung besteht aus:
    • • einer aus n Volladdierern VA gebildeten Gewichts-Mittelungsschaltung mit n Eingängen für einen Operanden x(i), n Eingängen für einen Operanden y(i), einem Übertrags-Eingang und n Ausgängen für das Ergebnis z(i), wobei der Summen-Ausgang jedes Volladdierers VA mit dem Übertrags-Eingang des nachfolgenden Volladdierers VA verbunden ist,
    • • einem k-Bit Addierer mit Übertragsweiterleitung (Ripple-Carry-Addierer) mit k Eingängen für einen Operanden x(c), k Eingängen für einen Operanden y(c), einem Übertrags-Eingang, der mit dem Summen-Ausgang des letzten Volladdierers VA der Gewichts-Mittelungsschaltung verbunden ist, k – 1 Ausgängen für das Ergebnis z(c) und einem Ausgang d1,
    • • zwei D-Flip-Flops D-FF derart, daß der Ausgang d1 des Ripple-Carry-Addierers mit dem Eingang des ersten D-Flip-Flops, der Ausgang d0 des ersten D-Flip-Flops mit dem Eingang des zweiten D-Flip-Flops und der Ausgang des zweiten D-Flip-Flops mit dem Übertrags-Eingang der Gewichts-Mittelungsschaltung verbunden ist.
  • Eine andere Realisierungsform einer n + k-Bit Mittelungsschaltung MS setzt sich zusammen aus:
    • • einer ersten Schaltung, die s Eingänge für s Bits eines Operanden x(i), s Eingänge für s Bits eines Operanden y(i), einen Übertrags-Eingang c(i)0 , s Ausgänge für s Bits eines Ergebnisses z(i), 1 ≤ s ≤ n, und einen Übertrags-Ausgang d0 aufweist, und die aus s Volladdierern VA derart besteht, daß der Summen-Ausgang jedes Volladdierers VA mit dem Übertrags-Eingang des nachfolgenden Volladdierers VA verbunden ist, die weiterhin ein D-Flip-Flop D-FF umfaßt, dessen Ausgang mit dem Eingang c(i)0 und einem Inverter verbunden ist und der Ausgang des Inverters mit dem Eingang des D-Flip-Flops verbunden ist,
    • • einer zweiten Schaltung, die k Eingänge für einen Operanden x(c) und n – s Eingänge für x(i), k Eingänge für einen Operanden y(c) und n – s Eingänge für y(i), einen Übertrags-Eingang c(i)s , k – 1 Ausgänge für ein Ergebnis z(c) und n – s Ausgänge für z(i), 1 ≤ s ≤ n, und einen Übertrags-Ausgang d1 aufweist, und welche aus n – s + k Volladdierern VA besteht, wobei die ersten n – s Volladdierer derart miteinander verbunden sind, daß der Summen-Ausgang mit dem Übertrags-Eingang des nachfolgenden Volladdierers VA verbunden ist, und die anderen k Volladdierer einen k-Bit Ripple-Carry-Addierer bilden, und die zweite Schaltung weiterhin ein D-Flip-Flop D-FF umfaßt, dessen Ausgang mit dem Eingang c(i)s und einem Inverter verbunden ist und der Ausgang des Inverters mit dem Eingang des D-Flip-Flops verbunden ist.
  • Eine Anordnung nach der Erfindung ist vorteilhafterweise so eingerichtet, daß sie mindestens ein Chip und/oder einen Prozessor umfaßt, der (die) derart eingerichtet ist (sind), daß ein Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines fehlererkennenden Codes C(n, k) gemäß einem der Ansprüche 1 bis 10 durchführbar ist.
  • Die Erfindung soll nachstehend anhand von mehreren zumindest teilweise in den Figuren dargestellten Ausführungsbeispielen näher erläutert werden.
  • Es zeigen:
  • 1 die Architektur eines eingebetteten Checkers für Borden-Code B(n, 2k – 1),
  • 2 die Struktur einer n-Bit Gewichts-Mittelungsschaltung GMS,
  • 3 einen Borden-Code-Checker in dem das Register R ersetzt ist durch einen Ringzähler RZ,
  • 4 die Struktur einer n-Bit Gewichts-Mittelungsschaltung GMS, die aus zwei unabhängigen Teilschaltungen besteht,
  • 5 die Architektur eines eingebetteten Checkers für Bose-Code B1(n, k),
  • 6 die Struktur einer n + k-Bit Mittelungsschaltung MS,
  • 7 die Struktur eines Volladdierers VA, der für die k-Bit Prüfsymbol-Schaltung der Mittelungsschaltung MS verwendet wird,
  • 8 die Architektur eines eingebetteten Checkers für Bose-Lin-Code B2(n, k),
  • 9 einen Bose-Lin-/Bose-Codewort-Generator CWG,
  • 10 einen Bose-Code-Checker mit Codewort-Generator CWG,
  • 11 einen Bose-Lin Code-Checker mit Codewort-Generator CWG,
  • 12 eine n + k-Bit Mittelungsschaltung die aus einer einzigen zusammenhängenden Schaltung besteht,
  • 13 eine Mittelungsschaltung, welche in zwei unabhängige Teilschaltungen aufgespalten ist, von denen eine auf s Informationsbits operiert und die andere auf n – s Informationsbits und k Prüfbits.
  • Die nachfolgend beschriebenen Ausführungsbeispiele sollen einen neuen Ansatz erläutern zum Entwurf von Checkern für Borden-Codes B(n, t) mit t = 2k – 1, Bose-Codes B1(n, k), und Bose-Lin-Codes B2(n, k). Der Checker-Entwurf für alle drei Code-Typen basiert auf der Mittelung aufeinanderfolgender Codewörter. Das Ergebnis der Mittelungs-Operation ist ein Wort desselben Code-Typs, jedoch für k – 1, welches von einem Checker für denselben Code-Typ in einer unteren Hierarchie-Ebene geprüft wird. Für k = 1 ist dies ein einfacher Parity-Checker. Die Anzahl der Checker-Ebenen ist ⌈log2k⌉. Die Checker haben eine sehr einfache und regelmäßige Struktur. Die Checker sind selbsttestend (mit Ausnahme bezüglich Fehler auf Taktleitungen, die separat geprüft werden müssen) unter folgenden sehr schwachen Voraussetzungen: keine Checker-Eingabe-Leitung erhält ein konstantes Signal und die Codewörter treten in zufälliger Abfolge auf. Um selbsttestend zu sein hängt die Checker-Struktur daher nicht von der Menge der Codewörter ab, die von der überwachten Schaltung zur Verfügung gestellt wird. Alle drei Checker-Typen können mit 3 oder weniger Codewörtern getestet werden.
  • t-UED- und BUED-Codes
  • Ein Borden-Code B(n, t) ist die Menge aller Codewörter der Länge n deren Gewicht kongruent zu in ⌊n/2⌋ mod (t + 1) ist. B(n, t) ist die Vereinigung aller m-aus-n-Codes mit m ≡ in ⌊n/2⌋ mod (t + 1). B(n, t) ist der optimale nicht-systematische t-UED-Code (J.M. Borden, "Optimal Asymmetric Error Detecting Codes," Information and Control, Vol. 53, April 1982, pp. 66-73). Für t = 1 ist B(n, t) ein gerader/ungerader Parity-Code wenn in ⌊n/2⌋ gerade/ungerade ist. Jede Bitpermutation, speziell jede zyklische Verschiebung eines Borden-Codeworts ist wiederum ein Borden-Codewort. Wenn x ∈ B(n, 2k – 1) dann folgt x ∈ B(n, 2k–1 – 1).
  • Bose's BUED-Code B1(n, k) (B. Bose, "Burst Unidirectional Error-Detecting Codes," IEEE Transactions on Computers, Vol. C-35, No. 4, April 1986, pp. 350-353) ist das systematische Gegenstück zum Borden-Code vom mathematischen Gesichtspunkt her. Ein Bose-Codewort hat n Informationsbits und k Prüfbits und kann unidirektionale Bündelfehler bis zu einer Länge von 2k–1 erkennen. Ein Codewort ist wie folgt aufgebaut. Sei x(i) = (x(i)n–1 , x(i)n–2 , ..., x(i)0 ) der n-Bit Informationsbit-Vektor und x(c) = (x(c)k–1 , x(c)k–2 , ..., x(i)0 ) das k-Bit Prüfsymbol. Das Prüfsymbol x(c) ist gegeben durch x(c) = k0 mod 2k, wobei k0 die Anzahl der Nullen im Informationsbit-Vektor bezeichnet. Das Prüfsymbol wird jedoch nicht einfach an den Informationsbit-Vektor angehängt, sondern die Bits des Informations- und Prüfteils sind wie folgt vermischt:
    Figure 00130001
  • Für den Checker ist die Reihenfolge der Codewort-Bits nicht von Interesse, so daß der Prüfteil vom Informationsteil getrennt betrachtet werden kann. Für k = 1 ist der Bose-Code ein gerader/ungerader Parity-Code wenn n gerade/ungerade ist. Jede Permutation der Informationsbits eines Bose-Codeworts führt wieder zu einem Wort desselben Bose-Codes. Wenn x(i)n–1 ... x(i)0 x(c)k–1 ... x(c)0 ∈ B1(n, k) dann folgt x(i)n–1 ... x(i)0 x(c)k–2 ... x(c)0 ∈ B1(n, k – 1).
  • Bose-Lin-Codes B2(n, k) (B. Bose und D.J. Lin, "Systematic Unidirectional Error-Detecting Codes," IEEE Transactions on Computers, Vol. C-34, No. 11, November 1985, pp. 1026-1032) sind ähnlich wie Bose-Codes aufgebaut. Sie werden jedoch als t-UED-Codes eingesetzt. Ein Bose-Lin-Codewort hat n Informationsbits und k Prüfbits. Für k = 2 ist das Prüfsymbol x(c) = k0 mod 4 oder x(c) = 3 – (k1 mod 4), wobei k0 und k1 die Anzahl der Nullen bzw. Einsen im Informationsbit-Vektor bezeichnen, und der Code kann Doppelfehler erkennen. Für k = 3 Prüfbits ist das Prüfsymbol x(c) = k0 mod 8 oder x(c) = 7 – (k1 mod 8) und der Code ist in der Lage, 3-fach-Fehler zu erkennen. Bitfehler bis zu t = 6 werden mit k = 4 Prüfbits erkannt. Das Prüfsymbol ist x(c) = (k0 mod 8) + 4. Für k ≥ 5 hat das Prüfsymbol die Form x(c) = (k0 mod 2k–1) + 2k–2. Somit ist für k ≤ 3 die Code-Konstruktion identisch zur Konstruktion eines Bose-Codes, wenn Nullen gezählt werden und die Vermischung von Informations- und Prüfteil außer acht gelassen wird.
  • Eingebettete Borden-Code-Checker
  • Die Architektur des Checkers für den Borden-Code B(n, 2k – 1) wird in 1 gezeigt. Er besteht aus einem n-Bit Register R, einer n-Bit Gewichts-Mittelungsschaltung GMS, einem Checker für den Borden-Code B(n, 2k–1 – 1) und einem 4-Bit Two-Rail-Checker TRC. Der Checker arbeitet wie folgt. Zum Zeitpunkt t ist x(t) das n-Bit Wort, welches der Checker von der überwachten Schaltung erhält, x(t) ∈ B(n, 2k – 1). Das n-Bit Wort x(t – 1) im Register R ist die Checker-Eingabe aus dem vorangegangenen Takt. Beide Wörter, x(t) und x(t – 1) sind die Eingaben der Gewichts-Mittelungsschaltung GMS, welche z = x(t)∘x(t – 1) berechnet, z ∈ B(n, 2k–1 – 1). z ist die Eingabe eines Checkers für Borden-Code B(n, 2k–1 – 1), welcher dieselbe Struktur hat, die in 1 gezeigt wird. Für B(n, 1) ist dieser Checker ein Parity-Checker. Die Ausgabe dieses Checkers und die Ausgabe d = d0d1 der GMS werden in den Two-Rail-Checker TRC geführt.
  • Es wird angenommen, daß x(t – 1) ein Codewort ist, anderenfalls hätte der Checker im Takt t – 1 einen Fehler signalisieren müssen. Wenn x(t) ein Wort aus B(n, 2k – 1) ist, dann ist z ein Word aus B(n, 2k–1 – 1). Sowohl die Ausgabe des Checkers für B(n, 2k–1 – 1) als auch die Ausgabe d = d0d1 der Gewichts-Mittelungsschaltung GMS sind Two-Rail-Signale, was vom Two-Rail-Checker TRC bestätigt wird. Wenn x(t) nicht zu B(n, 2k – 1) gehört dann ist z
    Figure 00140001
    B(n, 2k–1 – 1) oder/und d ist kein Two-Rail-Signal. Der Two-Rail-Checker TRC erhält ein Nicht-Two-Rail-Codewort, und ein Fehler wird signalisiert.
  • Gewichts-Mittelungsschaltungen wurden beschrieben in A.P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," Proc. IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369. Eine n-Bit Gewichts-Mittelungsschaltung GMS wird in 2 gezeigt. Sie besteht aus n Volladdierern VA und zwei D-Flip-Flops. Die Volladdierer sind nicht wie gewöhnlich miteinander verbunden. Die Rollen von Summen-Bit und Übertrags-Ausgabe-Bit sind vertauscht, d.h. der Summen-Ausgang des j-ten Volladdierers ist mit dem Übertrags-Eingang des j + 1-ten Volladdierers verbunden, und das Übertrags-Ausgabe-Bit des j-ten Volladdierers ist das j-te Bit des Ergebnisses der Operation. Die Eingaben der GMS sind zwei n-Bit Wörter x und y. Die Ausgaben sind das n-Bit Wort z und die Bits d0 und d1. Mit w(x) sei das Gewicht eines Wortes x bezeichnet. Die Signale in der GMS erfüllen folgende Gleichung:
    Figure 00150001
  • Das Summen-Bit sn–1 des Volladdierers n – 1 ist mit dem Eingang des ersten D-Flip-Flops verbunden (die Numerierung der Addierer richtet sich nach dem Index j der Bits xj bzw. yj). Es ist gleichzeitig der Ausgang d1 der Gewichts-Mittelungsschaltung. Der Ausgang des ersten D-Flip-Flops ist mit dem Eingang des zweiten D-Flip-Flops verbunden. Er ist gleichzeitig der Ausgang d0 der Gewichts-Mittelungsschaltung. Der Ausgang des zweiten D-Flip-Flops ist mit dem Übertrags-Eingang des Volladdierers 0 verbunden. Die beiden D-Flip-Flops werden mit komplementären Werten initialisiert.
  • Die Anwendung der Gewichts-Mittelungs-Operation auf Wörter eines Codes B(n, 2k – 1) führt zu Wörtern eines Codes B(n, 2k–1 – 1). Dies kann wie folgt gezeigt werden. Seien x, y ∈ B(n, 2k – 1). Dann gilt w(x) ≡ in ⌊n/2⌋ mod 2k und w(y) ≡ ⌊n/2⌋ mod 2k. Somit sind w(x) – ⌊n/2⌋ und w(y) – ⌊n/2⌋ beides Vielfache von 2k und es gilt (w(x) + w(y)) – (⌊n/2⌋ + ⌊n/2⌋) = r∙2k für irgendeine ganze Zahl r. Division durch 2 führt zu
    Figure 00150002
  • Wegen x, y ∈ B(n, 2k – 1) haben x und y immer dieselbe Parität und es gilt cn – c0 = 0 und d0d1 ∈ {01, 10}. Wenn x ∈ B(n, 2k – 1) und y
    Figure 00150003
    B(n, 2k – 1) dann ist entweder z
    Figure 00150004
    B(n, 2k–1 – 1) oder d0d1
    Figure 00150005
    {01, 10}, oder beides gilt.
  • Jeder Volladdierer in der Gewichts-Mittelungsschaltung GMS erhält alle möglichen Eingabe-Muster, vorausgesetzt, daß keine Checker-Eingangsleitung einen konstanten Wert erhält und die Codewörter in zufälliger Reihenfolge erscheinen. Dies kann auf folgende Weise gezeigt werden. Es ist für jede Bitposition j zu zeigen, daß cj, xj, yj jede der 8 möglichen Wertekombinationen annehmen können. Da keine Checker-Eingangsleitung einen konstanten Wert erhält, enthält die Menge der verfügbaren Codewörter für jede Bitposition j mindestens zwei Wörter x' und x'' mit x'j = 0 und x''j = 1. Da die Codewörter in zufälliger Reihenfolge auftauchen, können zwei aufeinander folgende Codewörter x = x' (das aktuelle am Checkereingang anliegende Wort) und y = x'' (das vorangegangene, jetzt im Register R enthaltene Wort) jede der vier Kombinationen an der Bitposition j annehmen. Ferner hängt bei fixierten x und y der Wert jedes cj nur von c0 ab, d.h. eine Anderung von c0 bewirk eine Änderung jedes cj. Da c0 jeden Takt wechselt und die Codewörter in zufälliger Reihenfolge und unabhängig vom Wert von c0 auftreten, wird jeder Wert von cj jeder Kombination von xj und yj begegnen, und somit treten alle 8 Wertekombinationen auf.
  • Ein Checker für Borden-Code B(n, 2k – 1) entsprechend 1 ist selbsttestend bezüglich jedes einfachen Haftfehlers, vorausgesetzt, daß keine Checker-Eingangsleitung einen konstanten Wert erhält und die Codewörter in zufälliger Reihenfolge erscheinen. Diese Aussage kann wie folgt bewiesen werden. Weil keine Checker-Eingangsleitung ein konstantes Signal erhält, bekommt jede einzelne Registerzelle beide Werte, 0 und 1. Ein einfacher Haftfehler führt zu einem 1-Bit-Fehler am Registerausgang, so daß x(t – 1) ein Nichtcodewort ist, was erkannt wird (auf dieselbe Weise wie eine Nichtcodewort-Eingabe x(t)). Ein einfacher Fehler in der Gewichts-Mittelungsschaltung GMS befindet sich entweder in einem der beiden D-Flip-Flops oder in einem der, Volladdierer VA. Da x = x(t) und y = x(t – 1) die gleiche Parität besitzen, pflanzt sich ein Fehler des linken D-Flip-Flops zum Ausgang d1 fort (ohne das Gewicht von z zu beeinflussen). Ein Fehler im rechten D-Flip-Flop ändert den Wert von d0. In beiden Fällen ist d0d1 kein Two-Rail-Signal, was vom Two-Rail-Checker TRC erkannt wird. Ein einfacher Fehler in einem Volladdierer VA beeinflußt den Summen-Ausgang oder den Übertrags-Ausgang oder beide (es sei daran erinnert, daß jeder Volladdierer VA vollständig getestet wird). Ein Summenfehler pflanzt sich nach d1 fort (und kann zusätzlich nachfolgende Übertrags-Ausgangsbits beeinflussen). Ein Fehler am Übertrags-Ausgang führt zu einem 1-Bit-Fehler im Wort z. Somit wird ein einfacher Haftfehler in einem Volladdierer VA durch den Two-Rail-Checker TRC erkannt weil entweder die GMS oder der Checker für Borden-Code B(n, 2k–1 – 1) oder beide ein Nicht-Two-Rail-Signal produzieren. Der B(n, 2k–1 – 1) Borden-Code-Checker ist selbsttestend für k ≥ 3, da die obigen Anforderungen erfüllt sind – keine Eingabeleitung zi nimmt einen konstanten Wert an, da jeder Volladdierer VA alle 8 Wertekombinationen erhält, und die Codewörter z treten zufällig auf weil die Codewörter x zufällig auftreten. (Obwohl diese Folge von Codewörtern weniger zufällig ist – da wegen der Mittelung nicht jedes Codewort direkt jedem anderen Codewort (aus der Menge der verfügbaren Codewörter) folgen kann, ist die Bedingung, daß in zwei aufeinander folgenden Codewörtern x(t) und x(t – 1) alle vier Bitkombinationen an jeder Position j auftreten können, immer erfüllt.) Für k = 1 ist der Checker für B(n, 2k – 1) ein Parity-Checker. Eingebettete Parity-Checker, die selbsttestend unter den obigen Bedingungen sind, können gefunden werden in S. Tarnick, "Embedded Parity and Two-Rail TSC Checkers with Error-Memorizing Capabilty," VLSI Design, Vol. 5, No. 4, 1998, pp. 347-356. Das von der GMS kommende Two-Rail-Signal d0d1 wechselt periodisch, (d0d1 = ..., 01, 10, 01, 10, ...), und das Two-Rail-Signal vom B(n, 2k–1 – 1) Borden-Code-Checker verhält sich zufällig (da die Codewörter x in zufälliger Folge auftreten). Somit erhält der Two-Rail-Checker TRC jede der 4 Signalkombinationen, d.h. alle Codewörter.
  • Man sieht, daß ein Borden-Code-Checker mit der vorgeschlagenen Architektur selbsttestend ist unter sehr schwachen Voraussetzungen, die praktisch immer erfüllt sind. Dies macht die Checker-Konstruktion unabhängig von der Menge der Codewörter, die von der überwachten Schaltung bereitgestellt werden. Für Borden-Codes B(n, t), bei denen komplementäre Wörter zum Code gehören, kann der Checker mit nur zwei Codewörtern getestet werden. Alle Borden-Codes mit geradem n besitzen diese Eigenschaft. Bei Borden-Codes mit ungeradem n kann der Checker mit nur 3 Codewörtern getestet werden. (Man nehme ein beliebiges Codewort x' mit positivem Gewicht. Das komplementäre Wort x'', bei dem ein Bit x''j mit x''j = 1 von 1 nach 0 geändert wurde, ist ebenfalls ein Codewort. Und jedes Codewort x''' mit x'''j = 1 kann als dritter Testvektor verwendet werden.)
  • Der Checker ist nicht nur selbsttestend bezüglich einfacher Haftfehler sondern auch bezüglich jedes komplexen Fehlers, der sich innerhalb einer Volladdierer-Zelle VA der Gewichts-Mittelungsschaltung GMS befindet. Desweitern gibt es im Gegensatz zu den Checker-Realisierungen in A.P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," Proc. IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369, die ebenfalls das Prinzip der Gewichtsmittelung nutzen, keine Verzögerung bei der Fehlersignalisierung, d.h. ein Bitfehler wird sofort angezeigt, wenn er das erste Mal auftaucht.
  • Der Borden-Code-Checker mit der in 1 gezeigten Struktur ist nicht Code-trennend. Er verhält sich korrekt bis das erste Nichtcodewort auftaucht. Dieses Nichtcodewort wird angezeigt. Danach ist das Verhalten des Checkers undefiniert bis zu dem Takt, der dem nächsten Codewort folgt. Der Checker kann jedoch in Systemen verwendet werden, bei denen das gesamte System in einen fehlersicheren Zustand überführt wird, nachdem der erste Bitfehler (Nichtcodewort) erkannt wurde. In diesem Fall ist das Checkerverhalten nach der Erkennung des Fehlers nicht mehr von Interesse.
  • In anderen Anwendungen, z.B. wenn ARQ-(Automatic Repeat Request) Verfahren verwendet werden, ist es wichtig, daß der Checker Code-trennend ohne Einschränkung ist. Dies kann erreicht werden, indem das Fehlersignal des Checkers für ein Reset aller Register R verwendet wird. In diesem Fall wird nicht das jeweilige aktuelle (fehlerhafte) Wort x(t) in das entsprechende Register R geladen, sondern R wird mit einem korrekten Borden-Codewort neu initialisiert. Eine zweite Möglichkeit, den Checker Code-trennend zu machen, besteht darin, jedes Register R durch einen Ringzähler (zirkulierendes Schieberegister mit Rückkopplungspolynom xn + 1) zu ersetzen, wie in 3 dargestellt.
  • Der Ringzähler (RZ) wird mit einem Borden-Codewort initialisiert, welches mindestens eine 0 und mindestens eine 1 enthält. Da eine zyklische Verschiebung eines Borden-Codeworts wiederum ein Borden-Codewort ist, erzeugt der Ringzähler, je nach Initialisierung, zwischen 2 und n verschiedene Borden-Codewörter. Auf diese Weise werden die Probleme bezüglich der Code-trennenden Eigenschaft vermieden.
  • Wenn der Ringzähler RZ anstelle des Registers R verwendet wird, ist der in 3 dargestellte Checker ebenfalls selbsttestend. Der RZ ist selbsttestend bezüglich einfacher Haftfehler. Jedes RZ-Flip-Flop erhält beide Werte, 0 und 1, an seinem Eingang und ein Flip-Flop-Fehler bewirkt, daß der RZ Nichtcodewörter generiert. Die Bedingungen für den Test der Gewichts-Mittelungsschaltung GMS sind ebenfalls erfüllt. Zusätzlich wird die Zufälligkeit erhöht in dem Sinne, daß jedes Codewort x, das von der überwachten Schaltung bereitgestellt wird, jedem Codewort y, das vom RZ erzeugt wird, ohne Einschränkung begegnen kann.
  • Der Borden-Code-Checker, der entsprechend 3 entworfen ist, ist eine Code-trennende Schaltung. Diese Eigenschaft kann gezeigt werden, indem nachgewiesen wird, daß alle Komponenten des Checkers Code-trennend sind. Betrachtet sei der Code B'(n, 2k–1 – 1), der aus den Wörtern z' = z0, z1, ..., zn–1, d0, d1 besteht, wobei z0, z1, ..., zn–1 ∈ B(n, 2k–1 – 1) und d0d1 ∈ {01, 10}, und es wird angenommen, daß y immer ein Codewort ist, y ∈ B(n, 2k – 1). Dann bildet die Gewichts-Mittelungsschaltung GMS Codewörter x ∈ B(n, 2k – 1) auf Codewörter z' ∈ B'(n, 2k–1 – 1) ab und Nichtcodewörter x
    Figure 00180001
    B(n, 2k – 1) auf Nichtcodewörter z'
    Figure 00180002
    B'(n, 2k–1 – 1). Somit ist die Gewichts-Mittelungsschaltung GMS Codetrennend. Der Two-Rail-Checker TRC ist Code-trennend weil er entsprechend ausgewählt wurde, diese Eigenschaft zu besitzen. Zum Nachweis der Code-trennenden Eigenschaft des Checkers für Borden-Code B(n, 2k – 1) verbleibt zu zeigen, daß der Checker für Borden-Code B(n, 2k–1 – 1) Code-trennend ist. Dies kann induktiv fortgesetzt werden bis k = 1. Für k = 1 ist der Checker für Borden-Code B(n, 2k – 1) ein Parity-Checker, der so ausgewählt wurde, daß er die Code-trennende Eigenschaft besitzt.
  • Da x ∈ B(n, 2k–1 – 1) wenn x ∈ B(n, 2k – 1) gilt, kann ein und derselbe Ringzähler RZ auch für die B(n, 2k – 1) Borden-Code-Checker der unteren Hierachie-Ebenen für k > 1 verwendet werden. Daher wird nur ein derartiger RZ benötigt.
  • Für B(n, 2k – 1) mit k = 1, welches ein Parity-Code ist, kann die Gewichts-Mittelungsschaltung GMS als Code-Checker verwendet werden. Das n-Bit Mittelungs-Ergebnis z wird ignoriert und die Ausgabe d0d1 wird als das Two-Rail-kodierte Fehlersignal verwendet. Wird eine GMS als Parity-Checker eingesetzt, so kann derselbe RZ auch für den B(n, 2k – 1) Borden-Code-Checker mit k = 1 verwendet werden.
  • Wird für jede Borden-Code-Checker-Hierarchieebene vom RZ dasselbe Borden-Codewort y zum selben Zeitpunkt bereitgestellt, so werden bei einer großen Anzahl von Ebenen mit zunehmender Hierarchietiefe die Gewichtsmittelungs-Ergebnisse z gegen y konvergieren (siehe A.P. Stroele und S. Tarnick, "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error-Detecting Codes," Proc. IEEE VLSI Test Symposium, Dana Point, CA, April 1999, pp. 361-369, Lemma 4). Damit würden die Anforderungen an die Zufälligkeit der Codewörter x mit zunehmender Hierarchietiefe immer weniger erfüllt werden. Um dies zu verhindern ist folgendes zu beachten. Wird für jede Hierachieebene ein separater RZ verwendet, so sind alle RZs mit möglichst verschiedenen Borden-Codewörtern zu initialisieren. Wird für alle Hierarchieebenen derselbe RZ verwendet, so sind für jede Ebene die Ausgangsleitungen des RZ geeignet zu permutieren (da durch Bitpermutationen das Gewicht eines Wortes nicht verändert wird, sind permutierte Borden-Codewörter wiederum Wörter desselben Borden-Codes).
  • Auch im Fall, wo Register R anstelle von Ringzählern RZ verwendet werden, kann ein und dasselbe Register R auch für alle Checker der unteren Hierarchieebenen verwendet werden, wobei die Ausgabeleitungen geeignet zu permutieren sind.
  • Die n-Bit Gewichts-Mittelungsschaltung GMS, welche in 2 gezeigt wird, kann in zwei unabhängige Teile aufgespalten werden, eine s-Bit Schaltung und eine n – s-Bit Schaltung, wie in 4 illustriert wird. Jede der beiden Schaltungen besteht aus einem D-Flip-Flop, einem Inverter und n' Volladdierern, die wie oben beschrieben miteinander verbunden sind, wobei n' entweder s oder n – s ist. Der Ausgang des D-Flip-Flops ist mit dem Übertrags-Eingang des ersten Volladdierers verbunden. Er ist auch mit einem Inverter verbunden, dessen Ausgang mit dem Eingang des D-Flip-Flops verbunden ist. Beide D-Flip-Flops werden mit komplementären Werten initialisiert. Wenn die zwei Eingaben x und y Wörter des Borden-Codes B1(n, 2k – 1) sind, dann ist z Wort des Borden-Codes B1(n, 2k–1 – 1) und d0 und d1 nehmen komplementäre Werte an. Wenn entweder x oder y ein Nichtcodewort ist, dann ist z ein Nichtcodewort oder/und d0 und d1 sind nicht komplementär. s kann jeden Wert annehmen, 1 ≤ s < n, aber s sollte vorzugsweise ⌊n/2⌋ oder ⌈n/2⌉ sein. Der Vorteil der Verwendung dieser modifizierten GMS ist eine höhere Berechnungsgeschwindigkeit, da das Übertrags-Eingabesignal höchstens max{s, n – s} Volladdierer durchqueren muß.
  • In einer Gewichts-Mittelungsschaltung entsprechend 2 tauschen die komplementären Signale d0 und d1 in jedem Takt ihre Werte, vorausgesetzt daß x und y Codewörter sind. Somit produzieren die entsprechenden Ausgänge eine periodische Folge von Nullen und Einsen, d0 = ..., 0,1,0,1, ... und d1 = ..., 1,0,1,0, ... In zwei GMS, in welchen die D-Flip-Flop-Paare unterschiedlich initialisiert werden, nehmen die entsprechenden Signale d1 komplementäre Werte an und ändern diese Werte jeden Takt. Alternativ dazu, wenn die D-Flip-Flop-Paare der beiden GMS identisch initialisiert werden, dann haben d1 der einen GMS und der invertierte Wert von d1 der anderen GMS obige Eigenschaft. (Es sei bemerkt daß es im letzteren Fall nicht ratsam ist d0 anstelle des invertierten Wertes von d1 zu verwenden, da dann das Fehlersignal der entsprechenden GMS um einen Takt verzögert ist.) Somit erzeugt ein Paar von GMS, bei denen nur die Ausgänge d1 betrachtet werden, ein sich periodisch änderndes Two-Rail-Signal. Daher kann eine gerade Anzahl von Gewichts-Mittelungsschaltungen in einem Borden-Code-Checker verwendet werden, um Paare zu bilden, bei denen jedes ein einzelnes Two-Rail-Signal erzeugt. Der Vorteil dieser Modifikation ist, daß die Gesamtanzahl der Two-Rail-Signale reduziert wird und damit die Größe bzw. die Anzahl von Two-Rail-Checkern. Die GMS bleiben selbsttestend, wenn eines der beiden D-Flip-Flops durch einen Inverter ersetzt wird (dies ist nicht der Fall, wenn beide Ausgänge d0 und d1 betrachtet werden).
  • Eingebettete Bose-Code-Checker
  • Die vorgeschlagene allgemeine Struktur des Checkers für Bose-Code B1(n, k) wird in 5 veranschaulicht. Sie ist sehr ähnlich zur vorgeschlagenen Borden-Code-Checker-Architektur und arbeitet auch ähnlich. Der Bose-Code Checker besteht aus einem n + k-Bit Register R, einer n + k-Bit Mittelungsschaltung MS, einem Checker für Bose-Code B1(n, k – 1) und einem 4-Bit Two-Rail-Checker TRC. Der Checker arbeitet wie folgt. Zum Zeitpunkt t ist x(t) das n + k-Bit Wort, welches der Checker von der überwachten Schaltung erhält, x(t) ∈ B1(n, k). Das n + k-Bit Wort x(t – 1) im Register R ist die Checker-Eingabe vom vorangegangenem Takt. Beide Wörter x(t) und x(t – 1) sind die Eingaben der Mittelungsschaltung MS, welche z = x(t)∘x(t – 1), z ∈ B1(n, k – 1), berechnet. z ist dann die Eingabe eines Checkers für Bose-Code B1(n, k – 1), der dieselbe Struktur hat, wie sie in 5 gezeigt wird. Für B1(n, 1) ist dieser Checker ein Parity-Checker. Die Ausgabe dieses Checkers und die Ausgabe d = d0d1 der Mittelungsschaltung MS werden in den Two-Rail-Checker geführt.
  • Es wird angenommen, daß x(t – 1) ein Codewort aus B1(n, k) ist, anderenfalls hätte der Checker im Takt t – 1 einen Fehler signalisieren müssen. Wenn x(t) ein Wort aus B1(n, k) ist, dann ist z ein Wort aus B1(n, k – 1). Sowohl die Ausgabe des Checkers für den Bose-Code B1(n, k – 1) als auch die Ausgabe d = d0d1 der Mittelungsschaltung MS sind Two-Rail-Signale, was vom Two-Rail-Checker TRC bestätigt wird. Wenn x(t) nicht zu B1(n, k) gehört dann ist z
    Figure 00210001
    B1(n, k – 1) oder/und d ist kein Two-Rail-Signal. Der Two-Rail-Checker TRC erhält ein Nicht-Two-Rail-Codewort, und ein Fehler wird signalisiert.
  • Die Struktur einer n + k-Bit Mittelungsschaltung MS ist in 6 dargestellt. Sie besteht aus zwei Teilen. Der erste Teil besteht aus n Volladdierern VA, einem D-Flip-Flop und einem Inverter. Die Volladdierer sind wie in einer Gewichts-Mittelungsschaltung verbunden – der Summen-Ausgang des j-ten Volladdierers ist mit dem Übertrags-Eingang des j + 1-ten Volladdierers verbunden, und der Übertrags-Ausgang des j-ten Volladdierers ist das j-te Bit des Ergebnisses z(i). Der Ausgang des D-Flip-Flops ist mit dem Übertrags-Eingang des ersten Volladdierers verbunden. Er ist auch verbunden mit einem Inverter, dessen Ausgang mit dem Eingang des D-Flip-Flops verbunden ist. Diese Teilschaltung führt die Gewichts-Mittelungsoperation auf den n-Bit Informationsbit-Vektoren x(i) und y(j) der Codewörter x und y aus und ergibt z(i), den n-Bit Informationsbit-Vektor des Resultats z. Der zweite Teil der Mittelungsschaltung MS besteht aus k Volladdierern VA, einem D-Flip-Flop und einem Inverter. Die Volladdierer sind sind so miteinander verbunden, daß sie die Operation eines herkömmlichen Addierers mit Übertragsweiterleitung (Ripple-Carry-Addierer) ausführen – der Übertrags-Ausgang des j-ten Volladdierers ist mit dem Übertrags-Eingang des j + 1-ten Volladdierers verbunden, und der Summen-Ausgang des j-ten Volladdierers (mit Ausnahme des ersten) ist das j – 1-te Bit des Ergebnisses z(c). Der Ausgang des D-Flip-Flops ist mit dem Übertrags-Eingang des ersten Volladdierers verbunden. Er ist auch verbunden mit einem Inverter, dessen Ausgang mit dem Eingang des D-Flip-Flops verbunden ist. Diese zweite Teilschaltung operiert auf den Prüfsymbolen x(c) und y(c) und berechnet ihren Mittelwert z(c) mod k – 1. Das am wenigsten signifikante Summen-Bit ist der Rest der Division (x(c) + y(c))/2. Die beiden D-Flip-Flops sind komplementär zu initialisieren.
  • Für die erste Teilschaltung, die auf den Informationsbit-Vektoren operiert, kann jede Volladdierer-Konstruktion verwendet werden. Für die zweite Teilschaltung, die auf den Prüfsymbolen operiert, werden Volladdierer mit der in 7 veranschaulichten Struktur verwendet.
  • Zur Diskussion der Eigenschaften der Mittelungsschaltung von 6 wird zur Vereinfachung der folgende systematische Code B'1 (n, k) betrachtet, der folgende Eigenschaften besitzt. Jedes Wort von B'1 (n, k) wird dargestellt durch einen Vektor x = (x(i), x(c)), wobei x(i) den n-Bit Informationsteil bezeichnet und x(c) das k-Bit Prüfsymbol. x(c) ist die Binärdarstellung der Anzahl der Einsen des Informationsteils, modulo 2k. Ein Bose-Code B1(n, k) kann leicht in B'1 (n, k) konvertiert werden und umgekehrt durch Invertierung der Informationsbits. Die Eigenschaften, die bezüglich B'1 (n, k) diskutiert werden, gelten auch für B1(n, k).
  • Die Mittelungs-Operation, mit ∘ bezeichnet, erfüllt folgende Gleichungen für die Informationsbit-Vektoren:
    Figure 00220001
  • Wenn x(i) und y(i) dieselbe Parität haben, dann ist c(i)n = c(i)0 und
    Figure 00220002
  • Haben x(i) und y(i) unterschiedliche Parität, dann ist c(i)n ≠ c(i)0 und
    Figure 00230001
  • Die Mittelungs-Operation erfüllt die folgende Gleichung für die Prüfsymbole:
    Figure 00230002
  • Die Anwendung der Mittelungs-Operation auf Wörter eines Codes B'1 (n, k) ergibt Wörter eines Codes B'1 (n, k – 1). Dies kann wie folgt gezeigt werden. Seien x, y ∈ B ' / 1(n, k). Dann gilt w(x(i)) ≡ x(c) mod 2k und w(y(i)) ≡ y(c) mod 2k. Somit sind w(x(i)) – x(c) und w(y(i)) – y(c) beides Vielfache von 2k und es gilt (w(x(i)) + w(y(i))) – (x(c) + y(c)) = r·2k für irgendeine ganze Zahl r. Division durch 2 führt zu
    Figure 00230003
  • Bemerkt sei, daß die Addition von c(i)0 zum Informationsteil und c(c)0 zum Prüfteil, wobei c(i)0 = c(c)0 , zu einem analogen Ergebnis führt.
  • Wenn die überwachte Schaltung mindestens zwei Codewörter mit komplementären Prüfbits produziert und die Codewörter in zufälliger Reihenfolge auftreten, dann kann im Schaltungsteil von 6, der auf den Prüfsymbolen operiert, jeder Wert von x(c)j auf jeden Wert von y(c)j treffen, und jeder Wert von c(c)j (Übertrags-Eingabe des j-ten Volladdierers) auf jeden Wert von x(c)j ⊕ y(c)j , j = 0,1, ..., k – 1. Dies kann wie folgt gezeigt werden. Seien x' und x'' zwei Codewörter mit komplementären Prüfsymbolen. Da die Codewörter in zufälliger Abfolge auftreten, können zwei aufeinander folgende Codewörter x ∈ {x', x''} (das aktuelle, am Checker-Eingang anliegende Wort) und y ∈ {x', x''} (das vorangegangene, jetzt im Register R enthaltene Wort) jede der vier Kombinationen an der Prüfbitposition j annehmen. Somit kann jeder Wert von x (c) / j auf jeden Wert von y(c)j treffen. Sei x = x' und y = x''. Da x'(c) und x''(c) komplementär sind, sind die Werte auf allen Übertrags-Leitungen c(c)j gleich c(c)0 . Da c(c)0 sowohl 0 als auch 1 sein kann, kann jeder Wert von c(c)j auf x(c)j ⊕ y(c)j = 1 treffen. Sei x = x' und y = x'. In diesem Fall gilt c(c)j = x'(c)j–1 . Sind x und y gleich x'' dann gilt c(c)j = x''(c)j–1 = x ''(c)j–1 . Somit kann jeder Wert von c(c)j auch auf x(c)j ⊕ y(c)j = 0 treffen.
  • Für k > 2 hat der Checker für Bose-Code B1(n, k – 1) die gleiche Struktur wie sie in 5 gezeigt wird, jedoch benötigt er nur k – 1 anstatt k Prüfbit-Eingänge. Für k = 2 ist er ein Parity-Checker.
  • Ein Bose-Code-Checker, wie er in 5 gezeigt wird, ist selbsttestend bezüglich jedes einfachen Haftfehlers, vorausgesetzt, daß keine Checker-Eingangsleitung einen konstanten Wert erhält, es zwei Codewörter mit komplementären Prüfsymbolen gibt und die Codewörter in zufälliger Reigenfolge auftreten. Dies kann auf folgende Weise gezeigt werden. Für Register R gelten dieselben Aussagen wie für das Register eines Borden-Code-Checkers. Ein einfacher Fehler in der Mittelungsschaltung MS befindet sich entweder in der Gewichts-Mittelungsschaltung für den Informationsteil oder der Werte-Mittelungsschaltung für die Prüfsymbole. Für die Gewichts-Mittelungsschaltung des Informationsteils gelten ähnliche Aussagen wie für die GMS in einem Borden-Code-Checker – ein Fehler beeinflußt entweder das Mittelungsergebnis z(i) oder den Ausgang d0 oder beide und wird erkannt durch den Two-Rail-Checker TRC weil entweder die Mittelungsschaltung MS oder der Checker für den Bose-Code B1(n, k – 1) oder beide ein Nicht-Two-Rail-Signal produzieren. Ein Einfachfehler in der Werte-Mittelungsschaltung befindet sich entweder im D-Flip-Flop oder im Inverter oder in einer Volladdierer-Zelle VA. Ein fehlerbehaftetes D-Flip-Flop bewirkt, daß das Bit c(c)0 einen konstanten Wert annimmt. Dieser Fehler pflanzt sich fort zum Summen-Ausgang des ersten Volladdiers (der am weitesten links befindliche Volladdierer der Werte-Mittelungsschaltung) und wird daher am Ausgang d1 erkannt. Die Volladdierer sind aufgebaut wie in 7 gezeigt wird. Diese Addierer sind bezüglich jedes einfachen Haftfehlers unter den obigen Bedingungen getestet (S. Tarnick und A.P. Stroele, "Embedded Self-Testing Checkers for Low-Cost Arithmetic Codes," IEEE International Test Conference, Washington D.C., 1998, pp. 514-523). Ein im Volladdierer j enthaltener Fehler beeinflußt den Summen-Ausgang z(c)j–1 oder den Übertrags-Ausgang c(c)j+1 oder beide. Ein Fehler des Summen-Bits (außer beim Volladdier 0) erzeugt einfehlerhaftes Prüfsymbol in B1(n, k – 1). Ein Summenbit-Fehler des Volladdierers 0 pflanzt sich zum Ausgang d1 fort. Ein Fehler des Übertrags-Bits c(c)j beeinflußt Summen-Bit z(c)j–1 und produziert ebenfalls ein fehlerhaftes Prüfsymbol in B1(n, k – 1). Somit erzeugt ein Fehler in der Mittelungsschaltung MS einen Fehler am Ausgang d = d0d1 oder ein Nichtcodewort z oder beides und wird somit vom Two-Rail-Checker TRC erkannt weil die MS oder der Checker für B1(n, k – 1) oder beide ein Nicht-Two-Rail-Signal produzieren. Der Checker für Bose-Code B1(n, k – 1) ist selbsttestend für k > 2 da die obigen Bedingungen erfüllt sind – keine Eingabe-Leitung erhält einen konstanten Wert, und die Codewörter z treten in zufälliger Abfolge auf weil die Abfolge der Codewörter x zufällig ist. Da es zwei Wörter x' und x'' mit komplementären Prüfsymbolen gibt, gibt es auch zwei Wörter z' = x'∘x' und z'' = x''∘x'' mit komplementären Prüfsymbolen. z' und z'' sind dann gleich x' bzw. x'', wobei das am meisten signifikante Prüfbit von x' und x'' weggelassen wurde. Somit sind auch z'(c) und z''(c) komplementär. Für k = 2 ist der Checker für B1(n, k – 1) ein Parity-Checker. Eingebettete Parity-Checker, die unter den obigen Bedingungen selbsttestend sind können gefunden werden in S. Tarnick, "Embedded Parity and Two-Rail TSC Checkers with Error-Memorizing Capabilty," VLSI Design, Vol. 5, No. 4, 1998, pp. 347-356. Das Signal d = d0d1 und das Codewort z hängen beide von x(t), x(t – 1) und c0 = c(i)0 c(c)0 ab. Somit können d und die Two-Rail-Ausgabe des Checkers für B1(n, k – 1) korreliert sein. Deshalb könnte der Two-Rail-Checker TRC nicht jede Kombination der 2 Two-Rail-Signale erhalten. Daher muß ein eingebetteter Two-Rail-Checker eingesetzt werden, z.B. mit der in S. Kundu und S.M. Reddy, "Embedded Totally Self-Checking Checkers: A Practical Design," IEEE Design and Test of Computers, August 1990, pp. 5-12, beschriebenen Architektur. Keine Eingabe-Leitung des Two-Rail-Checkers erhält ein konstantes Signal. Wenn x(t) = x(t – 1) dann bewirkt eine Anderung von c0 auch eine Anderung von d. Da jeder Checker für B1(n, k – 1) selbsttestend ist, kann die Two-Rail-Ausgabe dieser Checker nicht konstant sein.
  • Der beschriebene Bose-Code-Checker kann mit 3 Codewörtern getestet werden – zwei Codewörtern x' und x'' mit komplementären Prüfbits und einem dritten Codewort bei dem sich die Informationsbits von den Informationsbits von x' an all denjenigen Positionen unterscheiden, an denen x' und x'' gleich sind. Für einige Code-Parameter sind sogar 2 Codewörter ausreichend. Zum Beispiel, wenn n + 1 ein Vielfaches von 2k ist, dann existieren Paare von Codewörtern, die komplementäre Informationsbits und komplementäre Prüfbits besitzen. Sie erfüllen die obigen Bedingungen und können den gesamten Checker testen.
  • Eingebettete Bose-Lin-Code-Checker
  • Die Architektur des Checkers für Bose-Lin-Code B2(n, k) für k < 4 ist identisch zu der, die in 5 gezeigt wird, für k ≥ 4 ist sie in 8 dargestellt.
  • Sie ist sehr ähnlich der vorgeschlagenen Bose-Code-Checker-Architektur und arbeitet auch ähnlich. Sie besteht aus einem n + k-Bit Register R, einer n + k-Bit Mittelungsschaltung MS, einem Checker für Bose-Code B1(n, k – 2) und einem 6-Bit Two-Rail-Checker TRC. Der Checker arbeitet wie folgt. Zum Zeitpunkt t ist x(t) das n + k-Bit Wort, welches der Checker von der überwachten Schaltung erhält, x(t) ∈ B2(n, k). Das n + k-Bit Wort x(t – 1) im Register R ist die Checker-Eingabe vom vorangegangenen Takt. Beide Wörter x(t) and x(t – 1) sind die Eingaben der Mittelungsschaltung MS, welche z = x(t)∘x(t – 1), z ⊕ B1(n, k – 2), berechnet. z ist dann die Eingabe eines Checkers für Bose-Code B1(n, k – 2), welcher die gleiche Struktur hat, die in 5 gezeigt wird. Die Ausgabe dieses Checkers, die Ausgabe d = d0d1 der Mittelungsschaltung und die beiden am meisten signifikanten Prüfbits x(c)k–1 x(c)k–2 von x(c)(t) werden in den Two-Rail-Checker TRC geführt.
  • Es wird angenommen, daß x(t – 1) ein Codewort aus B2(n, k) ist, anderenfalls hätte der Checker im Takt t – 1 einen Fehler signalisieren müssen. Wenn x(t) ein Wort aus B2(n, k) ist, dann ist z ein Wort aus B1(n, k – 2) (dies wird weiter unten gezeigt). Die Ausgabe des Checkers für Bose-Code B1(n, k – 2), die zwei am meisten signifikanten Bits x(c)k–1 x(c)k–2 von x(t) und die Ausgabe d = d0d1 der Mittelungsschaltung MS sind Two-Rail-Signale, was vom Two-Rail-Checker TRC bestätigt wird. Wenn x(t) nicht zu B2(n, k) gehört, dann ist z
    Figure 00260001
    B1(n, k – 2) oder/und x(c)k–1 x(c)k–2 oder/und d sind keine Two-Rail-Signale. Der Two-Rail-Checker TRC erhält ein Nicht-Two-Rail-Codewort, und ein Fehler wird signalisiert.
  • Die Struktur der n + k-Bit Mittelungsschaltung MS wird in 6 gezeigt. Ihre Architektur und Funktionsweise ist identisch zu denen der Mittelungsschaltungen, welche für Bose-Code-Checker verwendet werden.
  • Zur Diskussion der Eigenschaften der Mittelungsschaltung von 6 bezüglich Bose-Lin-Codes wird zur Vereinfachung der folgende systematische Code B'2 (n, k) betrachtet, der folgende Eigenschaften besitzt. Jedes Wort von B'2 (n, k) wird dargestellt durch einen Vektor x = (x(i), x(c)), wobei x(i) den n-Bit Informationsteil bezeichnet und x(c) das k-Bit Prüfsymbol. x(c) ist die Binärdarstellung der Anzahl der Einsen des Informationsteils, modulo 2k–1 plus 2k–2. Ein Bose-Lin-Code B2(n, k) kann leicht in B'2 (n, k) konvertiert werden und umgekehrt durch Invertierung der Informationsbits. Die Eigenschaften, die bezüglich B'2 (n, k) diskutiert werden, gelten auch für B2(n, k).
  • Die Anwendung der Mittelungs-Operation auf Wörter eines Codes B'2 (n, k) ergibt Wörter des Codes B'1 (n, k – 2). Dies kann wie folgt gezeigt werden. Seien x, y ∈ B'2 (n, k). Dann gilt w(x(i)) – 2k–2 ≡ x(c) mod 2k–1 und w(y(i)) – 2k–2 ≡ y(c) mod 2k–1. Somit sind w(x(i)) – 2k–2 – x(c) und w(y(i)) – 2k–2 – y(c) beides Vielfache von 2k–1 und es gilt (w(x(i)) + w(y(i))) – (x(c) + y(c)) – (2k–2 + 2k–2) = r·2k–2 für irgendeine ganze Zahl r. Division durch 2 führt zu
    Figure 00270001
  • Somit gilt x∘y ∈ B'1 (n, k – 2).
  • Die Mittelungsschaltung bildet zwei Codewörter x, y ∈ B'2 (n, k) auf ein Codewort x·y ∈ B'1 (n, k – 2) und ein Two-Rail-Signal d = d0d1 ab. Wenn entweder x oder y nicht zu B'2 (n, k) gehört, dann ist x∘y
    Figure 00270002
    (n, k – 2) oder d ist kein Two-Rail-Signal oder beides, ausgenommen in einem Fall: Wenn das am meisten signifikante Prüfbit x(c)k–1 (oder y(c)k–1 ) durch einen Einzelbit-Fehler betroffen ist, dann würde dies nicht erkannt werden. Wenn z.B. k = 4 dann haben die Prüfbits von B'2 (n, k) die Form (k1 mod 8) + 4. Daher sind nur Prüfsymbole x(c) mit 4 ≤ x(c) ≤ 11 erlaubt. Wenn k1 = 7 dann ist das korrekte Prüfsymbol 1011. Ein Einzelbit-Fehler, der das am meisten signifikante Bit beeinflußt, führt zu 0011, welches um ein Vielfaches von 2k–1 = 8 vom korrekten Prüfsymbol abweicht, und von der Mittelungsschaltung allein nicht signalisiert werden würde. Erfreulicherweise sind in B'2 (n, k) die beiden am meisten signifikanten Bits immer komplementär, was vom Two-Rail-Checker geprüft wird.
  • Ein Bose-Lin Code-Checker, wie er in 8 gezeigt wird, ist selbsttestend bezüglich jedes einfachen Haftfehlers, vorausgesetzt, daß kein Checker-Eingang einen konstanten Wert erhält, es zwei Codewörter mit komplementären Prüfsymbolen gibt und die Codewörter in zufälliger Reigenfolge auftreten. Dies kann auf dieselbe Weise gezeigt werden wie für den Bose-Code-Checker. Der einziger Unterschied ist, daß der Two-Rail-Checker TRC zwei zusätzliche Eingänge hat weil er auch die zwei am meisten signifikanten Prüfbits x(c)k–1 x(c)k–2 prüft. Diese können nicht konstant sein, da zwei Codewörter mit komplementären Prüfbits bereitgestellt werden. Der beschriebene Bose-Lin-Code-Checker kann mit 3 Codewörtern getestet werden – zwei Codewörter x' und x'' mit komplementären Prüfbits und einem dritten Codewort, bei dem sich die Informationsbits an all den Positionen unterscheiden, an denen x' und x'' übereinstimmen. Für einige Codeparameter sind sogar 2 Codewörter ausreichend.
  • Wie oben erwähnt wurde, sind die Checker für Bose-Codes B1(n, k) und für Bose-Lin-Codes B2(n, k) selbsttestend unter der Bedingung, daß die überwachte Schaltung mindestens zwei Codewörter mit komplementären Prüfsymbolen bereitstellt. Dies ist jedoch nicht immer garantiert. Speziell bei Bose-Lin-Codes mit k ≥ 4 sind die einzigen komplementären Prüfsymbole 2k–2 und (2k–1 – 1) + 2k–2 (das kleinste und das größte Prüfsymbol). Obwohl der Code eine Reihe von Codewort-Paaren besitzt, die solche Prüfsymbole haben, kann es sein, daß komplementäre Prüfsymbole von der überwachten Schaltung nicht erzeugt werden, und somit die obigen Anforderungen nicht erfüllt sind. Dies kann jedoch kompensiert werden durch Verwendung eines Bose-Lin- bzw. Bose-Codewort-Generators (CWG), anstatt eines Registers, welches das vorangegangene Codewort speichert. Die Checker-Architekturen, die einen CWG einsetzen, sind in 10 bzw. 11 dargestellt. Der Bose-Lin/Bose-CWG kann ähnlich wie der Berger-CWG entworfen werden, welcher in M. Nicolaidis, "Self-Exercising Checkers for Unified Built-In Self-Test (UBIST)," IEEE Transactions on Computer-Aided Design, Vol. 8, No. 3, Manch 1989, pp. 203-218, vorgestellt wurde, und wird in 9 gezeigt.
  • Der Bose-Lin-/Bose-Codewort-Generator CWG besteht aus einem n-Bit linear rückgekoppelten Schieberegister (LFSR) maximaler Länge mit primitivem Rückkopplungspolynom und einem k-Bit modulo 2k Auf-/Abwärtszähler. Das LFSR wird mit einem beliebigen vom Nullvektor verschiedenen n-Bit Vektor x(i) initialisiert, und der Auf-/Abwärtszähler wird mit entsprechenden k-Bit Prüfsymbol x(c) bezüglich des gewählten Codes (entweder Bose-Lin- oder Bose-Code) initialisiert. Das LFSR generiert alle n-Bit Vektoren, ausgenommen dem Nullvektor. Die serielle Ausgabe und die Eingabe des LFSR (die Bits, die heraus- bzw. hineingeschoben werden) sind mit den Eingängen eines XOR-Gatters verbunden. Die Ausgabe des XOR-Gatters ist 0 wenn sich das Gewicht von x(i) nicht verändert (der Bitwert der in das LFSR hineingeschoben wird ist derselbe wie der Bitwert, der hinausgeschoben wird), und sie ist 1, wenn sich das Gewicht ändert. Der Ausgang des XOR-Gatters ist mit dem Count-Enable-Eingang des Auf-/Abwärtszählers verbunden. Wenn dieser Eingang den Wert 1 erhält, dann zählt der Zähler, anderenfalls zählt er nicht. Wenn die Ausgabe des XOR-Gatters 1 ist, dann zeigt die serielle Ausgabe des LFSR an, wie sich das Gewicht w von x(i) ändert. Ist diese Ausgabe gleich 0, dann erhöht sich w um 1, ist sie gleich 1, so verringert sich w um 1. Der serielle Ausgang des LFSR ist mit dem up/down-Eingang des Zählers verbunden. Wenn der Zähler angewiesen ist, zu zählen, so zählt er aufwärts (abwärts) modulo 2k, wenn der up/down-Eingang den Wert 0 (1) erhält.
  • Für einen Bose-Lin-Code mit k ≥ 4 kann der CWG so entworfen werden, daß er nur Bose-Lin-Codewörter generiert. Es ist jedoch vorteilhaft, ihn so zu entwerfen, daß es ihm gestattet ist, alle Prüfsymbole, die möglich sind, zu erzeugen, d.h. 0 ≤ y(c) < 2k–2 und (2k–1 – 1) + 2k–2 < y(c) ≤ 2k–1 sind ebenfalls gestattet. Auf diese Weise hat jeder Informationsbit-Vektor zwei Prüfsymbole, y(c) und y(c) + 2k–1 oder y(c) – 2k–1. Somit ist es immer möglich, für jedes Bose-Lin-Codewort x ein Wort y des erweiterten Bose-Lin-Codes zu erzeugen (erweitert in dem Sinne, daß zusätzliche Prüfsymbole gestattet sind), so daß y(c) komplementär zu x(c) ist.
  • Neben der Bereitstellung zusätzlicher Prüfsymbole hat die Verwendung des CWG einige weitere Vorteile. Erstens kann y den Wert jedes erweiterten Codeworts annehmen (mit Ausnahme des Informationsbit-Nullvektors mit den zugehörigen zwei Prüfsymbolen), und die Codewörter treten periodisch auf. Zweitens ist die Zufälligkeit erhöht in dem Sinne, daß jedes x, welches die Eingabe eines Checkers auf niedrigerer Hierarchieebene ist auf jedes y treffen kann (es sei daran erinnert, daß einige Eingabe-Kombinationen bei den Checkern auf niedrigerer Hierarchieebene nicht möglich waren).
  • Ein dritter Vorteil ist, daß die Mittelung der (relativ) kleinen Anzahl von, von der überwachten Schaltung bereitgestellten, Codewörtern mit der vollständigen, vom CWG erzeugten, Menge von Codewörtern eine wesentlich größere Menge von Codewörtern für die Checker der unteren Hierarchieebenen erzeugt, so daß es möglich sein kann, in der unteren Hierarchieebene einen der Standard-Bose-Code-Checker einzusetzen, die mehr Codewörter benötigen um selbsttestend zu sein.
  • Es wird nun die Selbsttest-Eigenschaft des CWG untersucht. Ein einfacher Haftfehler im Schieberegister wird erkannt, da ein fehlerhafter Informationsbit-Vektor erzeugt wird. Ein Fehler im Zähler wird erkannt, da er ein fehlerhaftes Prüfsymbol produziert. Ein Fehler in der Rückkopplungslogik wird nicht erkannt, weil keine Nichtcodewörter erzeugt werden (außer den erwünschten Nichtcodewörtern des erweiterten Codes). Es wird nur ein anderer und kürzerer Zyklus von Codewörtern (und erwünschten Nichtcodewörtern) produziert. Jedoch kann man die Rückkopplungslogik verdoppeln und eine Kopie verwenden, um das Schieberegister zu versorgen, und die andere wird mit dem XOR-Gatter verbunden, welches den Count-Enable-Eingang des Zählers steuert. Dann beeinflußt ein Fehler in der Rückkopplungslogik entweder den Informationsbit-Vektor oder das Prüfsymbol, je nachdem, in welcher Kopie der Rückkopplungslogik der Fehler enthalten ist. Die Verdopplung der Rückkopplungslogik verursacht nur einen geringen zusätzlichen Hardware-Aufwand. Da für alle Polynomgrade Trinome oder/und Pentanome existieren (P.H. Bardell, "Design Considerations for Parallel Pseudorandom Pattern Generators," Journal of Electronic Testing, Vol. 1, No. 1, February 1990, pp. 73-87; P.H. Bardell, "Primitive Polynomials of Degree 301 through 500," Journal of Electronic Testing, Vol. 3, No. 2, 1992, pp. 175-176) benötigt man nur 2 oder 4 zusätzliche XOR-Gatter.
  • Das Zulassen von Bose-Lin-Nichtcodewörtern, bei denen die Prüfsymbole von den korrekten Prüfsymbolen um ± 2k–1 abweichen, beeinflußt nicht die Fehlererkennungsfähigkeit des Checkers. Die Mittelung dieser Nichtcodewörter mit Codewörtern, die von der überwachten Schaltung kommen, resultiert in Bose-Codewörtern. Ein Fehler, der den Ausgang der überwachten Schaltung beeinflußt, produziert ein Nichtcodewort x, das entweder bewirkt, daß die Mittelungsschaltung ein (Bose-) Nichtcodewort oder ein Bose-Codewort produziert. Im letzteren Fall unterscheidet sich das Prüfsymbol von x vom korrekten Prüfsymbol durch ± 2k–1, was erkannt wird durch Prüfung der beiden am meisten signifikanten Prüfbits auf Zugehörigkeit zum Two-Rail-Code. Jedoch beeinflußt, wenn dem CWG gestattet wird, Bose-Lin-Nichtcodewörter zu erzeugen, dies die Selbsttest-Eigenschaft des CWG. Ein Einfachfehler, der nur das am meisten signifikante Zählerbit y(c)k–1 beeinflußt, wird nicht erkannt. Dies kann gelöst werden, indem dieser Zähler-Ausgang verdopelt und unabhängig von y(c)k–1 realisiert) wird. Der zusätzliche Ausgang hat den zu y(c)k–1 inversen Wert zu erzeugen. Beide Ausgänge werden durch einen Two-Rail-Checker geprüft.
  • Der CWG ist nicht nur notwendig, um zu garantieren, daß es mindestens zwei Codewörter mit komplementären Prüfsymbolen gibt, er ist auch notwendig, um den Checker Code-trennend zu machen. Die Bose-/Bose-Lin-Code-Checker mit den in 5 bzw. 8 gezeigten Strukturen sind nicht Code-trennend. Sie verhalten sich korrekt, bis das erste Nichtcodewort auftritt. Dieses Nichtcodewort wird angezeigt. Danach ist das Verhalten der Checker undefiniert bis zu dem Takt, der dem nächsten Codewort folgt. Wenn das Register R durch den CWG ersetzt wird, dann sind die Checker Code-trennend. Die Code-trennende Eigenschaft kann auf ähnliche Weise wie beim Borden-Code-Checker gezeigt werden.
  • Da x(i)n–1 ... x(i)0 x(c)k–2 ... x(c)0 ∈ B1(n, k – 1) gilt, wenn x(i)n–1 ... x(i)0 x(c)k–1 ... x(c)0 ∈ B1(n, k), kann derselbe CWG auch für die B1(n, k) Bose-Code-Checker für alle k > 1 (für alle unteren Hierarchieebenen) verwendet werden, wobei die nicht benötigten höchstwertigen Prüfbits nicht betrachtet werden. Daher ist nur ein solcher CWG für Bose-Code-Checker notwendig.
  • Für B1(n, k) mit k = 1, welches ein Parity-Code ist, kann die Mittelungsschaltung MS als Code-Checker verwendet werden. Das n-Bit Mittelungsergebnis z wird ignoriert und die Ausgabe d = d0d1 wird als das Two-Rail-kodierte Fehlersignal verwendet. Wird eine MS als Parity-Checker eingesetzt, so kann derselbe CWG auch für den B1(n, k) Bose-Code-Checker mit k = 1 verwendet werden.
  • Um, ähnlich wie bei Borden-Code-Checkern, Konvergenzeffekte mit zunehmender Hierarchietiefe zu vermeiden, ist folgendes zu beachten. Wird für jede Hierachieebene ein separater CWG verwendet, so sind alle CWGs mit möglichst verschiedenen Codewörtern zu initialisieren. Wird für alle Hierarchieebenen derselbe CWG verwendet, so sind für jede Ebene die Ausgangsleitungen des LFSR, d.h. die Informationsbits, geeignet zu permutieren (da durch Permutationen der Informationsbits deren Gewicht nicht verändert wird, führen derartige Permutationen wiederum zu Wörtern desselben Codes).
  • Der Checker kann alternativ auch dadurch Code-trennend gemacht werden, indem das Fehlersignal des Checkers für ein Reset aller Register R verwendet wird. Somit wird nicht das jeweilige aktuelle (fehlerhafte) Wort x(t) in das entsprechende Register R geladen, sondern R wird mit einem korrekten Bose- bzw. Bose-Lin-Codewort neu initialisiert. Ebenso wie beim CWG kann ein und dasselbe Register R auch für alle Checker der unteren Hierarchieebenen verwendet werden, wobei die zu den Informationsbits gehörenden Ausgabeleitungen geeignet zu permutieren sind.
  • Die zwei unabhängigen Teile der Mittelungsschaltung MS – die n-Bit Schaltung für den Informationsteil und die k-Bit Schaltung für den Prüfteil – die in 6 dargestellt sind, können zu einer einzigen Schaltung verbunden werden, wie in 12 illustriert wird. In dieser Schaltung ist die Leitung, die das Signal c(i)n trägt (der Summen-Ausgang des am weitesten rechts stehenden Volladdierers der Informationsteil-Schaltung) verbunden mit dem Übertrags-Eingang desjenigen Volladdierers der Prüfteil-Schaltung, der das Signal d1 produziert. Der Ausgang, der das Signal d1 trägt, ist mit einer Kette von zwei D-Flip-Flops verbunden. Der Ausgang dieser D-Flip-Flop-Kette ist verbunden mit dem Übertrags-Eingang des am weitesten links stehenden Volladdierers der Informationsteil-Schaltung. Die beiden Signale d0 und d1 können als Two-Rail-kodiertes Fehlersignal verwendet werden, welches jeden Takt seinen Wert ändert. Der Vorteil dieser Schaltungs-Modifikation ist jedoch, daß nur der Ausgang d1 als Fehlersignal betrachtet werden muß. Ahnlich wie bei den Gewichts-Mittelungsschaltungen mit der in 2 gezeigten Struktur können Mittelungsschaltungen zu Paaren gruppiert werden von denen die entsprechenden Ausgänge d1 als Two-Rail-Signal verwendet werden, vorausgesetzt, daß die D-Flip-Flop-Paare der Mittelungsschaltungen MS komplementär initialisiert werden. Auf diese Weise wild die Gesamtzahl der Two-Rail-Paare reduziert und damit die Größe bzw. die Anzahl der Two-Rail-Checker. Die Mittelungsschaltungen MS bleiben selbsttestend, wenn eines der beiden D-Flip-Flops durch einen Inverter ersetzt wird (dies ist nicht der Fall, wenn beide Ausgänge d0 und d1 betrachtet werden).
  • Die verbundene n + k-Bit Mittelungsschaltung MS, welche in 12 gezeigt wird, kann in zwei unabhängige Teile aufgespalten werden, eine s-Bit Schaltung und eine n – s + k-Bit Schaltung, wie in 13 illustriert wird. Die erste Schaltung arbeitet auf s Informationsbits und die zweite auf n – s Informationsbits und k Prüfbits. Jede der beiden Schaltungen besteht aus einem D-Flip-Flop, einem Inverter und n' Volladdierern, wobei n' entweder s oder n – s + k ist. Beide D-Flip-Flops werden mit komplementären Werten initialisiert. s kann jeden Wert 1 ≤ s < n annehmen, aber s sollte vorzugsweise ⌊(n + k)/2⌋ oder ⌈(n + k)/2⌉ sein. Der Vorteil der Verwendung dieser modifizierten MS ist eine höhere Berechnungsgeschwindigkeit, da das Übertrags-Eingabesignal höchstens max{s, n + k – s} Volladdierer durchqueren muß.
  • Bezugszeichenliste
  • CWG
    Codewort-Generator
    D-FF
    D-Flip-Flop
    GMS
    Gewichts-Mittelungsschaltung
    MS
    Mittelungsschaltung
    R
    Register
    TRC
    Two-Rail-Checker
    VA
    Volladdierer

Claims (29)

  1. Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines fehlererkennenden Codes C(n, k) mit n > 1 und k ≥ 2, wobei für einen nicht-systematischen Code C(n, k) der Parametern die Wortlänge beschreibt und k die Anzahl der erkennbaren Bitfehler bestimmt, oder für einen systematischen Code C(n, k) der Parameter n die Anzahl der Informationsbits und k die Anzahl der Prüfbits bezeichnet, dadurch gekennzeichnet, daß (i) in einem ersten Schritt das zu prüfende Codewort x ∈ C(n, k) mit einem zweiten Codewort y desselben Codes C(n, k) verknüpft und auf ein drittes Codewort z eines fehlererkennenden Codes C(n, k – 1) abgebildet wird, im Falle k > 2 der erste Verfahrensschritt mit dem durch die Verknüpfung erzeugten, dritten Codewort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Verknüpfung erzeugte Wort ein Codewort eines fehlererkennenden Codes C(n, 1) ist und das im letzten Verfahrensschritt erzeugte Codewort z ∈ C(n, 1) mit einem Verfahren zur Prüfung von Parity-Codewörter geprüft und das Ergebnis dieses Verfahrens ausgegeben wird, oder (ii) das zu prüfende Codewort x ∈ C(n, k) mit einem zweiten Codewort y desselben Codes C(n, k) verknüpft und auf ein drittes Codewort z eines fehlererkennenden Codes C'(n, k – 2) abgebildet wird und anschließend ein Verfahren zur Erkennung unidirektionaler Fehler in Wörtern z eines fehlererkennenden Codes C'(n, k – 2) gemäß (i) durchgeführt wird.
  2. Verfahren nach Anspruch 1, wobei der fehlererkennende Code C(n, k) ein Borden-Code B(n, 2k – 1) mit n > 1 und k ≥ 2 ist, n die Wortlänge und 2k – 1 die Maximalanzahl der durch den Code erkennbaren unidirektionalen Fehler angeben, dadurch gekennzeichnet, daß • die Verknüpfung zweier Codewörter durch eine Gewichts-Mittelungsschaltung realisiert wird, • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B(n, 2k – 1) durch die Gewichtsmittelungsschaltung mit einem zweiten Codewort y desselben Codes B(n, 2k – 1) verknüpft und auf ein drittes Codewort z ∈ B(n, 2k–1 – 1) sowie ein Two-Rail-Signal d abgebildet wird, im Fall k > 2 der erste Verfahrensschritt mit dem jeweiligen durch die Gewichts-Mittelungsschaltung erzeugten Wort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Gewichts-Mittelungsschaltung erzeugte Wort ein Codewort aus B(n, 1) ist, das durch die vorangehenden Verfahrensschritte zuletzt erzeugte Codewort z ∈ B(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  3. Verfahren nach Anspruch 1, wobei der fehlererkennende Code C(n, k) ein Bose-Code B1(n, k) mit n > 1 und k ≥ 2 ist, n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, dadurch gekennzeichnet, daß • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird, • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B1(n, k) mit einem zweiten Codewort y desselben Codes B1(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Codes B1(n, k – 1) sowie ein Two-Rail-Signal d abgebildet wird, im Fall k > 2 der erste Verfahrensschritt mit dem jeweiligen durch die Verknüpfung erzeugten Wort z als zu prüfendem Wort so lange wiederholt wird, bis das durch die Mittelungsschaltung erzeugte Wort ein Codewort aus B1(n, 1) ist, das durch die vorangehenden Verfahrensschritte zuletzt erzeugte Codewort z ∈ B1(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  4. Verfahren nach Anspruch 1, wobei der fehlererkennende Code C(n, k) ein Bose-Lin-Code B2(n, k) mit n > 1 und k ≥ 4 ist, n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, dadurch gekennzeichnet, daß • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird, • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B2(n, k) mit einem zweiten Codewort y desselben Codes B2(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Codes B1(n, k – 2) sowie ein Two-Rail-Signal d abgebildet wird, nachfolgend ein Verfahren gemäß Anspruch 3 mit z ∈ B1(n, k – 2) als zu prüfendem Codewort ausgeführt wird und das Ergebnissignal des Verfahrens gemäß Anspruch 3, zusammen mit dem im ersten Schritt erzeugten Signal d und den zwei am meisten signifikanten Prüfbits x(c)k–1 x(c)k–2 des zu prüfenden Codeworts x ∈ B2(n, k) mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  5. Verfahren nach Anspruch 1, wobei der fehlererkennende Code C(n, k) ein Bose-Lin-Code B2(n, k) mit n > 1 und k = 2 oder k = 3 ist, n die Anzahl der Informationsbits und k die Anzahl der Prüfbits eines Codewortes angeben, dadurch gekennzeichnet, daß • die Verknüpfung zweier Codewörter durch eine Mittelungsschaltung realisiert wird, • in einem ersten Schritt ein zu prüfendes Codewort x ∈ B2(n, k) mit einem zweiten Codewort y desselben Codes B2(n, k) verknüpft und auf ein drittes Codewort z eines Bose-Lin-Codes B1(n, k – 1) sowie ein Two-Rail-Signal d abgebildet wird, falls k = 3, der erste Verfahrensschritt mit dem durch die Verknüpfung erzeugten Wort z als zu prüfendem Codewort wiederholt wird, das durch die vorangehenden Verfahrensschritte zuletzt erzeugte Codewort z ∈ B2(n, 1) mit einem Verfahren für Parity-Codes geprüft und das Ergebnissignal dieser Prüfung und alle erzeugten Signale d mit einem Verfahren zur Prüfung von Two-Rail-Codes geprüft werden und das Ergebnis dieses Verfahrens ausgegeben wird.
  6. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß das Codewort y in einem Speicher abrufbar bereitgestellt oder automatisch generiert wird.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß das in einem Speicher abrufbar bereitgestellte Codewort y das in einem Register gespeicherte, zu prüfende Codewort aus dem vorgegangenen Prüftakt ist.
  8. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß das automatisch generierte Codewort y durch einen Codewort-Generator erzeugt wird.
  9. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß das Codewort y eines Bose-Codes B1(n, k – j) mit k > j ≥ 0 durch einen n + k – j-Bit Bose-Codewort-Generator automatisch generiert wird, wobei der Bose-Codewort-Generator alle von dem aus dem Informationsbit-Nullvektor und dem zugehörigen Bose-Code-Prüfsymbol bestehenden Codewort verschiedenen Wörter aus B1(n, k – j) erzeugt.
  10. Verfahren nach einem der Ansprüche 4 oder 5, dadurch gekennzeichnet, daß das Codewort y des Bose-Lin-Codes B2(n, k) durch einen n + k-Bit Bose-Lin-Codewort-Generator automatisch generiert wird, wobei der Bose-Lin-Codewort-Generator alle von dem aus dem Informationsbit-Nullvektor und dem zugehörigen Bose-Lin-Code-Prüfsymbol bestehenden Codewort verschiedenen Wörter aus B2(n, k) und bei k ≥ 4 zusätzlich alle Bose-Lin-Nichtcodewörter, in denen sich die Prüfsymbole von den durch den Bose-Lin-Codewort-Generator generierbaren Bose-Lin-Codewörtern um + 2k–1 oder – 2k–1 unterscheiden, erzeugt.
  11. Checker für einen fehlererkennenden Code C(n, k) mit n > 1 und k ≥ 2, wobei für einen nicht-systematischen Code C(n, k) der Parameter n die Wortlänge beschreibt und k die Anzahl der erkennbaren Bitfehler bestimmt, oder für einen systematischen Code C(n, k) der Parameter n die Anzahl der Informationsbits und k die Anzahl der Prüfbits bezeichnet, gekennzeichnet durch: eine Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k) und eine Schaltungseinheit zum Prüfen von Wörtern aus C(n, k), wobei die Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) folgendes umfaßt: • eine Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k), • einen Two-Rail-Checker (TRC) und • einen Checker für einen fehlererkennenden C(n, k – 1), falls k > 2, oder einen Parity-Checker, falls k = 2, oder • eine Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k), • eine Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k), • einen Two-Rail-Checker (TRC) und • einen Checker für einen fehlererkennenden Code C(n, k – 1), falls k > 2, oder einen Parity-Checker, falls k = 2, wobei der Checker für einen fehlererkennenden Code C(n, k – 1) einen gleichartigem Aufbau wie der ihn enthaltende C(n, k)-Checker oder die ihn enthaltende Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) aufweist oder als herkömmlicher Checker für einen fehlererkennenden Code C(n, k – 1) ausgebildet ist, und • der Eingang der Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter mit dem Eingang des C(n, k)-Checkers und mit dem Ausgang der Schaltungseinheit zur Bereitstellung von Codewörtern aus C(n, k) verbunden ist, • der Ausgang der Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k) im Fall k > 2 mit dem Eingang des Checkers für den Code C(n, k – 1) oder im Fall k = 2 mit dem Eingang des Parity-Checkers verbunden ist, • der Eingang des Two-Rail-Checkers (TRC) im Fall k > 2 mit dem Ausgang des Checkers für den Code C(n, k – 1) oder im Fall k = 2 mit dem Ausgang des Parity-Checkers verbunden ist, • zusätzlich ein zweiter Ausgang der Schaltungseinheit zur Verknüpfung zweier Codewörter aus C(n, k) mit einem Eingang des Two-Rail-Checkers (TRC) verbunden ist, • im Fall, daß der Checker für einen fehlererkennenden Code C(n, k – 1) einen gleichartigem Aufbau wie die ihn enthaltende Schaltungseinheit zum Prüfen von Wörtern aus C(n, k) aufweist, der zweite Eingang des Checkers für einen fehlererkennenden Code C(n, k – 1) mit dem Ausgang einer in einem übergeordneten Code-Checker enthaltenen Schaltungseinheit zur Bereitstellung von Codewörtern verbunden ist und • der Ausgang des Two-Rail-Checkers (TRC) den Ausgang des Checkers für den Code C(n, k) bildet.
  12. Checker nach Anspruch 11, wobei der Code C(n, k) ein Borden-Code B(n, 2k – 1) ist, dadurch gekennzeichnet, daß • die Schaltungseinheit zur Bereitstellung Codewörtern aus C(n, k) ein n-Bit Register (R) oder ein n-Bit Ringzähler (RZ) ist, • die Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter eine Gewichtsmittelungsschaltung (GMS) ist, und daß bei Verwendung eines n-Bit Registers (R) der Eingang dieses Registers mit dem Eingang des Checkers für den Code C(n, k) verbunden ist.
  13. Checker nach Anspruch 11, wobei der Code C(n, k) ein Bose-Code B1(n, k) ist, dadurch gekennzeichnet, daß • die Schaltungseinheit zur Bereitstellung Codewörtern aus C(n, k) ein n + k-Bit Register (R) oder ein Codewort-Generator (CWG) für einen Bose-Code B1(n, k) ist, • die Schaltungseinheit zur Verknüpfung zweier C(n, k)-Codewörter eine Mittelungsschaltung (MS) ist, und daß bei Verwendung eines n + k-Bit Registers (R) der Eingang dieses Registers mit dem Eingang des Checkers für den Code C(n, k) verbunden ist.
  14. Checker für einen Code C(n, k) nach Anspruch 13, dadurch gekennzeichnet, daß der Checker für C(n, k) gemäß Anspruch 13 zusätzlich mit • einer Schaltungseinheit zur Bereitstellung von Wörtern eines Bose-Lin-Codes B2(n, k + 2), • einer Mittelungsschaltung (MS) zur Verknüpfung zweier Wörter eines Bose-Lin-Codes B2(n, k + 2) und • einem 6-Bit-Two-Rail-Checker (TRC) kombiniert ist, wobei der Eingang des Checkers für C(n, k) gemäß Anspruch 13 mit dem Ausgang der Mittelungsschaltung (MS) und der Ausgang des Checkers für C(n, k) gemäß Anspruch 13 mit dem Eingang des Two-Rail-Checkers (TRC) verbunden ist und der Eingang der Mittelungsschaltung (MS) mit dem Ausgang der Schaltungseinheit zur Bereitstellung von Wörtern eines Bose-Lin-Codes B2(n, k + 2) verbunden ist und zusätzlich ein zweiter Ausgang der Mittelungsschaltung (MS) mit einem Eingang des Two-Rail-Checkers (TRC) verbunden ist.
  15. Checker nach einem der Ansprüche 11 bis 14, dadurch gekennzeichnet, daß der Checker ein Register (R) mit Reset aufweist.
  16. Checker nach einem der Ansprüche 11 bis 14, dadurch gekennzeichnet, daß der Checker ein Register (R) ohne Reset aufweist.
  17. Checker nach Anspruch 13, dadurch gekennzeichnet, daß der n + k-Bit Bose-Codewortgenerator so ausgebildet ist, daß mit ihm alle von dem aus dem Informationsbit-Nullvektor und dem zugehörigen Prüfsymbol bestehenden Codewort verschiedenen Wörter aus B1(n, k) erzeugbar sind.
  18. Checker nach Anspruch 14, dadurch gekennzeichnet, daß der n + k-Bit Bose-Lin-Codewort-Generator so ausgebildet ist, daß mit ihm alle von dem aus dem Informationsbit-Nullvektor und dem zugehörigen Prüfsymbol bestehenden Codewort verschiedenen Wörter aus B2(n, k) und alle Bose-Lin-Nichtcodewörter, in denen sich die Prüfsymbole von den durch den Bose-Lin-Codewortgenerator generierbaren Bose-Lin-Codewörtern um +2k–1 oder –2k–1 unterscheiden, erzeugbar sind.
  19. Checker nach Anspruch 12, dadurch gekennzeichnet, daß als Parity-Checker eine Gewichts-Mittelungsschaltung verwendet wird, wobei die Eingänge dieser Gewichts-Mittelungsschaltung mit dem Ausgang der Gewichts-Mittelungsschaltung des Checkers für einen Borden-Code B(n, 3) und dem Ausgang eines n-Bit Registers (R) oder dem Ausgang eines n-Bit Ringzählers (RZ) verbunden sind.
  20. Checker nach Anspruch 12, dadurch gekennzeichnet, daß die Schaltungseinheit zur Verknüpfung zweier B(n, 2j – 1)-Codewörter für mindestens ein j mit k ≥ j ≥ 1 als eine aus zwei unabhängigen Teilen aufgebaute Gewichts-Mittelungsschaltung (GMS) ausgebildet ist.
  21. Checker nach Anspruch 12, dadurch gekennzeichnet, daß der Checker Paare von Gewichts-Mittelungsschaltungen (GMS) aufweist, wobei in einer Gewichts-Mittelungsschaltung, die zu einem Paar von Gewichts-Mittelungsschaltungen gehört, höchstens ein D-Flip-Flop durch einen Inverter ersetzt ist.
  22. Checker nach einem der Ansprüche 13 und 14, dadurch gekennzeichnet, daß als Parity-Checker eine Mittelungsschaltung verwendet wird, wobei der Eingang dieser Mittelungsschaltung mit dem Ausgang der Mittelungsschaltung des Checkers für einen Bose-Code B1(n, 2) und dem Ausgang eines n + j-Bit Registers (R) oder dem Ausgang eines Codewort-Generators (CWG) für Wörter eines Bose-Codes B1(n, j) mit k ≥ j ≥ 2 verbunden ist.
  23. Codewort-Generator (CWG), gekennzeichnet durch: • ein n-Bit linear rückgekoppeltes Schieberegister LFSR maximaler Länge mit externer Rückkopplungslogik, wobei die Rückkopplungslogik verdoppelt ist derart, daß der Ausgang der ersten Kopie der Rückkopplungslogik mit dem Schieberegister-Eingang und der Ausgang der zweiten Kopie der Rückkopplungslogik mit dem Eingang eines XOR-Gatters verbunden ist, • ein XOR-Gatter mit zwei Eingängen und einem Ausgang, wobei ein Eingang seine Werte vom Ausgang der zweiten Kopie der LFSR-Rückkopplungslogik bekommt und der andere Eingang seine Werte vom seriellen Ausgang des LFSR erhält, • einen k-Bit modulo 2k Aufwärts-/Abwärtszähler mit zwei Eingängen und k oder k + 1 Ausgängen, wobei der Count-Enable-Eingang mit dem Ausgang des XOR-Gatters und der up/down-Eingang mit dem Ausgang des Schieberegisters verbunden ist und, bei Vorhandensein, der k + 1-te Ausgang der Ausgabe des invertierten am meisten signifikanten Zählbits dient.
  24. n + k-Bit Mittelungsschaltung (MS) bestehend aus: • einer aus n Volladdierern (VA) gebildeten Gewichts-Mittelungsschaltung mit n Eingängen für einen Operanden x(i), n Eingängen für einen Operanden y(i), einem Übertrags-Eingang und n Ausgängen für das Ergebnis z(i), wobei der Summen-Ausgang jedes Volladdierers (VA) mit dem Übertrags-Eingang des nachfolgenden Volladdierers (VA) verbunden ist; • einem k-Bit Addierer mit Übertragsweiterleitung (Ripple-Carry-Addierer) mit k Eingängen für einen Operanden x(c), k Eingängen für einen Operanden y(c), einem Übertrags-Eingang, der mit dem Summen-Ausgang des letzten Volladdierers (VA) der Gewichts-Mittelungsschaltung verbunden ist, k – 1 Ausgängen für das Ergebnis z(c) und einem Ausgang d1, • zwei D-Flip-Flops (D-FF) derart, daß der Ausgang d1 des Ripple-Carry-Addierers mit dem Eingang des ersten D-Flip-Flops (D-FF), der Ausgang d0 des ersten D-Flip-Flops (D-FF) mit dem Eingang des zweiten D-Flip-Flops (D-FF) und der Ausgang des zweiten D-Flip-Flops (D-FF) mit dem Übertrags-Eingang der Gewichts-Mittelungsschaltung verbunden ist.
  25. n + k-Bit Mittelungsschaltung (MS) bestehend aus: • einer ersten Schaltung, die s Eingänge für s Bits eines Operanden x(i), s Eingänge für s Bits eines Operanden y(i), einen Übertrags-Eingang c(i)0 , s Ausgänge für s Bits eines Ergebnisses z(i), 1 ≤ s ≤ n, und einen Übertrags-Ausgang d0 aufweist, und die aus s Volladdierern (VA) derart besteht, daß der Summen-Ausgang jedes Volladdierers (VA) mit dem Übertrags-Eingang des nachfolgenden Volladdierers (VA) verbunden ist, die weiterhin ein D-Flip-Flop (D-FF) umfaßt, dessen Ausgang mit dem Eingang c(i)0 und einem Inverter verbunden ist und der Ausgang des Inverters mit dem Eingang des D-Flip-Flops (D-FF) verbunden ist, • einer zweiten Schaltung, die k Eingänge für einen Operanden x(c) und n – s Eingänge für x(i), k Eingänge für einen Operanden y(c) und n – s Eingänge für y(i), einen Übertrags-Eingang c(i)s , k – 1 Ausgänge für ein Ergebnis z(c) und n – s Ausgänge für z(i), 1 ≤ s ≤ n, und einen Übertrags-Ausgang d1 aufweist, und welche aus n – s + k Volladdierern (VA) besteht, wobei die ersten n – s Volladdierer (VA) derart miteinander verbunden sind, daß der Summen-Ausgang mit dem Übertrags-Eingang des nachfolgenden Volladdierers (VA) verbunden ist, und die anderen k Volladdierer (VA) einen k-Bit Ripple-Carry-Addierer bilden, und die zweite Schaltung weiterhin ein D-Flip-Flop (D-FF) umfaßt, dessen Ausgang mit dem Eingang c(i)s und einem Inverter verbunden ist und der Ausgang des Inverters mit dem Eingang des D-Flip-Flops (D-FF) verbunden ist.
  26. Checker nach einem der Ansprüche 13 und 14, dadurch gekennzeichnet, daß wenigstens ein Teil der Schaltungseinheiten zur Verknüpfung zweier Codewörter als Mittelungsschaltung gemäß Anspruch 24 realisiert ist.
  27. Checker nach einem der Ansprüche 13 und 14, dadurch gekennzeichnet, daß Checker Paare von Mittelungsschaltungen gemäß Anspruch 24 aufweist, wobei in einer Mittelungsschaltung, die zu einem Paar von Mittelungsschaltungen gehört, höchstens ein D-Flip-Flop durch einen Inverter ersetzt ist.
  28. Checker nach einem der Ansprüche 13 und 14, dadurch gekennzeichnet, daß wenigstens ein Teil der Schaltungseinheiten zur Verknüpfung zweier Codewörter als Mittelungsschaltung gemäß Anspruch 25 realisiert ist.
  29. Anordnung mit mindestens einem Chip und/oder Prozessor, der (die) derart eingerichtet ist (sind), daß ein Verfahren zur Erkennung unidirektionaler Fehler in Wörtern x eines fehlererkennenden Codes C(n, k) gemäß einem der Ansprüche 1 bis 10 durchführbar ist.
DE2003109255 2003-02-25 2003-02-25 Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler Expired - Fee Related DE10309255B4 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE2003109255 DE10309255B4 (de) 2003-02-25 2003-02-25 Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler
EP04714325A EP1609248A2 (de) 2003-02-25 2004-02-25 Verfahren und schaltungen zur erkennung unidirektionaler fehler
PCT/EP2004/001938 WO2004077682A2 (de) 2003-02-25 2004-02-25 Verfahren und schaltungen zur erkennung unidirektionaler fehler

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003109255 DE10309255B4 (de) 2003-02-25 2003-02-25 Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler

Publications (2)

Publication Number Publication Date
DE10309255A1 DE10309255A1 (de) 2004-09-16
DE10309255B4 true DE10309255B4 (de) 2007-09-13

Family

ID=32864077

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003109255 Expired - Fee Related DE10309255B4 (de) 2003-02-25 2003-02-25 Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler

Country Status (3)

Country Link
EP (1) EP1609248A2 (de)
DE (1) DE10309255B4 (de)
WO (1) WO2004077682A2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004062825B4 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
GB201511382D0 (en) 2015-06-29 2015-08-12 Imp Innovations Ltd Novel compounds and their use in therapy

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4691319A (en) * 1985-06-18 1987-09-01 Bella Bose Method and system for detecting a predetermined number of unidirectional errors
DE4406391C1 (de) * 1994-02-26 1995-03-16 Bosch Gmbh Robert Elektronisches Rechenwerk
US5586124A (en) * 1993-09-02 1996-12-17 Sofia Koloni, Ltd. Strongly fail-safe interface based on concurrent checking
US5650340A (en) * 1994-08-18 1997-07-22 Sun Microsystems, Inc. Method of making asymmetric low power MOS devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4691319A (en) * 1985-06-18 1987-09-01 Bella Bose Method and system for detecting a predetermined number of unidirectional errors
US5586124A (en) * 1993-09-02 1996-12-17 Sofia Koloni, Ltd. Strongly fail-safe interface based on concurrent checking
DE4406391C1 (de) * 1994-02-26 1995-03-16 Bosch Gmbh Robert Elektronisches Rechenwerk
US5650340A (en) * 1994-08-18 1997-07-22 Sun Microsystems, Inc. Method of making asymmetric low power MOS devices

Non-Patent Citations (14)

* Cited by examiner, † Cited by third party
Title
BARDELL,P.H.: Design Consideration for Parallel Pseudorandom Pattern Generators. In: Journal of Electronic Testing, Bd.1, Nr.1, Feb.1990, S.73-87 *
BARDELL,P.H.: Primitive Polynomials of Degree 301 through 500. In: Journal of Electronic Testing, Bd.3, Nr.2, 1992, S.175-176 *
BISWAS,G.P., SENGUPTA,I.: A Design Technique of TSC Checkers for Borden's Code. In: 10th Interna- tional Conference on VLSI Design, Januar 1997, S. 529-530
BISWAS,G.P., SENGUPTA,I.: A Design Technique of TSC Checkers for Borden's Code. In: 10th International Conference on VLSI Design, Januar 1997, S. 529-530 *
BORDEN,J.M.: Optimal Asymmetric Error Detecting Codes. In: Information and Control, Bd.53, April 1982, S.66-73 *
BOSE,B., LIN,D.J.: Systematic Unidirectional Error -Detecting Codes. In: IEEE Transactions on Compu- ters, Bd.C-34, Nr.11, November 1985, S.1026-1032
BOSE,B., LIN,D.J.: Systematic Unidirectional Error -Detecting Codes. In: IEEE Transactions on Computers, Bd.C-34, Nr.11, November 1985, S.1026-1032 *
BOSE,B.: Burst Unidirectional Error-Detecting Co- des. In: IEEE Transactions on Computers, Bd.C-35, Nr.4, April 1986, S.350-353
BOSE,B.: Burst Unidirectional Error-Detecting Codes. In: IEEE Transactions on Computers, Bd.C-35, Nr.4, April 1986, S.350-353 *
Cost-Effective Self-Testing Checker for Optimal d-Unidirecional Error Detecting Codes. In: IEICE Transactions on Information and Systems. Bd.E75-D, Nr.6, November 1992, S.771-777
FUJIWARA,E., YOSHIKAWA,M.: A Design Method for *
HANIOTAKIS,T. [u.a.]: Totally Self-Checking Chek- kers for Borden Codes. In: International Journal of Electronics, Bd.76, Nr.1, 1994, S.57-64
HANIOTAKIS,T., PASCHALIS,A., NIKOLOS,D.: Efficient Toally Self-Checking Checkers for a Class of Bor- den Codes. In: IEEE Transactions on Computers, Bd. 44, Nr.11, November 1995, S.1318-1322: JHA,N.K.: A Totally Self-Checking Checkers for Borden's Code. In: IEEE Transactions on Computer- Aided Design of Integrated Circuits and Systems, Band 8, Nr. 7, Juli 1989, S.731-736
JHA,N.K.: Totally Self-Checking Checker Designs for Bose-Lin, Bose, and Blaum Codes. In: IEEE Transactions of Computer-Aided Design, Bd.10, Nr. 1, Januar 1991, S.136-143

Also Published As

Publication number Publication date
EP1609248A2 (de) 2005-12-28
WO2004077682A8 (de) 2005-05-26
DE10309255A1 (de) 2004-09-16
WO2004077682A3 (de) 2004-11-11
WO2004077682A2 (de) 2004-09-10

Similar Documents

Publication Publication Date Title
EP2976707B1 (de) Vorrichtung und verfahren zum erzeugen von zufallsbits
WO2013004489A1 (de) Verfahren zum prüfen eines m aus n codes
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE2320422A1 (de) Verfahren zur fehlererkennung
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE102012210990A1 (de) Verfahren zum Erzeugen von Zufallszahlen
DE1937249C3 (de) Selbstprüf ende Fehlererkennungsschaltung
DE102014200163A1 (de) Verfahren zum Erzeugen einer Ausgabe einer Zufallsquelle eines Zufallsgenerators
DE10309255B4 (de) Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler
DE102012102080A1 (de) Fehlertolerante Flip-Flops
WO2013004494A1 (de) Verfahren zum sicheren prüfen eines codes
DE1449334B2 (de) Decodierer für einen rekurrenten Code
DE102014200309A1 (de) Verfahren zum Überprüfen einer Ausgabe
DE102006027448B4 (de) Schaltungsanordnung
WO2006003023A2 (de) Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes
DE102011080659B4 (de) Vorrichtung und verfahren zum testen einer zu testenden schaltung
DE1937259A1 (de) Selbstpruefende Fehlererkennungsschaltung
EP1579230B1 (de) Vorrichtung und verfahren zur bildung einer signatur
EP2591552A1 (de) Datenschnittstelle mit eigensicherer, integrierter fehlererkennung
DE102022118280A1 (de) Fehlerverarbeitung und Korrektur benachbarter 2-Bitfehler
WO2016020098A1 (de) Erzeugen eines identifizierers für eine schaltung
DE10253949B3 (de) Verfahren zur Bestimmung einer Restfehlerwahrscheinlichkeit bei der Übertragung von Daten
DE10351475A1 (de) Briefkasten
DE2203414A1 (de) Schaltungsanordnung zur herstellung des gleichlaufs von sende- und empfangseinrichtungen bei der uebertragung von datenbloecken

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee