www.mikrocontroller.net

Forum: FPGA, VHDL & Co. komplexer teiler


Autor: lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, weiß jemand wie man einen komplexen Teiler in VHDL schreibt? sowohl 
der Divident als auch der Divisor sind hierbei komplex, hat jemand 
zufällig sowas schon gemacht?
MfG

Autor: Christian Aurich (cau) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lukas schrieb:
> Hi, weiß jemand wie man einen komplexen Teiler in VHDL schreibt? sowohl
> der Divident als auch der Divisor sind hierbei komplex, hat jemand
> zufällig sowas schon gemacht?

erste Idee meinerseits wäre es so zu machen, wie auf Papier:
1. Betrag der komplexen Zahlen bilden, "normal" dividieren.
2. Winkel der komplexen Zahlen bilden, Winkel des Nenners vom Winkel des 
Zählers abziehen.
3. aus Betrag (von 1.) und Winkel (von 2.) wieder die gewünschte Form 
bilden.

mag aber durchaus sein, dass es schnellere Rechenwege gibt.

viele Grüße
Christian

Autor: lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich habe im nenner und Zähler jeweils imaginär und realteil seperat 
als vekktoren vorliegen ( a +jb ), ich glaube das in winkeln umzurechnen 
wird komplizierter.

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komplexe Division erhält man durch Erweiterung:

  c = a/b  = a/b * b/b = (a*b)/(b*b)

d.h. man hat je Re/Im-Teil eine reelle Division.

Gruss

Bert

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

muß man nicht mit dem konjugiert komplexen Wert von b erweitern? Dadurch 
erhalt man einen reellen Nenner. Siehe hier
http://de.wikipedia.org/wiki/Komplexe_Zahl

Also
(a+ib) / (x+iy)
wird zu
((a+ib) / (x+iy)) * ((x-iy) / (x-iy))
und daraus dann
(a+ib) * (x-iy) / (x²+y²)

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. oh ja, stimmt. Spart 2 Mults und 2-3 Adds ein.
Auf jeden Fall aber wesentlich besser als eine
Polarkoordinatentransformation.

Bert

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt auf die Darstellung (float / fixed) und die gewünschte Genauigkeit 
an. Für manche Anwendungen reicht eine Lookup-Table zur Umwandlung in 
Polarkoordinaten. Ansonsten steht oben ja schon einiges.

Autor: Dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst du den Code simulieren oder synthetisieren?

Es gibt eine standard Lib für Kompelexe Zahlen. Diese lässt sich leider 
nicht synthetisieren.
   use IEEE.math_complex.all;


Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In jedem Fall konjugiert komplex erweitern und multiplizieren. Teilen 
dauert viel zu lang.

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Division ist nach wie vor notwendig. Durch die konjugierte
Erweiterung wird die Division auf die reelle Division
reduziert. Sonst könnte man ja die reelle Division auf
die komplexe Ebene projezieren und hat dann nur eine
Multiplikation, was ja Unsinn ist.

Bert

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uups, stimmt natürlich - eigentlich wollte ich schreiben "dauert schon 
viel zu lang", aber mir fällt jetzt auch auf, daß ich in der Tat eine 
reine Multiplikation mit dem Reziprokwert im Kopf hatte.

Kommt eben drauf an, ob sich der Nenner (häufiger) ändert oder ob man 
nicht dessen Reziprokwert einmal berechnen kann.

Ich hätte dazu nebenbei ein VHDL anzubieten - packt auf einem einem V5 
30MHz Daten.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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