Fehlererkennungsverfahren in seriellem Datenstrom

Hi Leute, Fehler in einem seriellen Datenstrom (SPI) sollen per CPLD/FPGA erkannt, aber nicht korrigiert werden. Der Datenstrom besteht aus einzelnen Paketen, welche jeweils 14 Bit lang sind. Jedes dieser Pakete soll einzeln gesichert werden.

Einfaches Parity ist zu unsicher.

Ich weiß noch aus der Codierungsvorlesung, dass die meisten Verfahren bei größeren Datenblöcken deutlich weniger Overhead erzeugen. Leider kommen größere Datenblöcke hier nicht in Frage.

Welche Verfahren kommen hier noch in Frage, wenn man z.B. 3 oder 4 Bit für die Fehlererkennung extra spendieren möchte? Es wäre super, wenn mindestens 2 Bitfehler sicher erkennbar sind. Zur Codierung/Decodierung steht ein CPLD zur Verfügung. Allerdings hält sich der verbleibende Platz darin sehr in Grenzen. Es sollte also ein Verfahren sein, dass wenig Resourcen und wenige Takte frisst.

Michael

Reply to
Michael S
Loading thread data ...

Ein ganz passabler Anfang (Lesen der Querverweise ist nicht verboten :->) findet sich hier:

formatting link

--
Jürgen Weinelt
Reply to
Juergen Weinelt

Jepp, Hamming ECC und mehrdimensionale Parität hören sich schonmal nicht schlecht an. Muss ich mir mal genauer anschauen.

Michael

Reply to
Michael S

Wenn Du zwei Bitfehler detektieren willst dann kann man es mit Parity in mehreren Dimensionen probieren. (Parity fuer jedes Bit, Parity fuer jedes zweite Bit, Parity fuer jedes dritte Bit) LDPC waere die FEC Variante davon. Das sollte man auch im CPLD, der ja inhaerent wenig Speicher hat, gut implementierbar sein.

Viele Gruesse, Martin

Reply to
Martin Laabs

Es gibt 3 und 4 Bit CRCs. Polynome in der Liste in dem pdf Koopman "Cyclic Redundancy Code Polynomial Selection for embedded Networks" im www zu finden.

Das klassische aufwandsarme Verfahren ist zwar Schieberegister, sequentiell. Es gibt aber auch eine parallele Implementierung die für Massenspeicher, Datenkanälen zu Satelliten verwendet wurde. Hatte den Vorteil weniger hohe Taktrate in der Logik zu benötigen.

MfG JRD

Reply to
Rafael Deliano

Am 13.03.2013 18:07, schrieb Martin Laabs:

Ich habe jetzt schon ne Weile gegoogelt, aber ne gescheite Quelle, die das schön erklärt und Beispiele zeigt, habe ich noch nicht gefunden, auch, weil ich den richtigen englischen Suchbegriff noch nicht gefunden habe.

So wie ich das verstanden habe, funktioniert das für 16Bit Nutzdaten doch so (0..F entsprechen den 16 Datenbits):

0 1 2 3 P5 4 5 6 7 P6 8 9 A B P7 C D E F P8 P1 P2 P3 P4 P9

Es werden für alle Spalten jeweils die Paritäten gebildet (P1..P4) Dann werden für alle Zeilen die Paritäten gebildet (P5..P8) Zusätzlich wird aus P1..P4 (oder P5..P8) noch P9 gebildet.

Ich finde keine vernünftige Quelle, wieviele Bitfehler in jedem Fall erkannt werden (wohl mindestens 2).

Kreuzparität ist bis jetzt der Favorit, einfach zu verstehen, einfach implementierbar, wenn man nicht korrigieren sondern nur erkennen möchte. Außerdem kann man bei cleverer Anordnung der Parity-Bits sicherstellen, dass im Datenstrom nicht beliebig viele Nullen hintereinander kommen können, was in meinem Fall wünschenswert ist (bei Odd Parity).

Michael

Reply to
Michael S

Michael S schrieb:

Hallo,

formatting link

Bye

Reply to
Uwe Hercksen

Suche nach Hamming Code

formatting link

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Ja. Wobei das am Ende nur eine sehr spezielle Variante eines linearen Blockcodes. Um die Hamming-Distanz zu bestimmen kannst Du alle Codewoerter generieren und die ensprechenden Distanzen zueinander ausrechnen. Mit Matlab und co. sollte das sehr schnell gehen.

Siehe oben. Rechne die Hamming-Distanz aus. Ich weiss nicht ob das schon mal gemacht wurde oder ob es eine analytische Loesung gibt.

Wenn Du wirklich nur 16Bit hast, dann kommst Du mit 5Bit CRC auf eine HD von 3Bit. Du kannst also 2Bit-Fehler sicher detekieren. Und die meistens von den 3Bit-Fehlern auch.

Es gibt natuerliche theoretische Grenzen aber da musst Du mal in ein- nem Grundlagenbuch der Codierungstheorie nachsehen.

Viele Gruesse, Martin

Reply to
Martin Laabs

Ich habe gestern nochmal darueber nachgedacht und mit dieser Anordnung kannst Du 3 Bitfehler sicher detekieren. Was dann wieder undetektiert beleibt sind Fehler in einem Rechteck. Also wenn z.B. Bit 5,7,D und F jeweils invertiert sind.

Von daher glaube ich auch, dass P9 ueberfluessig ist. (Zumin- dest fuer die Detektion weil es sich aus den restlichen Parity- Bits ergibt und wenn von denen eines falsch uebertragen wurde, dann musst Du das Paket ja sowieso nochmal neu uebertragen)

Viele Gruesse, Martin L.

Reply to
Martin Laabs

Am 15.03.2013 07:45, schrieb Martin Laabs:

Hört sich logisch an.

Warum muss ich dann nochmal übertragen? Ich habe das so verstanden, dass, egal welches Bit kippt, auch wenn ein Parity kippt, die Daten repariert werden können. Dem Algorithmus ist doch völlig egal, was Parity ist, und was Daten sind. Die Fehlerkorrektur kann ja auch fehlerhafte Paritys reparieren. Die Paritys sichern die Daten und die Daten sichern im Gegenzug die Paritys.

Michael

Reply to
Michael S

Die sind wenig praxisorientiert.

Das Problem paßt am besten zu den Fehlerkorrektur-ICs für parallelen Datenbus. Die hatten Mitte der 80er Jahre Aufwind als man meinte Alpha-Teilchen wären ein bleibendes Problem bei DRAMs.

Im "Intel 8206 EDCU" waren diese Konfiguationen wählbar:

data checkbits

8 + 5 16 + 6 24 + 6 32 + 7 40 + 7 48 + 8 56 + 8 64 + 8 72 + 8 80 + 8

Anderes IC: IDT49C460 data checkbits

16 + 6 32 + 7 64 + 8

Datenblätter und ApplicationNotes oft noch im www zu finden. Teilweise mit den Tabellen für die Taps der XORs. Die Codes sind nichtzyklisch, deshalb recht theoriefrei, deshalb in Büchern nicht behandelt.

Typisch erreichbar:

data checkbits detektierbar

8 + 5 2 8 + 8 4 16 + 6 2 16 + 9 4 16 + 12 6 32 + 7 2 32 + 10 4 32 + 14 6 64 + 8 2 64 + 12 4 64 + 17 6

Korrigierbar jeweils halb soviel wie detektierbar d.h. 1,2,3

MfG JRD

Reply to
Rafael Deliano

Naja - die Grundlagen (Hamming Distanz/Gewicht), Coderate usw. sind schon nuetzlich.

Kannst Du das etwas ausfuehren? War das Material von den Packages damals kontaminiert oder waren die Prozesse noch nicht so ausgereift. (Aber andererseits waren die Strukturen noch wesentlich groesser.) Ich war damals noch ganz klein - aber ich finde es ganz nuetzlich von alten Geschichten/Fehlern/Fehleinschaetzungen zu lernen.

Danke, Martin

Reply to
Martin Laabs

Am Fri, 15 Mar 2013 20:30:44 UTC schrieb Martin Laabs :

[...]

Ich erinnere mich, dass zu meiner Studienzeit mal ein Dozent erwähnt hat, dass Alpha-Strahlung ein Problem bei Halbleiterspeichern sein könnte.

Damals war ein 6MHz-Z80 mit 150 nsec-EPROMs der absolute Turbo-Porsche ...

Ade

Reinhard

--
"[Diese Gel-Wärmflasche ist ein] Medizinprodukt der Klasse I im Sinne  
der EU-Richtlinie 93/42/EWG"
Reply to
Reinhard Forster

Am 15.03.2013 21:30, schrieb Martin Laabs:

Ich hab mal gehört, daß anno knips Siemens mal Probleme mit keramischen Gehäusen hatte, die mehr radioaktive Spurenelemente enthielten als üblich und daher vermehrt Bitfehler produzierten. Muß so zu der Zeit der

256k bis 1 MBit Speicherchips gewesen sein.

Hanno

Reply to
Hanno Foest

Die letzten DRAMs in Keramik kenne ich als 64KBit (in den ersten C64 z.B.), aber das wars, 256KBit habe ich nie in Keramik gesehen.

Man ist sehr schnell zu Plastik übergegangen, Keramik war einfach zu teuer.

Gerrit

Reply to
Gerrit Heitsch

Am 15.03.2013 23:17, schrieb Gerrit Heitsch:

Ich hab hier noch ne ganze Stange 256KBit in Keramik, von Toshiba.

Hanno

Reply to
Hanno Foest

Datecode drauf?

Gerrit

Reply to
Gerrit Heitsch

Es gab wohl auch 256kBit noch in NMOS

formatting link
und da war Verlustleistung ein Thema.

Zudem war man in der Gehäuseform festgelegt. In der Bemusterungs/Einführungsphase vor dem Shrink waren die Chips oft noch so groß daß man sie nur in sidebrazed Cerdips die wohl speziell für DRAMs entwickelt wurden reinbrachte.

MfG JRD

Reply to
Rafael Deliano

Besser als ich können das Bücher:

formatting link
Es wird heute zwar in urban legends rein den Keramikgehäusen zugeschrieben. Praktisch können soft-errors beim Anwender aber viele Ursachen haben. Z.B. gab es damals neueingeführte hochdichte Keramik- Vielschichtkondensatoren empfohlen als Abblockkerkos für ICs die im Betrieb selbstheilenden Kurzschlüsse ( inclusive kurzzeitige Spannungseinbrüche ) hatten.

Sharma hat hinten noch ein dickes Kapitel Radiation Effects rein für Raumfahrt. Amsat verwendet keine rad-hard Teile. SpaceX auch nicht:

Dragon's "Radiation-Tolerant" Design

formatting link
"Last week, NASA revealed that SpaceX's first commercial resupply mission to the ISS experienced a number of anomalies in addition to the shutdown of a Falcon 9 first-stage engine, including the loss of one of three flight computers on the Dragon cargo vessel due to a suspected radiation hit. Over the weekend I spoke with John Muratore, SpaceX director of vehicle certification, who said the loss of the computer was a function of the radiation-tolerant system design on which Dragon relies, rather than hard-to-come-by "rad-hardened" parts that can be costly and difficult to upgrade. ... "

Ob man damit zum Mars kommt wird sich zeigen.

Mehr Nährwert zum Thema des threads hat:

formatting link
( alles scans des Comast Technical Reviews , anhand des cumulative-index pdf suchen )

CTR V14-2 Fall 1984 [pdf] Inukai, Snyder "Parallel implementation of linear feedback shift register circuits"

D.h. normalerweise sieht die parallele Implementierung optisch so aus als ob sie mehr Bauteile als die serielle benötigt. Die serielle muß aber dafür höher getaktet werden. In diesem Falle wurde festgestellt daß die ungeliebte serielle ECL-Implementierung auf Leiterplatte voluminöser war als die parallele die in langsamen 74Sxx laufen konnte. Weil ECL Logik-ICs geringere Integrationsdichte als 74Sxx hat.

MfG JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.