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.
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.
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
Google mal nach Hilbert-Filter oder Hilbert-Transformer, das ist der 90 Grad Phasenschieber, ein FIR-Filter mit zwei Ausgängen.
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.
Man kann auch einen VCO mitlaufen lassen. Dessen erzeugtes Signal ist 90 Grad verschoben. Allerdings nur am ort des Vergleichers.
PLL geht doch auch nur mit einer Sinusschwingung. Er muß ein ganzes Frequenzband phasenschieben.
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.
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"
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.