DE102017103347B4 - Verarbeitung von daten in speicherzellen eines speichers - Google Patents

Verarbeitung von daten in speicherzellen eines speichers Download PDF

Info

Publication number
DE102017103347B4
DE102017103347B4 DE102017103347.5A DE102017103347A DE102017103347B4 DE 102017103347 B4 DE102017103347 B4 DE 102017103347B4 DE 102017103347 A DE102017103347 A DE 102017103347A DE 102017103347 B4 DE102017103347 B4 DE 102017103347B4
Authority
DE
Germany
Prior art keywords
values
value
memory cells
memory cell
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102017103347.5A
Other languages
English (en)
Other versions
DE102017103347A1 (de
Inventor
Thomas Kern
Michael Gössel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102017103347.5A priority Critical patent/DE102017103347B4/de
Priority to TW107100236A priority patent/TWI664639B/zh
Priority to KR1020180018601A priority patent/KR102079196B1/ko
Priority to JP2018024702A priority patent/JP6602904B2/ja
Publication of DE102017103347A1 publication Critical patent/DE102017103347A1/de
Application granted granted Critical
Publication of DE102017103347B4 publication Critical patent/DE102017103347B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1673Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/22Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using ferroelectric elements
    • G11C11/225Auxiliary circuits
    • G11C11/2273Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5657Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using ferroelectric storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/06Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5685Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0011RRAM elements whose operation depends upon chemical change comprising conductive bridging RAM [CBRAM] or programming metallization cells [PMCs]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • G11C2013/0054Read is performed on a reference element, e.g. cell, and the reference sensed value is used to compare the sensed value of the selected cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Verfahren 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.

Description

  • 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.
  • DE 10 2014 112 947 A1 betrifft das Schätzen von Schwellwerten für Zustandsebenen bei Speicherzellen.
  • 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 WD durch einen Vergleich des ausgelesenen Werts WA mit einem einzigen entsprechenden Referenzwert R bestimmt, kann für den digitalen Wert WD gelten: W D = { 0 für W A < R 1 für W A > R
    Figure DE102017103347B4_0001
  • 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 S1 der physikalische Wert W A 1
    Figure DE102017103347B4_0002
    und aus der Speicherzelle S2 der physikalische Wert W A 2
    Figure DE102017103347B4_0003
    gelesen. Gilt W A 1 < W A 2 ,
    Figure DE102017103347B4_0004
    kann das bedeuten, dass der binäre Wert x = 0 in den beiden Speicherzellen S1 und S2 gespeichert wurde. Gilt W A 1 > W A 2 ,
    Figure DE102017103347B4_0005
    kann das bedeuten, dass der binäre Wert x = 1 in den beiden Speicherzellen S1 und S2 gespeichert wurde.
  • In diesem Beispiel werden die in den Speicherzellen S1 und S2 gespeicherten ausgelesenen Werte W A 1  und  W A 2
    Figure DE102017103347B4_0006
    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 W A 1
    Figure DE102017103347B4_0007
    der Zelle S1 als auch der ausgelesene Wert W A 2
    Figure DE102017103347B4_0008
    der Zelle S2 in dem Überlappungsbereich der Verteilungen WA(0) und WA(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: n 1 < n
    Figure DE102017103347B4_0009
    n 2 = n n 1 < n
    Figure DE102017103347B4_0010
    n 1 + n 2 = n
    Figure DE102017103347B4_0011
    n 1 1
    Figure DE102017103347B4_0012
    n 2 1.
    Figure DE102017103347B4_0013
  • 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, 2k verschiedene Belegungen der k Datenbits. Außerdem gibt es ( n n 1 )
    Figure DE102017103347B4_0014
    verschiedene Codewörter eines n1-aus-n-Codes.
  • Die Transformation der 2k Belegungen der k Datenbits in die ( n n 1 )
    Figure DE102017103347B4_0015
    Codewörter des n1-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 2 k ( n n 1 )
    Figure DE102017103347B4_0016
    erfüllt, dann ist eine umkehrbar eindeutige Transformation aller Belegungen der k Datenbits in Codewörter des n1-aus-n-Codes möglich.
  • Es ist auch möglich, dass je nach Anwendungsfall nicht alle der 2k möglichen Belegungen der k Datenbits auftreten. Ist dies der Fall und gibt ein Wert Anz < 2k die Anzahl der tatsächlich auftretenden Belegungen an, ist nur erforderlich, dass die Bedingung A n z ( n n 1 )
    Figure DE102017103347B4_0017
    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 2k = 24 = 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 n1 = 3, dann gibt es ( n n 1 ) = ( 6 3 ) = 6 5 4 3 2 1 = 20
    Figure DE102017103347B4_0018
    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 n1 = 2 ergäben sich nur ( n n 1 ) = ( 6 2 ) = 6 5 4 2 1 = 15
    Figure DE102017103347B4_0019
    verschiedene Codewörter eines 2-aus-6-Codes, bei dem jedes Codewort genau zwei Einsen und vier Nullen aufweist. Eine umkehrbar eindeutige Transformation der 24 = 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 2k Belegungen jeder Gruppe von k Datenbits in 2k Codewörter eines ( n n 1 )
    Figure DE102017103347B4_0020
    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 k1 Datenbits aufweist, eine zweite Gruppe von Datenbits k2 Datenbits aufweist, usw. bis eine M-te Gruppe km Datenbits aufweist. Die Anzahl der Datenbits pro Gruppe k1, k2, ... , km kann untereinander zumindest teilweise unterschiedlich sein. Somit gilt N = k 1 + k 2 + + k M ,
    Figure DE102017103347B4_0021
    wobei
    • - die ersten k1 Datenbits in Codewörter eines ersten n 1 1 aus n 1 Codes ,
      Figure DE102017103347B4_0022
    • - die zweiten k2 Datenbits in Codewörter eines zweiten n 1 2 aus n 2 Codes ,
      Figure DE102017103347B4_0023
      ...
    • - die M-ten kM Datenbits in Codewörter eines M-ten n 1 M aus n M Codes
      Figure DE102017103347B4_0024
    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 n1 erste Werte, n2 zweite Werte, ....,nK K-te Werte aufweisen, kann als ein Codewort eines n 1 , n 2 , , n K aus n Codes
    Figure DE102017103347B4_0025
    bezeichnet werden.
  • Der n1 -, n2-, ... , nx - aus - n - Code weist die folgende Zahl an Codewörtern auf: ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n 2 n K 1 n K ) .
    Figure DE102017103347B4_0026
  • Die 2k Belegungen der k Datenbits sollen nun umkehrbar eindeutig in 2k dieser Codewörter des n1 -, n2-, ... , nK-aus-n-Codes transformiert werden. Dies ist möglich, wenn die Bedingung 2 k ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n 2 n K 1 n K ) .
    Figure DE102017103347B4_0027
    beziehungsweise wenn die Bedingung A n z ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n 2 n K 1 n K ) ,
    Figure DE102017103347B4_0028
    erfüllt ist, sofern der Wert Anz (mit Anz < 2k) 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 n1 = n2 = n3 = 2 angenommen. Es gibt somit ( 6 2 ) ( 4 2 ) ( 2 2 ) = 90
    Figure DE102017103347B4_0029
    verschiedene Codewörter des hier beispielhaft verwendeten 2-,2-,2-aus-6-Codes. Diese 90 Codewörter reichen aus, um die 26 = 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 ( 3 1 ) ( 2 1 ) ( 1 1 ) = 6
    Figure DE102017103347B4_0030
    Codewörter 012, 021, 102, 120, 201 und 210 auf. Sollen k = 2 Datenbits gespeichert werden, dann können 22 = 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 n1 = n2 = 2 und n3 = n4 = 1 angenommen. Somit gibt es ( 6 2 ) ( 4 2 ) ( 2 1 ) ( 1 1 ) = 15 6 2 1 = 180
    Figure DE102017103347B4_0031
    verschiedene Codewörter eines 2-,2-,1-,1-aus-6-Codes. Mit diesen 180 Codewörtern können 7 Datenbits mit 27 = 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 n1 ist k so bestimmt, dass 2 k ( n n 1 )
    Figure DE102017103347B4_0032
    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 1 n 1 ,1 n 2 , ,1 n K
    Figure DE102017103347B4_0033
    und n 1 + n 2 + + n K = n .
    Figure DE102017103347B4_0034
  • Ferner ist k so bestimmt, dass 2 k ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n K 1 n K )
    Figure DE102017103347B4_0035
    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 nK der untereinander gleichen K-ten Speicherzellenwerte ist zu n K = n n 1 n 2 n K 1
    Figure DE102017103347B4_0036
    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 Si ausgelesener Wert einen analogen Wert W A i ( τ )
    Figure DE102017103347B4_0037
    an. Beispielsweise ist der in der Speicherzelle Si gespeicherte Wert W G i
    Figure DE102017103347B4_0038
    ein elektrischer Widerstandswert und der aus der Speicherzelle Si zum Zeitpunkt τ erhaltene physikalische Wert W A i ( τ )
    Figure DE102017103347B4_0039
    ist ein Lesestrom (eine Stromstärke).
  • Ist der Widerstand W G i
    Figure DE102017103347B4_0040
    der Speicherzelle Si kleiner als ein Widerstandswert W G j
    Figure DE102017103347B4_0041
    einer anderen Speicherzelle Sj, ist der Lesestrom W A i ( τ )
    Figure DE102017103347B4_0042
    größer als ein Lesestrom W A j ( τ )
    Figure DE102017103347B4_0043
    der anderen Speicherzelle Sj, sofern eine vorgegebene (gleiche) Lesespannung zum Auslesen beider Speicherzellen verwendet wird.
  • Wird der Lesestrom W A i ( τ )
    Figure DE102017103347B4_0044
    der Speicherzelle Si unter Verwendung einer Kapazität C über die Zeit integriert, so ist zu einem Zeitpunkt ti ein vorgegebener Schwellwert Sw erreicht. Der aus der Speicherzelle Si erhaltene physikalische Wert ist hier beispielhaft der Lesestrom W A i .
    Figure DE102017103347B4_0045
    Der aus dem ausgelesenen physikalischen Wert bestimmte abgeleitete Wert ist beispielhaft der Zeitpunkt ti, zu dem das Zeitintegral über den Lesestrom den vorgegebenen Schwellwert Sw erreicht.
  • Wird der Lesestrom W A j ( τ )
    Figure DE102017103347B4_0046
    der Speicherzelle Sj unter Verwendung der Kapazität C über die Zeit integriert, so ist zu einem Zeitpunkt tj der vorgegebene Schwellwert Sw erreicht.
  • Da für die Leseströme der Speicherzellen Si und Sj W A i ( τ ) > W A j ( τ )
    Figure DE102017103347B4_0047
    gilt, gilt auch ti < tj und der Schwellwert Sw wird für die Speicherzelle Si früher erreicht als für die Speicherzelle Sj.
  • Somit kann für die Speicherzellen Si und Sj verglichen werden, ob das Integral des Lesestromes der Speicherzelle Si den Schwellwert Sw früher erreicht als das Integral des Lesestromes der Speicherzelle Sj. Dies ist dann der Fall, wenn (bei gleicher Spannung) der Widerstandswert W G i
    Figure DE102017103347B4_0048
    kleiner ist als der Widerstandswert W G j .
    Figure DE102017103347B4_0049
  • Somit ist es eine Option, eine Ordnung (oder „Reihenfolge“) der Speicherzellen Si und Sj auf Grund der in ihnen gespeicherten physikalischen Werte W G i
    Figure DE102017103347B4_0050
    und W G j
    Figure DE102017103347B4_0051
    oder ihrer Zustände zu bestimmen. Durch die Zeitpunkte ti und tj, zu denen der Schwellwert Sw erreicht wird, können die Speicherzellen entsprechend ihrer Widerstände W G i  und  W G j
    Figure DE102017103347B4_0052
    sortiert werden, d.h. zuerst die Speicherzelle Si, dann die Speicherzelle Sj (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 t 1 1 , t 2 1 , , t n 1 1 ,
    Figure DE102017103347B4_0053
    zu denen für die ersten n1 Speicherzellen der Schwellwert Sw erreicht wird vor den Zeitpunkten t 1 2 , t 2 2 , , t n 2 2 ,
    Figure DE102017103347B4_0054
    zu denen für die zweiten n2 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 v i ( t ) = 1 C 0 t W A i d τ = t C W A i
    Figure DE102017103347B4_0055
    eine Spannung vi(t) zu einem Zeitpunkt t an in Abhängigkeit der jeweiligen Leseströme W A i
    Figure DE102017103347B4_0056
    (mit i = 1,... ,n) für die n Speicherzellen S1 bis Sn.
  • 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 ti kann dadurch bestimmt sein, dass v i ( t ) < S w  für  t < t i
    Figure DE102017103347B4_0057
    und v i ( t ) > S w  für  t > t i
    Figure DE102017103347B4_0058
    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 n1 und n2 der Teilgruppen gilt: n 1 + n 2 = n .
    Figure DE102017103347B4_0059
    In die n1 Speicherzellen der ersten Teilgruppe wird jeweils ein erster digitaler Wert geschrieben und in die n2 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 W A 1 ,   W A 2 ,   W A 3 ,   W A 4 ,   W A 5  und  W A 6 ,
    Figure DE102017103347B4_0060
     
    Figure DE102017103347B4_0061
    die aus den Speicherzellen S1 bis S6 ausgelesen wurden. Bei dem physikalischen Wert WA handelt es sich beispielsweise um einen Lesestrom.
  • 2b zeigt ein Schaubild mit mehreren Zeitpunkten t1 bis t6, wobei je ein Zeitpunkt tm einem der physikalischen Werte W A m
    Figure DE102017103347B4_0062
    entspricht mit m = 1,... , 6.
  • Somit können durch eine zeitliche Integration der entsprechenden Leseströme Zeitpunkte t1, t2, t3, t4, t5 und t6 bestimmt werden, zu denen das Zeitintegral des jeweiligen Lesestroms einen vorgegebenen Schwellwert erreicht. Beispielsweise gilt gemäß 2b: t 5 > t 4 > t 6 > t 2 > t 3 > t 1 .
    Figure DE102017103347B4_0063
  • Die Zuordnung der in den Speicherzellen S1 bis S6 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 t i > t j .
    Figure DE102017103347B4_0064
    gilt. Insbesondere ist es ein Vorteil, dass kein Unterschied zwischen den Zeitpunkten t4, t5, t6 und den Zeitpunkten t1, t2, t3 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 n1 erste Speicherzellen ergeben sich ( n n 1 )
    Figure DE102017103347B4_0065
    unterschiedliche Möglichkeiten die n Speicherzellen mit n1 Nullen und n2 = n - n1 Einsen zu beschreiben. Somit sind in den n Speicherzellen ( n n 1 )
    Figure DE102017103347B4_0066
    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 2 k ( n n 1 )
    Figure DE102017103347B4_0067
    gilt. Ist n eine gerade Zahl, so ergibt sich für n1 = 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 t1 bis t6 verglichen, zu denen der Wert des Integrals über die Leseströme W A 1 ( τ )  bis  W A 6 ( τ )
    Figure DE102017103347B4_0068
    den Schwellwert Sw erreicht.
  • Gilt beispielsweise t 1 < t 3 < t 4 < t 2 < t 5 < t 6 ,
    Figure DE102017103347B4_0069
    ergibt sich die Reihenfolge der Speicherzellen zu S 1 ,   S 3 ,   S 4 ,   S 2 ,   S 5 ,   S 6 .
    Figure DE102017103347B4_0070
  • 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 t 3 ' < t 4 ' < t 1 ' < t 2 ' < t 6 ' < t 5 ' ,
    Figure DE102017103347B4_0071
    so folgt hieraus die Reihenfolge der Speicherzellen zu S 3 ,   S 4 ,   S 1 ,   S 2 ,   S 6 ,   S 5 .
    Figure DE102017103347B4_0072
  • 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 S1, S3 und S4 zur Speicherung des Wertes 1 vorgesehen. In diese Speicherzellen wurden die Werte W G 1 ,   W G 3 ,   W G 4
    Figure DE102017103347B4_0073
    geschrieben, die jeweils den binären Wert 1 repräsentieren sollen. Untereinander unterscheiden sich diese Werte W G 1 ,   W G 3 ,   W G 4
    Figure DE102017103347B4_0074
    wenig, sie können aber insbesondere durch zufällige Einflüsse leicht variieren.
  • Entsprechend sind die Speicherzellen S2, S5 und S6 zur Speicherung des Wertes 0 vorgesehen. In diese Speicherzellen wurden die Werte W G 2 ,   W G 5  und  W G 6
    Figure DE102017103347B4_0075
    geschrieben, die jeweils den binären Wert 0 repräsentieren. Untereinander unterscheiden sich diese Werte W G 2 ,   W G 5  und  W G 6
    Figure DE102017103347B4_0076
    wenig, sie können aber ebenfalls aufgrund von zufälligen Einflüssen leicht variieren.
  • Ist beispielsweise anstelle von t 1 < t 3 < t 4 < t 2 < t 5 < t 6
    Figure DE102017103347B4_0077
    eine zeitliche Ordnung t 1 ' < t 3 ' < t 2 ' < t 4 ' < t 5 ' < t 6 '
    Figure DE102017103347B4_0078
    bestimmt worden, sind die Speicherzellen wie folgt geordnet S 1 ,   S 3 ,   S 2 ,   S 4 ,   S 5 ,   S 6
    Figure DE102017103347B4_0079
    und es wird aus den Speicherzellen S1 bis S6 das Codewort 111000 des 3-aus-6 Codes ausgelesen, das sich von dem fehlerfreien Codewort 101100 dadurch unterscheidet, dass die zeitlich erste Speicherzelle S2, der in der Reihenfolge der Speicherzellen im fehlerfreien Fall der Wert 0 zugeordnet und die zeitlich letzte Speicherzelle S4, 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 W A i ( τ )
    Figure DE102017103347B4_0080
    des Lesestroms der Speicherzelle Si über die Zeit t integriert, dann wird ein vorgegebener Schwellwert Sw zu einem Zeitpunkt ti erreicht.
  • Wird eine Stromstärke W A j ( τ )
    Figure DE102017103347B4_0081
    des Lesestromes der Speicherzelle Sj über die Zeit t integriert, dann wird der vorgegebene Schwellwert Sw zu einem Zeitpunkt tj erreicht.
  • Wird in die Speicherzelle Si der digitale Wert 2 geschrieben, so weist die Speicherzelle Si einen relativ großen Widerstandswert ( W G i )
    Figure DE102017103347B4_0082
    auf und beim Auslesen dieser Speicherzelle Si ist der Lesestrom W A i
    Figure DE102017103347B4_0083
    relativ gering. Dementsprechend ist der Zeitpunkt ti zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, groß.
  • Wird in die Speicherzelle Sj der digitale Wert 1 geschrieben, so weist die Speicherzelle Sj einen Widerstandswert W G j
    Figure DE102017103347B4_0084
    auf, der geringer ist als der Widerstandswert W G i
    Figure DE102017103347B4_0085
    der Speicherzelle Si. Entsprechend ist der Lesestrom W A j
    Figure DE102017103347B4_0086
    beim Auslesen der Speicherzelle Sj größer als der Lesestrom W A i
    Figure DE102017103347B4_0087
    beim Auslesen der Speicherzelle Si. Somit liegt der Zeitpunkt tj, zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, vor dem Zeitpunkt ti, d.h. es gilt tj < ti.
  • Wird in die Speicherzelle Sk der digitale Wert 0 geschrieben, dann weist die Speicherzelle Sk einen Widerstandswert W G k
    Figure DE102017103347B4_0088
    WG auf, der sowohl geringer als der Widerstandswert WG der Speicherzelle Si als auch geringer als der Widerstandswert W G j
    Figure DE102017103347B4_0089
    der Speicherzelle Sj ist. Entsprechend ist der Lesestrom W A k
    Figure DE102017103347B4_0090
    der Speicherzelle Sk größer als der Lesestrom W A j
    Figure DE102017103347B4_0091
    oder der Lesestrom W A i
    Figure DE102017103347B4_0092
    der Speicherzellen Sj, Si. Somit liegt der Zeitpunkt tk, zu dem das Zeitintegral des Lesestroms den vorgegebenen Schwellwert Sw erreicht, vor den Zeitpunkten ti und tj, d.h. es gilt tk < tj < ti.
  • Ist in eine Speicherzelle Si der gleiche digitale Wert geschrieben worden wie in eine Speicherzelle Si, kann der Widerstandswert W G i
    Figure DE102017103347B4_0093
    der Speicherzelle Si größer oder kleiner sein als der Widerstandswert W G j
    Figure DE102017103347B4_0094
    der Speicherzelle Sj.
  • Ebenso ist es möglich, dass der Lesestrom W A i
    Figure DE102017103347B4_0095
    der Speicherzelle Si größer oder kleiner ist als der Lesestrom W A j
    Figure DE102017103347B4_0096
    der Speicherzelle Sj.
  • 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 ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n 2 n 3 ) = ( 6 2 ) ( 4 2 ) ( 2 2 ) = 15 6 1 = 90
    Figure DE102017103347B4_0097
  • 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 n1 = n2 = 3 nur ( n n 1 ) ( n n 1 n 1 ) = ( 6 3 ) ( 3 3 ) = 20
    Figure DE102017103347B4_0098
  • 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 2 ,2 ,2 aus 6 Codes ,
    Figure DE102017103347B4_0099
    bei dem jedes Codewort zwei erste digitale Werte, zwei zweite digitale Werte und zwei dritte digitale Werte aufweist.
  • Der Code hat ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n 2 n 3 ) = 15 6 1 = 90
    Figure DE102017103347B4_0100
    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 n 1 , n 2 , , n K aus n Codes .
    Figure DE102017103347B4_0101
  • 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 S1 bis S6 werden beim Auslesen wie beschrieben die Zeitpunkte t1 bis t6 bestimmt, wann das Zeitintegral des Lesestromes den vorgegebenen Schwellwert Sw erreicht (oder überschreitet). Gilt beispielsweise t i 1 < t i 2 < t i 3 < t i 4 < t i 5 < t i 6 ,
    Figure DE102017103347B4_0102
    dann können die Speicherzellen S1 bis S6 in der Reihenfolge S i 1 , S i 2 , S i 3 , S i 4 , S i 5 , S i 6
    Figure DE102017103347B4_0103
    geordnet werden. Dabei ist die Menge der Werte i1, ... , i6 gleich der Menge der Werte 1,...,6. Gilt beispielsweise z1 = 5, i2 = 4, i3 = 2, i4 = 1, i5 = 6 und i6 = 3, so ergibt sich t 5 < t 4 < t 2 < t 1 < t 6 < t 3
    Figure DE102017103347B4_0104
    und damit die Reihenfolge der Speicherzellen zu S 5 , S 4 , S 2 , S 1 , S 6 , S 3 .
    Figure DE102017103347B4_0105
  • 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 W A i 2
      Figure DE102017103347B4_0106
      der Speicherzelle Si2 als auch der Lesestrom W A i 3
      Figure DE102017103347B4_0107
      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 W A i 4
      Figure DE102017103347B4_0108
      der Speicherzelle Si4 als auch der Lesestrom W A i 5
      Figure DE102017103347B4_0109
      der Speicherzelle S i 5
      Figure DE102017103347B4_0110
      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 Si der Wert 3 gespeichert und ist in der Speicherzelle Sj einer der digitalen Werte 0, 1 oder 2 gespeichert, dann gilt tj < ti da der Lesestrom W A i
    Figure DE102017103347B4_0111
    der Speicherzelle Si kleiner ist als der Lesestrom W A j
    Figure DE102017103347B4_0112
    der Speicherzelle Sj.
  • Ist beispielsweise in der Speicherzelle Si der Wert 1 gespeichert und ist in der Speicherzelle Sj einer der Werte 3 oder 2 gespeichert, dann gilt tj > ti da der Lesestrom W A i
    Figure DE102017103347B4_0113
    der Speicherzelle Si größer ist als der Lesestrom W A j
    Figure DE102017103347B4_0114
    der Speicherzelle Sj.
  • 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 x1, x2, x3, x4 an, und am Ausgang der Transformationsschaltung 1701 werden die Speicherzellenwerte z1, z2, z3, z4 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 211 = 2048 verschiedene Werte dargestellt werden. Der 2-,2-,2-,2-aus-8-Code umfasst ( 8 2 ) ( 6 2 ) ( 4 2 ) ( 2 2 ) = 28 15 6 1 = 2520
    Figure DE102017103347B4_0115
  • 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 29 = 512 unterschiedliche Werte dargestellt werden. Der 2-,2-,2-,1-aus-7-Code umfasst ( 7 2 ) ( 5 2 ) ( 3 2 ) ( 1 1 ) = 21 10 3 1 = 630
    Figure DE102017103347B4_0116
  • 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 n 1 , , n K aus n Codes
    Figure DE102017103347B4_0117
    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 S1, S2, S3 und S4. An den Ausgängen der Speicherzellen werden die Werte W A 1 ,   W A 2 ,   W A 3  und W A 4
    Figure DE102017103347B4_0118
    ausgelesen und unter Verwendung von ( 4 2 ) = 6
    Figure DE102017103347B4_0119
    Vergleichern 602 bis 607 paarweise verglichen. Ein Vergleicher kann z.B. als ein Komparator ausgeführt sein.
  • Der Vergleicher 602 vergleicht die ausgelesenen Werte W A 1  und  W A 2
    Figure DE102017103347B4_0120
    der Speicherzellen S1 und S2. Der Vergleicher 602 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y12 = 1 ausgibt, falls für die ausgelesenen Werte W A 1 > W A 2
    Figure DE102017103347B4_0121
    gilt, und den binären Wert y12 = 0 ausgibt, falls für die ausgelesenen Werte W A 1 < W A 2
    Figure DE102017103347B4_0122
    gilt.
  • Der Vergleicher 603 vergleicht die ausgelesenen Werte W A 1  und  W A 3
    Figure DE102017103347B4_0123
    der Speicherzellen S1 und S3. Der Vergleicher 603 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y13 = 1 ausgibt, falls für die ausgelesenen Werte W A 1 > W A 3
    Figure DE102017103347B4_0124
    gilt, und den binären Wert y13 = 0 ausgibt, falls für die ausgelesenen Werte W A 1 < W A 3
    Figure DE102017103347B4_0125
    gilt.
  • Der Vergleicher 604 vergleicht die ausgelesenen Werte W A 1  und  W A 4
    Figure DE102017103347B4_0126
    der Speicherzellen S1 und S4. Der Vergleicher 604 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y14 = 1 ausgibt, falls für die ausgelesenen Werte W A 1 > W A 4
    Figure DE102017103347B4_0127
    gilt, und den binären Wert y14 = 0 ausgibt, falls für die ausgelesenen Werte W A 1 < W A 4
    Figure DE102017103347B4_0128
    gilt.
  • Der Vergleicher 605 vergleicht die ausgelesenen Werte W A 2  und  W A 3
    Figure DE102017103347B4_0129
    der Speicherzellen S2 und S3. Der Vergleicher 605 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y23 = 1 ausgibt, falls für die ausgelesenen Werte W A 2 > W A 3
    Figure DE102017103347B4_0130
    gilt, und den binären Wert y23 = 0 ausgibt, falls für die ausgelesenen Werte W A 2 < W A 3
    Figure DE102017103347B4_0131
    gilt.
  • Der Vergleicher 606 vergleicht die ausgelesenen Werte W A 2  und  W A 4
    Figure DE102017103347B4_0132
    der Speicherzellen S2 und S4. Der Vergleicher 606 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y24 = 1 ausgibt, falls für die ausgelesenen Werte W A 2 > W A 4
    Figure DE102017103347B4_0133
    gilt, und den binären Wert y24 = 0 ausgibt, falls für die ausgelesenen Werte W A 2 < W A 4
    Figure DE102017103347B4_0134
    gilt.
  • Der Vergleicher 607 vergleicht die ausgelesenen Werte W A 3  und  W A 4
    Figure DE102017103347B4_0135
    der Speicherzellen S3 und S4. Der Vergleicher 607 ist so konfiguriert, dass er an seinem Ausgang einen binären Wert y34 = 1 ausgibt, falls für die ausgelesenen Werte W A 3 > W A 4
    Figure DE102017103347B4_0136
    gilt, und den binären Wert y34 = 0 ausgibt, falls für die ausgelesenen Werte W A 3 < W A 4
    Figure DE102017103347B4_0137
    gilt.
  • Haben zwei Teilgruppen eine Größe von n1 = n2 = 2, dann können in der Gruppe mit n = 4 Speicherzellen S1 bis S4 ( n n 1 ) ( n n 1 n 2 ) = ( 4 2 ) ( 4 2 2 ) = 6 1 = 6
    Figure DE102017103347B4_0138
  • Belegungen gespeichert werden.
  • Für diese 6 Belegungen zeigt Tabelle 3 die Ausgabewerte y12, y13, y14, y23, y24, y34 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 S1 bis S4 mit den binären Werten 1100 belegt sind. Die Vergleicher 602 bis 607 geben daraufhin die binären Werte y13 = y14 = y23 = y24 = 1 aus. Da die Speicherzellen S1 und S2 beide mit dem binären Wert 1 belegt sind, werden von dem Vergleicher 602 die Werte W A 1  und  W A 2
    Figure DE102017103347B4_0139
    miteinander verglichen, die beide einem gespeicherten binären Wert 1 zugeordnet sind. Es ist in diesem Fall nicht vorhersehbar, ob W A 1 < W A 2
    Figure DE102017103347B4_0140
    oder W A 1 > W A 2
    Figure DE102017103347B4_0141
    gilt, so dass der Ausgabewert y12 des Vergleichers 602 unbestimmt ist. Auch ist der Ausgang y34 des Vergleichers 607 unbestimmt, da die Werte W A 3
    Figure DE102017103347B4_0142
    und W A 4
    Figure DE102017103347B4_0143
    der Speicherzellen S3 und S4 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 S1 bis S4 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 y 12 y 13 y ¯ 24 y ¯ 34 = 1 1 1 1 = 1.
    Figure DE102017103347B4_0144
  • 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 n1 = n2 = n3 = 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 ( 6 2 ) ( 4 2 ) ( 2 2 ) = 15 6 1 = 90
    Figure DE102017103347B4_0145
  • 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 VGLij genutzt, um alle physikalischen Ausgabewerte der Speicherzellen S1 bis S6 zu vergleichen, wobei i, j = 1... 6 Indizes sind, die je eine der Speicherzellen bezeichnen. Somit vergleicht der Vergleicher VGLij die Speicherzelle Si mit der Speicherzelle Sj. Die 15 Vergleicher sind demnach: V G L 12 ,   V G L 13 ,   V G L 14 ,   V G L 15 ,   V G L 16 ,
    Figure DE102017103347B4_0146
    V G L 23 ,   V G L 24 ,   V G L 25 ,   V G L 26 ,
    Figure DE102017103347B4_0147
    V G L 34 ,   V G L 35 ,   V G L 36 ,
    Figure DE102017103347B4_0148
    V G L 45 ,   V G L 46 ,
    Figure DE102017103347B4_0149
    und V G L 56 .
    Figure DE102017103347B4_0150
  • Ein binärer Ausgabewert des Vergleichers VGLij wird mit yij bezeichnet, so dass es entsprechend die folgenden 15 binären Ausgabewerte gibt: y 12 ,   y 13 ,   y 14 ,   y 15 ,   y 16 ,
    Figure DE102017103347B4_0151
    y 23 ,   y 24 ,   y 25 ,   y 26 ,
    Figure DE102017103347B4_0152
    y 34 ,   y 35 ,   y 36 ,
    Figure DE102017103347B4_0153
    y 45 ,   y 46
    Figure DE102017103347B4_0154
    und y 56 .
    Figure DE102017103347B4_0155
  • Für die Belegung 221100 der Speicherzellen S1 bis S6 zeigt Tabelle 4 die Ausgabewerte dieser 15 Vergleicher.
    Figure DE102017103347B4_0156
  • Es ergibt sich folgende Konjunktion: y 13 y 14 y 15 y 16 y 23 y 24 y 25 y 26 y 35 y 36 y 45 y 46 .
    Figure DE102017103347B4_0157

    y13
  • 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 S1 bis S6 zeigt Tabelle 5 die Ausgabewerte der 15 Vergleicher.
    Figure DE102017103347B4_0158
  • Es ergibt sich folgende Konjunktion: y 12 y 14 y 15 y 16 y ¯ 23 y 25 y 26 y 35 y 36 y 45 y 46 .
    Figure DE102017103347B4_0159
  • Die Konjunktion weist 12 Ausgabewerte der 15 Vergleicher auf.
  • Für die Belegung 001122 der Speicherzellen S1 bis S6 zeigt Tabelle 6 die Ausgabewerte der 15 Vergleicher.
    Figure DE102017103347B4_0160
  • Es ergibt sich folgende Konjunktion: y ¯ 13 y ¯ 14 y ¯ 15 y ¯ 16 y ¯ 23 y ¯ 24 y ¯ 25 y ¯ 26 y ¯ 35 y ¯ 36 y ¯ 45 y ¯ 46 .
    Figure DE102017103347B4_0161
  • 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 S1 bis S6 die ihnen entsprechenden Belegungen gespeichert sind und die aus den Speicherzellen ausgelesenen Werte W A 1  bis  W A 6
    Figure DE102017103347B4_0162
    in den Vergleichern VGLij 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 2 m N
    Figure DE102017103347B4_0163
    mit ( n n 1 ) ( n n 1 n 2 ) ( n n 1 n K 1 n K ) = N .
    Figure DE102017103347B4_0164
    und m < n. Hierbei bezeichnet N die Anzahl der Möglichkeiten, die Gruppe von n Speicherzellen mit n1 ersten Werten, n2 zweiten Werten, usw. bis nK 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 S1 bis Sn werden ausgelesen und die ausgelesenen Werte z 1 '
    Figure DE102017103347B4_0165
    bis z n '
    Figure DE102017103347B4_0166
    werden mittels einer Transformationsschaltung 802, die eine Transformation T S 1 ( n , m )
    Figure DE102017103347B4_0167
    bereitstellt, in Datenbits x 1 '  bis  x m '
    Figure DE102017103347B4_0168
    tranformiert, wobei im fehlerfreien Fall gilt: x 1 ' , , x m ' = x 1 , , x m .
    Figure DE102017103347B4_0169
  • 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: T 1 ( n , m ) { T ( m , n ) [ x 1 , , x m ] } = x 1 , , x m .
    Figure DE102017103347B4_0170
  • 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 z 1 ' ,   z 2 ' ,   z 3 ' ,   z 4 ' ,   z 5 ' ,   z 6 '
    Figure DE102017103347B4_0171
    gelesen und durch die Transformationsschaltung 905 in 4-Bit Bytes x 1 ' ,   x 2 ' ,   x 3 ' ,   x 4 '
    Figure DE102017103347B4_0172
    x1, transformiert. Entsprechend werden Speicherbits z 7 ' ,   z 8 ' ,   z 9 ' ,   z 10 ' ,   z 11 ' ,   z 12 '
    Figure DE102017103347B4_0173
    z2, gelesen und durch die Transformationsschaltung 906 in 4-Bit Bytes x 5 ' ,   x 6 ' ,   x 7 ' ,   x 8 '
    Figure DE102017103347B4_0174
    x3, transformiert. Auch werden Speicherbits z 13 ' ,   z 14 ' ,   z 15 ' ,   z 16 ' ,   z 17 ' ,   z 18 '
    Figure DE102017103347B4_0175
    gelesen und durch die Transformationsschaltung 907 in 4-Bit Bytes x 9 ' ,   x 10 ' ,   x 11 ' ,   x 12 '
    Figure DE102017103347B4_0176
    transformiert.
  • Jede der Transformationsschaltungen 905, 906 und 907 realisiert eine Transformation T S 1 ( 6,4 ) ,
    Figure DE102017103347B4_0177
    die eine inverse Transformation der in Tabelle 7 gezeigten Transformation ist, wonach jeweils n = 6 Zustandsbits z ( i n ) '
    Figure DE102017103347B4_0178
    (i = 1...3 und n = 1...6) in jeweils m = 4 Datenbits x ( i m ) '
    Figure DE102017103347B4_0179
    (i = 1...3 und m = 1... 4) transformiert werden.
  • Aufgrund von Fehlern können sich die aus dem Speicher 901 ausgelesenen Speicherbits z ( i n ) '
    Figure DE102017103347B4_0180
    von den ursprünglich gespeicherten Bits z(i·n) unterscheiden. Somit können sich auch die gelesenen Datenbits x i m '
    Figure DE102017103347B4_0181
    von den geschriebenen Datenbits xi·m unterscheiden.
  • Ist kein Fehler aufgetreten, dann gilt für die ersten 4 Datenbits x1 bis x4, die ersten 6 transformierten Bits z1 bis z6, die ersten 6 rückzutransformierenden Bits z 1 '  bis  z 6 '
    Figure DE102017103347B4_0182
    und die ersten 4 sich hieraus ergebenden Datenbits x 1 '  bis  x 4 ' :
    Figure DE102017103347B4_0183
    z 1 ,   z 2 ,   z 3 ,   z 4 ,   z 5 ,   z 6 = z 1 ' ,   z 2 ' ,   z 3 ' ,   z 4 ' ,   z 5 ' ,   z 6 '
    Figure DE102017103347B4_0184
    x 1 ,   x 2 ,   x 3 ,   x 4 = x 1 ' ,   x 2 ' ,   x 3 ' ,   x 4 ' .
    Figure DE102017103347B4_0185
  • 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 T S 1 ( 6,4 )
    Figure DE102017103347B4_0186
    veranschaulicht. Hierbei handelt es sich um die inverse Abbildung der in der Tabelle 7 gezeigten Zuordnungen. Tabelle 8
    z 1 '
    Figure DE102017103347B4_0187
    z 2 '
    Figure DE102017103347B4_0188
    z 3 '
    Figure DE102017103347B4_0189
    z 4 '
    Figure DE102017103347B4_0190
    z 5 '
    Figure DE102017103347B4_0191
    z 6 '
    Figure DE102017103347B4_0192
    x 1 '
    Figure DE102017103347B4_0193
    x 2 '
    Figure DE102017103347B4_0194
    x 3 '
    Figure DE102017103347B4_0195
    x 4 '
    Figure DE102017103347B4_0196
    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 z 1 '  bis  z 6 '
    Figure DE102017103347B4_0197
    können zugehörige beliebige Werte der Datenbits x 1 '  bis  x 4 '
    Figure DE102017103347B4_0198
    x1 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 T S 1
    Figure DE102017103347B4_0199
    bereitstellt, in binäre Werte y' transformiert.
  • Ist kein Fehler aufgetreten, gilt y ' = y = C o d ( x ) .
    Figure DE102017103347B4_0200
    Ist ein Fehler aufgetreten, gilt y ' y = C o d ( x ) .
    Figure DE102017103347B4_0201
  • 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 ycor bereitgestellt. Ist ein durch den Code C1 mittels des Korrekturwertbildners 1005 korrigierbarer Fehler aufgetreten, sind die korrigierten Bits gleich den codierten Bits, d.h. y c o r = y = C o d ( x ) .
    Figure DE102017103347B4_0202
  • 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 [ 3 a u s 6 ] 1 ' ,
    Figure DE102017103347B4_0203
    die den Datenbits zugeordnet sind und Bits [ 3 a u s 6 ] 2 ' ,
    Figure DE102017103347B4_0204
    die den Prüfbits der transformierten Datenbits zugeordnet sind, aus dem Speicher 1204 ausgegeben. Die Bits [ 3 a u s 6 ] 1 '
    Figure DE102017103347B4_0205
    als auch die Bits [ 3 a u s 6 ] 2 '
    Figure DE102017103347B4_0206
    können Bitfehler enthalten. Im fehlerfreien Fall gilt: [ 3 a u s 6 ] 1 ' = [ 3 a u s 6 ] 1
    Figure DE102017103347B4_0207
    [ 3 a u s 6 ] 2 ' = [ 3 a u s 6 ] 2 .
    Figure DE102017103347B4_0208
  • Der Ausgang des Speichers 1204, an dem die Bits [ 3 a u s 6 ] 2 '
    Figure DE102017103347B4_0209
    ausgegeben werden, ist mit dem Eingang eines inversen Prüfbittransformierers 1205 verbunden, der basierend auf den Bits [ 3 a u s 6 ] 2 '
    Figure DE102017103347B4_0210
    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 [ 3 a u s 6 ] 1 ' ,
    Figure DE102017103347B4_0211
    die den Datenbits entsprechen. Somit können diese eventuell fehlerhaften Prüfbits Pr' zur Fehlerkorrektur der eventueller Bitfehler der Bits [ 3 a u s 6 ] 1 '
    Figure DE102017103347B4_0212
    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 [ 3 a u s 6 ] 1 '
    Figure DE102017103347B4_0213
    in korrigierte Bits [ 3 a u s 6 ] 1 c o r
    Figure DE102017103347B4_0214
    entsprechend dem verwendeten Fehlercode.
  • Sind eventuell aufgetretene Fehler durch den verwendeten Fehlercode korrigierbar, gilt: [ 3 a u s 6 ] 1 c o r = [ 3 a u s 6 ] 1 .
    Figure DE102017103347B4_0215
  • An dem Ausgang des Korrektors 1206 werden diese Bits [ 3 a u s 6 ] 1 c o r
    Figure DE102017103347B4_0216
    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 xcor 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 x c o r = x .
    Figure DE102017103347B4_0217
  • 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 ( 6 3 ) = 20
    Figure DE102017103347B4_0218
    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 24 = 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 ( 6 3 ) = 20
    Figure DE102017103347B4_0219
    verschiedene Möglichkeiten, drei der 6 Speicherzellen S1 bis S6 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 W A i
    Figure DE102017103347B4_0220
    (hier mit i = 1...6) aus (hier beispielhaft 6) Speicherzellen des Speichers ausgelesen. Je einer der ausgelesenen physikalischen Werte W A i
    Figure DE102017103347B4_0221
    wird einem der Signalverstärker 1401 bis 1406 zugeführt. Bei dem physikalischen Wert W A i
    Figure DE102017103347B4_0222
    kann es sich um einen Lesestrom handeln.
  • Der Signalverstärker 1401 bestimmt ein Zeitintegral des physikalischen Werts W A 1 .
    Figure DE102017103347B4_0223
    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 W A 2 .
    Figure DE102017103347B4_0224
    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 W A 3 .
    Figure DE102017103347B4_0225
    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 W A 4 .
    Figure DE102017103347B4_0226
    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 W A 5 .
    Figure DE102017103347B4_0227
    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 W A 6 .
    Figure DE102017103347B4_0228
    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 W A 1  bis  W A 6
    Figure DE102017103347B4_0229
    bestimmt, wobei t größer ist als t1, t3 und t5 und wobei t kleiner ist als t2, t4 und t6. 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.

Claims (21)

  1. Verfahren 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.
  2. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die physikalischen Werte bestimmt werden, indem die n Speicherzellen ausgelesen werden.
  3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem alle physikalischen Werte untereinander verglichen werden.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem 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.
  5. Verfahren nach einem der Ansprüche 1 bis 3, bei dem 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.
  6. Verfahren nach einem der Ansprüche 1 bis 3, bei dem K > 3 gilt.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die aus den Speicherzellen bestimmten Speicherzellenwerte durch eine eindeutig umkehrbare Transformation bestimmt werden.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem jeweils ein Zeitpunkt mittels einer zeitlichen Integration des physikalischen Wertes der Speicherzelle bestimmt wird.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der physikalische Wert ein Lesestrom einer Speicherzelle ist.
  10. Verfahren nach einem der vorhergehenden Ansprüche, bei dem falls die erhaltenen digitalen Speicherzellenwerte ein Codewort eines n1-, ..., nKaus-n-Codes darstellen, mittels einer Rücktransformation aus dem Codewort eine Anzahl von m Bits bestimmt werden.
  11. Verfahren nach Anspruch 10, bei dem eine Fehlererkennung und/oder Fehlerkorrektur der m Bits mittels eines Fehlercodes durchgeführt wird.
  12. Verfahren nach Anspruch 10, bei dem die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Datenbits bestimmt werden.
  13. Verfahren nach Anspruch 10, bei dem die Fehlererkennung und/oder Fehlerkorrektur basierend auf Prüfbits durchgeführt wird, wobei die Prüfbits entsprechend dem Fehlercode aus den Speicherzellenwerten bestimmt werden.
  14. Verfahren nach einem der Ansprüche 11 bis 13, bei dem der Fehlercode ein Bytefehler-korrigierender und/oder ein Bytefehler-erkennender Code ist.
  15. Verfahren nach Anspruch 14, bei dem 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.
  16. Verfahren nach einem der Ansprüche 11 bis 15, bei dem der Fehlercode ein Bitfehler-korrigierender und/oder ein Bitfehler-erkennender Code ist.
  17. Verfahren nach einem der vorhergehenden Ansprüche, bei dem zur Bestimmung der digitalen Speicherzellenwerte mindestens ein Referenzwert verwendet wird.
  18. Verfahren nach einem der vorhergehenden Ansprüche, bei dem bei dem 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.
  19. Vorrichtung 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.
  20. Computerprogrammprodukt, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, die Schritte des Verfahrens nach einem der Ansprüche 1 bis 18 durchzuführen.
  21. Computerlesbares Speichermedium umfassend von einem Computer ausführbare Anweisungen, die dazu geeignet sind, dass der Computer die Schritte des Verfahrens nach einem der Ansprüche 1 bis 18 durchführt.
DE102017103347.5A 2017-02-17 2017-02-17 Verarbeitung von daten in speicherzellen eines speichers Active DE102017103347B4 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102017103347.5A DE102017103347B4 (de) 2017-02-17 2017-02-17 Verarbeitung von daten in speicherzellen eines speichers
TW107100236A TWI664639B (zh) 2017-02-17 2018-01-03 記憶體之記憶胞元資料處理
KR1020180018601A KR102079196B1 (ko) 2017-02-17 2018-02-14 메모리의 메모리 셀들 내의 데이터의 처리
JP2018024702A JP6602904B2 (ja) 2017-02-17 2018-02-15 メモリのメモリセル内のデータの処理

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102017103347.5A DE102017103347B4 (de) 2017-02-17 2017-02-17 Verarbeitung von daten in speicherzellen eines speichers

Publications (2)

Publication Number Publication Date
DE102017103347A1 DE102017103347A1 (de) 2018-08-23
DE102017103347B4 true DE102017103347B4 (de) 2023-07-20

Family

ID=63046077

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017103347.5A Active DE102017103347B4 (de) 2017-02-17 2017-02-17 Verarbeitung von daten in speicherzellen eines speichers

Country Status (4)

Country Link
JP (1) JP6602904B2 (de)
KR (1) KR102079196B1 (de)
DE (1) DE102017103347B4 (de)
TW (1) TWI664639B (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018124296B4 (de) * 2018-10-02 2024-06-20 Infineon Technologies Ag Kompensation von lesefehlern
US10963185B2 (en) * 2018-11-20 2021-03-30 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
CN111352754B (zh) * 2018-12-21 2023-09-15 中国石油天然气集团有限公司 一种数据存储检错纠错方法及数据存储装置
US10884664B2 (en) 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cell
US10884663B2 (en) * 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cells
DE102019107139A1 (de) 2019-03-20 2020-09-24 Infineon Technologies Ag Transformation von aus einem speicher gelesenen binären signalen

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296274A1 (en) 2010-05-31 2011-12-01 International Business Machines Corporation Data encoding in solid-state storage devices
US20130176780A1 (en) 2011-01-04 2013-07-11 Lsi Corporation Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window
DE102014112947A1 (de) 2013-09-26 2015-03-26 International Business Machines Corporation Schätzen von Schwellenwerten für Zustandsebenen bei Speicherzellen

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0225118A (ja) * 1988-07-14 1990-01-26 Matsushita Electric Ind Co Ltd コード変換装置と復号装置
JP3213434B2 (ja) * 1993-03-25 2001-10-02 新日本製鐵株式会社 不揮発性半導体記憶装置
JP3866674B2 (ja) * 1993-12-28 2007-01-10 株式会社東芝 記憶システム
JP4099844B2 (ja) * 1998-01-21 2008-06-11 ソニー株式会社 メモリ装置
CN103280239B (zh) * 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
KR100879560B1 (ko) * 2006-12-04 2009-01-22 삼성전자주식회사 에러 검출 코드를 이용한 데이터 트레이닝 방법 및 이에적합한 시스템
WO2009072103A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
US8880783B2 (en) * 2011-07-05 2014-11-04 Kandou Labs SA Differential vector storage for non-volatile memory
US8427875B2 (en) * 2010-12-07 2013-04-23 Silicon Motion Inc. Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory
US8732560B2 (en) * 2012-05-08 2014-05-20 Infineon Technologies Ag Method and device for correction of ternary stored binary data
US8996951B2 (en) * 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
KR101545512B1 (ko) * 2012-12-26 2015-08-24 성균관대학교산학협력단 반도체 메모리 장치, 검증 독출 방법 및 시스템
US9196320B2 (en) * 2013-12-13 2015-11-24 Infineon Technologies Ag Method, apparatus and device for data processing
DE102015215401B4 (de) * 2015-08-12 2020-10-01 Infineon Technologies Ag Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296274A1 (en) 2010-05-31 2011-12-01 International Business Machines Corporation Data encoding in solid-state storage devices
US20130176780A1 (en) 2011-01-04 2013-07-11 Lsi Corporation Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window
DE102014112947A1 (de) 2013-09-26 2015-03-26 International Business Machines Corporation Schätzen von Schwellenwerten für Zustandsebenen bei Speicherzellen

Also Published As

Publication number Publication date
JP6602904B2 (ja) 2019-11-06
TW201832232A (zh) 2018-09-01
KR20180095468A (ko) 2018-08-27
KR102079196B1 (ko) 2020-02-21
TWI664639B (zh) 2019-07-01
JP2018133087A (ja) 2018-08-23
DE102017103347A1 (de) 2018-08-23

Similar Documents

Publication Publication Date Title
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE112011100371T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102013007692A1 (de) Verfahren und Vorrichtung zur Korrektur ternär gespeicherter binärer Daten
DE2060643B2 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102017130591B4 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE112011101852B4 (de) Decodieren von LDPC-Code
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102014215252A1 (de) Wirksame fehlerkorrektur von mehrbitfehlern
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102019113970B4 (de) Erkennung von adressfehlern
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102018126685B3 (de) Verarbeitung von Daten
DE102017107431B4 (de) Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes
DE102016115272A1 (de) Speicher mit unterschiedlichen zuverlässigkeiten
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung
DE102019126175B4 (de) Erkennung von fehlern in mehrwertigen speichern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final