Forum: Digitale Signalverarbeitung / DSP / Machine Learning FM Modulation im komplexen Basisband


von Bernhard _. (Firma: dl1bg) (bernhard_)


Lesenswert?

Hallo zuammen,

für meinen Transceiver möchte ich eine FM-Modulation implementieren. Als 
Ausgang habe ich I und Q, falls das irgendwie hilft.

Der Eingang ist Sprache mit 300 bis 3000 Hz, die Abtastfrequenz beträgt 
16 kHz.

Als ersten Versuch habe ich eine Sinus-LUT mit 1000 Elementen genommen, 
von der ich schlichtweg so viele Elemente springe, wie mein AD-Wert am 
Eingang ist.

i(t) = sin(s(t))*A

i(t) Ausgang im Basisband
s(t) Eingang vom ADC (-1000 ... 1000)
A Amplitude

Das Ergebnis war erst mal gar nicht schlecht, bei einem Eingangsssignal 
von 1 kHz sehe ich die erwarteten Linien mit 1 kHz im Spektrum. 
Allerdings ist das Signal Amplitudenmoduliert mit der Frequenz der LUT, 
die Amplitude ist nicht konstant sondern welchselt mit ca. 15 Hz.

War ich auf dem Holzweg oder habe ich nur eine Kleinigkeit vergessen? 
Kennt ihr Implementierungen?

Vielen Dank
Bernhard

von Sascha (Gast)


Lesenswert?

Hallo Bernhard,
das ist ja interessant bin gerade auch an einer IQ Modulator/Demodulator 
Sache dran. Ich versuche mich aber gerade noch an SSB. Habe nur den 
IQ-Mischer in Hardware aufgegeben. Da der Restträger nicht unter -60dB 
will.
Ich habe bis jetzt nur gesehen, dass der Cordic Algorithmus dafür 
benutzt wird. Wie gehst du mit dem Sinus bei FM über den IQ-Mischer 
raus?
Ich glaube da muss noch eine Hilberttransformation rein, damit der 
Phasenwinkel immer stimmt. Oder nimmst du Sinus und Cosinus aus der 
Tabelle. Stimmt dann das Zeitlich zu einander (dynamisch betrachtet)?
Oder dein Sinus wird zu schnell aus der Tabelle abgespielt und das was 
du siehst sind die Interreferenzen.
Aber wie soll das FM-Demodulieren gehen, da habe ich keine Idee.
Muss die Tabelle nicht um einiges größer werden? (Je nach 
Trägerfrequenz!!!)

Gruß Sascha

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

auf der Suche nach "frequency modulation" und "DSP" gefunden:

http://www.analog.com/static/imported-files/application_notes/AN-543.pdf
High Quality, All-Digital RF Frequency Modulation Generation with the 
ADSP-2181 DSP and the AD9850 Direct Digital Synthesizer

Leider noch kein I/Q-Modulator, der DDS wird anscheinend einfach ständig 
digital frequenzverstellt, brute force sozusagen.

von Bernhard _. (Firma: dl1bg) (bernhard_)


Lesenswert?

Danke euch zwei!

Tja, leider ist das wohl wirklich nicht so einfach, zumal ich an der 
Stelle mal nicht viel in die Theorie einsteigen wollte.

>> Aber wie soll das FM-Demodulieren gehen
Da habe ich ganz primitiv über zwei samples abgeleitet und über die 
Differenz von I und Q die Wechselgeschwindigkeit der Frequenz ermittelt.
Gaht nur sehr schmalbandig und erzeugt allerhand Fehler, aber reicht für 
Sprachübertagung. Eine saubere Implementierung mit Atan und einem 
ordentlichen Differenziator hat quasi nichts gebracht.

Wenn du/ihr möchtest können wir uns gerne mal per PN austauschen, hier 
stelle ich nicht mehr viel von mir rein weil eh nur 100000 anonyme 
downloads und ein paar Beschimpfungen rauskommen. Von Bernd, Christoph 
und ein paar anderen abgesehen.

>> Da der Restträger nicht unter -60dB will.
Puh, das bekomme ich auch nicht besser hin.

>> Wie gehst du mit dem Sinus bei FM über den IQ-Mischer raus? ...
Einfach, als ob es AM wäre gegeneinander um 180° phasenverschoben. 
Mindestens meine Abtastrate war bisher zu langsam, daher hat mein 
Modulator einzelne Frequenzen viel zu stark betont. Aber laufen tut's 
noch nicht.

Viele Grüße
Bernhard

von W.S. (Gast)


Lesenswert?

Bernhard __ schrieb:
> Tja, leider ist das wohl wirklich nicht so einfach, zumal ich an der
> Stelle mal nicht viel in die Theorie einsteigen wollte.

Naja, ist ja auch ein für den Anfang schwieriges Thema.

Also, im Prinzip hast du nen kreisenden Zeiger (I,Q), der mit einer 
Geschwindigkeit V dreht, die deiner Trägerfrequenz entspricht. Zur 
Modulation mußt du also zu V einen Wert addieren, de sich aus deiner 
NF-Amplitude und einem Faktor ergibt, der vom gewünschten Modulationshub 
bestimmt wird. Und V drückt sich bei einem DDS im zu addierenden 
Phasenwinkel aus.

Christoph Kessler (db1uq) schrieb:
> Leider noch kein I/Q-Modulator, der DDS wird anscheinend einfach ständig
> digital frequenzverstellt, brute force sozusagen.

Das ist auch der eigentlich richtige Ansatz, siehe oben. Wie würdest du 
denn sonst die eigentliche HF erzeugen?

Wenn du nicht in einem Ruck direkt auf die Ausgangsfrequenz 
willst/kannst, dann mußt du dir ne ZF aussuchen, wo du dieses DDS mit I- 
und Q-Ausgang zelebrierst. Eines von beiden ist einfach der DDS-Ausgang 
und für das andere mußt du eben 90 Grad (also Akkusize/4) draufaddieren, 
bevor es in die Sinustabelle geht. Oder du arbeitest dich in diese 
CORDIC Berechnungen ein (quasi digitales Zeigerdrehen).

W.S.

von Sascha (Gast)


Lesenswert?

Hallo,
also nach meinen WEB recherchen über das Thema, habe ich selbst bei 
Funkgerätenhertsellern wie Icom gesehen wird FM noch immer mit der PLL 
erzeugt. Teilwiese auch im DDS. Das Decodieren hingegen aber per IQ.
Ich halte es auch für sinnvoll über eine IQ-ZF zu gehen.
Beim decodieren vom IQ Produkt wird immer wieder der Fehler mit der 
Amplitude gemacht. Die Amplitude muss auf Wurzel aus I Quadraht + Q 
Quadraht normalisiert werden.
Die quik Algos, die im WEB teilweise herumgeistern sind sehr alt, und 
stammen von älteren DSPs ohne FPU.
Das Ausdifferenzieren zwischen I und Q halte ich nur für eine Notlösung.

Hallo Bernhard, das Thema interessiert mich zur Zeit schon, somit 
besteht auch Interesse am Kontakt, Gruß DG6SCE.

(PS.ich muss meinen Login suchen dann sende ich dir eine eMail.)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt von Analog Devices intergrierte VCOs die direkt mit I und Q 
moduliert werden.
http://www.analog.com/en/rfif-components/modulatorsdemodulators/products/index.html#Modulators_w/_LO
zum Beispiel 
http://www.analog.com/static/imported-files/data_sheets/ADRF6755.pdf
"100 MHz to 2400 MHz I/Q Modulator with Integrated Fractional-N PLL and 
VCO"
Da müsste das Signal NF-seitig für die FM-Modulation aufbereitet werden.

von Sascha (Gast)


Lesenswert?

Hallo,
ich schätze nur, die Dinger sind nicht für den NF Sprachbereich 
optimiert.
Der Winkelfehler, sowie Restträgerunterdrückung reichen nicht ganz aus.
Für HF-Frontend habe ich schon interessantere Dinger gefunden.

Ich setze derzeit immer noch auf den AD9957, nur braucht der sehr viel 
Leistung (Strom).

Gruß Sascha

von Bernhard _. (Firma: dl1bg) (bernhard_)


Angehängte Dateien:

Lesenswert?

@ Admins: Vielen Dank für's Entfernen meines Malheurs!

Hier für's Protokoll das Ergebnis meiner Arbeit.

Die angehängte Modulatorklasse arbeitet vernünftig und werkelt in meinem
Eigenbau-TRX. Die CPU des STM32F409 wird davon bei 168 MHz und 48 kS/s
mit ca. 3 % ausgelastet.
Sie verwendet die sin() und cos() der CMSIS DSP lib, der Eingang ist im 
Format 1q31..
Der Rest ist wahrscheinlich selbsterklärend, ansonsten bitte einfach per 
PN fragen, ich polle diesen Thread nicht mehr.

Frohes DXen wünscht
DL1BG

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
Noch kein Account? Hier anmelden.