Forum: FPGA, VHDL & Co. Koordinatentransformation mit CORDIC (IQ, Demodulation, Betrag, Phase)


von Frank (Gast)



Lesenswert?

Hallo!

Danke an den unbekannten Autor für 'Cordic For Dummies'!
Damit habe ich CORDIC verstanden und konnte eine generische Umsetzung in 
VHDL realisieren.

Mit dem CORDIC läßt sich ja so einiges anstellen (Sinus, Cosinus, 
Wurzel, Logarithmus, etc.pp.).
Hier brauchte ich zu gegebenen IQ-Samples die Länge des Zeigers und den 
Phasenwinkel. Also eine klassische Koordinatentransformation von 
Kartesischen Koordinaten zu Polarkoordinaten.

Wenn man nur den Winkel braucht (ATAN2-Funktion) kann man sich den 
finalen Multiplizierer für die Gain-Korrektur sparen.

Die gezeigte Implementierung arbeitet mit 8 Bit Eingangsdaten, läßt sich 
aber in der Bitbreite und der Skalierung anpassen.

Die State-Machine hat eine feste Latenz, was ich für 
Laufzeitbetrachtungen im System praktischer finde. Wer will könnte dort 
noch optimieren und die Berechnung abbrechen, sobald y=0 erreicht ist.

Viel Spaß damit!

von Hartmut (Gast)


Lesenswert?

> ... 'Cordic For Dummies'! ...

Kein Mensch mit Selbstwertgefühl ruft eine Datei mit diesem Titel auf.

von Dummy (Gast)


Lesenswert?

Hartmut schrieb:
>> ... 'Cordic For Dummies'! ...
>
> Kein Mensch mit Selbstwertgefühl ruft eine Datei mit diesem Titel auf.

Danke, dass du für die Menschheit sprichst.

von J. S. (engineer) Benutzerseite


Lesenswert?

Wenn es jemand damit versteht - warum nicht?
Es gibt freilich bessere Quellen :-)
Wir hatten den ALGO damals in der UNI zu implementieren. O-TON Prof:
"Wenn Sie wissen möchten, wie es funktinoiert, recherchieren Sie im miro 
fiche" und das habe ich dann auch gemacht.

Zum hiesigen CORDIC: Ich denke, die Faktoren haben ein bissl zu wenig 
Stellen.

von chris_ (Gast)


Lesenswert?

Frank schrieb:
>Hallo!
>Danke an den unbekannten Autor für 'Cordic For Dummies'!
>Damit habe ich CORDIC verstanden und konnte eine generische Umsetzung in
>VHDL realisieren.

Da hier immer so viel genörgelt wird, möchte ich hier mal ein Lob 
aussprechen: Danke für das Teilen des Codes.

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.