Forum: FPGA, VHDL & Co. Korrelator in VHDL


von Hi (Gast)


Lesenswert?

Hallo,

ich habe ein bekanntes Signal das ich mit einem empfangenen Signal 
korrelieren möchte. Wenn es möglich ist sollte der Korrelationswert 
jeden Takt ausgegeben werden. Mein Problem ist nun, wenn ich 
beispielsweise annehme, dass das bekannte Signal aus 100 Werten besteht, 
dann brauche ich ja 100 parallele Multiplizierer. Wie kann man sowas in 
VHDL realisieren (synthetisierbar)?
Hat jemand ein Beispiel oder einen Tipp?

von Ben (Gast)


Lesenswert?

Die 100 Eingangsdaten mit einer Frequenz X_CLK in einem FIFO (doppelt so 
tief wie der zu verabeitende Datensatz) zwischenpuffern und 
anschliessend (wenn FIFO half-full) mit einem 10-Kanal Korrelator (der 
jetzt natürlich mit 10*X_CLK arbeitet) die Daten prozessieren.
Gruss,Ben

von SeriousSam (Gast)


Lesenswert?

Pro Takt kommt aber wohl nur ein Wert. Dann speicherst du eben hundert 
Resultate von Multiplikationen, resp. hundert Zwischenresultate.

von Gast (Gast)


Lesenswert?

Kommt auf das Signal drauf an, für 1-bit Daten kannst auch 1000 
Multiplikatoren bauen, die sind recht günstig. Double precision floats 
sind ungleich teurer...

von Ben (Gast)


Lesenswert?

Falls es sich um ein 1-bit breites Signal handelt, kannst du deine 
Multiplier durch AND-Gates ersetzen und den nachfolgenden 
Kanalakkumulator durch einen Zähler.
Wie mein Vorredner schon bemerkte, ist die Art des Eingangssignals (und 
somit seine Darstellung) nicht ganz unwichtig. Wo soll die Geschichte 
den eingesetzt werden ?

von dert (Gast)


Lesenswert?

Such dir einen FPGA mit ausreichend vielen Multiplizierern, z.B.
XC5VSX35T mit 192 Multiplizierern oder XC3SD3400A mit 126 Multis.

Der XC5VSX240T hat übrigens über 1000 Multis, das ist heutzutage kein 
Prob mehr.

Wie breit sind den Deine Faktoren? bei kurzen Faktoren kannst du zwei 
Multiplikationen im selben Takt mit einem Multi rechnen.

von Hi (Gast)


Lesenswert?

Die Daten werden mit 52 MHz eingelesen und sind 12 Bit breit. Den 
Korrelator möchte ich in einem Altera Stratix II FPGA verwenden.

von Ben (Gast)


Lesenswert?

was wird denn 'korreliert' ?

von dert (Gast)


Lesenswert?

Na der EP2S60 hat 144 Multis (18bitx18bit), dann wäre das ja kein 
Problem.

von Gast (Gast)


Lesenswert?

Das ist aber eine ordentliche Reousrceverschwendung. Ich würde 
ersteinmal profen, ob ich das nicht zyklisch mit multiplexten MULs 
machen kann: Bei 52MHz ginge ja wenigstens mal Faktor 3 auf einem 
Stratix (156MHz).

von dert (Gast)


Lesenswert?

NunJa, unbenutzt verbleibende Multis sind auch Verschwendung.

3 als faktor ist ein wenig krumm und da der nächstkleinere Stratix 
EP2S30 schon 64 Multis mitbringt, sollte Takt-Verdopplung wenn überhaupt 
ausreichen.

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.