Forum: FPGA, VHDL & Co. Algorithmus für intelligente Datenrekonstruktion


von Berndt Eggebrecht (Gast)


Lesenswert?

Ich möchte mit einem Präprozessor eine Art der Datenrekonstruktion für 
fehlerhaft gesendete Daten realisieren, um angeschlossenen Endgeräten 
eine Rekonstruktion bzw. ein Ausblenden zu ersparen, sodass diese ihre 
einfach Filtersoftware nutzen können. Bei den meisten Endgeräten ist es 
nicht möglich, die Daten als falsch zu markieren und sie besitzen ausser 
dem Filter keine Erkennung.

Die Datenaussetzer kommen von defekten Messtellen / Leitungen der 
erzeugenden Einheit die produktionsbedingt vorliegen und interpoliert 
werden. Das Problem ist, dass man nicht einfach garnichts senden kann, 
sondern dem nachfolgenden System einen Wert geben muss, weil dieser 
permanent taktet und es in die Filterkette läuft.

Das bisherige Verfahren war, einfach den alten Wert zu halten, bis ein 
gültiger neuer kommt, was bei schnell ändernden Daten und aufeinander 
folgenden Fehldaten zu ziemlichen Sprüngen führt.

Als Beispiel sei eine Rampe und ein Rechteck gezeigt:

REAL   1 2 3 4 5 6 7 8  (Physik)
DATA   1 2 3 x x 6 7 8  (gelesen)
REKO   1 2 3 3 3 6 7 8  (gesendet)

Das Ergebnis der Rampe führt zu einem Sprung und einem schwingenden 
Filter, weil die Verbraucher die "3,6" sehen und falsch und stark 
überschwingen. Bei dem Rechteck wiederum kommt es zu einer künstlichen 
Kante:

REAL   1 1 1 1 9 9 9 9
DATA   1 1 1 1 x x 9 9
REKO   1 1 1 1 1 1 9 9

Ich würde das gerne interpolieren und dabei Kanten erhalten, wenn 
möglich.
Wie könnte man das lösen?

Ich habe die Möglichkeit, bis zu 4 Daten zu puffern und zu betrachten, 
bevor ich ausgeben muss. Damit könnte man eine Zeile mit 9 Daten in 
einen Digitalfilter schieben. Der muss aber mit wenigen steps 
entscheiden, was ausgegeben wird. Ich bräuchte so eine Art "analogen 
Mehrheitsentscheider" der Löcher stopfen kann und dabei die Steigungen 
berücksichtigen kann.

Kennt dazu jemand Literatur?

Ich brauche eine Umsetzung für einen FPGA, weil die Daten mit 80 MHz 
kommen und das auf 7 Leitungen.

von Klaus (Gast)


Lesenswert?

Das erste was mir einfällt, ist eine Art "Filter" der sich einfach die 
Daten anschaut und sie nach gewissen Regeln ersetzt.

Z.B. Deine "Rampe" - wobei vorausgesetzt wird, dass dieser spezielle 
Sensor immer nur Rampen sendet.

REAL   1 2 3 4 5 6 7 8  (Physik)
DATA   1 2 3 x x 6 7 8  (gelesen)
REKO   1 2 3 4 5 6 7 8  (gesendet)

Einfach lineare Interpolation.

In dem Rechteckfall ähnlich, wobei Du nur herausfinden musst, was das 
geringere Übel ist resp. die optimale Position für die "gefakte" Flanke 
und wie oben immer vorausgesetzt wird, dass dieser Sensor immer 
Rechtecke sendet

Schwieriger wird es wenn auf einer Leitung mehrere grundverschiedene 
Signale, also mal ein Sinus und mal ein Rechteck kommen.

Mann müsste mal mehr über das System und die Sensoren wissen - bzw. Du 
müsstest einfach mal für Dich Material zusammenstellen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Berndt Eggebrecht schrieb:
> weil die Daten mit 80 MHz kommen und das auf 7 Leitungen.
Ist das 1 einziger 7-Bit Vektor?

> Das bisherige Verfahren war, einfach den alten Wert zu halten, bis ein
> gültiger neuer kommt,
Du hast also eine Information, ob der Vektor "gültig" ist?

> Ich habe die Möglichkeit, bis zu 4 Daten zu puffern und zu betrachten,
> bevor ich ausgeben muss.
Du kannst dir also 4 Takte Latency erlauben? Dann sieht das irgendwie 
nach (linearer) Interpolation aus.

Aaaaber:
Wieviele "Daten" sind hintereinander maximal ungültig?
Bei mehr als 3 wird kritisch, denn "in die Zukunft sehen" geht nur bei 
periodischen Signalen...

Zwei grundlegende Fragen:
Warum ist das Signal gestört?
Und warum reagiert der Regler so bissig darauf?

: Bearbeitet durch Moderator
von Berndt Eggebrecht (Gast)


Lesenswert?

Leider kann da allesmögliche kommen. Die Rampen sind nur Beispiele von 
dem, was theoretisch übertragen werden kann.

Die Sensorik liefert durchaus auch welliges und rauscht. Das Rauschen 
wird später bekämpft, nur muss dazu einigermassen sinnvoll interpoliert 
werden.

Man könnte jetzt Fallunterscheidungen machen, aber da kommen viele 
Kombinationen zusammen.

Was vielleicht noch erwähnt werden kann, ist, dass es ein Zeitverhalten 
gibt. Die Sensorik liefert ein leicht zeitversetztes Signal derselben 
Situation. Aufgrund von Relaxationsverhalten sind vormals gestörte 
Leitungen dann wieder i.O.

Es entsteht damit ein 2D-Datenfeld, in dem einzelne Datenpunkte fehlen, 
teilweise Linien in der Zeitachse fehlen.

Man könnte mit etwas Geschick die Folgewerte nutzen, um Informationen zu 
gewinnen - z.B. so:


3 3 3 3 x x x 7 7 7
4 4 4 4 4 x x 8 8 8
5 5 5 5 5 5 5 9 9 9

Man kann nun annehmen, dass der Sprung in der ersten Zeile durchaus kurz 
vor der 7 war - im einem anderen Fall könnte es auch kurz nach der 
letzten 3.

von Berndt Eggebrecht (Gast)


Lesenswert?

Lothar M. schrieb:
> Ist das 1 einziger 7-Bit Vektor?

Nein es sind 7 vollkommen unabhängige Daten. Ich brauche die Schaltung 
also 7mal. Die Daten haben praktisch nichts miteinander zu tun. Die 
Bitbreite sind 18 Bit vom ADC.

von Mark B. (markbrandis)


Lesenswert?

Der letztere Fall (Kante) ist ohne zusätzliche Informationen meines 
Erachtens nicht lösbar. Denn aus:

DATA   1 1 1 1 x x 9 9

könnte man rekonstruieren:

DATA   1 1 1 1 1 1 9 9 oder
DATA   1 1 1 1 1 9 9 9 oder
DATA   1 1 1 1 9 9 9 9

und man weiß nicht, welcher der drei Fälle tatsächlich vorgelegen hat. 
Man könnte zwar zum Beispiel 1 1 1 1 3 6 9 9 daraus machen (siehe auch 
unten), nur hat man dann eben auch keine saubere Kante mehr.

Allerdings mag es mit zusätzlicher Information anders aussehen. Wenn man 
erwarten kann, dass ein Rechtecksignal mit einer bestimmten Frequenz 
vorliegt, dann kann man berechnen wann die nächste Signalflanke erfolgen 
müsste. Damit könnte man die Kante nachträglich an der Stelle wieder 
"einbauen", wo sie hingehört.

Im Fall der Rampe wäre es so:

> DATA   1 2 3 x x 6 7 8  (gelesen)

6 minus 3 ergibt 3. 3 geteilt durch drei (drei Schritte von der 3 bis 
zur 6) ergibt 1. Somit ist pro fehlendem Datenwert jeweils um diesen 
berechneten Wert hochzuzählen, ausgehend vom letzten gültigen Datenwert. 
Also linear interpoliert eben.

: Bearbeitet durch User
von Mark B. (markbrandis)


Lesenswert?

Berndt Eggebrecht schrieb:
> Leider kann da allesmögliche kommen.

Äh ja. Das macht die Sache natürlich total viel einfacher. ;-)

Vielleicht für den Anfang mal linear interpolieren und sehen, wie weit 
man damit kommt?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Die andere Möglichkeit wäre eine (lineare) Extrapolation. Du nimmst 
die vorige Steigung und machst mit dieser weiter, bis wieder ein 
gültiger Wert kommt.

Dumm wäre dann nur, wenn du dabei dann übers Ziel "hinausschießt"...

Und nach wie vor unklar ist mir, wie du die ungültigen 18-Bit-Werte 
erkennst.

von Klaus (Gast)


Lesenswert?

Berndt Eggebrecht schrieb:
> Leider kann da allesmögliche kommen. Die Rampen sind nur Beispiele von
> dem, was theoretisch übertragen werden kann.
> Die Sensorik liefert durchaus auch welliges und rauscht. Das Rauschen
> wird später bekämpft, nur muss dazu einigermassen sinnvoll interpoliert
> werden.

Das macht die Sache schwierig. Gibt es überhaupt irgendein Modell des 
Dings, an dem die Sensoren hängen?

> Man könnte jetzt Fallunterscheidungen machen, aber da kommen viele
> Kombinationen zusammen.

Das könnte sein. Es gibt durchaus Situationen die sich nicht durch 
einfache, geschlossene Beschreibungen modellieren lassen. In dem Fall 
muss man eben ein komplexes Modell mit vielen Fallunterscheidungen 
erstellen. (Ich erinnere mich an eine Erklärung aus der Graphentheorie, 
die viele Einzelfälle nannte und meine Verwunderung darüber, wie denn 
der arme Mensch festgestellt hat, dass er alle Fälle erfasst hat). 
Danach kann man evtl. vereinfachen.

> Was vielleicht noch erwähnt werden kann, ist, dass es ein Zeitverhalten
> gibt. Die Sensorik liefert ein leicht zeitversetztes Signal derselben
> Situation. Aufgrund von Relaxationsverhalten sind vormals gestörte
> Leitungen dann wieder i.O.
>
> Es entsteht damit ein 2D-Datenfeld, in dem einzelne Datenpunkte fehlen,
> teilweise Linien in der Zeitachse fehlen.
>
> Man könnte mit etwas Geschick die Folgewerte nutzen, um Informationen zu
> gewinnen - z.B. so:
>
>
> 3 3 3 3 x x x 7 7 7
> 4 4 4 4 4 x x 8 8 8
> 5 5 5 5 5 5 5 9 9 9
>
> Man kann nun annehmen, dass der Sprung in der ersten Zeile durchaus kurz
> vor der 7 war - im einem anderen Fall könnte es auch kurz nach der
> letzten 3.

Nun, das ist - jedenfalls meiner Meinung nach - kein Problem das man mit 
einem kurzen Tip aus dem Forum erschlagen kann. Es wird von Vorteil 
sein, wenn Du uns eine recht detaillierte Beschreibung gibst; bis jetzt 
beschränkt sich das ja auf eine numerisches Darstellung. Auch wenn Du 
uns das hier nicht öffentlich machen willst, solltest Du Dir, wie ich 
schon heute Nacht erwähnte, für Dich selbst eine vollständige Analyse 
durchführen.

Literaturtips kann ich leider nicht geben. Die Suchworte sind Dir, wenn 
ich das recht sehe, bekannt.


Mir geht die ganze Zeit Kalman durch den Kopf. Weiss nicht ob das 
wirklich passt. Aber dafür brauchst Du jedenfalls ein Modell der Mimik 
von der die Sensordaten abgenommen werden. "Dead Reckoning", 
Interpolation, Filter sind durchaus passend, meine ich.

Schade, dass ich nicht viel helfen kann. Vielleicht fällt noch jemandem 
was ein.

Viel Erfolg

von Klaus (Gast)


Lesenswert?

Offen gesagt, würde ich vermutlich einige Energie darein stecken, die 
Sensoren, die Verbindungen zu verbessern und/oder die Verarbeitung im 
Empfänger, die wenigstens Ausfälle behandeln können sollte. Vermutlich 
hast Du das aber schon probiert und/oder es geht aus irgendeinem Grund 
nicht (sowas scheinst Du mir ja schon angedeutet zu haben).

von Klaus (Gast)


Lesenswert?

Bayes habe ich ganz vergessen. Damit gehen auch Parameterschätzungen. 
Aber wie gesagt: Meiner Meinung nach läuft ohne Modell gar nichts. Eben 
auch der Leitungen und der Störungen darauf.

von Mark B. (markbrandis)


Lesenswert?

Klaus schrieb:
> Offen gesagt, würde ich vermutlich einige Energie darein stecken, die
> Sensoren, die Verbindungen zu verbessern und/oder die Verarbeitung im
> Empfänger, die wenigstens Ausfälle behandeln können sollte.

Sehe ich auch so. Eine eventuell schlecht geschirmte Leitung sollte man 
nicht durch Purzelbäume schlagen in der Software korrigieren.

von Berndt Eggebrecht (Gast)


Lesenswert?

Lothar M. schrieb:
> Und nach wie vor unklar ist mir, wie du die ungültigen 18-Bit-Werte
> erkennst.

Es gibt zwei Methoden: Einmal kommt aus einer Kalibrierung ein Wert der 
sagt, ob die Leitungen übersteuert sind, ob sie defekt sind und ob daher 
Unsinn kommt, und andermal muss ich das anhand von Datensprüngen selber 
erkennen. Kriterien muss ich ausarbeiten.


Klaus schrieb:
> Gibt es überhaupt irgendein Modell des
> Dings, an dem die Sensoren hängen?

DA bin ich dran :-)


Klaus schrieb:
> "Dead Reckoning",
> Interpolation, Filter sind durchaus passend, meine ich.

Danke für das Stichwort. Das sehe ich nach.


Klaus schrieb:
> Offen gesagt, würde ich vermutlich einige Energie darein stecken, die
> Sensoren, die Verbindungen zu verbessern

Das haben wir nicht in der Hand. Kommt vom Zulieferer. Technologisch ist 
das auch ziemlich ausgereift.


Klaus schrieb:
> Bayes habe ich ganz vergessen. Damit gehen auch Parameterschätzungen.

Danke. Auch das werde ich nachsehen. Klingt super!

von Klaus (Gast)


Lesenswert?

Berndt Eggebrecht schrieb:
> Klaus schrieb:
>> Offen gesagt, würde ich vermutlich einige Energie darein stecken, die
>> Sensoren, die Verbindungen zu verbessern
>
> Das haben wir nicht in der Hand. Kommt vom Zulieferer. Technologisch ist
> das auch ziemlich ausgereift.

Nun, offen gesagt, empfinde ich diese Aussage, in Verbindung mit dieser:

> Die Datenaussetzer kommen von defekten Messtellen / Leitungen ...
(aus Deinem ersten Posting)

als widersprüchlich; zumindest erklärungsbedürftig. Selbst wenn man 
keine grundsätzlichen Defekte unterstellt, so würde ich von einem System 
erwarten, dass es in sich auf Fehler vorbereitet ist wenn sie Problem 
aufwerfen und Du nicht vor solchen Aufgaben stehst.

Es würde mich doch ein wenig interessieren, wie sich diese beiden 
Aussagen miteinander vereinbaren lassen.

Wie auch immer: Viel Erfolg.

von Berndt Eggebrecht (Gast)


Lesenswert?

Es handelt sich um eine Art Detektor. Dieser ist technologisch bedingt 
nicht perfekt. Es gibt sowohl Sensitivitäts- als auch 
Halbleiterartefakte. Da die Wafer sehr gross sind, ist es praktisch 
nicht möglich, perfekte Sensorik zu betreiben. Dies ist deshalb auch 
nicht nötig, weil es auch "Überbelichtung" = "sparking" gibt, die Daten 
dynamisch runinieren.

Die Kriterieren, wann ein Datum ok ist, werdne letztlich feststehen, 
sodass ich in meinem Teil nur die Info bekomme: "Datum ok" / "Datum 
kaputt". Dann soll es interpoliert / rekonstruiert werden.

Inbegriffen ist auch noch eine weitere Funktion, nämlich ein 
Zwischenspeicher mit Resampler für Emfänger, die auch anderen Frequenzen 
laufen.

Ich brauche jetzt einfach die Datenrekonstruktion. Einen Resampler habe 
ich schon.

von J. S. (engineer) Benutzerseite


Lesenswert?

Eine wirkliche Datenrekonstruktion kann es nur geben, wenn es andere 
Kriterien gibt, nach denen man ein Filter erstellen kann, z.b. die 
Information, wie schnell sich ein Datum ändern kann. Das wirkt dann auf 
die Grenzfrequenz des Filters. Letztlich wird es ein 
Interpolationsfilter sein müssen, bzw. mehrere mit verschiedenen 
Annahmen.

Unklar ist, wie in Deinem Fall die zeitliche Komponente ist Spiel kommt. 
So wie ich das lese, müsste sich der reale Verlauf eines Datensignals in 
der einen Zeit dadurch rekonstruieren lassen, indem man das Verhältnis 
zu seinen Nachbarpunkten in der anderen Zeit betrachtet. Sowas läuft auf 
eine 2D-Wellenfeld-Interpolation hinaus. Dazu muss man aber mehrere 
Zeiten speichern. Ist das eine Art Zeilensensor?

Letztlich ist das alles immer eine Kaffesatzleserei. Wichtig ist, dass 
der neue Wert nicht auffällt. Dabei ist vor allem das Verhalten das 
nachfolgenden Systems wichtig. Je toleranter dies gegenüber schnellen 
Änderungen ist, desto konservativer muss man filtern.

von uwe (Gast)


Lesenswert?

Wenn du das Grundlegende Problem nicht besetigen kannst bleibt dir nur 
noch übrig das Signal so zu verändern(filtern), daß das nachfolgende 
System nicht ins schwingen kommt. Die Sensoren werden ja wohl ein 
zeitliches Verhalten haben! Also wie kann es sein, daß da so steile 
flanken in einem korrektem Signal vorkommen. Man könnte mit höherer 
Frequenz abtasten und Sensorwerte, die eigentlich Physikalisch nicht 
möglich sind rauswerfen(bzw. interpolieren).
Zeig doch mal einen echten Signal Stream. Am besten vom Oszilloskop.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.