-
Es sind verschiedene Ansätze bekannt, Daten (z.B. binäre Daten) in Speicherzellen eines Speichers abzuspeichern und aus den Speicherzellen des Speichers zur weiteren Verarbeitung auszulesen.
-
-
US 2011/0296274 A1 bezieht sich auf die Speicherung von Daten in Festkörperspeichern. Mehrstufige Speicherzellen können genutzt werden, um einen Zellenrang zu bestimmen.
-
US 2013/0176780 A1 betrifft die Erkennung von Fehlern von aus Speicherzellen eines Flash-Speichers ausgelesenen Daten. Für die Fehlererkennung werden Fehlerkorrelationen zwischen mehreren Bits, die innerhalb eines verschiebbaren Fensters fallen, bestimmt.
-
Die Aufgabe der Erfindung besteht darin, den Umgang mit dem Speicher zu verbessern und insbesondere die Speicherung und/oder das Auslesen effizienter zu gestalten.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Zur Lösung der Aufgabe wird ein Verfahren angegeben zum Lesen von Speicherzellen aus einem Speicher,
- - bei dem physikalische Werte aus einer Anzahl von n Speicherzellen bestimmt werden, wobei n mindestens drei ist, wobei die physikalischen Werte Zeitpunkte sind,
- - bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden,
- - bei dem anhand der verglichenen physikalischen Werte den n Speicherzellen K unterschiedliche digitale Speicherzellenwerte zugeordnet werden,
- - bei dem den so erhaltenen digitalen Speicherzellenwerten ein Codewort eines n1-, ..., nK-aus-n-Codes zugeordnet wird,
- - bei dem die physikalischen Werte zumindest teilweise untereinander verglichen werden, so dass eine Reihenfolge zumindest eines Teils der physikalischen Werte bestimmt wird,
- - bei dem anhand der Reihenfolge den n Speicherzellen die K unterschiedlichen digitalen Speicherzellenwerte zugeordnet werden.
-
Hierbei gelten insbesondere: n ≥ 3, n1 ≥ 1 bis nK ≥ 1, K ≥ 2 und m ≥ 1.
-
Die Anzahl der Speicherzellenwerte beträgt n, wobei nur K unterschiedliche digitale Werte auftreten.
-
Weiterhin gilt: n1 +... + nK = n.
-
Der Vergleich der physikalischen Werte kann einen Vergleich analoger Werte umfassen.
-
Der Vergleich kann auf den physikalischen Werten selbst erfolgen oder auf den physikalischen Werten basieren. Insbesondere können aus den physikalischen Werten abgeleitete Werte verglichen werden. Insoweit sind durch den hier genannten Vergleich der physikalischen Werte auch Vergleiche abgedeckt, die sich auf Werte beziehen, die aus den physikalischen Werten abgeleitet werden können.
-
Dadurch, dass die Zuordnung digitaler Werte zu physikalischen Werten darauf basiert, dass die aus einer Anzahl von n Speicherzellen bestimmten physikalischen Werte untereinander verglichen werden, kommt es nur selten zu einer fehlerhaften Zuordnung der digitalen Werte. Eine solche fehlerhafte Zuordnung der digitalen Werte kann nur erfolgen, wenn zu vergleichende physikalische Werte in einem Überlappungsbereich der Häufigkeitsverteilungen ihrer Werte liegen und sich beim Vergleich ihre Reihenfolge ändert.
-
Hierbei wird für n1 erste Speicherzellen in der Reihenfolge ein erster digitaler Speicherzellenwert bestimmt und für nK letzte Speicherzellen in der Reihenfolge ein K-ter digitaler Speicherzellenwert bestimmt.
-
Insbesondere kann in Abhängigkeit von der Position der physikalischen Werte der Reihenfolge ein digitaler Speicherzellenwert zugeordnet werden.
-
Wird für n1 erste Speicherzellen in der Reihenfolge ein erster digitaler Speicherzellenwert bestimmt und ist n1 ≥ 2, dann kann es nicht notwendig sein, eine Reihenfolge der ersten n1 Speicherzellen zu bestimmen. Es kann in diesem Fall ausreichend sein, festzustellen, dass eine Speicherzelle zu den ersten n1 Speicherzellen gehört, ohne bestimmen zu müssen, an welcher Position in der Reihenfolge der ersten n1 Speicherzellen eine Speicherzelle positioniert ist. Allen n1 ersten Speicherzellen kann beispielsweise der gleiche digitale Wert 1 zugeordnet werden.
-
Entsprechende Aussagen gelten für weitere Speicherzellen bis zu den nK K-ten Speicherzellen. Es kann ausreichend sein, eine teilweise bestimmte Reihenfolge oder eine Reihenfolge für eine Teilmenge der Speicherzellenwerte zu bestimmen.
-
Es ist eine Weiterbildung, dass die physikalischen Werte bestimmt werden, indem die n Speicherzellen ausgelesen werden.
-
Es ist eine Weiterbildung, dass alle physikalischen Werte untereinander verglichen werden.
-
Es ist eine Weiterbildung, dass K = 2 ist, so dass der n1-, ..., nK-aus-n-Code ein n1-, n2-aus-n-Code ist, wobei n1 erste Speicherzellenwerte untereinander den gleichen ersten Wert und n2 zweite Speicherzellenwerte untereinander den gleichen zweiten Wert aufweisen, wobei der erste Wert von dem zweiten Wert verschieden ist.
-
Der n1-, n2-aus-n-Code kann auch als n1-aus-n-Code bezeichnet werden. Hierbei gilt n2 = n - n1.
-
Es ist eine Weiterbildung, dass K = 3 ist, so dass der n1-, ..., nK-aus-n-Code ein n1-, n2-, n3-aus-n-Code ist, wobei n1 erste Speicherzellenwerte untereinander den gleichen ersten Wert, n2 zweite Speicherzellenwerte untereinander den gleichen zweiten Wert und n3 dritte Speicherzellenwerte untereinander den gleichen dritten Wert aufweisen, wobei der erste Wert, der zweite Wert und der dritte Wert jeweils voneinander verschieden sind.
-
Es ist eine Weiterbildung, dass K > 3 gilt.
-
In diesem Beispiel können mehr als drei Werte pro Speicherzelle, d.h. mehr als drei digitale Speicherzellenwerte, bestimmt werden.
-
Es ist eine Weiterbildung, dass die aus den Speicherzellen bestimmten Speicherzellenwerte durch eine eindeutig umkehrbare Transformation bestimmt werden.
-
Die Anzahl n der Speicherzellenwerte ist hierbei vorzugsweise kleiner als zweimal die Anzahl der in den Speicherzellen gespeicherten Bits.
-
Es ist eine Weiterbildung, dass die physikalischen Werte Zeitpunkte sind.
-
Es ist eine Weiterbildung, dass jeweils ein Zeitpunkt mittels einer zeitlichen Integration des physikalischen Wertes der Speicherzelle bestimmt wird.
-
Es ist eine Weiterbildung, dass der physikalische Wert ein Lesestrom einer Speicherzelle ist.
-
Es ist eine Weiterbildung, dass falls die erhaltenen digitalen Speicherzellenwerte ein Codewort eines n1-, ..., nK-aus-n-Codes darstellen, mittels einer Rücktransformation aus dem Codewort eine Anzahl von m Bits bestimmt werden.
-
Es ist eine Weiterbildung, dass eine Fehlererkennung und/oder Fehlerkorrektur der m Bits mittels eines Fehlercodes durchgeführt wird.
-
Es ist eine Weiterbildung, dass die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Datenbits bestimmt werden.
-
Es ist eine Weiterbildung, dass die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Speicherzellenwerten bestimmt werden.
-
Es ist eine Weiterbildung, dass der Fehlercode ein Bytefehler-korrigierender und/oder ein Bytefehler-erkennender Code ist.
-
Es ist eine Weiterbildung, dass ein Byte m Bits umfasst, wenn eine Fehlerkorrektur von Datenbits erfolgt und bei dem ein Byte n Bits umfasst, wenn eine Fehlerkorrektur von Speicherzellen erfolgt.
-
Es ist eine Weiterbildung, dass der Fehlercode ein Bitfehler-korrigierender und/oder ein Bitfehler-erkennender Code ist.
-
Es ist eine Weiterbildung, dass zur Bestimmung der digitalen Speicherzellenwerte mindestens ein Referenzwert verwendet wird.
-
Es ist eine Weiterbildung, dass der Speicher mindestens einen der folgenden Speichertypen umfasst:
- - einen Cache-Speicher,
- - ein Register oder ein Register-Array,
- - einen Flash-Speicher,
- - ein MRAM,
- - ein SRAM,
- - ein RE-RAM,
- - ein PC-RAM,
- - ein FE-RAM,
- - ein CB-RAM,
- - einen Multibit-Speicher,
- - einen Multilevel-Speicher.
-
Weiterhin wird eine Vorrichtung vorgeschlagen zum Verarbeiten von Speicherzellen aus einem Speicher, bei dem die Vorrichtung eine Verarbeitungseinheit aufweist, die eingerichtet ist,
- - physikalische Werte aus einer Anzahl von n Speicherzellen zu bestimmen, wobei n mindestens drei ist, wobei die physikalischen Werte Zeitpunkte sind,
- - die physikalischen Werte zumindest teilweise untereinander zu vergleichen,
- - anhand der verglichenen physikalischen Werte den n Speicherzellen K unterschiedliche digitale Speicherzellenwerte zuzuordnen,
- - den so erhaltenen digitalen Speicherzellenwerten ein Codewort eines n1-, ..., nK-aus-n-Codes zuzuordnen,
- - die physikalischen Werte zumindest teilweise untereinander zu vergleichen und so eine Reihenfolge der physikalischen Werte zu bestimmen,
- - anhand der Reihenfolge der physikalischen Werte den n Speicherzellen die K unterschiedlichen digitalen Speicherzellenwerte zuzuordnen.
-
Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Ein-/Ausgabe-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
-
Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend. Die Vorrichtung kann in einer Komponente oder verteilt in mehreren Komponenten ausgeführt sein.
-
Auch wird die oben genannte Aufgabe gelöst mittels eines Systems umfassend mindestens eine der hier beschriebenen Vorrichtungen.
-
Auch wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, die Schritte des hier beschriebenen Verfahrens durchzuführen.
-
Es wird ein computerlesbares Speichermedium angegeben umfassend von einem Computer ausführbare Anweisungen, die dazu geeignet sind, dass der Computer die Schritte des hier beschriebenen Verfahrens durchführt.
-
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
-
Es zeigen:
- 1a eine Häufigkeitsverteilung für ausgelesene physikalische Werte, wobei ein Referenzwert zwischen den Häufigkeitsverteilungen dargestellt ist;
- 1b eine Häufigkeitsverteilung für ausgelesene physikalische Werte, wobei sich im Gegensatz zu 1a die Häufigkeitsverteilungen überlappen;
- 2a ein Schaubild umfassend mehrere physikalische Werte, die aus den Speicherzellen ausgelesen wurden;
- 2b ein Schaubild mit mehreren Zeitpunkten, wobei je ein Zeitpunkt einem der in 2a dargestellten physikalischen Werte entspricht;
- 3 ein Diagramm, das die Häufigkeitsverteilungen von physikalischen Werten WG einer Speicherzelle veranschaulicht.
- 4 ein Diagramm, das Häufigkeitsverteilungen von aus dem Speicher gelesenen Werten veranschaulicht;
- 5 ein Diagramm, das vier Häufigkeitsverteilungen von aus dem Speicher gelesenen Werten 0, 1, 2 und 3 veranschaulicht, wobei es für die vier Häufigkeitsverteilungen drei Überlappungsbereiche gibt;
- 6 einen Speicher mit vier Speicherzellen, wobei aus den Speicherzellen physikalische Werte ausgelesen und unter Verwendung von mehreren Vergleichern paarweise verglichen werden;
- 7 eine Schaltungsanordnung anhand derer aus den von der Vergleichern aus der Schaltung gemäß 6 die entsprechenden Belegungen der Speicherzellen bestimmt werden mittels mehrerer Logikgatter;
- 8 ein schematisches Diagramm, bei dem Datenbits transformiert, in Speicherzellen eines Speichers gespeichert, die Speicherzellen gelesen und mittels einer inversen Transformation in Datenbits zurück transformiert werden;
- 9 ein schematisches Schaubild, bei dem mehrere Gruppen von Datenbits transformiert, gespeichert und nach dem Lesen in Datenbits zurück transformiert werden;
- 10 eine beispielhafte Schaltungsanordnung, die eine Fehlererkennung oder eine kombinierte Fehlererkennung mit Fehlerkorrektur ermöglicht, wobei die Datenbits durch eine Transformationsschaltung in Speicherbits transformiert werden, die in Speicherzellen eines Speichers gespeichert werden;
- 11 eine alternative Schaltungsanordnung, die eine Fehlerkorrektur oder eine Fehlererkennung ggf. mit Fehlerkorrektur ermöglicht;
- 12 ein weiteres Beispiel einer Variante der in 11 angedeuteten Schaltungsanordnung mit Rücktransformation und Bestimmung gegebenenfalls korrigierter Datenbits;
- 13 eine beispielhafte Schaltungsanordnung umfassend mehrere Logikgatter zur Bestimmung eines Hold-Signals für mehrere Latches;
- 14 eine beispielhafte Schaltungsanordnung zur Bestimmung der ersten drei schnellsten Nullen beim Auslesen von sechs Speicherzellen, wobei zur Ansteuerung mehrerer Latches das mittels der Schaltungsanordnung aus 13 erzeugte Hold-Signal genutzt wird;
- 15 eine schematische Anordnung zur Veranschaulichung wie Datenbits mittels einer Transformationsschaltung transformiert und als Speicherzellenwerte in Speicherzellen eines Speichers gespeichert werden;
- 16 eine schematische Umsetzung der Anordnung von 15, wobei in 16 beispielhaft n = k = 6, K = 3 und n1 = n2 = n3 = 2 gelten;
- 17 eine schematische Anordnung zur Transformation von vier Datenbits x1, x2, x3, x4 in vier Speicherzellenwerte z1, z2, z3, z4.
-
Eine Speicherzelle kann unterschiedliche physikalische Werte oder Zustände annehmen, die verschiedenen digitalen Werten entsprechen.
-
Mit WG wird ein Wert einer physikalischen Größe G einer Speicherzelle S und mit WD wird ein digitaler Wert der Speicherzelle S bezeichnet.
-
Der digitale Wert WD kann binär sein und somit einen von zwei Werten, die mit 0 und 1 bezeichnet sein können, annehmen. Ein digitaler Wert ist insbesondere ein Wert aus einer endlichen Anzahl von Werten.
-
Auch ist es möglich, dass der digitale Wert WD mehr als zwei verschiedene Werte annehmen kann. Beispielsweise kann ein digitaler Wert drei verschiedene Werte annehmen; in diesem Fall können diese unterschiedlichen digitalen Werte mit 0, 1, 2 bezeichnet sein. Allgemein kann ein digitaler Wert K mit K ≥ 2 unterschiedliche Werte annehmen. Diese K unterschiedlichen Werte können mit 0,1, ..., K - 1 bezeichnet werden. Ein Speicher, der Speicherzellen aufweist, die mehr als zwei digitale Speicherzellenwerte speichern können, wird hier auch als mehrwertige Speicher oder Multi-Level-Speicher bezeichnet. Die zugehörigen Speicherzellen können als mehrwertige oder Multi-Level-Speicherzellen bezeichnet werden.
-
Entsprechend kann ein Speicher mit Speicherzellen, die zwei digitale Werte speichern, als binärer Speicher und die entsprechenden Speicherzellen können als binäre Speicherzellen bezeichnet werden.
-
Ein aus der Speicherzelle S ausgelesener physikalischer Wert wird mit WA bezeichnet.
-
Beispielsweise kann der physikalische Wert oder Zustand einer Speicherzelle ein elektrischer Widerstandswert sein. Entsprechend können binär zwei Widerstandswerte unterschieden werden: Beispielsweise kann ein größerer Widerstandswert dem digitalen Wert 0 und ein kleinerer Widerstandswert dem digitalen Wert 1 entsprechen. In einem anderen Beispiel kann der größere Widerstandswert dem digitalen Wert 1 und der kleinere Widerstandswert dem digitalen Wert 0 entsprechen.
-
Werden mehr als zwei digitale Werte in einer Speicherzelle gespeichert, kann entsprechend eine Staffelung (in Richtung der größeren oder kleineren Widerstandswerte) erfolgen: Beispielsweise kann ein größter Widerstandswert dem digitalen Wert 0, ein zweitgrößter Widerstandswert dem digitalen Wert 1, ein drittgrößter Widerstandswert dem digitalen Wert 2, etc. und schließlich ein kleinster Widerstandswert dem digitalen Wert K - 1 zugeordnet werden (hierbei sind wieder K digitale Werte in der Speicherzelle S speicherbar).
-
Beim Auslesen einer Speicherzelle S wird ein analoger physikalischer Wert WA bestimmt, der von dem physikalischen Wert WG abhängt, der beim Einschreiben bzw. Speichern des digitalen Werts WD erzeugt wurde.
-
Aus dem ausgelesenen physikalischen Wert WA kann im fehlerfreien Fall der entsprechende digitale Wert WD bestimmt werden.
-
Entsprechen unterschiedliche elektrische Widerstandswerte unterschiedlichen Zuständen der Speicherzelle S, wie das beispielsweise bei einem MRAM der Fall ist, dann ist der gespeicherte physikalische Wert WG ein Widerstandswert und der gelesene physikalische Wert WA kann ein Strom oder eine Spannung sein.
-
Beispielsweise kann beim Auslesen von Speicherzellen mindestens ein Referenzwert R genutzt werden, der für alle oder für mehrere ausgelesene Speicherzellen gleich ist. Optional kann der (mindestens eine) Referenzwert (auch oder teilweise) extern zur Verfügung gestellt werden. Der aus einer Speicherzelle ausgelesene Wert WA kann mit dem Referenzwert R verglichen werden.
-
Nachfolgend wird beispielhaft insbesondere auf binäre Speicherzellen abgestellt, die zwei unterschiedliche digitale Werte 0 und 1 speichern können. Entsprechend können aber auch Speicherzellen vorgesehen sein, die jeweils mehr als zwei digitale Werte speichern können.
-
Entspricht ein größerer Widerstandswert dem binären Wert 0 und ein kleinerer Widerstandswert dem binären Wert 1, dann entspricht ein kleinerer ausgelesener Wert WA eines Stroms dem digitalen Wert 0 und ein größerer ausgelesener Wert WA des Stroms dem digitalen Wert 1.
-
Entsprechend ist es eine Option, dass beim Lesen einer Speicherzelle eine Spannung als ausgelesener Wert WA bestimmt wird, deren Höhe davon abhängt, ob zuvor in die Speicherzelle der binäre Wert 0 oder der binäre Wert 1 geschrieben wurde.
-
Wird der digitale Wert W
D durch einen Vergleich des ausgelesenen Werts W
A mit einem einzigen entsprechenden Referenzwert R bestimmt, kann für den digitalen Wert W
D gelten:
-
Wird in mehrere Speicherzellen ein digitaler Wert 0 geschrieben, so nehmen die beschriebenen Speicherzellen beispielsweise auf Grund von statistischen Schwankungen (z.B. Prozessschwankungen in der Fertigung) unterschiedliche physikalische Werte WG an, die alle im fehlerfreien Fall dem digitalen Wert WD = 0 entsprechen und die durch eine Häufigkeitsverteilung beschrieben werden können. Entsprechend nehmen auch die ausgelesenen Werte WA unterschiedliche Werte gemäß einer Häufigkeitsverteilung an.
-
Sinngemäß gilt diese Aussage für Speicherzellen, in die ein digitaler Wert 1 oder auch ein anderer Wert geschrieben wird: Wird in mehrere Speicherzellen der digitale Wert 1 geschrieben, so nehmen die beschriebenen Speicherzellen beispielsweise auf Grund von statistischen Schwankungen (z.B. Prozessschwankungen in der Fertigung) unterschiedliche physikalische Werte WG an, die alle im fehlerfreien Fall dem digitalen Wert WD = 1 entsprechen und die durch eine Häufigkeitsverteilung beschrieben werden können. Entsprechend nehmen auch die ausgelesenen Werte WA unterschiedliche Werte gemäß einer Häufigkeitsverteilung an.
-
Ist es möglich, in einer Speicherzelle mehr als ein Bit zu speichern, so gelten diese Aussagen entsprechend für alle digitalen Werte, die in jeder der Speicherzellen gespeichert werden können.
-
1a zeigt beispielhaft eine Häufigkeitsverteilung 101 für die ausgelesenen Werte WA(1), die dem digitalen Wert 1 entsprechen und eine Häufigkeitsverteilung 102 für die ausgelesenen Werte WA(0), die dem digitalen Wert 0 entsprechen. Auf der x-Achse sind die unterschiedlichen ausgelesenen Werten WA und auf der y-Achse die Häufigkeiten der ausgelesenen Werte WA dargestellt. Weiterhin ist ein Referenzwert R zwischen den Häufigkeitsverteilungen 101 und 102 dargestellt.
-
In dem in 1a dargestellten Beispiel gibt es keine Überlappung zwischen den Häufigkeitsverteilungen 101 und 102. Somit gibt es keine fehlerhafte Zuordnung der binären Werte 0 und 1. Mit anderen Worten ist anhand des Referenzwerts R eine eindeutige und fehlerfreie Zuordnung des ausgelesenen Werts WA zu dem jeweiligen binären Wert 0 oder 1 möglich, falls kein Lesefehler auftritt.
-
In diesem Beispiel wird vereinfacht davon ausgegangen, dass es auch durch Einwirkung von Strahlung oder Erwärmung zu keinen fehlerhaften Zuordnungen kommt.
-
1b zeigt beispielhaft eine Häufigkeitsverteilung 103 für die ausgelesenen Werte WA(1), die dem digitalen Wert 1 entsprechen und eine Häufigkeitsverteilung 104 für die ausgelesenen Werte WA(0), die dem digitalen Wert 0 entsprechen. Wieder ist ein Referenzwert R zwischen den Häufigkeitsverteilungen 103 und 104 dargestellt.
-
Im Gegensatz zu den in 1a dargestellten Häufigkeitsverteilungen 101 und 102 überlappen sich die Häufigkeitsverteilungen 103 und 104. Eine derartige Überlappung kann beispielsweise bei MRAM-Speicherzellen auftreten. In 1b ist ein Überlappungsbereich 105 gezeigt; dieser wird auch mit [0,1]A bezeichnet.
-
Wird einem ausgelesenen Wert WA der binäre Wert 0 zugeordnet, wenn WA < R gilt und wird dem Wert WA der binäre Wert 1 zugeordnet wenn WA ≥ R gilt, so kann diese Zuordnung fehlerhaft sein, falls der ausgelesene Wert WA in dem Überlappungsbereich 105 liegt.
-
Weiterhin können Fehler auftreten, die auf einer Einwirkung durch Strahlung oder Wärme oder auf permanenten Fehlern von Speicherzellen beruhen.
-
Somit kann aufgrund des Überlappungsbereichs 105 unter Verwendung des Referenzwertes R mit relevanter Wahrscheinlichkeit eine fehlerhafte Zuordnung erfolgen: Liegt ein ausgelesener Wert WA, der einem binären Wert 0 entspricht, in dem Überlappungsbereich 105, kann in etwa der Hälfte der Fälle WA > R gelten, was zu einer fehlerhaften Zuordnung führt. Entsprechend gilt: Liegt ein ausgelesener Wert WA, der einem binären Wert 1 entspricht, in dem Überlappungsbereich 105, kann in etwa der Hälfte der Fälle WA < R gelten, was ebenfalls zu einer fehlerhaften Zuordnung führt.
-
Daher kann es für ausgelesene Werte WA, wenn sie in dem Überlappungsbereich 105 liegen, zu einer fehlerhaften Zuordnung eines zugehörigen digitalen Wertes kommen. Ein Bereich 106 zeigt einen Anteil der ausgelesenen Werte WA, die fehlerhaft dem binären Wert 1 zugeordnet werden, obwohl es sich um binäre Werte 0 handelt. Damit ist die Häufigkeit, dass ein fehlerhafter digitaler Wert zugeordnet wird, wesentlich durch die Häufigkeit bestimmt, dass der ausgelesene Wert WA in dem Überlappungsbereich 105 liegt. Dies ist insbesondere für große Überlappungsbereiche, wie sie beispielsweise bei modernen Technologien auftreten können, von Nachteil.
-
Ein digitaler binärer Wert x, der die Werte 0 und 1 annehmen kann, kann unter Verwendung von zwei Speicherzellen S1 und S2 gespeichert werden. Beispielsweise kann für x = 0 ein Wert 0 in die Speicherzelle S1 und ein Wert 1 in die Speicherzelle S2 und für x = 1 ein Wert 1 in die Speicherzelle S1 und ein Wert 0 in die Speicherzelle S2 geschrieben (gespeichert) werden. Entsprechend kann umgekehrt für x = 0 ein Wert 1 in die Speicherzelle S1 und ein Wert 0 in die Speicherzelle S2 und für x = 1 ein Wert 0 in die Speicherzelle S1 und ein Wert 1 in die Speicherzelle S2 geschrieben werden.
-
Die aus den beiden Speicherzellen S1 und S2 ausgelesenen (physikalischen) Werte können beispielsweise mittels eines Komparators miteinander verglichen werden, um im fehlerfreien Fall zu bestimmen, ob der Wert 0 oder der Wert 1 gespeichert wurde.
-
Beispielsweise wird aus der Speicherzelle S
1 der physikalische Wert
und aus der Speicherzelle S
2 der physikalische Wert
gelesen. Gilt
kann das bedeuten, dass der binäre Wert x = 0 in den beiden Speicherzellen S
1 und S
2 gespeichert wurde. Gilt
kann das bedeuten, dass der binäre Wert x = 1 in den beiden Speicherzellen S
1 und S
2 gespeichert wurde.
-
In diesem Beispiel werden die in den Speicherzellen S
1 und S
2 gespeicherten ausgelesenen Werte
miteinander und nicht mit einem Referenzwert verglichen. Dadurch kann die Wahrscheinlichkeit für das Auftreten eines Fehlers durch gegenseitigen Vergleich der ausgelesenen Werte deutlich reduziert werden.
-
Ein Fehler kann nur auftreten, wenn sowohl der ausgelesene Wert
der Zelle S
1 als auch der ausgelesene Wert
der Zelle S
2 in dem Überlappungsbereich der Verteilungen W
A(0) und W
A(1) liegen. Dies wird wesentlich seltener der Fall sein, als dass nur einer der beiden ausgelesenen Werte in dem Überlappungsbereich liegt.
-
Wird hingegen der aus einer Speicherzelle ausgelesene Wert mit einem Referenzwert verglichen, kann ein Fehler bereits dann auftreten, wenn dieser eine ausgelesene Wert in dem Überlappungsbereich der entsprechenden Verteilungen liegt.
-
Hierbei ist es von Nachteil, dass pro zu speicherndem Bit zwei Speicherzellen, also für die Speicherung von n Bits 2 - n Speicherzellen erforderlich sind.
-
Ein Vorteil der hier vorgestellten Beispiele besteht darin, dass ermöglicht wird, digitale Werte mit hoher Zuverlässigkeit unter Verwendung möglichst weniger Speicherzellen zu speichern. Ein weiterer Vorteil ist es, dass zusätzlich beim Speichern ein Fehlercode verwendet werden kann, so dass Lesefehler zumindest teilweise erkannt und/oder korrigiert werden können.
-
Transformation von Datenbits in Speicherzellenwerte
-
Beispielsweise werden 2k mögliche Belegungen von k Bits in n Speicherzellenwerte transformiert. Die Speicherzellenwerte werden in n Speicherzellen, beispielsweise in Speicherzellen eines adressierbaren Speichers, gespeichert.
-
Die in n Speicherzellen gespeicherten n Speicherzellenwerte können aus den n Speicherzellen ausgelesen werden, und die ausgelesenen n Speicherzellenwerte können in die k Datenbits zurücktransformiert werden, wenn kein Fehler vorliegt.
-
Die Speicherzellenwerte können binäre Werte (z.B. die Werte 0 und 1) sein. In diesem Fall werden in den Speicherzellen des Speichers binäre Werte gespeichert. Diese Speicherzellen können dann als binäre Speicherzellen bezeichnet werden.
-
Es ist auch möglich, dass jeder der Speicherzellenwerte K verschiedene Werte annehmen kann. Im Unterschied zu den binären Speicherzellenwerten, kann hier jeder Speicherzellenwert mehr als zwei Werte annehmen. Es gilt also: K > 2, wobei die K Speicherzellenwerte 0,1, ... , K - 1 sind. Sind beispielsweise dreiwertige Speicherzellen vorgesehen, die entsprechend dreiwertige Speicherzellenwerte speichern können, so kann jedem Speicherzellenwert einer der Werte 0, 1 oder 2 zugeordnet sein.
-
Es ist auch möglich, dass i Speicherzellen unterschiedliche Ki-wertige Werte (binär oder mehrwertig, d.h. Ki ≥ 2) speichern können. Beispielsweise können mindestens zwei Speicherzellen vorgesehen sein, von denen die eine Speicherzelle K1-wertige Werte und die andere K2-wertige Werte speichert, wobei K1 ≠ K2.
-
Binäre Speicherzellenwerte
-
Zunächst wird der Fall betrachtet, dass die Speicherzellenwerte binär sind.
-
Es sollen k Datenbits x1, ... , xk in n Speicherzellenwerte z1, ... , zn transformiert und in n Speicherzellen gespeichert werden.
-
Die möglichen 2k Belegungen der k Datenbits xi,...,xk werden beispielsweise durch eine kombinatorische Schaltung (auch bezeichnet als Transformationsschaltung) in Speicherzellenwerte transformiert. Die Transformationsschaltung stellt hierzu eine Transformation bereit, die eine Abbildung der 2k Belegungen der k Datenbits in n Speicherzellenwerte durchführt.
-
Die Transformation ist so realisiert, dass die Speicherzellenwerte, in die die Datenbits transformiert werden, Codewörter eines n1-aus-n-Codes sind. Ein Codewort des n1-aus-n-Codes weist n1 erste binäre Werte und n2 = n - n1 zweite binäre Werte auf. Haben die ersten binären Werte den Wert 1 und haben die zweiten binären Werte den Wert 0, so weist ein Codewort des n1-aus-n-Codes eine Anzahl von n1 Einsen und eine Anzahl von n2 = n - n1 Nullen auf.
-
Entsprechend ist es möglich, dass die ersten binären Werte den Wert 0 und die zweiten binären Werte den Wert 1 aufweisen.
-
Die Speicherung der Datenbits als Codewörter des n1-aus-n-Codes ist vorteilhaft, da beispielsweise beim Auslesen der in den Speicherzellen gespeicherten Codewörtern des n1-aus-n-Codes eine höhere Zuverlässigkeit erreicht werden kann als bei uncodiert gespeicherten Datenbits.
-
Der n1-aus-n-Code kann auch als ein n1-,n2-aus-n-Code bezeichnet werden, wobei n1 die Anzahl der ersten binären Werte und n2 die Anzahl der zweiten binären Werte bezeichnet. Dabei ist hier n2 = n - n1. Durch diese Bezeichnung ist ersichtlich, dass zwei verschiedene (hier binäre) Werte 0 und 1 in jedem Codewort vorhanden sind.
-
Es gelten:
-
Beispielsweise kann die Anzahl n der Speicherzellenwerte größer oder gleich 3 sein.
-
Ist die Anzahl der Speicherzellenwerte gleich 2 (d.h. ist n = 2), so sind die Codewörter des entsprechenden 1-aus-2-Codes 10 und 01. Beispielsweise kann der binäre Wert 0 als 10 und der binäre Wert 1 als 01 codiert sein. Hierbei ist es von Nachteil, dass n = 2 Speicherzellen erforderlich sind, um die Information eines einzelnen Bits zu speichern.
-
Es gibt, wie vorstehend erläutert wurde, 2
k verschiedene Belegungen der k Datenbits. Außerdem gibt es
verschiedene Codewörter eines n
1-aus-n-Codes.
-
Die Transformation der 2
k Belegungen der k Datenbits in die
Codewörter des n
1-aus-n-Codes kann eindeutig umkehrbar erfolgen, so dass auch anhand eines der Codewörter auf die entsprechende Belegung der Datenbits eindeutig rückgeschlossen werden kann, wenn eine Belegung der Datenbits einem der Codewörter zugeordnet ist.
-
Es gibt mindestens so viele verschiedene Codewörter wie Belegungen der Datenbits, d.h. ist die Bedingung
erfüllt, dann ist eine umkehrbar eindeutige Transformation aller Belegungen der k Datenbits in Codewörter des n
1-aus-n-Codes möglich.
-
Es ist auch möglich, dass je nach Anwendungsfall nicht alle der 2
k möglichen Belegungen der k Datenbits auftreten. Ist dies der Fall und gibt ein Wert Anz < 2
k die Anzahl der tatsächlich auftretenden Belegungen an, ist nur erforderlich, dass die Bedingung
erfüllt ist, um umkehrbar eindeutig den tatsächlich auftretenden Belegungen Codewörter zuzuordnen.
-
Damit können vorteilhaft weniger als 2 - k Speicherzellen zum Abspeichern von k Datenbits verwendet werden.
-
Binäre Speicherzellenwerte: Beispiele
-
Beispielhaft wird von k = 4 Datenbits ausgegangen, für die es 2
k = 2
4 = 16 verschiedene Belegungen gibt. Sind beispielsweise n = 6 Speicherzellen (n ist die Anzahl der Speicherzellenwerte, wobei jeder Speicherzellenwert in einer Speicherzelle gespeichert werden soll) vorgesehen und gilt n
1 = 3, dann gibt es
verschiedene Codewörter eines 3-aus-6-Codes, wobei jedes der Codewörter drei Einsen und drei Nullen aufweist. Somit ist es möglich, die unterschiedlichen 16 Belegungen der 4 Datenbits in 16 ausgewählte Codewörter (der insgesamt 20 Codewörter) des 3-aus-6-Codes zu transformieren und in 6 Speicherzellen des Speichers zu speichern.
-
Für n = 6 Speicherzellenwerte und n
1 = 2 ergäben sich nur
verschiedene Codewörter eines 2-aus-6-Codes, bei dem jedes Codewort genau zwei Einsen und vier Nullen aufweist. Eine umkehrbar eindeutige Transformation der 2
4 = 16 Belegungen der 4 Datenbits in Codewörter des 2-aus-6-Codes ist damit nicht möglich.
-
Ist der Wert Anz der tatsächlich aufgetretenen Belegungen beispielsweise kleiner oder gleich 15, kann auch dieser 2-aus-6-Code verwendet werden.
-
Binäre Speicherzellenwerte: Gruppierung der Datenbits
-
Nachfolgend wird erläutert, dass N Datenbits in Speicherzellenwerte transformiert werden, wobei N = M · k gelten soll und M größer als 1 ist. Somit können M Gruppen aus jeweils k Datenbits gebildet werden, wobei die jeweils 2
k Belegungen jeder Gruppe von k Datenbits in 2
k Codewörter eines
Codes umkehrbar eindeutig transformiert werden.
-
Werden die Belegungen von M Gruppen von jeweils k Datenbits in Codewörter eines jeweils gleichen n1-aus-n-Codes transformiert, ergeben sich M · n Speicherzellenwerte, die entsprechend in M · n Speicherzellen gespeichert werden können.
-
Beispielhaft ist hier der Fall beschrieben, dass die M Gruppen jeweils k Datenbits umfassen. Alternativ ist es möglich, dass eine erste Gruppe von Datenbits k
1 Datenbits aufweist, eine zweite Gruppe von Datenbits k
2 Datenbits aufweist, usw. bis eine M-te Gruppe k
m Datenbits aufweist. Die Anzahl der Datenbits pro Gruppe k
1, k
2, ... , k
m kann untereinander zumindest teilweise unterschiedlich sein. Somit gilt
wobei
- - die ersten k1 Datenbits in Codewörter eines ersten
- - die zweiten k2 Datenbits in Codewörter eines zweiten ...
- - die M-ten kM Datenbits in Codewörter eines M-ten
transformiert werden können. Dabei können die einzelnen Codes zumindest teilweise voneinander verschieden sein. Optional können unterschiedliche Codes auch dann verwendet werden, wenn die Anzahl der Datenbits pro Gruppe gleich ist.
-
Ist beispielsweise die Zahl der Datenbits k = 3, ergeben sich 2k = 8 mögliche Belegungen der 3 Datenbits. Mit n = 5 Speicherzellenwerten kann sowohl ein 2-aus-5-Code als auch ein 3-aus-5-Code verwendet werden, da diese beiden Codes jeweils 10 Codewörter und damit mehr Codewörter als mögliche Belegungen bereitstellen. So kann beispielsweise für eine erste Gruppe von 3 Datenbits der 2-aus-5-Code und für eine zweite Gruppe von 3 Datenbits der 3-aus-5-Code verwendet werden.
-
Wie ausgeführt ist es eine Option, dass die Gruppen von Datenbits nicht alle die gleiche Anzahl k Datenbits aufweisen. Beispielhaft sollen 23 Datenbits in Speicherzellenwerte transformiert werden: Aus den 23 Datenbits können 5 Gruppen mit jeweils 4 Datenbits und eine Gruppe mit 3 Datenbits gebildet werden. Die 24 = 16 möglichen Belegungen der jeweiligen Gruppe mit 4 Datenbits können beispielsweise in Codewörter eines 3-aus-6-Codes, der 20 verschiedene Codewörter aufweist, transformiert werden. Die verbleibende Gruppe mit 3 Datenbits hat 23 = 8 mögliche Belegungen. Diese 3 Datenbits können beispielsweise in Codewörter eines 3-aus-5-Codes transformiert werden, der 10 Codewörter aufweist. Hierdurch ist eine Speicherzelle weniger erforderlich als wenn die 23 = 8 möglichen Belegungen der 3 Datenbits auch in Codewörter des 3-aus-6-Codes transformiert werden würden. Es ist beispielsweise auch möglich, die Gruppe von 3 Datenbits durch ein konstantes Bit, z.B. ein Bit mit dem Wert 0 zu ergänzen, so dass sich 4 Datenbits ergeben, so dass alle Gruppen die gleiche Zahl Datenbits aufweisen und somit die gleiche Transformation verwendet werden kann. Dies kann den Aufwand beim Schaltungsentwurf reduzieren.
-
Mehrwertige Speicherzellenwerte
-
Es soll nun der Fall betrachtet werden, dass Speicherzellenwerte mehr als zwei unterschiedliche Werte annehmen können und dass entsprechend die Speicherzellen mehrwertige Speicherzellenwerte speichern können.
-
Eine Speicherzelle soll K unterschiedliche Speicherzellenwerte speichern können, wobei K > 2 ist (K = 2 wäre der Sonderfall der binären Speicherzellenwerte). Die unterschiedlichen Speicherzellenwerte pro Speicherzelle können mit 0,1, ... , K - 1 bezeichnet sein.
-
Es sollen wieder k Datenbits gespeichert werden. Die 2k unterschiedlichen Belegungen der k Datenbits können umkehrbar eindeutig in n Speicherzellenwerte transformiert werden. Diese n Speicherzellenwerte weisen
- - n1 erste Werte,
- - n2 zweite Werte, ...
- - nK K-te Werte
auf. Beispielsweise können - - die ersten Werte mit 0,
- - die zweiten Werte mit 1, ...
- - die K-ten Werte mit K - 1
bezeichnet sein.
-
Die n Speicherzellenwerte können auch als ein n-Tupel von Speicherzellenwerten bezeichnet werden. Das n-Tupel von n mehrwertigen (hier K-wertigen) Speicherzellenwerten, die n
1 erste Werte, n
2 zweite Werte, ....,n
K K-te Werte aufweisen, kann als ein Codewort eines
bezeichnet werden.
-
Der n
1 -, n
2-, ... , n
x - aus - n - Code weist die folgende Zahl an Codewörtern auf:
-
Die 2
k Belegungen der k Datenbits sollen nun umkehrbar eindeutig in 2
k dieser Codewörter des n
1 -, n
2-, ... , n
K-aus-n-Codes transformiert werden. Dies ist möglich, wenn die Bedingung
beziehungsweise wenn die Bedingung
erfüllt ist, sofern der Wert Anz (mit Anz < 2
k) die Anzahl der tatsächlich auftretenden Belegungen der k Bits ist, wie dies in Bezug auf die binäre Speicherzellenwerte vorstehend beschrieben wurde.
-
Mehrwertige Speicherzellenwerte: Beispiele
-
Es sollen k = 6 Datenbits gespeichert werden. Somit gibt es 2k = 26 = 64 mögliche Belegungen der 6 Datenbits. Die Datenbits sind, wie beschrieben, binäre Werte und werden zur Speicherung in den mehrwertigen Speicherzellen vorab einer Transformation unterzogen.
-
Beispielsweise werden 3-wertige Speicherzellenwerte (K = 3) betrachtet. Somit kann jede Speicherzelle drei unterschiedliche Werte speichern. Insgesamt sind n = 6 Speicherzellenwerte (und damit 6 Speicherzellen) gegeben und es sei n
1 = n
2 = n
3 = 2 angenommen. Es gibt somit
verschiedene Codewörter des hier beispielhaft verwendeten 2-,2-,2-aus-6-Codes. Diese 90 Codewörter reichen aus, um die 2
6 = 64 möglichen Belegungen der 6 Datenbits abzubilden.
-
Die mehrwertigen Speicherzellen erlauben eine effizientere Nutzung gegenüber den binären Speicherzellen, da pro Speicherzelle mehr als zwei Werte gespeichert werden können. Somit reicht eine geringe Menge an physikalischen Speicherzellen aus: Im vorliegenden Beispiel können mit nur 6 dreiwertigen Speicherzellen 90 Codewörter des 2-,2-,2-aus-6-Codes gebildet werden, wohingegen mit 6 binären Speicherzellen nur 20 Codewörter eines 3-aus-6-Codes gebildet werden können.
-
In jedem Codewort des hier beispielhaft angenommenen 2-,2-,2-aus-6-Codes kommt je zweimal einer der Werte 0, 1 und 2 vor. Beispiele für Codewörter sind: 001122, 101220, 021210.
-
In einem anderen Beispiel wird für 3-wertige Speicherzellenwerte (K = 3) ein 1-, 1-,1-aus-3-Code verwendet. Dieser weist für n = 3 Speicherzellen
Codewörter 012, 021, 102, 120, 201 und 210 auf. Sollen k = 2 Datenbits gespeichert werden, dann können 2
2 = 4 unterschiedliche Belegungen in den 3 Speicherzellen als Codewörter des 1-,1-,1-aus-3-Codes gespeichert werden.
-
In einem weiteren Beispiel werden vierwertige Speicherzellenwerte K = 4 betrachtet. Jede Speicherzelle kann beispielsweise einen der Werte 0, 1, 2 oder 3 speichern. Insgesamt gibt es in diesem Beispiel n = 6 Speicherzellen und es wird n
1 = n
2 = 2 und n
3 = n
4 = 1 angenommen. Somit gibt es
verschiedene Codewörter eines 2-,2-,1-,1-aus-6-Codes. Mit diesen 180 Codewörtern können 7 Datenbits mit 2
7 = 128 möglichen Belegungen in den 6 vierwertigen Speicherzellen gespeichert werden.
-
Beispiele für Codewörter des hier verwendeten 2-,2-,1-,1-aus-6-Codes sind: 001123, 101320, 031210. Jedes der Codewörter weist jeweils zwei Nullen, zwei Einsen eine Zwei und eine Drei auf.
-
Mehrwertige Speicherzellenwerte: Gruppierung der Datenbits
-
Wieder wird der Fall betrachtet, dass N Datenbits in Speicherzellenwerte transformiert werden, wobei N = M · k gelten soll und M größer als 1 ist. Somit können M Gruppen aus jeweils k Datenbits gebildet werden, wobei die jeweils 2k Belegungen jeder Gruppe von k Datenbits in 2k Codewörter eines n1 -, n2-, ... , nx-aus-n-Codes umkehrbar eindeutig transformiert werden.
-
Werden die Belegungen von M Gruppen von jeweils k Datenbits in Codewörter des n1 -, n2-, ... , nK-aus-n-Codes transformiert, ergeben sich M · n K-wertige Speicherzellenwerte, die entsprechend in M . n K-wertigen Speicherzellen gespeichert werden.
-
Es kann vorteilhaft sein, die Belegungen aller Gruppen von k Datenbits durch die gleiche Transformation in Speicherzellenwerte zu transformieren. Dann kann beispielsweise eine Transformationsschaltung mehrfach eingesetzt werden. Es ist aber auch möglich, die k Datenbits der verschiedenen Gruppen mit unterschiedlichen Transformationen in Speicherzellenwerte zu transformieren.
-
Schreiben und Lesen von Datenbits
-
Die k zu speichernden Bits werden auch als Datenbits bezeichnet. Diese Datenbits können beispielsweise Informationsbits und Prüfbits eines separierbaren fehlererkennenden und/oder fehlerkorrigierenden Codes aufweisen. Dabei können in einem separierbaren Code Informationsbits durch Prüfbits ergänzt sein. Es ist auch möglich, dass die Datenbits Bits eines nicht separierbaren Codes sind, bei dem die Bits eines Codewortes nicht in Informationsbits und Prüfbits unterteilt sind. Weiterhin ist es eine Option, dass die Datenbits Informationsbits und Adressenbits und/oder aus Adressenbits abgeleitete Bits und/oder Bits eines Passwortes umfassen.
-
Die Bezeichnung „Datenbits“ dient beispielhaft dazu, die in den Speicher zu speichernden Bits zu bezeichnen. Hierbei kann es sich um Programmcode, Bilddaten, Messdaten oder sonstige Nutzdaten (Payload) handeln, die in Speicherzellenwerte transformiert werden und in Speicherzellen gespeichert werden. Die Speicherzellenwerte können dabei mehrwertig oder binär sein.
-
Beim Auslesen der Speicherzellen werden die in den Speicherzellen gespeicherten digitalen Speicherzellenwerte unter Verwendung eines Vergleichs von aus den n Speicherzellen ausgegebenen physikalischen Werten bestimmt. Alternativ kann es sich auch um Werte handeln, die aus den ausgegebenen physikalischen Werten abgeleitet werden.
-
Sind die n Speicherzellen binär, wird die Folge von k zu speichernden Bits in eine Folge von n binären Speicherzellenwerten transformiert, die n1 erste binäre Werte und n2 zweite binäre Werte aufweist. Werden die ersten binären Werte mit 1 und die zweiten binären Werte mit 0 bezeichnet, so wird eine Folge von k zu speichernden Bits in ein Codewort eines n1-aus-n Codes transformiert und es gilt n2 = n - n1.
-
Bei gegebenem n und n
1 ist k so bestimmt, dass
gilt.
-
Sind die Speicherzellen nicht binär und dient eine Speicherzelle zur Speicherung von K-wertigen digitalen Speicherzellenwerten, so wird eine Folge von k Bits in eine Folge von n K-wertigen Speicherzellenwerten transformiert, die in den n Speicherzellen gespeichert werden. Die Folge von n Speicherzellenwerten ist so bestimmt, dass sie eine vorbestimmte erste Anzahl n1 von ersten, untereinander gleichen ersten Speicherzellenwerten, eine vorbestimmte zweite Anzahl n2 von zweiten, untereinander gleichen zweiten Speicherzellenwerten, etc. bis zu einer vorbestimmten K-ten Anzahl nK von K-ten, untereinander gleichen K-ten Speicherzellenwerten aufweist.
-
Dabei gilt
und
-
Ferner ist k so bestimmt, dass
gilt.
-
Eine Folge von n K-wertigen Speicherzellenwerten, die eine vorbestimmte erste Anzahl n1 von ersten, untereinander gleichen ersten Speicherzellenwerten, eine vorbestimmte zweite Anzahl n2 von zweiten, untereinander gleichen zweiten Speicherzellenwerten, etc. bis zu einer vorbestimmten K-ten Anzahl nK von K-ten, untereinander gleichen K-ten Speicherzellenwerten aufweist, kann als ein Codewort eines (n1-, n2-,..., nK-aus-n)-Codes bezeichnet werden.
-
Die Anzahl n
K der untereinander gleichen K-ten Speicherzellenwerte ist zu
bestimmt.
-
Beim Auslesen der Speicherzellen werden die in den Speicherzellen einer Gruppe von n Speicherzellen gespeicherten digitalen Daten mittels eines Vergleichs von aus Speicherzellen der Gruppe ausgelesenen physikalischen Werten bestimmt. Alternativ werden die in den Speicherzellen einer Gruppe von n Speicherzellen gespeicherten digitalen Daten mittels eines Vergleichs unter Verwendung von ausgelesenen physikalischen Werten oder abgeleiteten Eigenschaften bestimmt.
-
Auch kann als Eigenschaft ein zeitliches Verhalten von aus unterschiedlichen Speicherzellen ausgelesenen physikalischen Werten betrachtet und für einen Vergleich (mit)berücksichtigt werden.
-
Zu einem Zeitpunkt τ nimmt ein aus einer Speicherzelle S
i ausgelesener Wert einen analogen Wert
an. Beispielsweise ist der in der Speicherzelle S
i gespeicherte Wert
ein elektrischer Widerstandswert und der aus der Speicherzelle S
i zum Zeitpunkt τ erhaltene physikalische Wert
ist ein Lesestrom (eine Stromstärke).
-
Ist der Widerstand
der Speicherzelle S
i kleiner als ein Widerstandswert
einer anderen Speicherzelle S
j, ist der Lesestrom
größer als ein Lesestrom
der anderen Speicherzelle S
j, sofern eine vorgegebene (gleiche) Lesespannung zum Auslesen beider Speicherzellen verwendet wird.
-
Wird der Lesestrom
der Speicherzelle S
i unter Verwendung einer Kapazität C über die Zeit integriert, so ist zu einem Zeitpunkt t
i ein vorgegebener Schwellwert Sw erreicht. Der aus der Speicherzelle S
i erhaltene physikalische Wert ist hier beispielhaft der Lesestrom
Der aus dem ausgelesenen physikalischen Wert bestimmte abgeleitete Wert ist beispielhaft der Zeitpunkt t
i, zu dem das Zeitintegral über den Lesestrom den vorgegebenen Schwellwert Sw erreicht.
-
Wird der Lesestrom
der Speicherzelle S
j unter Verwendung der Kapazität C über die Zeit integriert, so ist zu einem Zeitpunkt t
j der vorgegebene Schwellwert Sw erreicht.
-
Da für die Leseströme der Speicherzellen S
i und S
j gilt, gilt auch t
i < t
j und der Schwellwert Sw wird für die Speicherzelle S
i früher erreicht als für die Speicherzelle S
j.
-
Somit kann für die Speicherzellen S
i und S
j verglichen werden, ob das Integral des Lesestromes der Speicherzelle S
i den Schwellwert Sw früher erreicht als das Integral des Lesestromes der Speicherzelle S
j. Dies ist dann der Fall, wenn (bei gleicher Spannung) der Widerstandswert
kleiner ist als der Widerstandswert
-
Somit ist es eine Option, eine Ordnung (oder „Reihenfolge“) der Speicherzellen S
i und S
j auf Grund der in ihnen gespeicherten physikalischen Werte
und
oder ihrer Zustände zu bestimmen. Durch die Zeitpunkte t
i und t
j, zu denen der Schwellwert Sw erreicht wird, können die Speicherzellen entsprechend ihrer Widerstände
sortiert werden, d.h. zuerst die Speicherzelle S
i, dann die Speicherzelle S
j (oder umgekehrt).
-
Dieser Ansatz kann zur Sortierung aller Speicherzellen einer Gruppe von n Speicherzellen genutzt werden.
-
Werden beispielsweise erste n1 Speicherzellen mit einer binären 0 und zweite n2 Speicherzellen mit einer binären 1 beschrieben, ist im fehlerfreien Fall der elektrische Widerstand der ersten n1 Speicherzellen kleiner als der elektrische Widerstand der zweiten n2 Speicherzellen, so dass der Lesestrom der ersten n1 Speicherzellen größer als der Lesestrom der zweiten n2 Speicherzellen ist. Beispielsweise gilt hierbei: n1 + n2 = n.
-
Entsprechend liegen die Zeitpunkte
zu denen für die ersten n
1 Speicherzellen der Schwellwert Sw erreicht wird vor den Zeitpunkten
zu denen für die zweiten n
2 Speicherzellen der Schwellwert Sw erreicht wird.
-
So können die Speicherzellen entsprechend der Zeitpunkte, zu denen der Schwellwert Sw erreicht wird, geordnet werden. Beispielsweise kann dem frühesten (ersten) Zeitpunkt die erste Speicherzelle und dem spätesten (letzten) Zeitpunkt die n-te Speicherzelle zugeordnet sein. In diesem Beispiel wären dann die ersten n1 Speicherzellen gerade die Speicherzellen, in die ein binärer Wert 0 geschrieben wurde, und die n2 restlichen Speicherzellen die Speicherzellen, in die ein binärer Wert 1 geschrieben wurde.
-
Beispielsweise gibt das Integral
eine Spannung v
i(t) zu einem Zeitpunkt t an in Abhängigkeit der jeweiligen Leseströme
(mit i = 1,... ,n) für die n Speicherzellen S
1 bis S
n.
-
Diese Spannung vi(t) kann mit dem Schwellwert Sw verglichen werden. Somit können die Zeitpunkte bestimmt werden, an denen das vorstehende Integral den Schwellwert Sw erreicht. Die erhaltenen Zeitpunkte können miteinander verglichen werden. Damit ist es möglich, zu bestimmen, ob der Zustand der Speicherzelle einem binären Wert 0 oder 1 entspricht.
-
Der Zeitpunkt t
i kann dadurch bestimmt sein, dass
und
gilt, wobei hierbei beispielhaft der Lesestrom als konstant über die Zeit angenommen wird.
-
Über den Lesestrom bzw. das Zeitintegral des Lesestromes können die Widerstandswerte oder die Zustände der Speicherzellen miteinander verglichen werden. Schwankungen in den Widerstandswerten innerhalb der ersten n1 Zellen wirken sich auf die Zuordnung des binären Wertes 0 zu diesen Speicherzellen vorteilhaft nicht aus, solange diese Widerstandswerte nicht größer als ein Widerstandswert der zweiten n2 Speicherzellen sind. Entsprechend wirken sich Schwankungen in den Widerstandswerten innerhalb der zweiten n2 Zellen auf die Zuordnung des binären Wertes 1 zu diesen Speicherzellen vorteilhaft nicht aus, solange deren Widerstandswerte nicht kleiner als ein Widerstandswert der ersten n1 Speicherzellen sind.
-
Teilgruppen von Speicherzellen
-
Beispielsweise kann es auch nicht erforderlich sein, eine Reihenfolge der n1 Speicherzellen mit gleichen ersten digitalen Werten oder eine Reihenfolge der n2 Speicherzellen mit gleichen zweiten digitalen Werten einer Gruppe von n Speicherzellen zu bestimmen. Die n1 Speicherzellen mit den ersten digitalen Werten bilden eine erste Teilgruppe und die n2 Speicherzellen mit den zweiten digitalen Werten bilden eine zweite Teilgruppe. Jede der Teilgruppen entspricht einem Teil der Gruppe von n Speicherzellen. Nachfolgend wird ein Beispiel für derartige Teilgruppen näher erläutert.
-
Beispielsweise werden 2 Teilgruppen betrachtet, wobei für die Anzahl die Speicherzellen n
1 und n
2 der Teilgruppen gilt:
In die n
1 Speicherzellen der ersten Teilgruppe wird jeweils ein erster digitaler Wert geschrieben und in die n
2 Speicherzellen der zweiten Teilgruppe wird jeweils ein zweiter digitaler Wert geschrieben, der von dem ersten digitalen Wert verschieden ist.
-
Beim Auslesen der physikalische Werte aus den Speicherzellen kann es vorteilhaft sein, keine Reihenfolge zwischen den n1 Speicherzellen der ersten Teilgruppe zu bestimmen, da in diese der gleiche digitale Wert geschrieben wurde.
-
Beispielsweise werden n = 6 Speicherzellen S1,..., S6 betrachtet. Bei den Speicherzellen S1, S2, S3 handelt es sich um die n1 = 3 Speicherzellen der ersten Teilgruppe und bei den Speicherzellen S4, S5, S6 handelt es sich um die n2 = 3 Speicherzellen der zweiten Teilgruppe. Die Speicherzellen der ersten Teilgruppe werden mit dem Wert 0 und die Speicherzellen der zweiten Teilgruppe werden mit dem Wert 1 beschrieben.
-
2a zeigt ein Schaubild umfassend mehrere physikalische Werte
die aus den Speicherzellen S
1 bis S
6 ausgelesen wurden. Bei dem physikalischen Wert W
A handelt es sich beispielsweise um einen Lesestrom.
-
2b zeigt ein Schaubild mit mehreren Zeitpunkten t
1 bis t
6, wobei je ein Zeitpunkt t
m einem der physikalischen Werte
entspricht mit m = 1,... , 6.
-
Somit können durch eine zeitliche Integration der entsprechenden Leseströme Zeitpunkte t
1, t
2, t
3, t
4, t
5 und t
6 bestimmt werden, zu denen das Zeitintegral des jeweiligen Lesestroms einen vorgegebenen Schwellwert erreicht. Beispielsweise gilt gemäß
2b:
-
Die Zuordnung der in den Speicherzellen S
1 bis S
6 gespeicherten digitalen Werte 0 oder 1 kann erfolgen, indem bestimmt wird, dass für i = 4,5,6 und für j = 1, 2, 3
gilt. Insbesondere ist es ein Vorteil, dass kein Unterschied zwischen den Zeitpunkten t
4, t
5, t
6 und den Zeitpunkten t
1, t
2, t
3 bestimmt werden muss.
-
So ist es möglich, den n1 ersten Speicherzellen, deren Zeitintegral über den Lesestrom den Schwellwert Sw erreicht, einen ersten digitalen Wert und den n2 übrigen Speicherzellen einen zweiten digitalen Wert zuzuweisen. In diesem Fall kann es ausreichen festzustellen, ob eine der Speicherzellen zu den n1 ersten Speicherzellen gehört.
-
Es ist auch möglich, Verknüpfungen von analogen Signalen von Speicherzellen zu bilden und basierend auf diesen Verknüpfungen zu bestimmen, ob Speicherzellen ein erster digitaler Wert oder ein anderer digitaler Wert zugeordnet wird.
-
Für eine Gruppe von n Speicherzellen und n
1 erste Speicherzellen ergeben sich
unterschiedliche Möglichkeiten die n Speicherzellen mit n
1 Nullen und n
2 = n - n
1 Einsen zu beschreiben. Somit sind in den n Speicherzellen
verschiedene Belegungen (auch bezeichnet als Zustände) möglich, so dass k Datenbits (auch bezeichnet als ein k-Bit-Byte) in den n Speicherzellen gespeichert werden können, wenn
gilt. Ist n eine gerade Zahl, so ergibt sich für n
1 = n/2 die größte Anzahl möglicher Zustände.
-
Beispielsweise seien n = 6 Speicherzellen gegeben mit jeweils n1 = n2 = 3 ersten und zweiten Speicherzellen. Die n = 6 Speicherzellen bilden eine Gruppe von Speicherzellen S1 bis S6, in denen ein Codewort eines 3-aus-6-Codes gespeichert werden kann.
-
Es soll zunächst der Fall beschrieben werden, dass kein Fehler auftritt. Beim Auslesen der Speicherzellen werden die Zeitpunkte t
1 bis t
6 verglichen, zu denen der Wert des Integrals über die Leseströme
den Schwellwert Sw erreicht.
-
Gilt beispielsweise
ergibt sich die Reihenfolge der Speicherzellen zu
-
In den Speicherzellen S1 bis S6 wird beispielsweise das Codewort 101100 des 3-aus-6 Codes gespeichert und aus diesen Speicherzellen ausgelesen. Für die ersten drei Speicherzellen S1, S3 und S4 der geordneten Speicherzellen wird der Wert 1 und für die folgenden drei Speicherzellen S2, S5 und S6 der geordneten Speicherzellen wird der Wert 0 als ausgelesener Wert bestimmt.
-
Gilt hingegen beispielsweise
so folgt hieraus die Reihenfolge der Speicherzellen zu
-
Somit wird aus den Speicherzellen S1 bis S6 das gleiche Codewort 101100 des 3-aus-6 Codes ausgelesen. Eine Vertauschung der Reihenfolge innerhalb der Speicherzellen S1, S3 und S4, die den binären Wert 1 speichern oder eine Vertauschung der Reihenfolge innerhalb der Speicherzellen S2, S5 und S6, die den binären Wert 0 speichern, wirkt sich nicht auf das ausgelesene Codewort des 3-aus-6-Codes aus.
-
Diese Eigenschaft ist vorteilhaft, da sich kleinere Schwankungen in den ausgelesenen physikalischen Werten, die den gleichen digitalen Werten entsprechen, beim Auslesen nicht auf die zugeordneten digitalen Werte auswirken.
-
In diesem Beispiel sind die Speicherzellen S
1, S
3 und S
4 zur Speicherung des Wertes 1 vorgesehen. In diese Speicherzellen wurden die Werte
geschrieben, die jeweils den binären Wert 1 repräsentieren sollen. Untereinander unterscheiden sich diese Werte
wenig, sie können aber insbesondere durch zufällige Einflüsse leicht variieren.
-
Entsprechend sind die Speicherzellen S
2, S
5 und S
6 zur Speicherung des Wertes 0 vorgesehen. In diese Speicherzellen wurden die Werte
geschrieben, die jeweils den binären Wert 0 repräsentieren. Untereinander unterscheiden sich diese Werte
wenig, sie können aber ebenfalls aufgrund von zufälligen Einflüssen leicht variieren.
-
Ist beispielsweise anstelle von
eine zeitliche Ordnung
bestimmt worden, sind die Speicherzellen wie folgt geordnet
und es wird aus den Speicherzellen S
1 bis S
6 das Codewort 111000 des 3-aus-6 Codes ausgelesen, das sich von dem fehlerfreien Codewort 101100 dadurch unterscheidet, dass die zeitlich erste Speicherzelle S
2, der in der Reihenfolge der Speicherzellen im fehlerfreien Fall der Wert 0 zugeordnet und die zeitlich letzte Speicherzelle S
4, der im fehlerfreien Fall in der Reihenfolge der Speicherzellen der Wert 1 zugeordnet ist, vertauscht sind.
-
Beispiel: 3-wertige Speicherzellen
-
Nachfolgend wird beispielhaft ein Szenario betrachtet, bei dem pro Speicherzelle drei verschiedene digitale Werte 0, 1 und 2 gespeichert werden können.
-
3 zeigt ein Diagramm, das Häufigkeitsverteilungen von physikalischen Werten WG einer Speicherzelle veranschaulicht.
-
3 zeigt eine Häufigkeitsverteilung 301 für gespeicherte Werte 0, eine Häufigkeitsverteilung 302 für gespeicherte Werte 1 und eine Häufigkeitsverteilung 303 für gespeicherte Werte 2. Die Häufigkeitsverteilung 301 wird auch mit WG(0), die Häufigkeitsverteilung 302 wird auch mit WG(1) und die Häufigkeitsverteilung 303 wird auch mit WG(2) bezeichnet.
-
Die Häufigkeitsverteilungen 301 und 302 weisen einen Überlappungsbereich 304 auf und die Häufigkeitsverteilungen 302 und 303 weisen einen Überlappungsbereich 305 auf.
-
Gemäß einem Ausführungsbeispiel kann der physikalische Wert ein Widerstandswert sein.
-
4 zeigt beispielhaft eine Häufigkeitsverteilung 401 für die aus dem Speicher gelesenen Werte 2, eine Häufigkeitsverteilung 402 für die aus dem Speicher gelesenen Werte 1 und eine Häufigkeitsverteilung 403 für die aus dem Speicher gelesenen Werte 0. Die Häufigkeitsverteilung 401 wird auch mit WA(2), die Häufigkeitsverteilung 402 wird auch mit WA(1) und die Häufigkeitsverteilung 403 wird auch mit WA(0) bezeichnet.
-
Die Häufigkeitsverteilungen 401 und 402 weisen einen Überlappungsbereich 404 auf und die Häufigkeitsverteilungen 402 und 403 weisen einen Überlappungsbereich 405 auf.
-
Gemäß einem Ausführungsbeispiel kann der ausgelesene physikalische Wert eine Stromstärke sein.
-
Wird eine Stromstärke
des Lesestroms der Speicherzelle S
i über die Zeit t integriert, dann wird ein vorgegebener Schwellwert Sw zu einem Zeitpunkt t
i erreicht.
-
Wird eine Stromstärke
des Lesestromes der Speicherzelle S
j über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem Zeitpunkt t
j erreicht.
-
Wird in die Speicherzelle S
i der digitale Wert 2 geschrieben, so weist die Speicherzelle S
i einen relativ großen Widerstandswert
auf und beim Auslesen dieser Speicherzelle S
i ist der Lesestrom
relativ gering. Dementsprechend ist der Zeitpunkt t
i zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, groß.
-
Wird in die Speicherzelle S
j der digitale Wert 1 geschrieben, so weist die Speicherzelle S
j einen Widerstandswert
auf, der geringer ist als der Widerstandswert
der Speicherzelle S
i. Entsprechend ist der Lesestrom
beim Auslesen der Speicherzelle S
j größer als der Lesestrom
beim Auslesen der Speicherzelle S
i. Somit liegt der Zeitpunkt t
j, zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, vor dem Zeitpunkt t
i, d.h. es gilt t
j < t
i.
-
Wird in die Speicherzelle S
k der digitale Wert 0 geschrieben, dann weist die Speicherzelle S
k einen Widerstandswert
W
G auf, der sowohl geringer als der Widerstandswert W
G der Speicherzelle S
i als auch geringer als der Widerstandswert
der Speicherzelle S
j ist. Entsprechend ist der Lesestrom
der Speicherzelle S
k größer als der Lesestrom
oder der Lesestrom
der Speicherzellen S
j, S
i. Somit liegt der Zeitpunkt t
k, zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, vor den Zeitpunkten t
i und t
j, d.h. es gilt t
k < t
j < t
i.
-
Ist in eine Speicherzelle S
i der gleiche digitale Wert geschrieben worden wie in eine Speicherzelle S
i, kann der Widerstandswert
der Speicherzelle S
i größer oder kleiner sein als der Widerstandswert
der Speicherzelle S
j.
-
Ebenso ist es möglich, dass der Lesestrom
der Speicherzelle S
i größer oder kleiner ist als der Lesestrom
der Speicherzelle S
j.
-
Weiterhin ist es möglich, dass der Zeitpunkt ti, zu dem das Zeitintegral über den Lesestrom der Speicherzelle Si den vorgegebenen Schwellwert Sw erreicht, vor oder nach dem Zeitpunkt tj liegt, zu dem das Zeitintegral über den Lesestrom der Speicherzelle Sj den vorgegebenen Schwellwert Sw erreicht.
-
In diesem Fall bleibt also unbestimmt, ob ti < tj oder ti < tj gilt. Der Wert „unbestimmt“ wird hier auch durch das Symbol „—“ beschrieben.
-
Beispiel
-
Beispielhaft wird eine Gruppe von n = 6 Speicherzellen S1 bis S6 betrachtet. Es gibt hierbei drei Teilgruppen mit jeweils zwei Speicherzellen, d.h. n1 = n2 = n3 = 2, wobei
- - in n1 = 2 ersten Speicherzellen der digitale Speicherzellenwert 2,
- - in n2 = 2 zweiten Speicherzellen der digitale Speicherzellenwert 1 und
- - in n3 = 2 dritten Speicherzellen der digitale Speicherzellenwert 0
gespeichert wird. Es gibt somit
-
Möglichkeiten, zwei Zweien, zwei Einsen und zwei Nullen auf 6 Positionen zu verteilen und in 6 Speicherzellen mit drei digitalen (ternären) Speicherzellenwerten zu speichern.
-
Im Unterschied dazu gibt es für n = 6 und n
1 = n
2 = 3 nur
-
Möglichkeiten, drei Einsen und drei Nullen auf 6 Positionen zu verteilen und in 6 Speicherzellen mit binären Speicherzellenwerten zu speichern, sodass durch Verwendung der drei ternären digitalen Werte 0, 1 und 2 gegenüber der Verwendung lediglich binärer Speicherzellenwerte 0 und 1 erheblich mehr Informationen in einer Gruppe von n Speicherzellen speicherbar ist.
-
So können in diesem Beispiel, in dem jede der Speicherzellen den Wert 0, 1 oder 2 annehmen kann, eine Anzahl von k = 6 Datenbits (mit 26 = 64 möglichen Belegungen) in n = 6 digitale Speicherzellenwerte transformiert und in n = 6 Speicherzellen gespeichert werden. Die 6 Speicherzellenwerte weisen jeweils
- - n1 = 2 erste digitale Werte 2,
- - n2 = 2 zweite digitale Werte 1 und
- - n3 = 2 dritte digitale Werte 0 auf.
-
Die 6 Speicherzellenwerte bilden ein Codewort eines
bei dem jedes Codewort zwei erste digitale Werte, zwei zweite digitale Werte und zwei dritte digitale Werte aufweist.
-
Der Code hat
Codewörter.
-
Mit k = 6 Bits sind 2k = 26 = 64 Binärwörter der Länge 6 in 64 der Codewörter des 2-,2-,2-aus-n-Codes umkehrbar eindeutig transformierbar.
-
15 zeigt eine schematische Anordnung zur Veranschaulichung wie k Datenbits x1 bis xk mittels einer Transformationsschaltung 1501 transformiert und als n Speicherzellenwerte in n Speicherzellen eines Speichers 1502 gespeichert werden. Hierbei sei beispielhaft k ≥ 2 und n ≥ 3 angenommen. An dem Eingang der Transformationsschaltung 1501 liegen die k Datenbits x1 bis xk an.
-
Die n Speicherzellenwerte werden von der Transformationsschaltung 1501 an Dateneingängen der Speicherzellen des Speichers 1502 bereitgestellt. Diese n Speicherzellenwerte bilden ein Codewort eines
-
Bei den Speicherzellenwerte handelt es sich beispielhaft um K-wertige digitale Werte.
-
16 zeigt eine schematische Umsetzung der Anordnung von 15, wobei in 16 beispielhaft n = k = 6, K = 3 und n1 = n2 = n3 = 2 gelten. Gemäß dem in 16 gezeigten Beispiel werden 6 Datenbits x1 bis x6 mittels einer Transformationsschaltung 1601 in 6 dreiwertige Speicherzellenwerte transformiert und in einem Speicher 1602 gespeichert. Die 6 Speicherzellenwerte weisen zwei Werte 2, zwei Werte 1 und zwei Werte 0 auf und bilden (im fehlerfreien Fall) ein Codewort eines 2-,2-,2-aus-6-Codes. Dabei ist jede der Speicherzellen in der Lage, dreiwertige (K = 3) Speicherzellenwerte zu speichern.
-
Für die Speicherzellen S
1 bis S
6 werden beim Auslesen wie beschrieben die Zeitpunkte t
1 bis t
6 bestimmt, wann das Zeitintegral des Lesestromes den vorgegebenen Schwellwert Sw erreicht (oder überschreitet). Gilt beispielsweise
dann können die Speicherzellen S
1 bis S
6 in der Reihenfolge
geordnet werden. Dabei ist die Menge der Werte i
1, ... , i
6 gleich der Menge der Werte 1,...,6. Gilt beispielsweise z
1 = 5, i
2 = 4, i
3 = 2, i
4 = 1, i
5 = 6 und i
6 = 3, so ergibt sich
und damit die Reihenfolge der Speicherzellen zu
-
Es kann festgelegt sein, dass den ersten beiden Speicherzellen Si1 und Si2 in der Reihenfolge der Speicherzellen der digitale Speicherzellenwert 0, den folgenden beiden Speicherzellen Si3 und Si4 in der Reihenfolge der digitale Speicherzellenwert 1 und den weiteren beiden Speicherzellen Si5 und Si6 in der Reihenfolge der digitale Speicherzellenwert 2 zugeordnet ist.
-
Es kann auch festgelegt sein, dass den ersten beiden Speicherzellen Si1 und Si2 der digitale Speicherzellenwert 2, den folgenden beiden Speicherzellen Si3 und Si4 der digitale Speicherzellenwert 1 und den weiteren beiden Speicherzellen Si5 und S16 der digitale Speicherzellenwert 0 zugeordnet ist. Entsprechend sind auch weitere Zuordnungsvarianten möglich.
-
Eine fehlerhafte Zuordnung von digitalen Werten erfolgt nur
- - wenn sowohl der Lesestrom der Speicherzelle Si2 als auch der Lesestrom der Speicherzelle Zelle Si3 in einem Überlappungsbereich liegen, in dem sowohl ein Lesestrom für den Wert 0 als auch für den Wert 1 vorkommt oder
- - wenn sowohl der Lesestrom der Speicherzelle Si4 als auch der Lesestrom der Speicherzelle Si5 in einem Überlappungsbereich liegen, in dem sowohl ein Lesestrom für den Wert 1 als auch ein Lesestrom für den Wert 2 vorkommt.
-
Somit ist vorteilhaft eine fehlerfreie Zuordnung von digitalen Werten mit hoher Wahrscheinlichkeit auch für mehrwertige digitale Speicher gegeben, weil bezogen auf die 6 Speicherzellen nur für einen kleinen Teil der Speicherzellen eine fehlerhafte Zuordnung möglich ist und weil hierfür gleichzeitig die Leseströme von jeweils zwei Speicherzellen in einem Überlappungsbereich liegen müssen.
-
Somit ist es von Vorteil, dass beim Auslesen der gespeicherten Speicherzellenwerte Lesefehler nur selten auftreten. Es können beim Auslesen die ausgelesenen physikalischen Werte oder die aus den ausgelesenen physikalischen Werten bestimmten Werte verschiedener Speicherzellen miteinander verglichen werden, was im Ergebnis dann einer wirksamen Reduzierung der Lesefehler entsprechen kann. Ein fehlerhaftes Resultat eines Vergleichs kann nur dann auftreten, wenn die beiden zu vergleichenden Werte gleichzeitig in einem Überlappungsbereich liegen.
-
Es ist auch möglich, die als K-wertige Speicherzellenwerte in n Speicherzellen gespeicherten Werte unter Verwendung von Referenzwerten auszulesen, wenn in entsprechenden n Speicherzellen gespeicherte Codewörter einen (n1-, n2-, ..., nK-aus-n)-Code bilden.
-
Beispiel: Vierwertige Speicherzellenwerte
-
17 zeigt eine schematische Anordnung zur Transformation von vier Datenbits x1, x2, x3, x4 in vier Speicherzellenwerte z1, z2, z3, z4.
-
Die vier Datenbits x1, x2, x3, x4 liegen am Eingang einer Transformationsschaltung 1701 an. Diese vier Datenbits werden anhand der Transformationsschaltung 1701 in die vier Speicherzellenwerte z1, z2, z3, z4 transformiert und in Speicherzellen S1, S2, S3, S4 eines Speichers 1702 gespeichert.
-
Der Speicher 1702 umfasst in diesem Beispiel die Gruppe aus den n = 4 Speicherzellen S1, S2, S3, S4, wobei in jeder der Speicherzellen beispielhaft vier unterschiedliche Werte 0, 1, 2, 3 und 4 gespeichert werden können. Damit gibt es eine Speicherzelle pro Teilgruppe, d.h. es gilt n1 = n2 = n3 = n4 = 1.
-
Im fehlerfreien Fall bilden die Speicherzellenwerte z1, z2, z3, z4 ein Codewort eines 1-,1-,1-,1-aus-4-Codes mit 4 · 3 · 2 · 1 = 24 möglichen Codewörtern. In der Gruppe mit n = 4 Speicherzellen können somit 24 unterschiedliche digitale Werte gespeichert werden.
-
5 zeigt beispielhaft eine Häufigkeitsverteilung 501 für die aus dem Speicher 1702 gelesenen Werte 3, eine Häufigkeitsverteilung 502 für die aus dem Speicher 1702 gelesenen Werte 2, eine Häufigkeitsverteilung 503 für die aus dem Speicher 1702 gelesenen Werte 1 und eine Häufigkeitsverteilung 504 für die aus dem Speicher 1702 gelesenen Werte 0. Die Häufigkeitsverteilung 501 wird auch mit WA(3), die Häufigkeitsverteilung 502 wird auch mit WA(2), die Häufigkeitsverteilung 503 wird auch mit WA(1) und die Häufigkeitsverteilung 504 wird auch mit WA(0) bezeichnet.
-
Jeder der Werte 0, 1, 2, 3 und 4 kann in einer der mehreren vierwertigen Speicherzellen des Speichers 1702 gespeichert werden.
-
Beispielhaft kann es sich bei dem aus dem Speicher 1702 ausgelesenen Wert um eine Stromstärke (einen Lesestrom) handeln, wobei sich abhängig von der Höhe dieser Stromstärke einer der Werte 0, 1, 2, 3 oder 4 ergibt.
-
Die Häufigkeitsverteilungen 501 und 502 weisen einen Überlappungsbereich 505, die Häufigkeitsverteilungen 502 und 503 weisen einen Überlappungsbereich 506 und die Häufigkeitsverteilungen 503 und 504 weisen einen Überlappungsbereich 507 auf.
-
Wird die Stromstärke WA(τ)i des Lesestroms der Speicherzelle Si über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem bestimmten Zeitpunkt ti erreicht.
-
Wird die Stromstärke WA(τ)j des Lesestroms der Speicherzelle Sj über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem bestimmten Zeitpunkt tj erreicht.
-
Ist beispielsweise in der Speicherzelle S
i der Wert 3 gespeichert und ist in der Speicherzelle S
j einer der digitalen Werte 0, 1 oder 2 gespeichert, dann gilt t
j < t
i da der Lesestrom
der Speicherzelle S
i kleiner ist als der Lesestrom
der Speicherzelle S
j.
-
Ist beispielsweise in der Speicherzelle S
i der Wert 1 gespeichert und ist in der Speicherzelle S
j einer der Werte 3 oder 2 gespeichert, dann gilt t
j > t
i da der Lesestrom
der Speicherzelle S
i größer ist als der Lesestrom
der Speicherzelle S
j.
-
Gilt beispielsweise t1 < t3 < t2 < t4, ergibt sich als Reihenfolge der Speicherzellen: S1, S3, S2, S4. Der Speicherzelle S1 kann der Wert 0, der Speicherzelle S3 der Wert 1, der Speicherzelle S2 der Wert 2 und der Speicherzelle S4 der Wert 3 zugeordnet werden.
-
Am Eingang der Transformationsschaltung 1701 liegen die vier Datenbits x
1, x
2, x
3, x
4 an, und am Ausgang der Transformationsschaltung 1701 werden die Speicherzellenwerte z
1, z
2, z
3, z
4 ausgegeben. Diese in der Transformationsschaltung 1701 durchgeführte Transformation kann beispielsweise gemäß Tabelle 1 bestimmt sein. Tabelle 1
Zeile | x 1 | x 2 | x 3 | x 4 | z 1 | z 2 | z 3 | z 4 |
1 | 0 | 0 | 0 | 0 | 3 | 2 | 1 | 0 |
2 | 0 | 0 | 0 | 1 | 3 | 2 | 0 | 1 |
3 | 0 | 0 | 1 | 0 | 3 | 1 | 2 | 0 |
4 | 0 | 0 | 1 | 1 | 3 | 1 | 0 | 2 |
5 | 0 | 1 | 0 | 0 | 3 | 0 | 1 | 2 |
6 | 0 | 1 | 0 | 1 | 3 | 0 | 2 | 1 |
7 | 0 | 1 | 1 | 0 | 2 | 3 | 1 | 0 |
8 | 0 | 1 | 1 | 1 | 2 | 3 | 0 | 1 |
9 | 1 | 0 | 0 | 0 | 2 | 1 | 3 | 0 |
10 | 1 | 0 | 0 | 1 | 2 | 1 | 0 | 3 |
11 | 1 | 0 | 1 | 0 | 2 | 0 | 3 | 1 |
12 | 1 | 0 | 1 | 1 | 2 | 0 | 1 | 3 |
13 | 1 | 1 | 0 | 0 | 1 | 3 | 2 | 0 |
14 | 1 | 1 | 0 | 1 | 1 | 3 | 0 | 2 |
15 | 1 | 1 | 1 | 0 | 1 | 2 | 3 | 0 |
16 | 1 | 1 | 1 | 1 | 1 | 2 | 0 | 3 |
-
Die vier Datenbits x1, x2, x3, x4 können 16 verschiedene binäre Werte 0000, ... ,1111 annehmen, die allesamt in der vorstehenden Tabelle 1 gezeigt sind. Jede Zeile entspricht dabei einer von der Transformationsschaltung 1701 durchführbaren Transformation von Datenbits xi in ein Codewort zi des 1-,1-,1-,1-aus-4-Codes.
-
Beispielsweise zeigt die dritte Zeile der Tabelle 1, dass den Datenbits 0010 das Codewort 3120 zugeordnet ist.
-
Wie bereits ausgeführt wurde, gibt es 24 verschiedene Codewörter des 1-,1-,1-,1-aus-4-Codes. Diesen 24 Codewörtern stehen 16 verschiedene Werte für x1, x2, x3, x4 gegenüber. Gemäß der Tabelle 1 werden nur 16 der 24 möglichen Codewörter verwendet.
-
Werden beim Auslesen der Speicherzellen S1, S2, S3, S4 vier Speicherzellenwerte z1, z2, z3, z4 bestimmt, die im fehlerfreien Fall ein Codewort des 1-,1-,1-,1-aus-4-Codes bilden, dann werden diese Speicherzellenwerte gemäß Tabelle 1 in die entsprechenden Datenbits x1, x2, x3, x4 transformiert.
-
Eine mögliche Rücktransformation ist in Tabelle 2 gezeigt. Tabelle 2
Zeile | z 1 | z 2 | z 3 | z 4 | x 1 | x 2 | x 3 | x 4 |
1 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
2 | 3 | 2 | 0 | 1 | 0 | 0 | 0 | 1 |
3 | 3 | 1 | 2 | 0 | 0 | 0 | 1 | 0 |
4 | 3 | 1 | 0 | 2 | 0 | 0 | 1 | 1 |
5 | 3 | 0 | 1 | 2 | 0 | 1 | 0 | 0 |
6 | 3 | 0 | 2 | 1 | 0 | 1 | 0 | 1 |
7 | 2 | 3 | 1 | 0 | 0 | 1 | 1 | 0 |
8 | 2 | 3 | 0 | 1 | 0 | 1 | 1 | 1 |
9 | 2 | 1 | 3 | 0 | 1 | 0 | 0 | 0 |
10 | 2 | 1 | 0 | 3 | 1 | 0 | 0 | 1 |
11 | 2 | 0 | 3 | 1 | 1 | 0 | 1 | 0 |
12 | 2 | 0 | 1 | 3 | 1 | 0 | 1 | 1 |
13 | 1 | 3 | 2 | 0 | 1 | 1 | 0 | 0 |
14 | 1 | 3 | 0 | 2 | 1 | 1 | 0 | 1 |
15 | 1 | 2 | 3 | 0 | 1 | 1 | 1 | 0 |
16 | 1 | 2 | 0 | 3 | 1 | 1 | 1 | 1 |
17 | 1 | 0 | 3 | 2 | - | - | - | - |
18 | 1 | 0 | 2 | 3 | - | - | - | - |
19 | 0 | 3 | 2 | 1 | - | - | - | - |
20 | 0 | 3 | 1 | 2 | - | - | - | - |
21 | 0 | 2 | 3 | 1 | - | - | - | - |
22 | 0 | 2 | 1 | 3 | - | - | - | - |
23 | 0 | 1 | 3 | 2 | - | - | - | - |
24 | 0 | 1 | 2 | 3 | - | - | - | - |
-
In der Tabelle 2 sind den 24 Codewörtern die 16 möglichen Belegungen der Datenbits zugeordnet, wobei für einen Teil der Codewörter (Zeilen 17 bis 24 in Tabelle 2) keine Datenbits existieren bzw. die Datenbits für diese Codewörter unbestimmt sind. Die Tabelle 2 zeigt somit die inverse Transformation zu Tabelle 1.
-
Beispielsweise zeigt Zeile 5 der Tabelle 1, dass den Datenbits 0100 das Codewort 3012 zugeordnet ist. Entsprechend zeigt Zeile 5 der Tabelle 2, dass dem Codewort 3012 die Datenbits 0100 zugeordnet sind.
-
Für die Zeilen 17 bis 24 der Tabelle 2 sind die Datenbits unbestimmt. Bei einer Synthese einer inversen Transformationsschaltung können unbestimmte Datenbits als sogenannte „don't care“-Werte zur Schaltungsoptimierung verwendet werden.
-
Auch können die unbestimmten Datenbits auf einen beliebigen Wert, z.B. auf 0 gesetzt werden.
-
Beispiel: 11 Datenbits in 8 Speicherzellen
-
Beispielhaft können k = 11 Datenbits x1, ... , x11 in 8 Speicherzellen mit den Speicherzellenwerten z1, ... , z8 transformiert werden. Die Speicherzellenwerte sind Codewörter eines 2-,2-,2-,2-aus-8-Codes. Jeder Speicherzellenwert ist vierwertig (K = 4), d.h. pro Speicherzelle kann einer von vier verschiedenen Werten gespeichert werden.
-
Durch die 11 Datenbits können 2
11 = 2048 verschiedene Werte dargestellt werden. Der 2-,2-,2-,2-aus-8-Code umfasst
-
Codewörter. Diese 2520 Codewörter reichen aus, um alle 2048 binären Werte in Codewörter des 2-,2-,2-,2-aus-8-Codes zu transformieren.
-
Beispiel: 9 Datenbits in 7 Speicherzellen
-
Auch können k = 9 Datenbits x1, ... , x9 in n = 7 Speicherzellen mit den Speicherzellenwerten z1, ... , z7 transformiert werden. Die Die Speicherzellenwerte sind Codewörter eines 2-,2-,2-,1-aus-7-Codes. Jeder Speicherzellenwert ist beispielhaft vierwertig (K = 4).
-
Durch die 9 Datenbits können 2
9 = 512 unterschiedliche Werte dargestellt werden. Der 2-,2-,2-,1-aus-7-Code umfasst
-
Codewörter. Diese 630 Codewörter reichen aus, um alle 512 binären Werte in Codewörter des 2-,2-,2-,2-aus-7-Codes zu transformieren.
-
Vorteilhaft ist beispielsweise, dass beim Auslesen und Bestimmen von digitalen Speicherzellenwerten, die Codewörter eines
bilden, kein Referenzwert erforderlich ist. Das Bestimmen der ausgelesenen digitalen Speicherzellenwerte kann unter Verwendung eines gegenseitigen Vergleichs der aus Speicherzellen ausgelesenen physikalischen Werte oder eines Vergleichs von aus ausgelesenen physikalischen Werten abgeleiteten Werten erfolgen, wodurch die Wahrscheinlichkeit von Lesefehlern auch dann gering ist, wenn die Häufigkeitsverteilungen für die verschiedenen Speicherzellenwerte Überlappungsbereiche aufweisen.
-
Auslesen des Speichers mittels Vergleicher
-
6 zeigt einen Speicher 601 umfassend n = 4 Speicherzellen S
1, S
2, S
3 und S
4. An den Ausgängen der Speicherzellen werden die Werte
ausgelesen und unter Verwendung von
Vergleichern 602 bis 607 paarweise verglichen. Ein Vergleicher kann z.B. als ein Komparator ausgeführt sein.
-
Der Vergleicher 602 vergleicht die ausgelesenen Werte
der Speicherzellen S
1 und S
2. Der Vergleicher 602 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
12 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
12 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Der Vergleicher 603 vergleicht die ausgelesenen Werte
der Speicherzellen S
1 und S
3. Der Vergleicher 603 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
13 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
13 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Der Vergleicher 604 vergleicht die ausgelesenen Werte
der Speicherzellen S
1 und S
4. Der Vergleicher 604 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
14 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
14 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Der Vergleicher 605 vergleicht die ausgelesenen Werte
der Speicherzellen S
2 und S
3. Der Vergleicher 605 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
23 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
23 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Der Vergleicher 606 vergleicht die ausgelesenen Werte
der Speicherzellen S
2 und S
4. Der Vergleicher 606 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
24 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
24 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Der Vergleicher 607 vergleicht die ausgelesenen Werte
der Speicherzellen S
3 und S
4. Der Vergleicher 607 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y
34 = 1 ausgibt, falls für die ausgelesenen Werte
gilt, und den binären Wert y
34 = 0 ausgibt, falls für die ausgelesenen Werte
gilt.
-
Haben zwei Teilgruppen eine Größe von n
1 = n
2 = 2, dann können in der Gruppe mit n = 4 Speicherzellen S
1 bis S
4
-
Belegungen gespeichert werden.
-
Für diese 6 Belegungen zeigt Tabelle 3 die Ausgabewerte y
12, y
13, y
14, y
23, y
24, y
34 der 6 Vergleicher 602 bis 607. Tabelle 3
S 1 | S 2 | S 3 | S 4 | y 12 | y 13 | y 14 | y 23 | y 24 | y 34 | Funktion |
1 | 1 | 0 | 0 | - | 1 | 1 | 1 | 1 | - | y 13 Λ y 14 Λ y 23 Λy 24 |
1 | 0 | 1 | 0 | 1 | - | 1 | 0 | - | 1 | y 12 Λ y 14 Λ y 23 Λ y 34 |
1 | 0 | 0 | 1 | 1 | 1 | - | - | 0 | 0 | y 12 Λ y 13 Λ y 24 Λ y 34 |
0 | 1 | 1 | 0 | 0 | 0 | - | - | 1 | 1 | y 12 Λ y 13 Λ y 24 Λ yy 34 |
0 | 1 | 0 | 1 | 0 | - | 0 | 1 | - | 0 | y 12 Λ y 14 Λ y 23 Λ y 34 |
0 | 0 | 1 | 1 | - | 0 | 0 | 0 | 0 | - | y 13 Λ y 14 Λ y 23 Λ y 24 |
-
Beispielsweise beschreibt die erste Zeile von Tabelle 3, dass die Speicherzellen S
1 bis S
4 mit den binären Werten 1100 belegt sind. Die Vergleicher 602 bis 607 geben daraufhin die binären Werte y
13 = y
14 = y
23 = y
24 = 1 aus. Da die Speicherzellen S
1 und S
2 beide mit dem binären Wert 1 belegt sind, werden von dem Vergleicher 602 die Werte
miteinander verglichen, die beide einem gespeicherten binären Wert 1 zugeordnet sind. Es ist in diesem Fall nicht vorhersehbar, ob
oder
gilt, so dass der Ausgabewert y
12 des Vergleichers 602 unbestimmt ist. Auch ist der Ausgang y
34 des Vergleichers 607 unbestimmt, da die Werte
und
der Speicherzellen S
3 und S
4 beide den binären Wert 0 aufweisen.
-
Somit sind in Tabelle 3 die Ausgabewerte eines Vergleichers unbestimmt, wenn die zu vergleichenden Ausgabewerte der zugeordneten Speicherzellen gleiche Werte aufweisen.
-
In der Spalte „Funktion“ sind den Zeilen der Tabelle 3 Boolesche Ausdrücke als je eine Konjunktion von negierten oder nicht-negierten Ausgabewerten der entsprechenden Vergleicher zugeordnet: Ist der Ausgabewert yij gleich 1, so erscheint der Ausgabewert in der Konjunktion; ist der Ausgabewert yij hingegen 0, so erscheint der negierte Ausgabewert y ij in der Konjunktion. Ist der Ausgabewert unbestimmt („-“), so erscheint er nicht in der Konjunktion. Dies reduziert insbesondere den Aufwand für die schaltungstechnische Umsetzung.
-
Für jede der 6 Belegungen der Speicherzellen S
1 bis S
4 mit Bits eines 2-aus-4 Codes nimmt genau eine der 6 Konjunktionen den Wert 1 an: So entspricht beispielsweise die Belegung 1001 der Speicherzellen gemäß der dritten Zeile in Tabelle 3 der Konjuktion
-
Die Vergleicher 602, 603, 606 und 607 geben die Werte y12 = 1, y13 = 1, y24 = 0 und y34 = 0 aus. Alle übrigen in Tabelle 3 gezeigten Konjunktionen haben in diesen Fall den Wert 0.
-
Somit wird dadurch, dass die Konjunktion y12 Λ y13 Λ y 24 Λ y 34 den Wert 1 hat, eindeutig bestimmt, dass aus den Speicherzellen S1 bis S4 die Belegung 1001 ausgelesen wurden.
-
Bestimmung der Belegung der Speicherzellen
-
7 zeigt eine Schaltungsanordnung anhand derer aus den Werten y12, y13, y14, y23, y24 und y34 der Vergleicher 602 bis 607 die entsprechenden Belegungen der Speicherzellen S1 bis S4 bestimmt werden. Hierzu werden beispielhaft sechs UND-Gatter 701 bis 706 mit jeweils vier Eingängen und vier ODER-Gatter 708 bis 711 mit jeweils drei Eingängen verwendet.
-
Die Werte y13, y14, y23 und y24 werden an die Eingänge des UND-Gatters 701 geführt. Die Werte y12, y14, y23 und y24 werden an die Eingänge des UND-Gatters 702 geführt. Die Werte y12, y13, y 24 und y 34 werden an die Eingänge des UND-Gatters 703 geführt. Die Werte y 12, y13, y24 und y34 werden an die Eingänge des UND-Gatters 704 geführt. Die Werte y 12, y14, y23 und y 34 werden an die Eingänge des UND-Gatters 705 geführt. Die Werte y13, y14, y 23 und y 24 werden an die Eingänge des UND-Gatters 706 geführt.
-
Weiterhin werden die Ausgänge der UND-Gatter 701 bis 706 wie folgt mit den Eingängen der ODER-Gatter 708 bis 711 verbunden: Der Ausgang des UND-Gatters 701 wird mit je einem der Eingänge der ODER-Gatter 708 und 709 verbunden. Der Ausgang des UND-Gatters 702 wird mit je einem der Eingänge der ODER-Gatter 708 und 710 verbunden. Der Ausgang des UND-Gatters 703 wird mit je einem der Eingänge der ODER-Gatter 708 und 711 verbunden. Der Ausgang des UND-Gatters 704 wird mit je einem der Eingänge der ODER-Gatter 709 und 710 verbunden. Der Ausgang des UND-Gatters 705 wird mit je einem der Eingänge der ODER-Gatter 709 und 711 verbunden. Der Ausgang des UND-Gatters 706 wird mit je einem der Eingänge der ODER-Gatter 710 und 711 verbunden.
-
An dem Ausgang des ODER-Gatters 708 wird die Belegung der Speicherzelle S1, an dem Ausgang des ODER-Gatters 709 wird die Belegung der Speicherzelle S2, an dem Ausgang des ODER-Gatters 710 wird die Belegung der Speicherzelle S3 und an dem Ausgang des ODER-Gatters 711 wird die Belegung der Speicherzelle S4 bereitgestellt.
-
Somit visualisiert die Schaltungsanordnung gemäß 7 die vorstehende Tabelle 3 wie folgt: An den Ausgängen der UND-Gatter 701 bis 706 sind die Funktionen der Tabelle 3 abgebildet, wobei das UND-Gatter 701 der Funktion der ersten Zeile und das UND-Gatter 706 der Funktion der letzten Zeile der Tabelle 3 entspricht. Die Belegung der Speicherzelle Si gemäß 7 ergibt sich aus der Spalte der Speicherzelle Si wie folgt: In derjenigen Zeile der Tabelle, in der diese Spalte den Wert 1 hat, besteht eine logische ODER-Verknüpfung zu der Funktion (Konjunktion). Beispielsweise hat die Speicherzelle S1 in den ersten drei Zeilen der Tabelle 3 den Wert 1, d.h. es besteht eine ODER-Verknüpfung mit den Ausgängen den UND-Gatter 701, 702 und 703, die für die Konjunktionen der ersten drei Zeilen der Tabelle 3 stehen. Dies gilt für die anderen Speicherzellen entsprechend.
-
Beispiel: Dreiwertige Speicherzellen
-
Nachfolgend wird ein Beispiel mit dreiwertigen Speicherzellen betrachtet, d.h. jede der Speicherzellen kann einen der Werte 0, 1 oder 2 annehmen, wobei beispielhaft 2 > 1 > 0 gelten soll.
-
Es wird der Fall betrachtet, dass die Gruppe n = 6 Speicherzellen aufweist und die Teilgruppen n
1 = n
2 = n
3 = 2 Speicherzellen aufweisen. Somit kann pro Gruppe von 6 Speicherzellen zweimal der Wert 2, zweimal der Wert 1 und zweimal der Wert 0 gepeichert werden. Es gibt damit
-
Möglichkeiten, eine Gruppe von 6 Speicherzellen S1 bis S6 mit zwei Zweien, zwei Einsen und zwei Nullen zu belegen.
-
Wird beim Auslesen von Daten aus den Speicherzellen der ausgelesene Wert aller Speicherzellen paarweise verglichen, so werden 15 Vergleicher VGL
ij genutzt, um alle physikalischen Ausgabewerte der Speicherzellen S
1 bis S
6 zu vergleichen, wobei i, j = 1... 6 Indizes sind, die je eine der Speicherzellen bezeichnen. Somit vergleicht der Vergleicher VGL
ij die Speicherzelle S
i mit der Speicherzelle S
j. Die 15 Vergleicher sind demnach:
und
-
Ein binärer Ausgabewert des Vergleichers VGL
ij wird mit y
ij bezeichnet, so dass es entsprechend die folgenden 15 binären Ausgabewerte gibt:
und
-
Für die Belegung 221100 der Speicherzellen S
1 bis S
6 zeigt Tabelle 4 die Ausgabewerte dieser 15 Vergleicher.
-
Es ergibt sich folgende Konjunktion:
y
13
-
Diese Konjunktion weist 12 Werte der 15 Vergleicher auf. Es sind dies diejenigen Werte, die nicht unbestimmt sind.
-
Grundsätzlich gilt: Ein Wert 1 kennzeichnet einen nicht-invertierten oder nicht-negierten Wert yij und ein Wert 0 kennzeichnet einen invertierten oder negierten Wert y ij des jeweiligen Vergleichers.
-
Für die Belegung 212100 der Speicherzellen S
1 bis S
6 zeigt Tabelle 5 die Ausgabewerte der 15 Vergleicher.
-
Es ergibt sich folgende Konjunktion:
-
Die Konjunktion weist 12 Ausgabewerte der 15 Vergleicher auf.
-
Für die Belegung 001122 der Speicherzellen S
1 bis S
6 zeigt Tabelle 6 die Ausgabewerte der 15 Vergleicher.
-
Es ergibt sich folgende Konjunktion:
-
Die Konjunktion weist 12 Ausgabewerte der 15 Vergleicher auf.
-
Für die verbleibenden Belegungen der Speicherzellen mit jeweils zwei Zweien, zwei Einsen und zwei Nullen ergeben sich die zugehörigen Konjunktionen entsprechend. Jeweils 12 der 15 Ausgabewerte (invertiert oder nicht), die nicht unbestimmt sind, bilden die entsprechenden Konjunktionen. Diese Konjunktionen nehmen den Wert 1 genau dann an, wenn in den Speicherzellen S
1 bis S
6 die ihnen entsprechenden Belegungen gespeichert sind und die aus den Speicherzellen ausgelesenen Werte
in den Vergleichern VGL
ij paarweise verglichen werden.
-
Beispiel: Transformation und Inverse Transformation
-
8 zeigt ein Ausführungsbeispiel, bei dem m Datenbits in Speicherzellen S1 bis Sn eines Speichers 803 gespeichert werden. Gezeigt ist eine Gruppe von n Speicherzellen S1 bis Sn, wobei
- - in n1 Speicherzellen n1 erste Werte,
- - in n2 Speicherzellen n2 zweite Werte,
⋮
- - in nK Speicherzellen nK K-te Werte
gespeichert werden. Mit anderen Worten, es gibt eine Anzahl von K Teilgruppen. In jeder Teilgruppe wird eine bestimmte Anzahl gleicher Werte gespeichert. In unterschiedlichen Teilgruppe werden unterschiedliche Werte gespeichert.
-
Die m Datenbits, die in der Gruppe aus n Speicherzellen gespeichert werden, können auch als m-Bit-Byte oder einfach als Byte bezeichnet werden. Als Variable für die Anzahl der Datenbits werden die Buchstaben m oder k verwendet.
-
Dabei gilt
mit
und m < n. Hierbei bezeichnet N die Anzahl der Möglichkeiten, die Gruppe von n Speicherzellen mit n
1 ersten Werten, n
2 zweiten Werten, usw. bis n
K K-ten Werten zu belegen.
-
Eine Transformationsschaltung 801 führt eine Transformation TS(m,n) durch, die 2m Datenbits der Wortbreite m in 2m der N Werte z1, z2, ...,zn transformiert, wobei
- - eine Anzahl n1 der Werte von z1, z2, ..., zn gleich 0 sind,
- - eine Anzahl n2 der Werte von z1, z2, ..., zn gleich 1 sind, ...
⋮
- - eine Anzahl nK der Werte von z1, z2, ... ,zn gleich K - 1 sind.
-
Werden nicht alle 2m der Datenbits der Wortbreite m benötigt, ist es möglich, nur die benötigten Datenbits zu transformieren und in den Speicherzellen zu speichern.
-
Die Transformationsschaltung 801 ist beispielsweise so konfiguriert, dass sie die Transformation T (m, n) von Bitwerten x1, ... , xm der Wortbreite m in Werte z1, ..., zn der Wortbreite n abbildet, die in den Speicherzellen S1 bis Sn gespeichert werden sollen, wobei
- - n1 der Werte von z1,... ,zn den Wert 0,
- - n2 der Werte von z1,... ,zn den Wert 1, ...
⋮
- - nK der Werte von z1,... , zn den Wert (K - 1)
aufweisen.
-
Die m Bits x1,...,xm können beispielsweise als Datenbits bezeichnet werden. Insbesondere ist es möglich, solche Datenbits zu unterscheiden von Werten, die in die Speicherzellen des Speichers geschrieben werden. Handelt es sich bei den Bits x1 bis xm beispielsweise um Bits eines Codewortes eines Fehlercodes zur Fehlererkennung oder Fehlerkorrektur, können diese Bits auch mindestens ein Prüfbit des Fehlercodes umfassen oder nur Prüfbits des Fehlercodes sein.
-
Die Speicherzellen S
1 bis S
n werden ausgelesen und die ausgelesenen Werte
bis
werden mittels einer Transformationsschaltung 802, die eine Transformation
bereitstellt, in Datenbits
tranformiert, wobei im fehlerfreien Fall gilt:
-
Die Transformationsschaltung 801 und die Transformationsschaltung 802 sind vorzugsweise derart eingerichtet, dass für die Transformation T (m, n) und die hierzu inverse Transformation T
-1 (n, m) gilt:
-
Werden die Bits x1 bis xm als m-Bit-Byte bezeichnet, so wird ein m-Bit-Byte als ein Wort z1 bis zn in n Speicherzellen des Speichers gespeichert, wobei eine vorbestimmte Anzahl von n1 ersten Speicherzellen einen ersten Wert, eine vorbestimmte Anzahl von n2 zweiten Speicherzellen einen zweiten Wert, usw. und eine vorbestimmte Anzahl nK von K-ten Speicherzellen einen K-ten Wert speichern.
-
Beispiel: Mit K = 2 speichern n1 erste Speicherzellen einen ersten Wert 0 und n2 zweite Speicherzellen speichern einen zweiten Wert 1. In den Speicherzellen S1 bis Sn werden dann Codewörter eines n2-aus-n-Codes gespeichert.
-
Weiteres Beispiel: Können in jeder der Speicherzellen S1 bis Sn vier Werte gespeichert werden, ist es möglich in n1 Speicherzellen den ersten Wert, in n2 Speicherzellen den zweiten Wert, in n3 Speicherzellen den dritten Wert und in n4 Speicherzellen den vierten Wert zu speichern. Dabei gilt: n1 + n2 + n3 + n4 = n.
-
Wie beschrieben, ist es möglich, physikalische Eigenschaften (z.B. physikalische Werte) von verschiedenen gelesenen Speicherzellen miteinander zu vergleichen. Dadurch können Fehlerwahrscheinlichkeiten zumindest teilweise reduziert werden. Nur wenn beide der beim Auslesen paarweise verglichenen Werte gleichzeitig in dem Überlappungsbereich von Häufigkeitsverteilungen der physikalischen Werte liegen, kann ein Fehler auftreten und nicht bereits dann, wenn nur ein einzelner Wert in so einem Überlappungsbereich liegt.
-
Beispiel: Fig.9
-
9 zeigt ein Beispiel einer Speicherung von m-Bit-Bytes in jeweils n Speicherzellen, wobei m = 4, n = 6 und n1 = n2 = 3 gelten. In n1 = 3 Speicherzellen wird ein erster digitaler Wert 0 und in n2 = 3 zweiten Speicherzellen wird ein zweiter digitaler Wert 1 gespeichert. Das 4-Bit-Byte wird in 6 Speicherzellen als ein 6-Bit-Wort eines 3-aus-6-Codes gespeichert.
-
9 zeigt die Speicherung von drei 4-Bit-Bytes in jeweils 6 Speicherzellen eines Speichers 901, wobei die Speicherzellen beispielhaft digitale binäre Werte speichern können. Es werden 4-Bit-Bytes x1, x2, x3, x4 mittels einer Transformationsschaltung 902 in binäre Werte z1 bis z6 transformiert, die in Speicherzellen S1 bis S6 des Speichers 901 gespeichert werden. Weiterhin werden 4-Bit-Bytes x3, x6, x7, x8 mittels einer Transformationsschaltung 903 in binäre Werte z7 bis z12 transformiert, die in Speicherzellen S7 bis S12 des Speichers 901 gespeichert werden. Auch werden 4-Bit-Bytes x9, x10, x11, x12 mittels einer Transformationsschaltung 904 in binäre Werte z13 bis z18 transformiert, die in Speicherzellen S13 bis S18 des Speichers 901 gespeichert werden.
-
Jede der Transformationsschaltungen 902 bis 904 führt eine Transformation T(4,6) durch. Die Transformation T(4, 6) kann in Form einer Tabelle beschrieben sein, die jedem der 16 möglichen 4-Bit-Werte ein unterschiedliches Codewort eines 3-aus-6-Codes zuordnet. Ein Beispiel ist in Tabelle 7 gezeigt. Tabelle 7
x 1 | x 2 | x 3 | x 4 | z 1 | z 2 | z 3 | z 4 | z 5 | z 6 |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
-
Eine solche Tabelle kann beispielsweise in Form einer kombinatorischen (logischen) Schaltung oder in Form eines Nurlesespeichers realisiert sein.
-
Sind die Werte oder die Speicherzellenwerte, die in den Speicherzellen gespeichert werden, binäre Werte, so können diese Werte auch als Speicherbits bezeichnet werden.
-
In dem beschriebenen Beispiel führt die Invertierung der Datenbits zu einer Invertierung der Speicherbits.
-
Optional können verschiedene 4-Bit-Bytes mit funktional gleicher Transformation bzw. einer gleichwirkenden Transformationsschaltung in Speicherwerte, insbesondere Speicherbits, transformiert werden. Ebenso ist es möglich, verschiedene 4-Bit-Bytes mit funktional unterschiedlichen Transformationen oder Transformationsschaltungen in Speicherbits oder allgemein in Speicherwerte zu transformieren. Beispielsweise können zumindest zwei der Transformationsschaltungen 902 bis 904 unterschiedliche Transformationen implementieren. Entsprechend stellen dann die Transformationsschaltungen 905 bis 907 die passenden inverse Transformationen bereit.
-
Beispielsweise können Transformationen vorgesehen sein, bei denen eine Invertierung des 4-Bit-Bytes x zu einer Invertierung der digitalen Werte z führt.
-
Beim Auslesen aus dem Speicher 901 werden Speicherbits
gelesen und durch die Transformationsschaltung 905 in 4-Bit Bytes
x
1, transformiert. Entsprechend werden Speicherbits
z
2, gelesen und durch die Transformationsschaltung 906 in 4-Bit Bytes
x
3, transformiert. Auch werden Speicherbits
gelesen und durch die Transformationsschaltung 907 in 4-Bit Bytes
transformiert.
-
Jede der Transformationsschaltungen 905, 906 und 907 realisiert eine Transformation
die eine inverse Transformation der in Tabelle 7 gezeigten Transformation ist, wonach jeweils n = 6 Zustandsbits
(i = 1...3 und n = 1...6) in jeweils m = 4 Datenbits
(i = 1...3 und m = 1... 4) transformiert werden.
-
Aufgrund von Fehlern können sich die aus dem Speicher 901 ausgelesenen Speicherbits
von den ursprünglich gespeicherten Bits z(
i·n) unterscheiden. Somit können sich auch die gelesenen Datenbits
von den geschriebenen Datenbits x
i·m unterscheiden.
-
Ist kein Fehler aufgetreten, dann gilt für die ersten 4 Datenbits x
1 bis x
4, die ersten 6 transformierten Bits z
1 bis z
6, die ersten 6 rückzutransformierenden Bits
und die ersten 4 sich hieraus ergebenden Datenbits
-
Für die zweiten 4 Datenbits und die dritten 4 Datenbits gilt dies entsprechend.
-
Der Vollständigkeit halber ist eine Tabelle 8 gezeigt, die eine Transformation
veranschaulicht. Hierbei handelt es sich um die inverse Abbildung der in der Tabelle 7 gezeigten Zuordnungen. Tabelle 8
| | | | | | | | | |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
-
Für nicht in der Tabelle 8 aufgeführte Werte der Speicherbits
können zugehörige beliebige Werte der Datenbits
x
1 für die Synthese der inversen Transformationsschaltung 905 vorgegeben werden. Es ist beispielsweise möglich, solche beliebigen Werte als unbestimmte Werte, die auch als „Don't-care“ Werte bezeichnet werden, bei der Optimierung durch ein Synthesetool festlegen zu lassen. Auch ist es eine Option, diese Werte zu 0 zu setzen.
-
Fehlererkennung und/oder Fehlerkorrektur
-
Sind fehlerhaften Speicherbits durch die inverse Transformationsschaltung 905 fehlerhafte Datenbits zugeordnet, dann kann ein fehlerhaftes 4-Bit-Byte durch einen Fehlercode erkannt und/oder korrigiert werden. Dies wird nachfolgend beispielhaft erläutert.
-
10 zeigt eine beispielhafte Schaltungsanordnung, die eine Fehlererkennung oder eine kombinierte Fehlererkennung mit Fehlerkorrektur ermöglicht, wobei die Datenbits durch eine Transformationsschaltung in Speicherbits transformiert werden, die in Speicherzellen eines Speichers gespeichert werden.
-
Datenbits x liegen am Eingang eines Coders 1001 an, an dessen Ausgang entsprechend einem Fehlercode C1 codierte Bits y = Cod(x) bereitgestellt werden.
-
Es ist möglich, dass der Fehlercode C1 ein Bytefehler korrigierender und/oder erkennender Code, beispielsweise ein Reed-Solomon Code, ist. Es ist auch möglich, dass der Fehlercode C1 ein Bitfehler korrigierender und/oder erkennender Code, beispielsweise ein BCH-Code, ein Hsiao-Code, ein Hamming-Code, ein Low-Density-Parity-Code oder ein anderer Code ist.
-
Die am Ausgang des Coders 1001 ausgegebenen Bits (oder Bytes) y = Cod(x) werden mittels einer Transformationsschaltung 1002 in digitale Werte z(y) transformiert, die in Speicherzellen eines Speichers 1003 geschrieben werden. Die Transformationsschaltung 1002 stellt eine Transformation TS bereit.
-
In einer Gruppe von jeweils n Speicherzellen werden n1 erste Werte in n1 ersten Speicherzellen, n2 zweite Werte in n2 zweiten Speicherzellen, usw. bis nK K-te Werte in nK K-ten Speicherzellen gespeichert. Dabei gilt: n1 + n2 + ... + nK = n.
-
In einem nächsten Schritt werden Werte z'(y) aus den entsprechenden Speicherzellen des Speichers 1003 ausgelesen. Es ist möglich, dass sich die Werte z'(y) aufgrund von mindestens einem Fehler von den eingeschriebenen Werten z(y) unterscheiden. Ist kein Fehler aufgetreten, gilt z(y) = z'(y).
-
Die aus dem Speicher 1003 ausgelesenen Werte z'(y) werden durch eine inverse Transformationsschaltung 1004, die eine Transformation
bereitstellt, in binäre Werte y' transformiert.
-
Ist kein Fehler aufgetreten, gilt
Ist ein Fehler aufgetreten, gilt
-
Ein Korrekturwertbildner 1005 bildet entsprechend dem Fehlercode C1 einen Korrekturwert e entsprechender Wortbreite, wobei die Komponenten des Korrekturwerts e mit den Werten y' in einer XOR-Schaltung 1007 komponentenweise XORverknüpft werden. Die XOR-Schaltung ist eine Schaltung die eine Exklusiv-Oder-Verknüpfung der Eingangssignale durchführt und das Ergebnis dieser Verknüpfung am Ausgang bereitstellt. Die XOR-Schaltung liefert am Ausgang dann den logischen Wert 1, wenn die Signale an den Eingängen gleich sind. Sind die Signale an den Eingängen unterschiedlich, liefert die XOR-Schaltung am Ausgang den logischen Wert 0.
-
Am Ausgang der XOR-Schaltung 1007 wird ein korrigierter Wert y
cor bereitgestellt. Ist ein durch den Code C
1 mittels des Korrekturwertbildners 1005 korrigierbarer Fehler aufgetreten, sind die korrigierten Bits gleich den codierten Bits, d.h.
-
Weiterhin ist eine Fehlererkennungsschaltung 1006 gezeigt, anhand derer bestimmbar ist, ob ein Fehler und/oder ein bestimmter Typ eines Fehlers, der unter Verwendung des Fehlercodes C1 erkennbar ist, vorliegt. Der Fehlererkennungsschaltung 1006 wird der Wert y' zugeführt und die Fehlererkennungsschaltung 1006 gibt eine Fehlerinformation 1008 aus.
-
Ist der Fehlercode beispielsweise ein 1-Bytefehler korrigierender und 2-Bytefehler erkennender Code, dann kann die Fehlererkennungsschaltung 1006 verschiedene Fehlerinformationen 1008 ausgeben, je nachdem, ob kein Fehler, ein 1-Bytefehler oder ein 2-Bytefehler aufgetreten ist. Beispielsweise kann die Fehlerinformation 1008 als eine Bitfolge 00, 01 oder 10 (in diesem Beispiel also eine Bitfolge mit zwei Bits) codiert sein.
-
Optional können die Fehlererkennungsschaltung 1006 und die Korrekturwertbildner 1005 gemeinsam oder teilweise gemeinsam realisiert sein.
-
Ist der Fehlercode C1 ein separierbarer Code, bei dem die Datenbits bei der Codierung durch den Coder 1001 nicht verändert werden, dann sind, wenn kein Fehler aufgetreten ist oder wenn ein durch den Fehlercode C1 korrigierbarer Fehler aufgetreten ist, von der XOR-Schaltung 1006 ausgegebene Bits gleich den entsprechenden Datenbits, die in den Coder 1001 eingegeben wurden und die nach ihrer Transformation durch die Transformationsschaltung 1002 in dem Speicher 1003 gespeichert wurden.
-
11 zeigt eine alternative Schaltungsanordnung, die eine Fehlerkorrektur oder eine Fehlererkennung ggf. mit Fehlerkorrektur ermöglicht.
-
Datenbits x liegen am Eingang einer Transformationsschaltung 1101 an und werden in Werte z(x) transformiert. Die Werte z(x) der Transformationsschaltung 1101 liegen am Eingang eines Coders 1102 an, der derart eingerichtet ist, dass an seinem Ausgang unter Verwendung eines Fehlercodes C2 codierte Daten Cod(z(x)) bereitgestellt werden.
-
Der Coder 1102 kann eine Kodierfunktion und eine Prüfbit-Transformierfunktion bereitstellen.
-
Beispielhaft soll angenommen werden, dass der Fehlercode C2 ein separierbarer Code ist, so dass die Werte z(x), die am Eingang des Coders 1102 anliegen, in den von dem Coder bestimmten Ausgabedaten Cod(z(x)) unverändert enthalten und um Prüfbits entsprechend dem Fehlercode C2 ergänzt sind.
-
Der Coder 1102 ist in diesem Beispiel so ausgestaltet, dass er die an seinem Eingang anliegenden Werte z(x) unverändert an seinem Ausgang (hierbei kann der Eingang als auch der Ausgang jeweils mehrere Leitungen aufweisen, wobei jede Leitung einem Bit zugeordnet ist) ausgibt und zusätzlich Prüfbits entsprechend dem Fehlercode C2 aus den Bits z(x) bildet und diese Prüfbits vor der Speicherung in einen Speicher 1103 noch transformiert.
-
Die Werte z(x) bilden beispielsweise Gruppen von n Bits, die aus Codewörtern eines n1-aus-n-Codes bestehen. Die von dem Coder 1102 bereitgestellten transformierten Prüfbits können dabei ebenfalls n1-aus-n-Codewörter sein oder solche umfassen.
-
Es ist beispielsweise möglich, dass die durch den Fehlercode C2 aus den Bits z(x) bestimmten Prüfbits durch den Coder 1102 als Bits bereitgestellt werden, bei denen jeweils zwei Bits zueinander komplementär sind. Dabei wird jedes Prüfbit in zwei Bits transformiert und in zwei Speicherzellen gespeichert. Beispielsweise kann ein Prüfbit 1 in die Bits 10 und ein Prüfbit 0 in die Bits 01 transformiert und in jeweils zwei Speicherzellen gespeichert werden.
-
Auch andere Transformationen der Prüfbits in Speicherzellenwerte sind möglich. So ist es beispielsweise denkbar, die Prüfbits verdreifacht oder doppelt und/oder in anderer Weise fehlertolerant in den Speicher 1103 zu schreiben.
-
In einer Gruppe von jeweils n Speicherzellen des Speichers 1103 werden n1 erste Werte in einer ersten Anzahl von n1 ersten Speicherzellen, n2 zweite Werte in einer zweiten Anzahl von n2 zweiten Speicherzellen, usw. bis nK K-te Werte in einer vorbestimmten K-ten Anzahl von nK K-ten Speicherzellen gespeichert. Dabei gilt: n1 +n2 +... +nK = n.
-
In der in 10 gezeigten Schaltungsanordnung erfolgt die Fehlerverarbeitung unter Verwendung der Datenbits. Im Gegensatz dazu erfolgt in der in 11 gezeigten Schaltungsanordnung die Fehlerverarbeitung anhand der Speicherzellenwerte, die aus den Datenbits durch die Transformationsschaltung 1101 bestimmt sind. Die Speicherzellenwerte sind beispielsweise Speicherbits. Unter Fehlerverarbeitung sei hierbei Fehlererkennung und/oder Fehlerkorrektur verstanden.
-
12 zeigt ein weiteres Beispiel einer Variante der in 11 gezeigten Schaltungsanordnung.
-
Datenbits x liegen am Eingang einer Transformationsschaltung 1201 an und werden in Codewörter [3 - aus - 6]1 transformiert, wobei jeweils 4 Bits der Datenbits in ein 3-aus-6-Codewort transformiert werden. Diese 3-aus-6-Codewörter [3 - aus - 6]1 werden am Ausgang der Transformationsschaltung 1201 bereitgestellt. Jedem der 16 4-Bit-Werte ist durch die Transformationsschaltung 1201 umkehrbar eindeutig ein Codewort des 3-aus-6-Codes zugeordnet.
-
Der Ausgang der Transformationsschaltung 1201 ist mit dem Eingang eines Prüfbitbildners 1202 verbunden, der Prüfbits Pr für die Bits der 3-aus-6-Codewörter entsprechend einem Fehlercode bestimmt und an seinem Ausgang bereitstellt.
-
Beispielsweise erzeugt der Prüfbitbildner 1202 Prüfbits eines BCH-Codes. Die Bits, die von der Transformationsschaltung 1201 ausgegeben werden und die Prüfbits, die von dem Prüfbitbildner 1202 ausgegeben werden, bilden dann im fehlerfreien Fall ein Codewort des BCH-Codes.
-
Entsprechend kann anstatt des BCH-Codes auch ein anderer Fehlercode eingesetzt werden. Auch können mehrere Fehlercodes in Kombination miteinander verwendet werden.
-
Der Ausgang der Transformationsschaltung 1201 ist ebenfalls mit dem Eingang eines Speichers 1204 verbunden, so dass die aus den Datenbits mittels der Transformationsschaltung 1201 erhaltenen 3-aus-6-Codewörter (auch ohne Prüfbits) in dem Speicher 1204 speicherbar sind.
-
Der Ausgang des Prüfbitbildners 1202 ist mit dem Eingang eines Prüfbittransformierers 1203 verbunden, der die bereitgestellten Prüfbits in 3-aus-6-Codewörter [3 - aus - 6]2 transformiert und an seinem Ausgang bereitstellt.
-
Der Ausgang des Prüfbittransformierers 1203 ist mit dem Eingang des Speichers 1204 verbunden. Beispielsweise können hierfür separate Dateneingänge des Speichers genutzt werden. Somit können die 3-aus-6-Codewörter [3 - aus - 6]2, die basierend auf den Prüfbits Pr von dem Prüfbittransformierer 1203 generiert wurden, in dem Speicher 1204 gespeichert werden.
-
Im fehlerfreien Fall werden in dem Speicher 1204 solche Bits gespeichert, die 3-aus-6-Codewörtern sind. Diese Bits werden auch als Speicherzellenwerte bezeichnet.
-
Aus den Datenbits x werden durch die Transformationsschaltung 1201 Codewörter [3 - aus - 6]1 des 3-aus-6-Codes gebildet, die in den Speicher 1204 geschrieben werden. Diese Codewörter [3 - aus - 6]1 bilden Speicherzellenwerte für Speicherzellen des Speichers 1204.
-
Aus den Bits der Codewörter [3 - aus - 6]1 werden durch einen Prüfbitbildner 1202 entsprechend dem verwendeten Fehlercode Prüfbits Pr bestimmt und an seinem Ausgang ausgegeben. Der Prüfbittransformierer 1203 transformiert die Prüfbits Pr in Codewörter [3 - aus - 612 des 3-aus-6-Codes. Diese Codewörter [3 - aus - 6]2 bilden Speicherzellenwerte für Speicherzellen des Speichers 1204, die aus den Prüfbits Pr gebildet wurden.
-
In dem Speicher 1204 werden also die Codewörter [3 - aus - 6]1 und die Codewörter [3 - aus - 6]2 gespeichert. Beim Speichern oder beim Lesen können Bitfehler auftreten, anhand derer die Codewörter [3 - aus - 6]1 und die Codewörter [3 - aus - 6]2 in fehlerhafte Bits verfälscht werden.
-
Beim Lesen werden Bits
die den Datenbits zugeordnet sind und Bits
die den Prüfbits der transformierten Datenbits zugeordnet sind, aus dem Speicher 1204 ausgegeben. Die Bits
als auch die Bits
können Bitfehler enthalten. Im fehlerfreien Fall gilt:
-
Der Ausgang des Speichers 1204, an dem die Bits
ausgegeben werden, ist mit dem Eingang eines inversen Prüfbittransformierers 1205 verbunden, der basierend auf den Bits
eventuell fehlerhaften Prüfbits Pr' bestimmt und sie an seinem Ausgang bereitstellt. Der inverse Prüfbittransformierer 1205 implementiert eine inverse Transformation zu der Transformation, die der Prüfbittransformierer 1203 umsetzt.
-
Im fehlerfreien Fall gibt der inverse Prüfbittransformierer 1205 an seinem Ausgang die gleichen Prüfbits Pr aus, die von dem Prüfbitbildner 1202 gebildet wurden.
-
Die eventuell fehlerhaften Prüfbits Pr' sind die Prüfbits der Bits
die den Datenbits entsprechen. Somit können diese eventuell fehlerhaften Prüfbits Pr' zur Fehlerkorrektur der eventueller Bitfehler der Bits
entsprechend dem verwendeten 3-aus-6-Codes genutzt werden.
-
Der Ausgang des Speichers 1204 und der Ausgang des inversen Prüfbittransformierers 1205 ist jeweils mit einem Eingang eines Korrektors 1206 verbunden. Der Korrektor 1206 korrigiert die Bits
in korrigierte Bits
entsprechend dem verwendeten Fehlercode.
-
Sind eventuell aufgetretene Fehler durch den verwendeten Fehlercode korrigierbar, gilt:
-
An dem Ausgang des Korrektors 1206 werden diese Bits
bereitgestellt. Der Ausgang des Korrektors 1206 ist mit dem Eingang einer inversen Transformationsschaltung 1207 verbunden, die eine Transformation durchführt, die invers zu der von der Transformationsschaltung 1201 durchgeführten Transformation ist. An dem Ausgang der inversen Transformationsschaltung 1207 werden die Datenbits x
cor bereitgestellt. Dabei handelt es sich ggf. um korrigierte Datenbits oder - falls kein Fehler aufgetreten ist - um die Datenbits x.
-
Liegt kein Fehler vor oder ist ein aufgetretener Fehler durch den Fehlercode C korrigierbar, gilt
-
Die beschriebene Schaltungsanordnung ist ein Ausführungsbeispiel, bei dem die Fehlerkorrektur von Speicherzellenwerten durch einen Fehlercode erfolgt. Die binären Speicherzellenwerte sind in diesem Ausführungsbeipiel Codewörter eines 3-aus-6-Codes. Der 3-aus-6-Code dient zur Bildung von Speicherzellenwerten. Die Fehlerkorrektur der Speicherzellenwerte kann mit einem Fehlercode, beispielsweise einem Hamming-Code, einem Hsiao-Code, einem BCH-Code oder einem anderen Code erfolgen.
-
Somit werden Datenbits in Speicherzellenwerte transformiert und für die Bits der Speicherzellenwerte werden Prüfbits eines Fehlercodes bestimmt. Diese Prüfbits werden nun ebenfalls in Speicherzellenwerte transformiert. Die Speicherzellenwerte der transformierten Bits und der transformierten Prüfbits werden in dem Speicher gespeichert. Bei Auslesen aus dem Speicher werden dann zunächst die Speicherzellenwerte, die den Prüfbits entsprechen, in Prüfbits zurück transformiert. Die Speicherzellenwerte, die den Datenbits entsprechen, werden unter Verwendung der zurück transformierten Prüfbits und unter Verwendung des Fehlercodes in einem üblichen Korrektor in korrigierte Speicherzellenwerte korrigiert. Die korrigierten Speicherzellenwerte, die den Datenbits entsprechen, können dann durch eine inverse Transformation in korrigierte Datenbits zurück transformiert werden.
-
Neben dem beschriebenen Speicherzellenwerten und dem beschriebenen 3-aus-6-Code können auch andere Speicherzellenwerte, beispielsweise Codewörter eines 4-aus-8-Codes, entsprechend verwendet werden.
-
Im Unterschied zu dem in 12 beschriebenen Ausführungsbeipiel erfolgt in dem in 10 beschriebenen Ausführungsbeispiel eine Fehlerkorrektur der Datenbits. Aus den Datenbits werden Prüfbits eines Fehlercodes bestimmt. Die Datenbits und die so bestimmten Prüfbits werden gemeinsam in Speicherzellenwerte transformiert und in dem Speicher gespeichert. Bei Auslesen aus dem Speicher werden eventuell fehlerhafte Speicherzellenwerte zunächst in eventuell fehlerhafte Datenbits und eventuell fehlerhafte Prüfbits zurück transformiert und die eventuell fehlerhaften Datenbits werden unter Verwendung des verwendeten Fehlercodes korrigiert.
-
Beispiel: 3-aus-6-Code
-
Nachfolgend wird beispielhaft eine Gruppe von n = 6 Speicherzellen angenommen mit zwei Teilgruppen je n1 = n2 = 3 Speicherzellen. Somit können in den n = 6 Speicherzellen 3-aus-6-Codewörter mit jeweils dreimal dem binären Wert 0 und dreimal dem binären Wert 1 gespeichert werden.
-
Es gibt
verschiedene Codewörter mit drei Nullen und drei Einsen, so dass es 20 unterschiedliche Werte gibt, die als 3-aus-6-Codewörter in 6 Speicherzellen gespeichert werden können. Da 2
4 = 16 < 20 gilt, können in den 6 Speicherzellen 4 Datenbits gespeichert werden.
-
Eine mögliche Zuordnung von in 6 Speicherzellen S1 bis S6 als 3-aus-6-Codeworte gespeicherte binäre 4-Bit-Werte zeigt Tabelle 9. Die letzte Spalte der Tabelle 9 ist mit „4-Bit“ überschrieben; dort werden die 4-Bit-Werte bitweise von 0 bis 16 (vergleiche vorletzte Spalte) hochgezählt. Zu jedem 4-Bit-Wert gibt es genau ein Codewort des hier beispielhaft verwendeten 3-aus-6-Codes. Dabei zeichnet sich der 3-aus-6 Code dadurch aus, dass in jedem Codewort genau dreimal der Wert 1 (oder der Wert 0) vorkommt. Für die n = 6 Speicherzellen gibt es 20 - 16 = 4 Codewörter, die „übrig“ sind, d.h. keinen zugeordneten 4-Bit-Wert haben. Hier in dem Beispiel der Tabelle 9 sind das die letzten vier Zeilen der Tabelle, bei denen in der Spalte „4-Bit“ viermal das Symbol „-“ steht.
-
Detektion des schnellsten Lesestroms
-
13 zeigt eine beispielhafte Schaltungsanordnung umfassend vier NICHT-ODER-Gatter 1301 bis 1304 mit je drei Eingängen, zwei NICHT-ODER-Gatter 1305, 1306 mit je zwei Eingängen und ein NICHT-UND-Gatter 1307 mit einer Vielzahl von Eingängen.
-
Diese Schaltungsanordnung ermöglicht es diejenigen drei Speicherzellen zu bestimmen, deren Zeitintegral über den Lesestrom am schnellsten den vorbestimmten Schwellwert Sw erreicht.
-
Es gibt
verschiedene Möglichkeiten, drei der 6 Speicherzellen S
1 bis S
6 mit drei Nullen und drei Einsen zu belegen.
-
Es werden jeweils die drei Ausgänge der Speicherzellen, die in den ersten 16 Zeilen der Tabelle 9 mit 0 belegt sind, mit den Eingängen eines NICHT-ODER-Gatters Tabelle 9
S 1 | S 2 | S 3 | S 4 | S 5 | SS 6 | Wert | 4-Bit |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0000 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0001 |
1 | 0 | 1 | 1 | 0 | 0 | 2 | 0010 |
0 | 1 | 1 | 1 | 0 | 0 | 3 | 0011 |
1 | 1 | 0 | 0 | 1 | 0 | 4 | 0100 |
1 | 0 | 1 | 0 | 1 | 0 | 5 | 0101 |
0 | 1 | 1 | 0 | 1 | 0 | 6 | 0110 |
1 | 0 | 0 | 1 | 1 | 0 | 7 | 0111 |
0 | 1 | 0 | 1 | 1 | 0 | 8 | 1000 |
0 | 0 | 1 | 1 | 1 | 0 | 9 | 1001 |
1 | 1 | 0 | 0 | 0 | 1 | 10 | 1010 |
1 | 0 | 1 | 0 | 0 | 1 | 11 | 1011 |
0 | 1 | 1 | 0 | 0 | 1 | 12 | 1100 |
1 | 0 | 0 | 1 | 0 | 1 | 13 | 1101 |
0 | 1 | 0 | 1 | 0 | 1 | 14 | 1110 |
0 | 0 | 1 | 1 | 0 | 1 | 15 | 1111 |
1 | 0 | 0 | 0 | 1 | 1 | 16 | ---- |
0 | 1 | 0 | 0 | 1 | 1 | 17 | ---- |
0 | 0 | 1 | 0 | 1 | 1 | 18 | ---- |
0 | 0 | 0 | 1 | 1 | 1 | 19 | ---- |
verbunden. Der Ausgang eines NICHT-ODER-Gatters ist nur dann 1, wenn alle seine Eingänge 0 sind.
-
Die drei Ausgänge der Speicherzellen S4, S5 und S6, die entsprechend der ersten Zeile der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1301 geführt. Die drei Ausgänge der Speicherzellen S3, S5 und S6, die entsprechend der zweiten Zeile der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1302 geführt. Die drei Ausgänge der Speicherzellen S1, S3 und S5, die entsprechend der Zeile 14 der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1303 geführt. Die drei Ausgänge der Speicherzellen S1, S2 und S5, die entsprechend der Zeile 15 der Tabelle 9 den Wert 0 aufweisen, werden an die drei Eingänge des NICHT-ODER-Gatters 1304 geführt.
-
Dieser Ansatz wird entsprechend auch auf die Zeilen 3 bis 13 angewandt, wonach pro Zeile ein eigenes NICHT-ODER-Gatter vorgesehen ist, dessen drei Eingänge mit denjenigen Speicherzellen der Zeile verbunden sind, die den Wert 0 aufweisen.
-
Es liegt nur an dem Ausgang desjenigen NICHT-ODER-Gatters 1301 bis 1304 der Wert 1 an, dessen Eingänge alle den Wert 0 aufweisen. Mit anderen Worten liefert nur dasjenige NICHT-ODER-Gatter 1301 bis 1304 an seinem Ausgang den Wert 1, das mit dem zugehörigen Codewort gemäß der Tabelle 9 verknüpft ist. Da die Kombinationen der Verbindungen der Eingänge mit Speicherzellen an allen der NICHT-ODER-Gatter 1301 bis 1304 unterschiedlich sind (jedes Codewort enthält eine unterschiedliche Anordnung von drei Nullen), liegt zu einer Zeit nur einmal der Wert 1 an den Ausgängen der NICHT-ODER-Gatter 1301 bis 1304 an.
-
Die NICHT-ODER-Gatter 1305 und 1306 veranschaulichen beispielhaft eine zweite Ebene der Verknüpfung von Logiksignalen in 13: Der Ausgang des NICHT-ODER-Gatters 1301 und der Ausgang des NICHT-ODER-Gatters 1302 sind mit den Eingängen des NICHT-ODER-Gatters 1305 verbunden. Der Ausgang des NICHT-ODER-Gatters 1303 und der Ausgang des NICHT-ODER-Gatters 1304 sind mit den Eingängen des NICHT-ODER-Gatters 1306 verbunden. Somit sind jeweils zwei der Ausgänge der NICHT-ODER-Gatter 1301 bis 1304 mit den Eingängen eines NICHT-ODER-Gatters dieser zweiten Ebene verbunden.
-
Die Ausgänge der NICHT-ODER-Gatter 1305 bis 1306 der zweiten Ebene sind mit je einem Eingang des NICHT-UND-Gatters 1307 verbunden. Am Ausgang des NICHT-UND-Gatters 1307 wird ein Signal 1308 bereitgestellt.
-
Das NICHT-UND-Gatter liefert an seinem Ausgang nur dann den Wert 0, wenn alle seine Eingänge den Wert 1 aufweisen. Sobald einer der Eingänge den Wert 0 aufweist, hat das Signal 1308 den Wert 1. Wie vorstehend ausgeführt wurde, kann bei Auftreten von drei Nullen in den Speicherzellen nur eines der NICHT-ODER-Gatter 1301 bis 1304 an seinem Ausgang von dem Wert 0 auf den Wert 1 wechseln. Entsprechend wechselt das an den Ausgang des betroffenen NICHT-ODER-Gatters 1301 bis 1304 angeschlossene NICHT-ODER-Gatter 1305 bis 1306 von dem Wert 1 auf den Wert 0. Dieser Wert 0 bewirkt, dass das Signal 1308 auf den Wert 1 wechselt.
-
In dem in 13 gezeigten Beispiel gibt es 16 verschiedene Möglichkeiten, drei Nullen auf 6 Speicherzellen zu verteilen (vergleiche Tabelle 9). Entsprechend gibt es 16 NICHT-ODER-Gatter 1301 bis 1304. Die Ausgänge jeweils zwei dieser NICHT-ODER-Gatter werden an die Eingänge eines der NICHT-ODER-Gatter 1305 bis 1306 der zweiten Ebene geführt. Somit gibt es 8 NICHT-ODER-Gatter 1305 bis 1306 der zweiten Ebene und das NICHT-UND-Gatter 1307 weist entsprechend acht Eingänge auf.
-
Das Signal 1308 am Ausgang des NICHT-UND-Gatters 1307 kann zeitlich abgetastet („gesampelt“) werden.
-
Wird beim Abtasten das erste Mal der Wert 1 für das Signal 1308 bestimmt, so kann das Signal 1308 als ein „hold-Signal“ für 6 Latches verwendet werden, die den jeweiligen Speicherelementen S1 bis S6 nachgeschaltet sind. Dies wird im Hinblick auf 14 näher erläutert.
-
14 zeigt eine beispielhafte Schaltungsanordnung umfassend sechs Signalverstärker (auch bezeichnet als Sense-Verstärker oder Sense-Amplifier) 1401 bis 1406. Wie bereits vorstehend erläutert wurde, werden physikalische Werte
(hier mit i = 1...6) aus (hier beispielhaft 6) Speicherzellen des Speichers ausgelesen. Je einer der ausgelesenen physikalischen Werte
wird einem der Signalverstärker 1401 bis 1406 zugeführt. Bei dem physikalischen Wert
kann es sich um einen Lesestrom handeln.
-
Der Signalverstärker 1401 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu einem Zeitpunkt t kleiner als ein Schwellwert Sw, dann liegt zum Zeitpunkt t am Ausgang des Signalverstärkers 1401 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1401 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1401 ist mit dem ersten Eingang eines Latches 1407 verbunden, an dessen zweitem Eingang ein Hold-Signal 1413 anliegt. Ist der Wert des Hold-Signales gleich 0, dann ist das Latch 1407 transparent geschaltet, d.h. der an dem Ausgang des Signalverstärkers 1401 bereitgestellte binäre Wert liegt an dem ersten Eingang einer Logikschaltung 1414 an. Ist der Wert des Hold-Signals gleich 1, dann ist das Latch 1407 eingefroren, d.h. der zu diesem Zeitpunkt an dem ersten Eingang des Latches 1407 anliegende Wert bleibt solange auch an dem Ausgang des Latches 1407 bestehen wie der Wert des Hold-Signals gleich 1 ist.
-
Zur Funktion des Latches, das auch als Auffangregister oder zustandsgesteuertes Flipflop bezeichnet wird, sei beispielsweise auf „de.wikipedia.org/wiki/Latch“ verwiesen.
-
Die Logikschaltung 1414 bestimmt die ersten drei Nullen, d.h. die schnellsten drei Nullen, die an den Ausgängen der Latches 1407 bis 1412 auftreten uns setzt dann das Hold-Signal 1413 auf den Wert 1.
-
Entsprechend gelten: Der Signalverstärker 1402 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu dem Zeitpunkt t kleiner als der
-
Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1402 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1402 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1402 ist mit dem ersten Eingang eines Latches 1408 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1408 ist mit dem zweiten Eingang der Logikschaltung 1414 verbunden. Der Signalverstärker 1403 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu dem Zeitpunkt t kleiner als der Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1403 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1403 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1403 ist mit dem ersten Eingang eines Latches 1409 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1409 ist mit dem dritten Eingang der Logikschaltung 1414 verbunden. Der Signalverstärker 1404 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu dem Zeitpunkt t kleiner als der Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1404 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1404 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1404 ist mit dem ersten Eingang eines Latches 1410 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1410 ist mit dem vierten Eingang der Logikschaltung 1414 verbunden. Der Signalverstärker 1405 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu dem Zeitpunkt t kleiner als der Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1405 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1405 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1405 ist mit dem ersten Eingang eines Latches 1411 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1411 ist mit dem fünften Eingang der Logikschaltung 1414 verbunden. Der Signalverstärker 1406 bestimmt ein Zeitintegral des physikalischen Werts
Ist das Zeitintegral zu dem Zeitpunkt t kleiner als der Schwellwert Sw, dann liegt zu dem Zeitpunkt t am Ausgang des Signalverstärkers 1406 der digitale Wert 1 an. Ist das Zeitintegral zu dem Zeitpunkt t größer als der Schwellwert Sw, dann liegt am Ausgang des Signalverstärkers 1406 der digitale Wert 0 an. Der Ausgang des Signalverstärkers 1406 ist mit dem ersten Eingang eines Latches 1412 verbunden, an dessen zweitem Eingang das Hold-Signal 1413 anliegt. Der Ausgang des Latches 1412 ist mit dem sechsten Eingang der Logikschaltung 1414 verbunden.
-
Beispielhaft zeigt ein Diagramm 1415 einen Lesestrom über der Zeit für Signalverstärker 1401. Hiernach erreicht der Lesestrom an dem Signalverstärker 1401 zu einem Zeitpunkt t1 den Schwellwert Sw. Entsprechend sind in 14 auch Diagramme 1416 bis 1420 für die Signalverstärker 1402 bis 1406 gezeigt, wonach ein Zeitpunkt ti angibt, wann der i-te Signalverstärker 1401 bis 1406 den Schwellwert Sw erreicht.
-
Solange das Integral des Lesestroms bis zu dem Zeitpunkt ti kleiner als der Schwellwert Sw ist, gibt der jeweilige Signalverstärker den Wert 1 aus; ist das Integral des Lesestroms ab dem Zeitpunkt ti größer als der Schwellwert Sw, gibt der jeweilige Signalverstärker den Wert 0 aus.
-
In dem in
14 gezeigten Beispiel wird zu einem Zeitpunkt t die physikalischen Werte
bestimmt, wobei t größer ist als t
1, t
3 und t
5 und wobei t kleiner ist als t
2, t
4 und t
6. Damit liegt zum Zeitpunkt t an den Ausgängen der Signalverstärker 1401, 1403 und 1405 jeweils der Wert 0 an, während an den Ausgängen der Signalverstärker 1402, 1404 und 1406 noch der Wert 1 anliegt. Die Logikschaltung 1414 erkennt diese ersten drei Nullen und setzt das Hold-Signal 1413 von 0 auf 1, daraufhin werden die Latches 1407 bis 1412 „eingefroren“.
-
Die Logikschaltung 1414 kann beispielsweise durch die in 13 dargestellte Schaltungsanordnung realisiert sein.