Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenzmodulation - DSK6713


von W.Getze (Gast)


Lesenswert?

Hallo,

ich muss bezüglich meines Abschlussprojekts für die Technikerschule eine 
Frequenzmodulation auf einem DSP-Board (DSK6713 von TI) programmieren.
In einen vorhandenen Code kann ich mich leicht einarbeiten und verstehe 
auch schnell die Zusammenhänge, um anschließend Änderungen vorzunehmen.

Für die FM steht mir nun leider kein Code zur Verfügung und somit müsste 
ich alles von Grund auf neu schreiben, was mir masive Probleme bereitet.

Meine Frage an euch ist, ob jemand schon mit dem Thema Erfahrungen 
gesammelt hat und mir eventuell auf die Sprünge hilft.


Danke schonmal im Vorraus! ;)


MFG
W.Getze

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Um welche Frequenzen geht es dabei? Also das Niederfrequenzband (analoge 
oder digitale Signale) und die Trägerfrequenz. Vermutlich braucht man 
einen Sinusgenerator für die Hochfrequenz, dessen Frequenz mit der NF 
variiert wird.
Zur Sinuserzeugung gibt es z.B. das Tabellenverfahren mit DDS, den 
Cordic-Algorithmus oder ein geeignetes IIR-Filter, das zuverlässig 
schwingt. Zu letzterem gibt es ein Beispiel im DSP-Buch von Grüningen. 
ISBN 9783905681420 ab Seite 51.

Ich sehe gerade beim "look-inside" dass das Buch auch genau auf den DSP 
6713 verweist, es lohnt sich also, das mal näher anzuschauen.

von W.Getze (Gast)


Lesenswert?

Danke für die Antwort!

also ich hab mir das folgendermaßen gedacht:

man gibt über einen Generator ein Nutzsignal (Sinus) auf den DSP, 
welches
dann mit einem Trägersignal (im DSP erzeugt -> Table o.a.) moduliert 
wird.

Jedoch fehlen mir die nötigen Kentnisse, um das in C-Code umzusetzen.

Aber ich werde mir das Buch erstmal angucken.

Vielen Dank!

W.Getze

von Georg A. (georga)


Lesenswert?

> Jedoch fehlen mir die nötigen Kentnisse, um das in C-Code umzusetzen.

Such mal das Stichwort "Phasenakkumulator". Der liefert dir den 
richtigen Eintrag aus der Tabelle. Bei Bedarf kann man auch noch 
interpolieren.

von W.Getze (Gast)


Lesenswert?

hmm... so richtig weit komm ich leider damit nicht, da fehlts mir 
anscheinend auch noch an der Theorie .....

Im Unterricht haben wir das Thema FM zwar durchgenommen, jedoch nicht so 
ins Detail, dass ich einen passenden Algorythmus dazu schreiben könnte.

Ich bräuchte eine Schritt für Schritt Anleitung oder Code-Beispiel wäre 
optimal.

Gruß,
W.Getze

von Georg A. (georga)


Lesenswert?

Du willst im wesentlichen einen Sinus mit einstellbarer Frequenz 
produzieren, also machst du erstmal im Vorfeld eine Tabelle mit einer 
vollständigen Sinusschwingung, sagen wir mal mit 32 Einträgen. Wenn man 
die Tabelle mit einem kontinuierlichen Zähler indiziert, erhält man mit 
32 Schritten eine vollständige Periode. Um deren Frequenz zu ändern, 
könnte man den Zähler jetzt nur jeden zweiten/dritten Schritt erhöhen 
oder gleich um 2/3/... Tut schon, sorgt aber nur für eine sehr grobe und 
noch dazu nichtlineare Frequenzsteuerung.

Jetzt der Trick #1: Man gibt dem Zähler einen Nachkommaanteil und dem 
Inkrement pro Schritt auch. Das erlaubt eine sehr feine Steuerung der 
mittleren Frequenz. "Mittlere" deswegen, weil die Schritte immer noch 
diskret sind, und halt  Wiederholungen/Aussetzer haben.

Trick #2: Anhand des Nachkommanteils kann man zwischen den beiden 
angrenzenden Tabellensamples interpolieren. Für nicht allzu grosse 
Frequenzvariationen reicht lineare Interpolation.

Trick #3: Man macht es nicht mit Float, sondern mit Integer und einer 
Tabelle mit 2^m Einträgen. Dann nimmt man die unteren n Bit für den 
Interpolator und die oberen m Bit für den Zähler. Ausser Integeraddition 
und etwas AND bzw. Schieben ist dann keine "komplizierte" Rechnung 
notwendig.

Und jetzt zu deiner FM: Ohne ist das Inkrement immer 1.0. Wenn du was 
draufmodulieren willst, muss das Inkrement halt abängig vom Frequenzhub 
leicht erhöht/erniedrigt werden.

Und jetzt probier mal rum, nur so wird das was mit dem Verständnis ;)

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.