DE10133595B4 - Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder - Google Patents
Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder Download PDFInfo
- Publication number
- DE10133595B4 DE10133595B4 DE10133595A DE10133595A DE10133595B4 DE 10133595 B4 DE10133595 B4 DE 10133595B4 DE 10133595 A DE10133595 A DE 10133595A DE 10133595 A DE10133595 A DE 10133595A DE 10133595 B4 DE10133595 B4 DE 10133595B4
- Authority
- DE
- Germany
- Prior art keywords
- bank
- frame period
- ram
- double
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1555—Pipelined decoder implementations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
Pufferschaltung
zum gleichzeitigen Schreiben und Lesen von Daten während einer
jeweiligen von aufeinanderfolgenden Rahmenperioden, mit
– einem Speicherbauelement mit einer Mehrzahl von Dualbank-RAMs (310, 320, 330) oder mit mehreren Speichern, von denen jeder Doppelbänke aufweist, und
– einem Speichersteuerschaltkreis (300), der mit den mehreren Doppelbank-RAMs oder Speichern gekoppelt und dafür eingerichtet ist, in jeder Rahmenperiode das Schreiben in eine Bank und das Lesen aus einer anderen Bank, die in einem anderen von den mehreren Doppelbank-RAMs oder Speichern enthalten ist als die Bank, in die gleichzeitig geschrieben wird, freizugeben und von einer zur nächsten Rahmenperiode das Schreiben und das Lesen von Daten zyklisch für je eine nächste Bank derart freizugeben, dass aus jeder Bank der Doppelbank-RAMs in Abständen einer vorgegebenen Anzahl von Rahmenperioden gelesen und in selbige mit demselben Abstand geschrieben wird.
– einem Speicherbauelement mit einer Mehrzahl von Dualbank-RAMs (310, 320, 330) oder mit mehreren Speichern, von denen jeder Doppelbänke aufweist, und
– einem Speichersteuerschaltkreis (300), der mit den mehreren Doppelbank-RAMs oder Speichern gekoppelt und dafür eingerichtet ist, in jeder Rahmenperiode das Schreiben in eine Bank und das Lesen aus einer anderen Bank, die in einem anderen von den mehreren Doppelbank-RAMs oder Speichern enthalten ist als die Bank, in die gleichzeitig geschrieben wird, freizugeben und von einer zur nächsten Rahmenperiode das Schreiben und das Lesen von Daten zyklisch für je eine nächste Bank derart freizugeben, dass aus jeder Bank der Doppelbank-RAMs in Abständen einer vorgegebenen Anzahl von Rahmenperioden gelesen und in selbige mit demselben Abstand geschrieben wird.
Description
- Die Erfindung bezieht sich auf eine Pufferschaltung zum gleichzeitigen Schreiben und Lesen von Daten während einer jeweiligen von aufeinanderfolgenden Datenrahmenperioden, auf ein zugehöriges Speicherzugriffsverfahren und auf einen zugehörigen Reed-Solomon-Decoder mit Pipelinebetrieb.
- Beim Übertragen und Speichern großer digitaler Datenmengen treten unvermeidlich Fehler in den Datenkanälen und Übertragungsmedien auf. Es sind eine Vielzahl von Techniken bekannt, mit denen versucht wird, derartige Fehler zu identifizieren und die Daten wiederzugewinnen, soweit möglich. Von diesen Techniken hat die Reed-Solomon-Codierung breite Anwendung gefunden. Reed-Solomon-Codes sind blockbasierte Fehlerkorrekturcodes, die ausgezeichnete Fehlerkorrekturfähigkeiten sowie effiziente Codierungs- und Decodierungseigenschaften zeigen und daher eine breite Palette von Anwendungsmöglichkeiten in Einrichtungen zur digitalen Kommunikation und Speicherung besitzen.
- Allgemein formt ein Reed-Solomon-Codierer ein Codewort, das eine Anzahl n von Symbolen aufweist, z. B. 8-Bit-Bytes, durch Hinzufügen einer Anzahl 2t von Paritätssymbolen in einen Datenblock mit einer Anzahl k von Datensymbolen um, wobei 2t = n – k gilt. Reed-Solomon-Codeworte werden üblicherweise mit den Buchstaben RS(n, k) bezeichnet. Beispielsweise besitzt im Code RS(255, 223) jedes Codewort 255 Codewort-Bytes, die sich auf 223 Daten-Bytes und 32 Paritäts-Bytes aufteilen.
- Andererseits verarbeitet ein Reed-Solomon-Decoder jedes Codewort mit dem Ziel, Fehler zu korrigieren, die während einer Übertragung oder Speicherung auftreten, und die Originaldaten wiederzugewinnen. Der Decoder ist in der Lage, bis zu t Fehlersymbole in jedem Codewort zu korrigieren. Beispielsweise ist im Code RS(255, 223) n – k = 2t = 32, so dass bis zu 16 Fehlersymbole in jedem Codewort korrigiert werden können.
- Allgemein kann der Reed-Solomon-Decodierprozess in acht hauptsächliche Berechnungsschritte unterteilt werden, wenn sowohl eine Fehler- als auch eine Irrungs-Korrektur durchgeführt werden. Eine „Irrung" liegt vor, wenn der Wert eines Symbols unrichtig ist, die Position des Symbols jedoch bekannt ist. Ein „Fehler" liegt vor, wenn keine Information bezüglich eines unrichtigen Symbols bekannt ist. Die Berechnungsschritte der Fehler- und Irrungs-Decodierung sind folgende. Im ersten Schritt wird aus dem empfangenen/wiedergewonnenen, eingegebenen Codewort ein Syndrom berechnet, um die Existenz eines Fehlers zu detektieren. In einem zweiten Schritt werden Irrungs-Merker gepuffert, die synchron mit dem eingegebenen Codewort zugeführt werden. In einem dritten Schritt wird das Syndrom unter Verwendung der Irrungs-Merker modifiziert. In einem vierten Schritt wird ein Irrungs-Lokalisierpolynom erzeugt. In einem fünften Schritt werden Koeffizienten des Irrungs-Lokalisierpolynoms und ein Fehlerbestimmungspolynom unter Verwendung der modifizierten Syndromwerte und des Irrungs-Lokalisierpolynoms berechnet. In einem sechsten Schritt werden die Wurzeln des Fehler-Lokalisierpolynoms aufgesucht. In einem siebten Schritt wird die Größe von Fehlerwerten berechnet. In einem achten Schritt werden die Fehler unter Verwendung des im vierten Schritt erhaltenen Wertes und der im dritten Schritt gewonnenen Position korrigiert. Wenn nur eine Fehlerkorrektur und keine Irrungskorrektur durchgeführt wird, entfallen der zweite bis vierte Schritt.
- Die obigen acht Schritte erfordern Speicherzugriff. So wird das empfangene Codewort im ersten Schritt temporär in einem Speicher gespeichert und später im achten Schritt wieder aus dem Speicher zur Korrektur abgerufen.
- Die Decodierberechnungen sowie die zugehörige Hardware und/oder Software des Reed-Solomon-Decoders sind komplexer als für den Codierprozess, und es ist oftmals schwierig, Decoder zu realisieren, die ausreichend hohe Verarbeitungsgeschwindigkeiten haben. Dies kann speziell im Hinblick auf den gegenwärtigen Bedarf nach digitalen Datenverarbeitungssystemen mit höherer Geschwindigkeit zu Problemen führen.
- Im Bemühen, die Geschwindigkeiten zu steigern, ist das Ausführen der Berechnungen des Reed-Solomon-Decoders im Pipelinebetrieb eine mögliche Lösung. Die Berechnungen haben jedoch unterschiedliche Latenzen in Abhängigkeit von der Anzahl an Fehlern und den Längen der Codeworte, so dass der Pipelinebetrieb durch die Einheit oder den Block mit der längsten Latenz begrenzt ist. Außerdem erzeugt, selbst wenn Latenzen der Verarbeitungsblöcke auf einen einzelnen Rahmen mit einer Anzahl n von Zyklen, d. h. ein Codewort, reduziert werden, der Speicher zum temporären Speichern des angegebenen Codeworts vor der Korrektur einen Engpass, da mindestens 2n Zyklen benötigt werden, um zuerst das Codewort zu speichern und dann das Codewort zwecks Korrektur desselben wieder abzurufen.
- In der Patentschrift
US 4.725.987 ist eine Speichervorrichtung zur digitalen Bildspeicherung beschrieben, die einen Speicher mit mehreren DRAM-Speicherbänken und eine zugehörige Pufferschaltung aufweist. Die Pufferschaltung beinhaltet einen Eingabepuffer, der Daten mit hoher Systemrate empfängt und in Einheiten eines jeweiligen Datenwortes parallel mit geringerer Bildspeicherrate in eine jeweils ausgewählte Speicherbank überträgt, und einen Ausgabepuffer, der gleichzeitig Daten mit der niedrigeren Bildspeicherrate von einer anderen ausgewählten Speicherbank empfängt und als jeweiliges Datenwort parallel mit der höheren Systemrate überträgt. Im gleichen Zeitraum führt zudem eine einzelne Widerauffrischschaltung eine Wiederauffrischung von Speicherzellen in wenigstens einer der nicht zum Schreiben oder Lesen ausgewählten Speicherbänke durch. Die Speicherbänke sind alternierend in geradzahlige und ungeradzahlige Bänke gruppiert, wobei die ungeradzahligen Bänke gemeinsam an eine erste und die geradzahligen Bänke gemeinsam an eine zweite Zeilenadressenauswahlleitung angeschlossen sind. - In der Patentschrift
US 6.081.920 sind ein Verfahren zur Fehlerkorrektur eines Reed-Solomon-Codeworts und einen zugehörige Fehlerkorrekturvorrichtung offenbart, die einen Empfänger zum Empfangen und Speichern des Codeworts, einen Syndromerkenner zum Feststellen der Syndrome des Codeworts, einen speziellen achtstufigen Fehlergrößenbestimmer zum Feststellen der Anzahl an Fehlern im Codewort unter Verwendung der Syndrome, einen Fehlerlokalisierungspolynomerkenner zum Auffinden des Fehlerlokalisierungspolynoms des Codeworts, einen Fehlerlokalisierungserkenner zum Bestimmen der Fehlerpositionen aus dem Inversen der Wurzel des Fehlerlokalisierungspolynoms und einen Fehlerwerterkenner zum Bestimmen des Wertes der Fehler unter Verwendung der Fehlerpositionen und der Syndrome umfasst. Des weiteren kann eine Korrektureinheit zum Korrigieren des gespeicherten Codeworts unter Verwendung der Fehlerpositionen und der Fehlerwerte so wie ein Decoder zum Decodieren des entsprechend modifizierten Codeworts vorgesehen sein. - Der Erfindung liegt als technisches Problem die Bereitstellung einer Pufferschaltung, eines Speicherzugriffsverfahrens und eines Reed-Solomon-Decoders der eingangs genannten Art zugrunde, welche die Ausführung von Schreib/Lese-Vorgängen mit hoher Geschwindigkeit ermöglichen und möglichst geringe Speicherzugriffszeiten besitzen.
- Die Erfindung löst dieses Problem durch die Bereitstellung einer Pufferschaltung mit den Merkmalen des Anspruchs 1, eines Speicherzugriffsverfahrens mit den Merkmalen des Anspruchs 11 und eines Reed-Solomon-Decoders mit den Merkmalen des Anspruchs 19.
- Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
- Vorteilhafte Ausführungsformen der Erfindung sind in den Zeichnungen dargestellt und werden nachfolgend beschrieben. Hierbei zeigen:
-
1 ein Blockschaltbild eines auf Blockpipelinebetrieb hoher Geschwindigkeit ausgelegten Reed-Solomon-Decoders, -
2 ein Blockdiagramm zur Veranschaulichung der Latenzen der Verarbeitungsblöcke des Reed-Solomon-Decoders von1 , -
3 ein Blockdiagramm eines 3-RAM-Doppelbankbauelementes, -
4 ein Flussdiagramm eines Verfahrens zum Zugreifen auf das 3-RAM-Doppelbankbauelement von3 , -
5 und6 Blockdiagramme zur Veranschaulichung der Auswahl von Bänken während Schreib/Lese-Vorgängen im 3-RAM-Doppelbankbauelement von3 und -
7 ein Ablaufdiagramm zur Veranschaulichung des Pipelinebetriebs des Reed-Solomon-Decoders von1 . -
1 veranschaulicht einen Reed-Solomon-Decoder, der für einen Blockpipelinebetrieb mit hoher Geschwindigkeit ausgelegt ist. Dabei ist er sowohl zur Fehler- als auch zur Irrungskorrektur eingerichtet. Wie gezeigt, sind die Reed-Solomon-Decoderberechnungen im Pipelinebetrieb in fünf Stufen S1 bis S5 aufgeteilt. In einer alternativen, nur auf Fehlerkorrektur ausgelegten Realisierung fehlen verglichen mit der Konfiguration von1 die innerhalb der gestrichelten Linie110 enthaltenen Elemente, so dass dann nur vier Pipelinestufen benötigt werden. - Der Reed-Solomon-Decoder von
1 besitzt ein 3-RAM-Doppelbankbauelement180 zum temporären Speichern eingegebener Daten DIN, d. h. eines Codeworts R(x). Dieses Bauelement besteht aus drei Speichern, z. B. drei RAMs, von denen jeder zwei Bänke umfasst. Ein zirkularer Steuermechanismus wird dazu verwendet, Schreib/Lese-Vorgänge in Abhängigkeit von einem Dateneingabetaktsignal CLK auszuführen. Kurz gesagt schreibt das 3-RAM-Doppelbankbauelement180 die Eingabedaten DIN in ein ausgewähltes der drei RAMs und liest Daten aus einer Bank eines der anderen RAMs aus. Die Struktur und Betriebsweise des 3-RAM-Doppelbankbauelements180 wird unten in Verbindung mit3 genauer erläutert. - Wie weiter aus
1 ersichtlich, beinhaltet der Reed-Solomon-Decoder zur Fehler- und Irrungskorrektur des weiteren einen Syndromgenerator100 , einen Merker-Zähler und -Puffer120 , einen Irrungslokalisierpolynomgenerator130 , einen Syndrommodifizierer140 , einen Polynomkoeffizientengenerator150 , eine Fehlerwertbestimmungseinheit160 , eine Fehlerpositionssucheinheit170 und einen Fehlerkorrektor190 . Wie vorstehend erwähnt, sind die von diesen Komponenten durchgeführten Berechnungen in die Stufen S1 bis S5 im Pipelinebetrieb aufgeteilt. - In der Stufe S1 berechnet der Syndromgenerator
100 ein Syndrom S(x) aus den Eingabedaten DIN. Außerdem zählt der Merker-Zähler und -Puffer120 die Anzahl an Irrungsmerkern Era_Flag, die synchron mit den Eingabedaten DIN zugeführt werden und puffert die Irrungsmerker Era_Flag. Wenn keine Irrungsmerker Era_Flag vorliegen oder die Anzahl an eingegebenen Irrungsmerkern Era_Flag außerhalb eines erlaubten Korrekturbereichs liegt, wird nur eine Fehlerkorrektur durchgeführt. Dabei kann der erlaubte Korrekturbereich so definiert werden, dass nur eine Fehlerkorrektur durchgeführt wird, wenn mehr Irrungsmerker Era_Flag als die Anzahl an Irrungsmerkern des erlaubten Korrekturbereichs eingegeben werden. Wie gesagt, braucht der Reed-Solomon-Decoder den Merker-Zähler und Merker-Puffer120 zur bloßen Fehlerkorrektur nicht zu enthalten. - In der Stufe S2 modifiziert der Syndrommodifizierer
140 das vom Syndromgenerator100 generierte Syndrom S(x) mit den gepufferten Irrungsmerkern und gibt ein modifiziertes Syndrom T(x) ab. Im Fall einer bloßen Fehlerkorrektur wird das Syndrom S(x) nicht modifiziert, und der Syndrommodifizierer140 entfällt. Der Irrungslokalisierpolynomgenerator130 erzeugt ein Irrungslokalisierpolynom unter Verwendung der gepufferten Irrungsmerker. Wie oben erwähnt, wird nur eine Fehlerkorrektur durchgeführt, wenn die Anzahl an eingegebenen Irrungsmerkern Era_Flag gleich null ist oder außerhalb eines erlaubten Korrekturbereichs liegt. In diesem Fall generiert der Irrungslokalisierpolynomgenerator130 einen Konstantwert, z. B. den Wert eins, anstelle eines Irrungslokalisierpolynoms. - In der Stufe S3 erzeugt der Polynomkoeffizientengenerator
150 die Koeffizienten eines Fehlerlokalisierpolynoms σ(x) zur Fehlerpositionssuche und ein Fehlerbestimmungspolynom e(x) zur Fehlerbestimmung unter Verwendung des modifizierten Syndroms T(x) und des Irrungslokalisierpolynoms bzw. des Konstantwertes 1. In diesem Ausführungsbeispiel verwendet der Polynomkoeffizientengenerator150 einen euklidischen Algorithmus. Es versteht sich jedoch, dass genauso gut auch andere bekannte Algorithmen benutzt werden können. Nochmals sei gesagt, dass zur bloßen Fehlerkorrektur die im Block110 enthaltenen Elemente entfallen können, so dass dann die Koeffizienten des Fehlerlokalisierpolynoms σ(x) und des Fehlerbestimmungspolynoms e(x) unter Verwendung des unmodifizierten Syndroms S(x) und des Konstantwertes, z. B. des Wertes 1, erzeugt werden. - In der Stufe S4 berechnet die Fehlerwertbestimmungseinheit
160 Fehlerwerte, und die Fehlerpositionssucheinheit170 berechnet Fehlerpositionen auf der Basis der Koeffizienten des Fehlerlokalisierpolynoms σ(x) und des Fehlerbestimmungspolynoms e(x). Beispielsweise kann zur Berechnung der Lösung des Fehlerlokalisierpolynoms σ(x) und zur Transformation der erhaltenen Lösung in eine Polynomform ein Chien-Suchalgorithmus verwendet werden. Das transformierte Fehlerlokalisierpolynom, das mit Ω(x) bezeichnet ist, wird zur Berechnung von Fehlerpositionen herangezogen. In gleicher Weise berechnet die Fehlerwertbestimmungseinheit160 aus den vom Polynomkoeffizientengenerator150 zugeführten Koeffizienten ein Fehlerbestimmungspolynom E(x). Hierbei können die Fehlerpositionssucheinheit170 und die Fehlerwertbestimmungseinheit160 gemeinsam als eine Fehlerpositions- und Fehlerwert-Bestimmungseinheit bezeichnet werden. - In der Stufe S5 greift der Fehlerkorrektor
190 von1 auf das 3-RAM-Dualbankbauelement180 zu, um die zuvor in dieses geschriebenen Daten DIN zu lesen, wonach er die Fehler der gelesenen Daten unter Bezugnahme auf die durch die Fehlerpositionssucheinheit170 identifizierten Fehlerpositionen und unter Bezugnahme auf die von der Fehlerwertbestimmungseinheit160 berechneten Fehlerwerte korrigiert. Insbesondere korrigiert der Fehlerkorrektor190 die Fehler, die in den Eingabedaten DIN, die aus dem 3-RAM-Doppelbankbauelement180 wiedergewonnen wurden, enthalten sind, dadurch, dass die Eingabedaten DIN und die berech neten Fehlerwerte summiert werden und auf diese Weise Ausgabedaten DOUT erhalten werden, d. h. korrigierte Daten R'(x). - In nicht näher gezeigter Weise führt jeder Pipelinebetrieb-Verarbeitungsblock des Reed-Solomon-Decoders von
1 die zugehörigen Berechnungen in den Stufen S1 bis S5 in Abhängigkeit von einem Systemtaktsignal durch. -
2 veranschaulicht die Latenz der Stufen S1 bis S5 des Reed-Solomon-Decoders von1 . Wie daraus ersichtlich, ist die maximale Latenz jedes Verarbeitungsblocks der Stufen S1, S2, S4 und S5 gleich einer Anzahl n an Zyklen, d. h. einem Block, wobei n die Anzahl von Bytes in jedem Codewort ist. Auch im Verarbeitungsblock der Stufe S3 beträgt die maximale Latenz n Zyklen. Es sei an dieser Stelle erwähnt, dass in einer diesbezüglichenUS-Patentanmeldung Nr. 09/528.676 - Somit ist gemäß
2 die maximale Latenz der Reed-Solomon-Berechnungsblöcke gleich n Zyklen. Allgemein ist der Pipelinebetrieb durch die Einheit bzw. den Block mit der höchsten Latenz begrenzt. Auch bei einer maximalen Latenz der Verarbeitungsblöcke von n Zyklen bzw. einem Rahmen erzeugt die Verwendung eines herkömmlichen Reed-Solomon-Decoderspeichers zum temporären Speichern des vor der Korrektur eingegebenen Codeworts einen Engpass. Dies liegt daran, dass der herkömmliche Speicher mindestens 2n Zyklen bzw. zwei Rahmen benötigt, um zuerst während der Stufe S1 das Codewort zu speichern und dann in der Stufe S5 das Codewort zwecks Korrektur desselben wiederzugewinnen. Das erfindungsgemäße 3-RAM-Doppelbankbauelement überwindet, wie unten erläutert, diese Schwierigkeit durch Reduzieren der Latenz der Schreib/Lese-Speichervorgänge auf n Zyklen bzw. 1 Rahmen. - Eine bevorzugte Realisierung des 3-RAM-Doppelbankbauelementes
180 von1 ist in3 dargestellt. Wie daraus ersichtlich, umfasst dieses 3-RAM-Doppelbankbauelement180 eine zirkulare Puffersteuereinheit300 , ein erstes Doppelbank-RAM310 , ein zweites Doppelbank-RAM320 und ein drittes Doppelbank-RAM330 . Das erste Doppelbank-RAM310 ist in eine BANK 0 und BANK 1, das zweite Doppelbank-RAM320 in eine BANK 2 und BANK 3 und das dritte Doppelbank-RAM330 in eine BANK 4 und eine BANK 5 unterteilt. Ein Adresssignal ADDR[7:0] wird einem 8-Bit-Adressbus340 zugeführt, und die Eingabedaten DIN[7:0] werden einem 8-Bit-Datenbus350 zugeführt. Das Ausgangssignal des 3-RAM-Doppelbankbauelements180 ist ein paralleles 8-Bit-Signal MOUT[7:0], das dem in1 gezeigten Fehlerkorrektor190 zugeführt wird. - Die zirkulare Puffersteuereinheit
300 gibt einen Lese/Schreib-Befehl RE/WR, ein Freigabesignal ENABLE und ein Bankauswahlsignal BK_SEL an jedes der RAMs310 ,320 und330 ab. Der Lese/Schreib-Befehl RE/WR spezifiziert einen Lese- oder Schreibvorgang für jedes RAM310 ,320 ,330 , und das Freigabesignal ENABLE gibt selektiv das jeweilige RAM310 ,320 ,330 frei. Des weiteren wird das Bankauswahlsignal BK_SEL zum Adresssignal ADDR[7:0] zwecks Auswahl einer der beiden Bänke des jeweiligen RAMs310 ,320 ,330 addiert. Beispielsweise wird, wenn das Bankauswahlsignal BK_SEL gleich null ist, eine erste der zwei Bänke eines zugehörigen RAMs ausgewählt, während eine zweite Bank desselben ausgewählt wird, wenn das Bankauswahlsignal BK_SEL gleich eins ist. Auf diese Weise fungieren der Lese/Schreib-Befehl RE/WR, das Freigabesignal ENABLE und das Bankauswahlsignal BK_SEL gemeinsam als ein Schreib-Bankzeiger und/oder ein Lese-Bankzeiger, der das Schreiben bzw. Lesen ausgewählter einzelner Bänke der RAMs310 ,320 ,330 spezifiziert. - Im Betrieb legt die zirkulare Puffersteuereinheit
300 effektiv sowohl einen Schreib-Bankzeiger als auch einen Lese-Bankzeiger in jedem Speicher zyklus fest. Diese Schreib- und Lese-Bankzeiger werden so festgelegt, dass sich die Schreib-Bank und die Lese-Bank in verschiedenen der RAMs310 ,320 ,330 befinden und ein vorgegebener Versatz zwischen der Schreib-Bank und der Lese-Bank von Speicherzyklus zu Speicherzyklus aufrechterhalten wird. Auf diese Weise können das Schreiben eines Datenrahmens, d. h. eines Codeworts, und das Lesen eines anderen Datenrahmens in jedem von aufeinanderfolgenden Speicherzyklen gleichzeitig durchgeführt werden. - Spezieller legt die zirkulare Puffersteuereinheit
300 in jedem Speicherzyklus das Freigabesignal ENABLE an zwei der RAMs310 ,320 ,330 synchron mit dem Taktsignal CLK an, um diese beiden RAMs freizugeben. Des weiteren legt sie einen Lesebefehl RE an eines der beiden freigegebenen RAMs und einen Schreibbefehl WR an das andere der beiden freigegebenen RAMs an. Zudem fügt sie die 1-Bit-Bankauswahlsignale BK_SEL zu den Adresssignalen ADDR[7:0] hinzu, die an jedes der freigegebenen RAMs angelegt werden, um so eine der beiden Bänke jedes der freigegebenen RAMs auszuwählen, d. h. effektiv wird ein 9-Bit-Adresssignal an jedes der RAMs310 ,320 ,330 angelegt. Für jeden Speicherzyklus werden daher eine Bank eines RAMs zum Schreiben und eine Bank eines davon verschiedenen RAMs zum Lesen freigegeben. - Jedes der RAMs
310 ,320 ,330 kann in Form eines statischen Speichers mit wahlfreiem Zugriff implementiert sein, d. h. als SRAM 0, SRAM 1 und SRAM 2. Vorzugsweise reicht die Speicherkapazität jeder Bank dafür aus, einen Rahmen bzw. ein Codewort an Daten zu speichern. Allgemein sollte dazu jede Bank eine Kapazität von n Symbolen bzw. Bytes für den RS(n, k)-Code aufweisen, und jedes RAM sollte eine Kapazität von 2n Symbolen haben. Im Beispiel von3 kann die Bank jedes Doppelbank-RAMs Daten mit einer maximalen Länge von 256 Byte über ein Galois-Feld GF(28) speichern. - Die untenstehende Tabelle 1 zeigt die Größe jedes RAMs und jeder Bank, wenn ein Reed-Solomon(RS)-Code (n, k) über ein Galois-Feld GF(2m) vorliegt, wobei n die Länge, d. h. Anzahl an Symbolen bzw. Bytes, eines Codewortes, k die Länge, d. h. Anzahl von Symbolen oder Bytes, der vor dem Codieren eingegebenen Daten und m die Anzahl an Bits pro Byte bezeichnen. Tabelle 1
Bankgröße RAM-Größe Datenbreite Adressbreite RS(n, k)-Code, GF(2m) n 2n m P + 1, wobei P die kleinste ganze Zahl ist, für die gilt: log2n ≤ P Wenn n = 256 und m = 8 256 512 8 8 + 1 = 9 - Hierbei ist die Speicheradressbreite als ein Wert definiert, der dadurch erhalten wird, dass der Wert 1 zum Minimum einer ganzen Zahl P addiert wird, welche die Bedingung Logen ≤ P erfüllt. Wie zuvor angegeben, ist die Addition des Wertes 1 das Ergebnis der Auswahl einer Bank, welche das MSB der RAM-Adresse verwendet. Wie aus Tabelle 1 ersichtlich, beträgt die Bankgröße 256 Byte, und die RAM-Größe ist 512 Byte, wenn n = 256 und m = 8. Dabei betragen die Datenbreite 8 Bit und die Adressbreite 9 Bit.
- Die Betriebsweise des 3-RAM-Doppelbankbauelementes
180 wird nun detaillierter unter Bezugnahme auf die3 und4 erläutert, wobei4 ein Flussdiagramm zeigt, das ein Verfahren zum Zugreifen auf das 3-RAM-Doppelbankbauelement180 veranschaulicht, wie es oben in Verbindung mit3 diskutiert wurde. - Beim Zugreifen auf das 3-RAM-Doppelbankbauelement
180 wird der Betriebsmodus des Reed-Solomon-Decoders festgestellt, d. h. ob sowohl Feh ler- als auch Irrungskorrektur oder nur Fehlerkorrektur durchzuführen ist. Wie aus4 ersichtlich, ist das Setzen des Schreib-Bankzeigers und des Lese-Bankzeigers für Fehler- und Irrungskorrektur (Schritt400 ) verschieden vom Fall der bloßen Fehlerkorrektur (Schritt410 ). - Speziell wird im Schritt
402 festgestellt, ob sowohl Fehler- als auch Irrungskorrektur ausgeführt werden sollen. Wie oben erläutert, erfolgt dies durch Überprüfen der Anzahl von Irrungsmerkern Era_Flag, die synchron mit den Eingabedaten DIN eingegeben werden. Wenn es einen oder mehrere Irrungsmerker Era_Flag bis zu einem erlaubten Maximum gibt, werden sowohl Fehler- als auch Irrungskorrektur ausgeführt. - Wenn im Schritt
402 festgestellt wird, dass sowohl Fehler- als auch Irrungskorrektur durchzuführen ist, wird ein Schritt404 ausgeführt, in welchem die zirkulare Puffersteuereinheit300 einen Versatz zwischen einem Schreib-Bankzeiger und einem Lese-Bankzeiger von vier Bänken festlegt. Dieser Versatz zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger ist unter Bezugnahme auf5 deutlicher ersichtlich. In einem ersten Rahmen T50 des Beispiels von5 wird der Lese-Zeiger auf die Bank 0 des ersten RAMs gesetzt und der Schreib-Zeiger wird auf die BANK 4 des dritten RAMs gesetzt. Der Versatz zwischen dem Lese-Bankzeiger und dem Schreib-Bankzeiger beträgt daher vier Bänke. Der Lese- und der Schreibzeiger werden dann, wie in5 dargestellt, in jedem von aufeinanderfolgenden Rahmen inkrementiert, wobei der Versatz von vier Bänken zwischen dem Lese-Bankzeiger und dem Schreib-Bankzeiger in jedem Rahmen aufrecht erhalten wird. Wenn der Lese-Bankzeiger mit BANK# bezeichnet wird, lässt sich der Schreib-Bankzeiger als BANK(# + 4) MOD 6 ausdrücken, wobei die Zahl 6 die Gesamtzahl von Bänken bezeichnet. - Wenn ohne Beschränkung der Allgemeinheit das Schreiben irgendeiner bestimmten Bank in einem ersten Rahmen auftritt, hat der Versatz von vier Bänken zur Folge, dass das Lesen derselben Bank in einem fünften Rahmen erfolgt. Wird beispielsweise die BANK 4 des dritten RAMs von
5 betrachtet, so wird in diese im ersten Rahmen T50 geschrieben, und im fünften Rahmen wird aus ihr gelesen. Diese Zeitabstimmung entspricht der Anzahl von fünf Stufen der Pipeline-Berechnungsvorgänge im Reed-Solomon-Decoder für sowohl Fehler- als auch Irrungskorrektur. Wenn daher in der ersten Berechnungsstufe die Eingabedaten DIN in die BANK 4 geschrieben werden, können dieselben Daten DIN aus der BANK 4 in der fünften Berechnungsstufe des im Pipelinebetrieb arbeitenden Decoders gelesen werden. - Wenn wieder bezugnehmend auf
4 im Schritt402 stattdessen festgestellt wird, dass nur eine Fehlerkorrektur durchzuführen ist, wird ein Schritt414 ausgeführt, in welchem die zirkulare Puffersteuereinheit300 einen Versatz von drei Bänken zwischen einem Schreib-Bankzeiger und einem Lese-Bankzeiger festsetzt. Eine Korrektur von Fehlern erfolgt nur, wenn kein Fehlermerker Era_Flag eingegeben wird oder wenn die Anzahl an eingegebenen Fehlermerkern Era_Flag jenseits des erlaubten Korrekturbereichs liegt. Der Versatz von drei Bänken zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger wird nun detaillierter unter Bezugnahme auf6 erläutert. In einem ersten Rahmen T60 des Beispiels von6 wird der Lesezeiger auf die BANK 0 des ersten RAMs gesetzt, und der Schreibzeiger wird auf die BANK 3 des zweiten RAMs gesetzt. Der Versatz zwischen dem Lese-Bankzeiger und dem Schreib-Bankzeiger beträgt somit drei Bänke. Der Lese- und der Schreibzeiger werden dann in jedem der in6 gezeigten, aufeinanderfolgenden Rahmen inkrementiert, wobei der Versatz von drei Bänken zwischen dem Lese-Bankzeiger und dem Schreib-Bankzeiger in jedem Rahmen aufrechterhalten bleibt. Wenn der Lese-Bankzeiger mit BANK# ausgedrückt wird, lässt sich der Schreib-Bankzeiger durch BANK(# + 3) MOD 6 ausdrücken. Wenn ohne Beschränkung der Allgemeinheit das Schreiben in irgendeine bestimmte Bank angenommen in einem ersten Rahmen erfolgt, resultiert der Versatz von drei Bänken darin, dass das Lesen derselben Bank in einem vierten Rahmen erfolgt. Wenn beispielsweise in die BANK 3 des zweiten RAMs von6 im ersten Rahmen T60 geschrieben wird, wird selbige im vierten Rahmen gelesen. Diese Zeitabstimmung entspricht der Anzahl von vier Stufen der Pipeline-Berechnungen im Reed-Solomon-Decoder im Fall der bloßen Fehlerkorrektur. Wenn daher in der ersten Berechnungsstufe die Eingabedaten DIN in die BANK 3 geschrieben werden, können dieselben Daten DIN aus der BANK 3 in der vierten Berechnungsstufe des Pipeline-Decoders gelesen werden. - Wenn wieder bezugnehmend auf
4 im Schritt420 ein Schreibbefehl angelegt wurde, werden die Eingabedaten DIN in diejenige Bank geschrieben, die vom Schreib-Bankzeiger im Schritt430 dafür bestimmt wurde. In gleicher Weise werden, wenn im Schritt440 ein Lesebefehl RE angelegt wurde, die zuvor eingeschriebenen Eingabedaten DIN aus derjenigen Bank gelesen, die hierfür vom Lese-Bankzeiger im Schritt450 bestimmt wurde. Dann werden im Schritt460 die so gelesenen Daten DIN bezüglich Korrektur von Fehlern und/oder Irrungen weiterbehandelt, wie oben beschrieben. - Wie in
4 dargestellt, wird das Schreiben und Lesen von Daten gleichzeitig durchgeführt. Wenn im Schritt470 keine Codierung ausgeführt worden ist, setzt sich der Decodierprozess fort, indem zur Ausführung eines nächsten Speicherrahmens zu den Schritten420 und440 zurückgekehrt wird. - Wie in den
5 und6 veranschaulicht, wird der Versatz zwischen dem Schreib- und dem Lese-Bankzeiger jeweils so festgelegt, dass Kollisionen, d. h. gleichzeitige Zugriffe, innerhalb desselben RAMs verhindert und Schreib- und Lesevorgänge erlaubt werden, die mit der Zeitsteuerung der Berechnungsstufen des Pipeline-Decoders übereinstimmen. Die Speicherzugriffssequenz kann vordefiniert sein und hängt vom Systemtakt ab. Das Decodieren des Reed-Solomon-Decoders kann daher rasch und ohne Speicherengpässe ausgeführt werden. - Die nachstehende Tabelle 2 zeigt im Vergleich die Anzahl an Speicherzugriffszyklen, die für einen Decoder mit einem einzigen zirkularen RAM einerseits und für den erfindungsgemäßen Reed-Solomon-Decoder, der drei zirkulare RAMs verwendet, andererseits erforderlich sind. Tabelle 2
RS(n, k)-Code Schreibzyklen Lesezyklen Gesamte Lese- und Schreib-Zyklen Benötigte Speicherzugriffszyklen Benötigte Systemtakte relativ zu Dateneingabetakten 1 RAM n n 2n > 2n > 2x 3 RAMs n n 2n n 1x - Wie aus Tabelle 2 ersichtlich, ist unter der nicht beschränkenden Annahme, dass n einen jeweiligen Zyklus zum Schreiben von Daten in und Lesen von Daten aus den RAMs bezeichnet, die Anzahl an Zyklen, die notwendig ist, um pro Datenrahmen auf Speicher zuzugreifen, im Fall der Verwendung eines einzelnen RAM gleich 2n, während sie für den Fall von 3 RAMs nur gleich n ist. Außerdem muss, wenn nur ein RAM verwendet wird, die Systemtaktrate um das Zweifache oder mehr gegenüber einer Dateneingabetaktrate erhöht werden. Im Gegensatz dazu kann bei der erfindungsgemäßen Verwendung von drei RAMs eine Systemtaktrate verwendet werden, die gleich groß wie die Dateneingabetaktrate ist. Als Resultat hiervon kann das Schreiben und Lesen von Daten mit einem niedriger getakteten Systemtaktsignal erfolgen.
- Die nachstehende Tabelle 3 zeigt einen Vergleich hinsichtlich Größe und Betriebsgeschwindigkeit zwischen einem herkömmlichen RAM-Einzelspeicher und dem 3-RAM-Doppelbankbauelement für den Fall, dass SRAMs für 256-Byte-Codeworte verwendet werden. Tabelle 3
Speicher Größe Relative Geschwindigkeit Absolut Relativ 1 RAM (1536 Byte) 10996 0,66x < 0,5x 3 RAMs (512·3 Byte) 5573·3 1 1 - Wie aus Tabelle 3 ersichtlich, ist bei einer Codewortlänge von 256 Byte die Größe eines einzelnen 1536-Byte-SRAM um den Faktor 0,66 kleiner als diejenige der erfindungsgemäßen Konfiguration mit drei 512-Byte-SRAMs.
- Jedoch ist die Betriebsgeschwindigkeit im Fall der drei SRAMs mehr als doppelt so groß wie im Fall des einzelnen SRAMs. Außerdem ist bei Betrachtung des Reed-Solomon-Decoders als Ganzes der prozentuale Anstieg seiner Größe als Folge der Verwendung der drei SRAMs unter Berücksichtigung der erhöhten Betriebsgeschwindigkeiten vernachlässigbar.
-
7 ist ein Zeitablaufdiagramm des Decodierprozesses des im Blockpipelinebetrieb arbeitenden Reed-Solomon-Decoders in einer erfindungsgemäßen Realisierung. Wie aus7 ersichtlich, beträgt eine anfängliche Latenzverzögerung T70 4·n Zyklen, und fehlerkorrigierte Daten DOUT, d. h. - R'(x), werden jeweils um n Zyklen nach der anfänglichen Latenzverzögerung T70 abgegeben. Sobald im fünften und sechsten Rahmen ein vollständiger Pipelinebetrieb der Vorgänge erreicht ist, kann sowohl das Schreiben von Daten mit der Berechnung von S(x) als auch das Lesen von Daten R'(x) ausgeführt werden, ohne einen Engpass zu erzeugen, da die Latenz der Schreib/Lese-Vorgänge n Zyklen beträgt. In
7 repräsentiert T75 ein Durchsatzverzögerungsintervall in der aktuellen Verarbeitungsprozedur und kein Latenzverzögerungsintervall. - Das 3-RAM-Doppelbankbauelement und der dieses verwendende, erfindungsgemäße Reed-Solomon-Decoder besitzen einen breiten Anwendungsbereich einschließlich, um Beispiele zu nennen, optische Plattensysteme, wie digitale Mehrzweckplatten hoher Auflösung (HD-DVD), HDTV, Satellitenkommunikation, drahtlose Kommunikationsausrüstungen, wie IMT, Netzwerksysteme, wie Giga-Ethernet, und Ultrahochgeschwindigkeitssysteme.
- Im 3-RAM-Doppelbankelement kann der Dateneingabetakt für das Zugreifen auf Speicher als Systemtakt verwendet werden, was die Herstellung des Halbleiterbauelementes vereinfacht, den Stromverbrauch verringert und die Betriebsgeschwindigkeit steigert. Außerdem kann das zeitaufwendige Zugreifen auf Speicher minimiert werden, so dass die Systemtaktrate weniger durch die Speicherzugriffszeit beeinflusst wird, was praktisch den Freiheitsgrad für die Zeitsteuerungstoleranzen zwischen Blöcken im Systemdesign erhöht. Zudem ermöglicht das 3-RAM-Doppelbankbauelement Hochgeschwindigkeitsübertragungen, die besonders für einen im Pipelinebetrieb mit hoher Geschwindigkeit arbeitenden Reed-Solomon-Decoder und für Ultrahochgeschwindigkeitssysteme geeignet sind, die den Reed-Solomon-Decoder einsetzen.
Claims (30)
- Pufferschaltung zum gleichzeitigen Schreiben und Lesen von Daten während einer jeweiligen von aufeinanderfolgenden Rahmenperioden, mit – einem Speicherbauelement mit einer Mehrzahl von Dualbank-RAMs (
310 ,320 ,330 ) oder mit mehreren Speichern, von denen jeder Doppelbänke aufweist, und – einem Speichersteuerschaltkreis (300 ), der mit den mehreren Doppelbank-RAMs oder Speichern gekoppelt und dafür eingerichtet ist, in jeder Rahmenperiode das Schreiben in eine Bank und das Lesen aus einer anderen Bank, die in einem anderen von den mehreren Doppelbank-RAMs oder Speichern enthalten ist als die Bank, in die gleichzeitig geschrieben wird, freizugeben und von einer zur nächsten Rahmenperiode das Schreiben und das Lesen von Daten zyklisch für je eine nächste Bank derart freizugeben, dass aus jeder Bank der Doppelbank-RAMs in Abständen einer vorgegebenen Anzahl von Rahmenperioden gelesen und in selbige mit demselben Abstand geschrieben wird. - Pufferschaltung nach Anspruch 1, weiter dadurch gekennzeichnet, dass ein erstes, ein zweites und ein drittes Doppelbank-RAM mit einer ersten und zweiten, dritten und vierten bzw. fünften und sechsten Bank vorgesehen sind, wobei der Speichersteuerschaltkreis das Lesen aus und das Schreiben in die erste bis sechste Bank in Abständen von jeweils sechs Rahmenperioden freigibt.
- Pufferschaltung nach Anspruch 2, weiter dadurch gekennzeichnet, dass während einer jeweiligen Rahmenperiode ein Versatz zwischen dem Freigeben des Lesens einer Datenbank und dem Schreiben in selbige von vier Bänken vorgesehen ist, so dass aus einer jeweiligen Bank, in die während einer Rahmenperiode a geschrieben wurde, in einer späteren Rahmenperiode a + 4 gelesen wird, wobei a eine ganze Zahl ist.
- Pufferschaltung nach Anspruch 2, weiter dadurch gekennzeichnet, dass während einer jeweiligen Rahmenperiode ein Versatz zwischen dem Freigeben des Lesens einer Datenbank und des Schreibens in selbige von drei Bänken vorgesehen ist, so dass aus einer jeweiligen Bank, in die während einer Rahmenperiode a geschrieben wurde, in einer späteren Rahmenperiode a + 3 gelesen wird, wobei a eine ganze Zahl ist.
- Pufferschaltung nach Anspruch 2 oder 3, weiter dadurch gekennzeichnet, dass – der Speichersteuerschaltkreis während einer a-ten Rahmenperiode das Lesen aus der ersten Bank des ersten Doppelbank-RAMs und das Schreiben in die fünfte Bank freigibt, die im dritten Doppelbank-RAM enthalten ist, wobei a eine ganze Zahl ist, – der Speichersteuerschaltkreis während einer (a + 1)-ten Rahmenperiode das Lesen aus der zweiten Bank des ersten Doppelbank-RAMs und das Schreiben in die sechste Bank freigibt, die im dritten Doppelbank-RAM enthalten ist, – der Speichersteuerschaltkreis während einer (a + 2)-ten Rahmenperiode das Lesen aus der dritten Bank, die im zweiten Doppelbank-RAM enthalten ist, und das Schreiben in die erste Bank des ersten Doppelbank-RAMs freigibt, – der Speichersteuerschaltkreis während einer (a + 3)-ten Rahmenperiode das Lesen aus der vierten Bank, die im zweiten Doppelbank-RAM enthalten ist, und das Schreiben in die zweite Bank des ersten Doppelbank-RAMs freigibt, – der Speichersteuerschaltkreis während einer (a + 4)-ten Rahmenperiode das Lesen aus der fünften Bank, die im dritten Doppelbank-RAM enthalten ist, und das Schreiben in die dritte Bank freigibt, die im zweiten Doppelbank-RAM enthalten ist, und – der Speichersteuerschaltkreis während einer (a + 5)-ten Rahmenperiode das Lesen aus der sechsten Bank, die im dritten Doppelbank-RAM enthalten ist, und das Schreiben in die vierte Bank freigibt, die im zweiten Doppelbank-RAM enthalten ist.
- Pufferschaltung nach Anspruch 2 oder 4, weiter dadurch gekennzeichnet, dass – der Speichersteuerschaltkreis während einer a-ten Rahmenperiode das Lesen aus der ersten Bank des ersten Doppelbank-RAMs und das Schreiben in die vierte Bank freigibt, die im zweiten Doppelbank-RAM enthalten ist, wobei a eine ganze Zahl ist, – der Speichersteuerschaltkreis während einer (a + 1)-ten Rahmenperiode das Lesen aus der zweiten Bank des ersten Doppelbank-RAMs und das Schreiben in die fünfte Bank freigibt, die im dritten Doppelbank-RAM enthalten ist, – der Speichersteuerschaltkreis während einer (a + 2)-ten Rahmenperiode das Lesen aus der dritten Bank, die im zweiten Doppelbank-RAM enthalten ist, und das Schreiben in die sechste Bank freigibt, die im dritten Doppelbank-RAM enthalten ist, – der Speichersteuerschaltkreis während einer (a + 3)-ten Rahmenperiode das Lesen aus der vierten Bank, die im zweiten Doppelbank-RAM enthalten ist, und das Schreiben in die erste Bank des ersten Doppelbank-RAMs freigibt, – der Speichersteuerschaltkreis während einer (a + 4)-ten Rahmenperiode das Lesen aus der fünften Bank, die im dritten Doppelbank-RAM enthalten ist, und das Schreiben in die zweite Bank des ersten Doppelbank-RAMs freigibt und – der Speichersteuerschaltkreis während einer (a + 5)-ten Rahmenperiode das Lesen aus der sechsten Bank, die im dritten Doppelbank-RAM enthalten ist, und das Schreiben in die dritte Bank freigibt, die im zweiten Doppelbank-RAM enthalten ist.
- Pufferschaltung nach einem der Ansprüche 1 bis 6 für einen Reed-Solomon-Decoder vom Blockpipelinetyp hoher Geschwindigkeit zur Korrektur von Fehlern durch Decodieren der von außen empfangenen Daten, wobei die empfangenen Daten in das Speicherbauelement geschrieben und aus ihm wieder ausgelesen werden, die Speicher durch einen Schreib/Lese-Befehl und ein Freigabesignal aktiviert werden und der Speichersteuerschaltkreis eine zirkulare Puffersteuereinheit (
300 ) beinhaltet, um den Schreib/Lese-Befehl und das Freigabesignal zwecks Auswählen eines entsprechenden der mehreren Speicher und Festlegen eines Schreib-Bankzeigers und eines Lese-Bankzeigers derart abzugeben, dass Bänke zum Schreiben und Lesen eines jeweiligen Datenrahmens aus verschiedenen Speichern mit einem vorgegebenen Versatz ausgewählt werden. - Pufferschaltung nach einem der Ansprüche 1 bis 7, weiter dadurch gekennzeichnet, dass die mehreren Speicher drei Speicher mit wahlfreiem Zugriff (RAMs) mit je zwei Bänken aufweisen, wobei jede Bank einen Datenrahmen speichert.
- Pufferschaltung nach Anspruch 7 oder 8, weiter dadurch gekennzeichnet, dass die zirkulare Puffersteuereinheit den Schreib-Bankzeiger und den Lese-Bankzeiger mit einem Versatz von vier Bänken zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger festlegt, wenn der Reed-Solomon-Decoder sowohl Fehler- als auch Irrungskorrekturen durchführt.
- Pufferschaltung nach Anspruch 7 oder 8, weiter dadurch gekennzeichnet, dass die zirkulare Puffersteuereinheit den Schreib-Bankzeiger und den Lese-Bankzeiger mit einem Versatz von drei Bänken zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger festlegt, wenn der Reed-Solomon-Decoder nur eine Fehlerkorrektur durchführt.
- Verfahren zum Zugreifen auf eine Mehrzahl von Doppelbank-Speichern zwecks gleichzeitigem Schreiben und Lesen von Daten während einer jeweiligen von aufeinanderfolgenden Rahmenperioden, dadurch gekennzeichnet, dass in jeder Rahmenperiode das Schreiben in eine Bank und das Lesen aus einer anderen Bank, die in einem anderen der mehreren Doppelbank-Speicher enthalten ist als diejenige Bank, in die gleichzeitig geschrieben wird, freigegeben werden und von einer zur nächsten Rahmenperiode das Schreiben und das Lesen von Daten zyklisch für je eine nächste Bank derart freigegeben werden, dass jede Bank der Doppelbank-Speicher jeweils im Abstand einer vorgegebenen Anzahl von Rahmenperioden gelesen und in selbige mit demselben Abstand geschrieben wird.
- Verfahren nach Anspruch 11 zum Zugreifen auf ein Speicherbauelement mit drei Doppelbank-RAMs, die eine erste und zweite Bank, eine dritte und vierte Bank bzw. eine fünfte und sechste Bank beinhalten, dadurch gekennzeichnet, dass – das Lesen aus der ersten bis sechsten Bank nacheinander während aufeinanderfolgender Rahmenperioden derart freigegeben wird, dass jede Bank nach jeweils sechs Rahmenperioden gelesen wird, und – das Schreiben in die erste bis sechste Bank nacheinander während der aufeinanderfolgenden Rahmenperioden derart freigegeben wird, dass in jede Bank nach jeweils sechs Rahmenperioden geschrieben wird, – wobei während einer jeweiligen Rahmenperiode diejenige Bank, für die das Lesen freigegeben wird, in einem anderen der drei Doppelbank-RAMs enthalten ist als diejenige Bank, für die das Schreiben freigegeben wird.
- Verfahren nach Anspruch 12, weiter dadurch gekennzeichnet, dass während jeder Rahmenperiode ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von vier Bänken vorgesehen ist, so dass aus derjenigen der sechs Bänke, in die während einer Rahmenperiode a geschrieben wurde, in einer späteren Rahmenperiode a + 4 gelesen wird, wobei a eine ganze Zahl ist.
- Verfahren nach Anspruch 12, weiter dadurch gekennzeichnet, dass während einer jeden Rahmenperiode ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von drei Bänken vorgesehen wird, so dass aus derjenigen der ersten bis sechsten Bank, in die während einer Rahmenperiode a geschrieben wurde, in einer späteren Rahmenperiode a + 3 gelesen wird, wobei a eine ganze Zahl ist.
- Verfahren nach Anspruch 12, weiter gekennzeichnet durch folgende Schritte: – während einer a-ten Rahmenperiode Lesen aus der ersten Bank des ersten Doppelbank-RAMs und Schreiben in die fünfte Bank, die im dritten Doppelbank-RAM enthalten ist, wobei a eine ganze Zahl ist, – während einer (a + 1)-ten Rahmenperiode Lesen aus der zweiten Bank des ersten Doppelbank-RAMs und Schreiben in die sechste Bank, die im dritten Doppelbank-RAM enthalten ist, während einer (a + 2)-ten Rahmenperiode Lesen aus der dritten Bank, die im zweiten Doppelbank-RAM enthalten ist, und Schreiben in die erste Bank des ersten Doppelbank-RAMs, – während einer (a + 3)-ten Rahmenperiode Lesen aus der vierten Bank, die im zweiten Doppelbank-RAM enthalten ist, und Schreiben in die zweite Bank des ersten Doppelbank-RAMs, – während einer (a + 4)-ten Rahmenperiode Lesen aus der fünften Bank, die im dritten Doppelbank-RAM enthalten ist, und Schreiben in die dritte Bank, die im zweiten Doppelbank-RAM enthalten ist, und – während einer (a + 5)-ten Rahmenperiode Lesen aus der sechsten Bank, die im dritten Doppelbank-RAM enthalten ist, und Schreiben in die vierte Bank, die im zweiten Doppelbank-RAM enthalten ist.
- Verfahren nach Anspruch 12, weiter dadurch gekennzeichnet, dass – während einer a-ten Rahmenperiode aus der ersten Bank des ersten Doppelbank-RAMs gelesen und in die vierte Bank geschrieben wird, die im zweiten Doppelbank-RAM enthalten ist, wobei a eine ganze Zahl ist, – während einer (a + 1)-ten Rahmenperiode aus der zweiten Bank des ersten Doppelbank-RAMs gelesen und in die fünfte Bank geschrieben wird, die im dritten Doppelbank-RAM enthalten ist, – während einer (a + 2)-ten Rahmenperiode aus der dritten Bank, die im zweiten Doppelbank-RAM enthalten ist, gelesen und in die sechste Bank geschrieben wird, die im dritten Doppelbank-RAM enthalten ist, – während einer (a + 3)ten Rahmenperiode aus der vierten Bank, die im zweiten Doppelbank-RAM enthalten ist, gelesen und in die erste Bank des ersten Doppelbank-RAMs geschrieben wird, – während einer (a + 4)-ten Rahmenperiode aus der fünften Bank, die im dritten Doppelbank-RAM enthalten ist, gelesen und in die zweite Bank des ersten Doppelbank-RAMs geschrieben wird und – während einer (a + 5)-ten Rahmenperiode aus der sechsten Bank, die im dritten Doppelbank-RAM enthalten ist, gelesen und in die dritte Bank geschrieben wird, die im zweiten Doppelbank-RAM enthalten ist.
- Verfahren nach einem der Ansprüche 11 bis 16, weiter dadurch gekennzeichnet, dass die Speicher für einen Reed-Solomon-Decoder vom Blockpipelinetyp hoher Geschwindigkeit zum Decodieren der von außen empfangenen Daten und Korrigieren von Fehlern verwendet werden und folgende Schritte vorgesehen sind: a) Festlegen eines Schreib-Bankzeigers und eines Lese-Bankzeigers für jeden Datenrahmen mit einem vorgegebenen Versatz zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger in Abhängigkeit vom Fehlerkorrekturmodus, wobei die Nummer jedes Schreib- und jedes Lese-Bankzeigers für den jeweiligen Datenrahmen inkrementiert wird, b) Feststellen, ob ein Datenschreibbefehl oder ein Datenlesebefehl an einen der mehreren Speicher angelegt wird, c) Auswählen der durch den Schreib-Bankzeiger angezeigten Bank aus einem mit dem Anwenden des Datenschreibbefehls in Schritt b freigegebenen Speicher und Schreiben von Daten in die ausgewählte Bank, d) Auswählen der durch den Lese-Bankzeiger angezeigten Bank aus einem anderen, mit dem Anwenden des Datenlesebefehls in Schritt b freigegebenen Speicher und Lesen von in die ausgewählte Bank geschriebenen Daten und e) Wiederholen der Schritte b bis d, bis das Decodieren der Daten abgeschlossen ist, wobei die Schritte c und d gleichzeitig ausgeführt werden.
- Verfahren nach Anspruch 17, weiter dadurch gekennzeichnet, dass der Schritt a folgende Teilschritte umfasst: a1) Feststellen, ob sowohl Fehler- als auch Irrungskorrekturen durchzuführen sind, a2) Festlegen des Schreib-Bankzeigers und des Lese-Bankzeigers mit einem Versatz von vier Bänken, wenn festgestellt wird, dass sowohl Fehler- als auch Irrungskorrekturen durchzuführen sind, a3) Feststellen, ob nur eine Fehlerkorrektur durchzuführen ist, wenn festgestellt wird, dass nicht sowohl Fehler- als auch Irrungskorrekturen durchzuführen sind, und a4) Festlegen des Schreib-Bankzeigers und des Lese-Bankzeigers mit einem Versatz von drei Bänken, wenn festgestellt wird, dass nur eine Fehlerkorrektur durchzuführen ist.
- Reed-Solomon-Decoder vom Pipelinetyp mit – einer Mehrzahl von im Pipelinebetrieb arbeitenden Verarbeitungseinheiten, die eingegebene Reed-Solomon-Codeworte empfangen und Berechnungen zur Identifizierung von Fehlerpositionen und Fehlerwerten durchführen, die in den eingegebenen Codeworten enthalten sind, gekennzeichnet durch – eine Pufferschaltung nach einem der Ansprüche 1 bis 10 zum temporären Speichern der eingegebenen Codeworte während der Ausführung der Berechnungen durch die mehreren, im Pipelinebetrieb arbeitenden Verarbeitungseinheiten.
- Reed-Solomon-Decoder nach Anspruch 19, weiter dadurch gekennzeichnet, dass die mehreren im Pipelinebetrieb arbeitenden Verarbeitungseinheiten aus fünf Pipeline-Verarbeitungsstufen bestehen, wobei während einer jeweiligen Rahmenperiode ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von vier Bänken vorgesehen ist, so dass bei sechs vorhandenen Bänken das Lesen aus einer jeweiligen Bank während einer Rahmenperiode a + 4 erfolgt, wenn in selbige während einer Rahmenperiode a geschrieben wurde, wobei a eine ganze Zahl ist.
- Reed-Solomon-Decoder nach Anspruch 19, weiter dadurch gekennzeichnet, dass die mehreren, im Pipelinebetrieb arbeitenden Verarbeitungseinheiten aus vier Pipeline-Verarbeitungsstufen bestehen, wobei ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von drei Bänken vorgesehen ist, so dass bei sechs vorhandenen Bänken aus einer jeweiligen Bank während einer Rahmenperiode a + 3 gelesen wird, wenn in selbige während einer Rahmenperiode a geschrieben wurde, wobei a eine ganze Zahl ist.
- Reed-Solomon-Decoder nach einem der Ansprüche 19 bis 21, weiter dadurch gekennzeichnet, dass – die mehreren, im Pipelinebetrieb arbeitenden Verarbeitungseinheiten in einem ersten Modus, in welchem eine Fehler- und Irrungskorrektur ausgeführt wird und fünf Pipeline-Verarbeitungsstufen betrieben werden, und einem zweiten Modus betreibbar sind, in welchem nur eine Fehlerkorrektur ausgeführt wird und vier Pipeline-Verarbeitungsstufen betrieben werden, – wobei im ersten Modus während einer jeweiligen Rahmenperiode ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von vier Bänken vorgesehen ist, so dass bei sechs vorhandenen Bänken aus einer jeweiligen Bank während einer Rahmenperiode a + 4 gelesen wird, in die während einer Rahmenperiode a geschrieben wurde, wobei a eine ganze Zahl ist, und – im zweiten Modus während einer jeweiligen Rahmenperiode ein Versatz zwischen einer Bank, für die das Lesen freigegeben wird, und einer Bank, für die das Schreiben freigegeben wird, von drei Bänken vorgesehen ist, so dass aus einer jeweiligen Bank während einer Rahmenperiode a + 3 gelesen wird, in die während einer Rahmenperiode a geschrieben wurde.
- Reed-Solomon-Decoder nach einem der Ansprüche 19 bis 22, weiter dadurch gekennzeichnet, dass die mehreren Pipeline-Verarbeitungseinheiten und die Pufferschaltung in Abhängigkeit von derselben Taktsignalrate betreibbar sind.
- Reed-Solomon-Decoder nach einem der Ansprüche 19 bis 23, weiter dadurch gekennzeichnet, dass jedes Codewort n Bytes enthält und jede von sechs Bänken eine Kapazität von n Bytes aufweist, wobei n eine positive ganze Zahl ist.
- Reed-Solomon-Decoder nach einem der Ansprüche 19 bis 24, weiter dadurch gekennzeichnet, dass die maximale Latenz jeder der mehreren Pipeline-Verarbeitungseinheiten n Zyklen beträgt und jede Rahmenperiode n Zyklen lang ist, wobei n eine positive ganze Zahl ist.
- Reed-Solomon-Decoder nach Anspruch 19 vom Blockpipelinetyp hoher Geschwindigkeit, weiter dadurch gekennzeichnet, dass die Verarbeitungseinheiten folgendes umfassen: – einen Syndromgenerator (
100 ) zum Erzeugen eines Syndroms aus empfangenen Daten, – einen Polynomkoeffizientengenerator (150 ) zum Erzeugen der Koeffizienten eines Fehlerlokalisierpolynoms und eines Fehlerbestimmungspolynoms unter Verwendung des erzeugten Syndroms, – eine Fehlerpositionssuch- und Fehlerwertbestimmungsstufe (160 ,170 ) zum Ermitteln der Positionen von Fehlern und zum Berechnen von Fehlerwerten unter Verwendung des Fehlerlokalisierpolynoms und des Fehlerbestimmungspolynoms mit den erzeugten Koeffizienten und – einen Fehlerkorrektor (190 ) zum Korrigieren von Fehlern der vom Speicherbauelement abgegebenen Daten auf der Basis der von der Fehlerpositionssuch- und Fehlerwertbestimmungsstufe abgegebenen Fehlerpositionen und Fehlerwerte. - Reed-Solomon-Decoder nach Anspruch 26, weiter dadurch gekennzeichnet, dass das Speicherbauelement drei Speicher mit wahlfreiem Zugriff (RAMs) mit Doppelbänken aufweist und Bänke verschiedener RAMs zum Schreiben bzw. Lesen während eines jeweiligen Rahmens empfangener Daten freigegeben werden.
- Reed-Solomon-Decoder nach Anspruch 26 oder 27, weiter dadurch gekennzeichnet, dass in dem Speicherbauelement ein Schreib-Bankzeiger und ein Lese-Bankzeiger mit einem ersten Versatz zwischen dem Schreib-Bankzeiger und dem Lese-Bankzeiger festgelegt werden, um Bänke zum Schreiben bzw. Lesen des jeweiligen Rahmens empfangener Daten auszuwählen.
- Reed-Solomon-Decoder nach einem der Ansprüche 26 bis 28, weiter gekennzeichnet durch: – einen Merkerzähler und Merkerpuffer zum Zählen von Irrungsmerkern, die synchron mit den empfangenen Daten eingegeben werden, und zum Puffern der Irrungsmerker, – einen Irrungslokalisierpolynomgenerator (
130 ) zum Erzeugen eines Irrungslokalisierpolynoms unter Verwendung der gepufferten Irrungsmerker und – einen Syndrommodifizierer (140 ) zum Modifizieren des vom Syndromgenerator erzeugten Syndroms mit den gepufferten Irrungsmerkern und Zuführen des modifizierten Syndroms zum Polynomkoeffizientengenerator, der die Koeffizienten des Fehlerlokalisierpolynoms und Fehlerbestimmungspolynoms unter Verwendung des Irrungslokalisierpolynoms und des modifizierten Syndroms berechnet. - Reed-Solomon-Decoder nach einem der Ansprüche 26 bis 29, weiter dadurch gekennzeichnet, dass ein Dateneingabetaktsignal, das zum Schreiben von Daten in das Speicherbauelement verwendet wird, und ein Systemtaktsignal, das zum Betrieb jedes Blocks des Reed-Solomon-Decoders verwendet wird, gleich sind.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2000-0062904A KR100370239B1 (ko) | 2000-10-25 | 2000-10-25 | 고속 블럭 파이프라인 구조의 리드-솔로몬 디코더에적용하기 위한 메모리 장치와 메모리 액세스 방법 및 그메모리 장치를 구비한 리드-솔로몬 디코더 |
KR2000-62904 | 2000-10-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10133595A1 DE10133595A1 (de) | 2002-05-29 |
DE10133595B4 true DE10133595B4 (de) | 2009-01-22 |
Family
ID=19695352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10133595A Expired - Fee Related DE10133595B4 (de) | 2000-10-25 | 2001-07-02 | Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder |
Country Status (8)
Country | Link |
---|---|
US (1) | US6639865B2 (de) |
JP (1) | JP3862062B2 (de) |
KR (1) | KR100370239B1 (de) |
CN (1) | CN1317643C (de) |
DE (1) | DE10133595B4 (de) |
GB (1) | GB2369215B (de) |
NL (1) | NL1018416C2 (de) |
TW (1) | TW514933B (de) |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282128A1 (en) * | 1999-08-04 | 2008-11-13 | Super Talent Electronics, Inc. | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance |
KR100403634B1 (ko) * | 2001-10-17 | 2003-10-30 | 삼성전자주식회사 | 고속 파이프라인 리드-솔로몬 디코더에 적용하기 위한메모리 장치와 메모리 액세스 방법 및 그 메모리 장치를구비한 리드-솔로몬 디코더 |
GB2391769B (en) * | 2002-07-31 | 2005-07-06 | Hewlett Packard Co | Reed-Solomon decoder and decoding method for errors and erasures decoding |
US7237183B2 (en) * | 2003-03-04 | 2007-06-26 | Broadcom Corporation | Parallel decoding of a BCH encoded signal |
US7206992B2 (en) * | 2003-03-04 | 2007-04-17 | Broadcom Corporation | Decoding a received BCH encoded signal |
KR100553691B1 (ko) * | 2003-06-17 | 2006-02-24 | 윈텍 주식회사 | 영상처리장치 및 그 방법 |
KR20070102753A (ko) * | 2005-02-14 | 2007-10-19 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 크기가 축소된 메모리 테이블에 의한 블록 인터리빙 |
JP2008141276A (ja) * | 2006-11-30 | 2008-06-19 | Sanyo Electric Co Ltd | Tv信号処理回路 |
US8732558B1 (en) * | 2007-04-25 | 2014-05-20 | Samsung Electronics Co., Ltd. | MPE-FEC system capable of selecting an FEC mode, a forward error correcting method performed in the MPE-FEC system, and an FEC mode selecting method performed in the MPE-FEC system |
US8365040B2 (en) | 2007-09-20 | 2013-01-29 | Densbits Technologies Ltd. | Systems and methods for handling immediate data errors in flash memory |
WO2009037697A2 (en) | 2007-09-20 | 2009-03-26 | Densbits Technologies Ltd. | Improved systems and methods for determining logical values of coupled flash memory cells |
JP2009100369A (ja) * | 2007-10-18 | 2009-05-07 | Toshiba Corp | 誤り検出訂正回路、半導体メモリコントローラ、および誤り検出訂正方法 |
US8694715B2 (en) | 2007-10-22 | 2014-04-08 | Densbits Technologies Ltd. | Methods for adaptively programming flash memory devices and flash memory systems incorporating same |
WO2009053961A2 (en) | 2007-10-25 | 2009-04-30 | Densbits Technologies Ltd. | Systems and methods for multiple coding rates in flash devices |
US8607128B2 (en) * | 2007-12-05 | 2013-12-10 | Densbits Technologies Ltd. | Low power chien-search based BCH/RS decoding system for flash memory, mobile communications devices and other applications |
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 |
WO2009072104A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith |
US8276051B2 (en) * | 2007-12-12 | 2012-09-25 | Densbits Technologies Ltd. | Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications |
US20090157946A1 (en) * | 2007-12-12 | 2009-06-18 | Siamak Arya | Memory having improved read capability |
WO2009074978A2 (en) | 2007-12-12 | 2009-06-18 | Densbits Technologies Ltd. | Systems and methods for error correction and decoding on multi-level physical media |
WO2009078006A2 (en) | 2007-12-18 | 2009-06-25 | Densbits Technologies Ltd. | Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith |
WO2009118720A2 (en) | 2008-03-25 | 2009-10-01 | Densbits Technologies Ltd. | Apparatus and methods for hardware-efficient unbiased rounding |
US8332725B2 (en) | 2008-08-20 | 2012-12-11 | Densbits Technologies Ltd. | Reprogramming non volatile memory portions |
KR101008945B1 (ko) * | 2008-10-10 | 2011-01-17 | 김영운 | 상판 접이식 테이블 |
US8458574B2 (en) | 2009-04-06 | 2013-06-04 | Densbits Technologies Ltd. | Compact chien-search based decoding apparatus and method |
US8819385B2 (en) | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
US8566510B2 (en) | 2009-05-12 | 2013-10-22 | Densbits Technologies Ltd. | Systems and method for flash memory management |
US8868821B2 (en) | 2009-08-26 | 2014-10-21 | Densbits Technologies Ltd. | Systems and methods for pre-equalization and code design for a flash memory |
US9330767B1 (en) | 2009-08-26 | 2016-05-03 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory module and method for programming a page of flash memory cells |
US8995197B1 (en) | 2009-08-26 | 2015-03-31 | Densbits Technologies Ltd. | System and methods for dynamic erase and program control for flash memory device memories |
US8305812B2 (en) | 2009-08-26 | 2012-11-06 | Densbits Technologies Ltd. | Flash memory module and method for programming a page of flash memory cells |
US8730729B2 (en) | 2009-10-15 | 2014-05-20 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
US8724387B2 (en) | 2009-10-22 | 2014-05-13 | Densbits Technologies Ltd. | Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages |
US8626988B2 (en) | 2009-11-19 | 2014-01-07 | Densbits Technologies Ltd. | System and method for uncoded bit error rate equalization via interleaving |
TWI425519B (zh) * | 2009-12-09 | 2014-02-01 | Nat Chip Implementation Ct Nat Applied Res Lab | 低複雜度低密度同位元檢查碼解碼器之記憶體配置方法及其解碼器結構 |
US9037777B2 (en) | 2009-12-22 | 2015-05-19 | Densbits Technologies Ltd. | Device, system, and method for reducing program/read disturb in flash arrays |
US8607124B2 (en) | 2009-12-24 | 2013-12-10 | Densbits Technologies Ltd. | System and method for setting a flash memory cell read threshold |
US8700970B2 (en) | 2010-02-28 | 2014-04-15 | Densbits Technologies Ltd. | System and method for multi-dimensional decoding |
US8527840B2 (en) | 2010-04-06 | 2013-09-03 | Densbits Technologies Ltd. | System and method for restoring damaged data programmed on a flash device |
US8516274B2 (en) | 2010-04-06 | 2013-08-20 | Densbits Technologies Ltd. | Method, system and medium for analog encryption in a flash memory |
US8745317B2 (en) | 2010-04-07 | 2014-06-03 | Densbits Technologies Ltd. | System and method for storing information in a multi-level cell memory |
US9021177B2 (en) | 2010-04-29 | 2015-04-28 | Densbits Technologies Ltd. | System and method for allocating and using spare blocks in a flash memory |
US8510639B2 (en) | 2010-07-01 | 2013-08-13 | Densbits Technologies Ltd. | System and method for multi-dimensional encoding and decoding |
US8539311B2 (en) | 2010-07-01 | 2013-09-17 | Densbits Technologies Ltd. | System and method for data recovery in multi-level cell memories |
US8467249B2 (en) | 2010-07-06 | 2013-06-18 | Densbits Technologies Ltd. | Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system |
US8964464B2 (en) | 2010-08-24 | 2015-02-24 | Densbits Technologies Ltd. | System and method for accelerated sampling |
US8508995B2 (en) | 2010-09-15 | 2013-08-13 | Densbits Technologies Ltd. | System and method for adjusting read voltage thresholds in memories |
US9063878B2 (en) | 2010-11-03 | 2015-06-23 | Densbits Technologies Ltd. | Method, system and computer readable medium for copy back |
US8850100B2 (en) | 2010-12-07 | 2014-09-30 | Densbits Technologies Ltd. | Interleaving codeword portions between multiple planes and/or dies of a flash memory device |
JP5622990B2 (ja) * | 2011-01-25 | 2014-11-12 | 富士通テン株式会社 | 画像処理装置、画像表示システム及び画像処理方法 |
JP2012175260A (ja) * | 2011-02-18 | 2012-09-10 | Alpine Electronics Inc | 多重放送受信機 |
US10079068B2 (en) | 2011-02-23 | 2018-09-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Devices and method for wear estimation based memory management |
US8693258B2 (en) | 2011-03-17 | 2014-04-08 | Densbits Technologies Ltd. | Obtaining soft information using a hard interface |
US8990665B1 (en) | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US9396106B2 (en) | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9110785B1 (en) | 2011-05-12 | 2015-08-18 | Densbits Technologies Ltd. | Ordered merge of data sectors that belong to memory space portions |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US8996790B1 (en) | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
US9195592B1 (en) | 2011-05-12 | 2015-11-24 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
US9372792B1 (en) | 2011-05-12 | 2016-06-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US8667211B2 (en) | 2011-06-01 | 2014-03-04 | Densbits Technologies Ltd. | System and method for managing a non-volatile memory |
US8588003B1 (en) | 2011-08-01 | 2013-11-19 | Densbits Technologies Ltd. | System, method and computer program product for programming and for recovering from a power failure |
US8732433B2 (en) * | 2011-08-26 | 2014-05-20 | Micron Technology, Inc. | Apparatuses and methods for providing data from multiple memories |
US8553468B2 (en) | 2011-09-21 | 2013-10-08 | Densbits Technologies Ltd. | System and method for managing erase operations in a non-volatile memory |
US8996788B2 (en) | 2012-02-09 | 2015-03-31 | Densbits Technologies Ltd. | Configurable flash interface |
US8947941B2 (en) | 2012-02-09 | 2015-02-03 | Densbits Technologies Ltd. | State responsive operations relating to flash memory cells |
US8996793B1 (en) | 2012-04-24 | 2015-03-31 | Densbits Technologies Ltd. | System, method and computer readable medium for generating soft information |
US8838937B1 (en) | 2012-05-23 | 2014-09-16 | Densbits Technologies Ltd. | Methods, systems and computer readable medium for writing and reading data |
US8879325B1 (en) | 2012-05-30 | 2014-11-04 | Densbits Technologies Ltd. | System, method and computer program product for processing read threshold information and for reading a flash memory module |
US9921954B1 (en) | 2012-08-27 | 2018-03-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for split flash memory management between host and storage controller |
JP2014082574A (ja) * | 2012-10-15 | 2014-05-08 | Samsung Electronics Co Ltd | 誤り検出訂正回路、及びメモリ装置 |
US9368225B1 (en) | 2012-11-21 | 2016-06-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Determining read thresholds based upon read error direction statistics |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
US9136876B1 (en) | 2013-06-13 | 2015-09-15 | Densbits Technologies Ltd. | Size limited multi-dimensional decoding |
US9413491B1 (en) | 2013-10-08 | 2016-08-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for multiple dimension decoding and encoding a message |
US9397706B1 (en) | 2013-10-09 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for irregular multiple dimension decoding and encoding |
US9348694B1 (en) | 2013-10-09 | 2016-05-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9786388B1 (en) | 2013-10-09 | 2017-10-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9536612B1 (en) | 2014-01-23 | 2017-01-03 | Avago Technologies General Ip (Singapore) Pte. Ltd | Digital signaling processing for three dimensional flash memory arrays |
US10120792B1 (en) | 2014-01-29 | 2018-11-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Programming an embedded flash storage device |
US9542262B1 (en) | 2014-05-29 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Error correction |
US9892033B1 (en) | 2014-06-24 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of memory units |
US9972393B1 (en) | 2014-07-03 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Accelerating programming of a flash memory module |
US9584159B1 (en) | 2014-07-03 | 2017-02-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Interleaved encoding |
US9449702B1 (en) | 2014-07-08 | 2016-09-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Power management |
US9524211B1 (en) | 2014-11-18 | 2016-12-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Codeword management |
US10305515B1 (en) | 2015-02-02 | 2019-05-28 | Avago Technologies International Sales Pte. Limited | System and method for encoding using multiple linear feedback shift registers |
US10628255B1 (en) | 2015-06-11 | 2020-04-21 | Avago Technologies International Sales Pte. Limited | Multi-dimensional decoding |
US9851921B1 (en) | 2015-07-05 | 2017-12-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory chip processing |
US9954558B1 (en) | 2016-03-03 | 2018-04-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Fast decoding of data stored in a flash memory |
CN106023346B (zh) * | 2016-07-06 | 2018-08-14 | 福州瑞芯微电子股份有限公司 | 动态帧率行车记录系统及车辆速度判断装置 |
CN107766284B (zh) * | 2017-09-11 | 2021-09-07 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于片外缓存的流水统计方法和统计芯片 |
US10965929B1 (en) * | 2019-01-04 | 2021-03-30 | Rockwell Collins, Inc. | Depth mapping and parallel distortion correction for mixed reality |
CN112835523A (zh) * | 2021-02-02 | 2021-05-25 | 致真存储(北京)科技有限公司 | 一种存储系统及其数据存取的方法 |
US11962327B2 (en) * | 2022-01-13 | 2024-04-16 | Micron Technology, Inc. | Iterative decoding technique for correcting DRAM device failures |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4725987A (en) * | 1985-10-23 | 1988-02-16 | Eastman Kodak Company | Architecture for a fast frame store using dynamic RAMS |
US6081920A (en) * | 1998-01-08 | 2000-06-27 | Lsi Logic Corporation | Method and apparatus for fast decoding of a Reed-Solomon code |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6172327A (ja) | 1984-09-17 | 1986-04-14 | Casio Comput Co Ltd | 画像メモリのアドレス分配方式 |
DE3687739T2 (de) * | 1985-12-02 | 1993-08-19 | Ibm | Speicheranordnung mit mehrfachem lese-schreibzugriff. |
CN1009047B (zh) * | 1985-12-27 | 1990-08-01 | 复旦大学 | 交叉穿插的里德-所罗门码的高速纠错译码系统 |
EP0261751A3 (de) * | 1986-09-25 | 1990-07-18 | Tektronix, Inc. | Simultanes Speicherzugriffssystem |
DE3715885A1 (de) | 1987-05-13 | 1988-11-24 | Philips Patentverwaltung | Vorfeldeinrichtung, insbesondere fuer ein b-isdn-vermittlungssystem |
US4845713A (en) | 1987-06-08 | 1989-07-04 | Exabyte Corporation | Method and apparatus for determining the coefficients of a locator polynomial |
US5226134A (en) * | 1990-10-01 | 1993-07-06 | International Business Machines Corp. | Data processing system including a memory controller for direct or interleave memory accessing |
KR940001590B1 (ko) * | 1991-07-05 | 1994-02-25 | 한국전기통신공사 | 블럭읽기 및 쓰기에서의 메모리 엑세스 시간 단축장치 및 방법 |
US5307314A (en) * | 1991-07-15 | 1994-04-26 | Micron Technology, Inc. | Split read/write dynamic random access memory |
US5459742A (en) * | 1992-06-11 | 1995-10-17 | Quantum Corporation | Solid state disk memory using storage devices with defects |
US5615355A (en) * | 1992-10-22 | 1997-03-25 | Ampex Corporation | Method and apparatus for buffering a user application from the timing requirements of a DRAM |
SG47466A1 (en) | 1993-11-04 | 1998-04-17 | Cirrus Logic Inc | Reed-solomon decoder |
DE69430982T2 (de) | 1993-12-09 | 2003-03-13 | Sun Microsystems, Inc. | Verschachtelung von Bildelementdaten für eine Darstellungspeicherschnittstelle |
US5506810A (en) * | 1994-08-16 | 1996-04-09 | Cirrus Logic, Inc. | Dual bank memory and systems using the same |
US6094703A (en) * | 1995-02-21 | 2000-07-25 | Micron Technology, Inc. | Synchronous SRAM having pipelined memory access enable for a burst of addresses |
KR0170723B1 (ko) | 1995-12-29 | 1999-03-30 | 김광호 | 단일 ras 신호에 의해 동시 동작이 가능한 이중 뱅크를 갖는 반도체 메모리 장치 |
US6023745A (en) * | 1996-08-08 | 2000-02-08 | Neomagic Corporation | Scoreboarding for DRAM access within a multi-array DRAM device using simultaneous activate and read/write accesses |
US6031783A (en) * | 1996-08-09 | 2000-02-29 | Townsend And Townsend And Crew Llp | High speed video frame buffer |
US5774648A (en) | 1996-10-02 | 1998-06-30 | Mitsubishi Semiconductor Of America, Inc. | Address generator for error control system |
JP3233860B2 (ja) * | 1996-10-25 | 2001-12-04 | 松下電器産業株式会社 | リードソロモン復号器 |
US5961660A (en) | 1997-03-03 | 1999-10-05 | International Business Machines Corporation | Method and apparatus for optimizing ECC memory performance |
JP3250032B2 (ja) | 1997-04-09 | 2002-01-28 | 日本アイ・ビー・エム株式会社 | 動的バンド幅変更データ転送方法及びシステム |
US6044206A (en) * | 1997-10-14 | 2000-03-28 | C-Cube Microsystems | Out of order instruction processing using dual memory banks |
US6137807A (en) * | 1997-12-05 | 2000-10-24 | Whittaker Corporation | Dual bank queue memory and queue control system |
US5969986A (en) | 1998-06-23 | 1999-10-19 | Invox Technology | High-bandwidth read and write architectures for non-volatile memories |
KR100313503B1 (ko) * | 1999-02-12 | 2001-11-07 | 김영환 | 멀티-뱅크 메모리 어레이를 갖는 반도체 메모리 장치 |
US6347389B1 (en) * | 1999-03-23 | 2002-02-12 | Storage Technology Corporation | Pipelined high speed reed-solomon error/erasure decoder |
-
2000
- 2000-10-25 KR KR10-2000-0062904A patent/KR100370239B1/ko not_active Expired - Fee Related
-
2001
- 2001-04-12 US US09/832,943 patent/US6639865B2/en not_active Expired - Fee Related
- 2001-06-12 TW TW090114114A patent/TW514933B/zh not_active IP Right Cessation
- 2001-06-29 NL NL1018416A patent/NL1018416C2/nl not_active IP Right Cessation
- 2001-07-02 DE DE10133595A patent/DE10133595B4/de not_active Expired - Fee Related
- 2001-07-03 GB GB0116275A patent/GB2369215B/en not_active Expired - Fee Related
- 2001-07-09 CN CNB011224436A patent/CN1317643C/zh not_active Expired - Fee Related
- 2001-07-18 JP JP2001218754A patent/JP3862062B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4725987A (en) * | 1985-10-23 | 1988-02-16 | Eastman Kodak Company | Architecture for a fast frame store using dynamic RAMS |
US6081920A (en) * | 1998-01-08 | 2000-06-27 | Lsi Logic Corporation | Method and apparatus for fast decoding of a Reed-Solomon code |
Also Published As
Publication number | Publication date |
---|---|
JP3862062B2 (ja) | 2006-12-27 |
KR100370239B1 (ko) | 2003-01-29 |
KR20020032038A (ko) | 2002-05-03 |
JP2002164792A (ja) | 2002-06-07 |
TW514933B (en) | 2002-12-21 |
NL1018416C2 (nl) | 2005-11-15 |
NL1018416A1 (nl) | 2002-05-01 |
GB2369215B (en) | 2003-04-16 |
US6639865B2 (en) | 2003-10-28 |
CN1317643C (zh) | 2007-05-23 |
CN1350369A (zh) | 2002-05-22 |
GB2369215A (en) | 2002-05-22 |
DE10133595A1 (de) | 2002-05-29 |
US20020075715A1 (en) | 2002-06-20 |
GB0116275D0 (en) | 2001-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10133595B4 (de) | Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder | |
DE3850192T2 (de) | Verfahren und Vorrichtung zur Fehlerkorrektur bei gespeicherten Daten. | |
DE60001370T2 (de) | Verfahren und vorrichtung zur erkennung von doppelbitfehlern und korrektur von fehlern durch bauelementfehler verursacht | |
DE3486408T2 (de) | Verfahren und Vorrichtung zur Dekodierung eines fehlerkorrigierenden Kodes. | |
DE69932962T2 (de) | Kodierungsverfahren und Speicheranordnung | |
DE60015753T2 (de) | System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern | |
DE69721076T2 (de) | Verfahren und vorrichtung zur korrektur von mehrpegel-speicherzellenanordungen unter verwendung von verschachtelung | |
DE3853206T2 (de) | Verfahren und gerät zur byteschreibfehlerkodierung. | |
DE3882223T2 (de) | Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden. | |
DE69220818T2 (de) | Verfahren und Einrichtung zur Fehlererkennung in Recherspeichern versehen mit Mehrfach-bit-Ausgängen | |
DE102015201384B4 (de) | Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung | |
DE102013020712B4 (de) | Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern | |
DE69929652T2 (de) | Datenfehlerkorrektursystem | |
DE2942825A1 (de) | Verfahren und vorrichtung zur verarbeitung sequentiell uebertragender digitaler informationsworte | |
DE102017129990B4 (de) | Logisches format, bei dem laterales codieren genutzt wird, zum speichern von daten auf magnetband | |
EP0545498A2 (de) | Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen | |
DE2503107A1 (de) | Korrekturcode fuer impulsfehler | |
DE69317766T2 (de) | Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc) | |
DE102007007546A1 (de) | Fehlerkorrekturcode-Striping | |
DE4105860A1 (de) | Schaltungsanordnung zum erkennen und korrigieren von fehlern in datenworten | |
DE60215687T2 (de) | Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern | |
DE102016104012A1 (de) | Verarbeitung eines Datenworts | |
DE102016102590A1 (de) | Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts | |
DE3851651T2 (de) | Schaltungsanordnung zur Erzeugung von Adressen. | |
DE69837784T2 (de) | Verbessertes fünf-fehler-korrektursystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20150203 |