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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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ürgen 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.