IQ - Demodulator

Gast #773358
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.
Gast #774104
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.
(Firma: Embedded Microtec) #774151
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
#774177
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.
#775502
Lesenswert?

ok, wenn man danach sucht finden sich auch IIR-Hilbert-Filter:

http://www.mathworks.com/products/filterdesign/demos.html?file=/products/demos/shipping/filterdesign/iirallpassdemo.html
"...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"
#775554
Lesenswert?

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

Steht im Text beschrieben:
1
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.
#779144
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren