Forum: FPGA, VHDL & Co. Interpolationsfilter für diskontinuierliche Daten


von C.F. (Gast)


Lesenswert?

Ich brauche ein Interpolationsfilter (Geraden / Quadrate), welches mit 
zeitlich nicht gleichmäßig ankommenden Daten gefüttert werden- und zu 
einem beliebigen Zeitpunkt abgetastet werden kann.

Die Daten kommen mit einem Zeitstempel, der so aussieht:

t      k(t)
11.2   78.0
12.3   80.1
13.9   86.7
14.1   85.2
14.9   76.3

Das wäre ein Bogen. Ich weiss im Vorhinein nicht, wann das nächste 
"update" der Daten kommt, jedoch ist gewährleistet, daß kein Zeitpunkt 
abgefragt wird, der nicht schon durchschritten ist.

Abgefragt werden soll dann z.B.

k(t=10.41)?
k(t=10.52)?
k(t=10.63)?
k(t=10.74)?

also mit "krummen" Abtastwerten in der Zieldomain.


Wie macht man das?

von Klaus W. (mfgkw)


Lesenswert?


von Klaus W. (mfgkw)


Lesenswert?

ach so, wenn dir Geraden auch reichen: lineare Interpolation 
natürlich...

von Klaus W. (mfgkw)


Lesenswert?

Zu Akima-Interpolation: da war ein guter Artikel in der c't 6/1989, S. 
206-212

von C.F. (Gast)


Lesenswert?

Das bringt mich jetzt noch nicht so richtig weiter. Ok, ich stelle mir 
ma vor, ich erhalte aus den von linker Seite ins System einfließenden 
Daten stückweise Bögen aus der Interpolation.

Das bedeutet aber dann, daß ich jeweils einige Punkte an Vorlauf 
benötige, um die Gleichungen berechnen zu können. Ich habe mir die 
Gleichungen angesehen: Wenn das in VHDL zu machen wäre, führt das zu 
hunderten Takten Latenz, die ich nicht habe. Ich brauche also eine 
einfach Gleichung, die mit einigen Takten auskommt.

Ein lineares Filter würde ja mit einer Geraden arbeiten können und die 
wäre mittels 2er Punkte zu berechen. Ich hätte dann den Offset und die 
Steigung. Die aber braucht zumindest eine Division. Kann man das so 
hindrehen, daß man nur binär Teilen muss?

Ich habe leider keine konstanten Abstände oder "Frequenzen" wo ich ein 
Delta-T im Vorhinein wüsste und einen Multiplikator für eine Division 
bestimmen könnte.

Und: Wie mache ich dann weiter?

Es kann sein, daß die Abfragezeitpunkte aus einer anderen Takt-Domain 
kommen- reicht es, die Gleichungen in die andere Domain rüberzutakten?

Andere Frage:

Gibt es da eigentlich keine Cores für bei Altera oder Xilinx?

Oder wird sowas mit Chips gemacht?

von Klaus W. (mfgkw)


Lesenswert?

C.F. schrieb:
> Die aber braucht zumindest eine Division. Kann man das so
> hindrehen, daß man nur binär Teilen muss?

Wenn du mit lienaqrer Interpolation auskommst und nicht teilen willst:
Da müsste man doch den Bresenham-Algorithmus missbrauchen können.
Der ist zwar eigentlich zum Linienziehen gedacht, macht aber
doch eigentlich auch nichts anderes.

von Bressi (Gast)


Lesenswert?

Bressenham hilft ja nur dann, wenn das spätere Abtasten
sequentiell und nicht beliebig erfolgt. Um Division (oder
eine geeignete Tabelle im ROM) wird man iA nicht rumkommen.

Gast3

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.