www.mikrocontroller.net

Forum: FPGA, VHDL & Co. IQ - Demodulator


Autor: Hi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit Hilfe eines FGPAs einen IQ-Demodulator bauen. Dabei soll 
ein auf eine Zwischenfrequenz heruntergemischtes Bandpasssignal 
abgetastet werden. Nach dieser Abtastung erfolgt eine Mischung mit 
-Sinus und Cosinus. Frequenz des Mischers soll gleich der Frequenz der 
Zwischenfrequenz sein. Nach dieser Mischung habe ich einen Realteil und 
ein Imaginärteil. Anschließend möchte ich den Realteil und den 
Imaginärteil zu dem komplexen Signal addieren. Nun meine Frage, wie kann 
ich technisch die Phasenverschiebung der imaginären Einheit (90°) mit 
Hilfe des FPGAs realisieren?

Danke für die Hilfe.

Autor: mandrake (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Frage auf die zu modulierenden Träger bezogen?

Ich gehe mal davon aus....

Habe keine Erfahrung mit FPGAs aber mathematisch bekommt man aus einem 
Sinus einen Cosinus durch Ableiten (differenzieren). Es gibt zum 
Beispiel Differenzierverstärker, die man mit OPs aufbauen kann. 
Vielleicht ist das eine umsetzbare Idee für dich.

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde dir empfehlen, dass du dir eine Sinustabelle in einem Ram (bei 
Xilinx z.B. Blockram) ablegst. Nachdem du in Hardware wirklich parallel 
Aufgaben erledigen kannst, machst du dir zwei Zähler, die die 
Sinustabelle durchlaufen. Der erste fängt bei am Beginn der Tabelle an 
und der zweite wird mit einem Offset initialisiert, sodass er quasi um 
90° phasenverschoben die Tabelle durchläuft. Damit hast du mit relativ 
wenig Logikaufwand einen genauen Sinus und Cosinus erzeugt.
Falls du einen Xilinx FPGA verwendest, kannst du jetzt noch die zwei 
Multiplizierer verwenden um dein Signal herunterzumischen.

mfg
Andreas

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google mal nach Hilbert-Filter oder Hilbert-Transformer, das ist der 90 
Grad Phasenschieber, ein FIR-Filter mit zwei Ausgängen.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Sinus und Cosinus zum Runtermischen kann man noch mit DDS oder 
Cordic erzeugen, aber die zweite Phasenverschiebung muß das ganze 
Niederfrequenzband erfassen, das ist aufwendiger.
Für das Sprachfrequenzband von 300 Hz bis 3 kHz  ist ein spezielles 
FIR-Filter mit ca. 40-80 Taps nötig, wenn ich das recht gelesen habe.
In einem AVR ist das nicht zu machen, die Application Note von Atmel 
geht bis max.8 Stufen . Ein ARM könnte das eher schaffen, und ein FPGA 
sowieso.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hilbert gibt es auch als IIR-Filter ...

Autor: 6635 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann auch einen VCO mitlaufen lassen. Dessen erzeugtes Signal ist 90 
Grad verschoben. Allerdings nur am ort des Vergleichers.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PLL geht doch auch nur mit einer Sinusschwingung. Er muß ein ganzes 
Frequenzband phasenschieben.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von IIR-Hilbert-Filtern habe ich noch nichts gelesen, das übliche sind 
anscheinend linearphasige FIR-Filter nach  Parks-McClellan die in Matlab 
oder Scilab mit "remez" berechnet werden. Einfach nach "remez hilbert 
filter" googlen.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, wenn man danach sucht finden sich auch IIR-Hilbert-Filter:

http://www.mathworks.com/products/filterdesign/dem...
"...A quasi linear-phase IIR Hilbert filter ... using only 10 MPIS 
compared to 133 MPIS for an FIR equivalent..." (was sind Mega-PIS?), hat 
also Vorteile.

Für solche Fragen scheint "DSP-related" ein gutes Forum zu sein
http://www.dsprelated.com/showmessage/21946/1.php
"Hilbert IIR filter implementation"

Autor: Günter -.. (guenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Kessler wrote:
[...]
> (was sind Mega-PIS?)

Steht im Text beschrieben:
multiplications ... per input sample

[...]
>
> Für solche Fragen scheint "DSP-related" ein gutes Forum zu sein
> http://www.dsprelated.com/showmessage/21946/1.php
> "Hilbert IIR filter implementation"

DSP-related ist in dem Fall nur ein "Konservendosenhändler". Das 
eigentliche Diskussionsforum ist die Usenetgruppe comp.dsp.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nochmal weitergegoogled und noch das gefunden:
http://yehar.com/ViewHome.pl?page=dsp/
(ein älterer Link zum selben Autor Olli Niemitalo funktioniert nicht 
mehr)

90 degree phase difference allpass pair
This is probably the most efficient structure for a Hilbert transform. 
Actually, it's not a Hilbert transform, but two all-pass IIR filters 
whose phase difference is approximately 90 degrees over a range of 
frequencies symmetric around Nyquist/2.

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.