Forum: FPGA, VHDL & Co. PWM Signal demodulieren


von LMV (Gast)


Lesenswert?

Hallo zusammen,

ich bin ganz neu in der Thematik FPGAs und soll unter anderem einen PWM 
Generator/ PWM Decoder erzeugen. Da es schnell gehen muss, habe ich zur 
Generierung einfach ein Codefragment aus dem Internet zu meinem Projekt 
hinzugefügt. So wollte ich ebenfalls bei der Demodulation vorgehen - 
finde jedoch keinen passenden Code dafür!

Hat jemand so etwas schon mal in VHDL umgesetzt und könnte mir an dieser 
Stelle weiterhelfen?

Vielen Dank bereits im Voraus!

Lieber Gruße!

von L. (Gast)


Lesenswert?

> ich bin ganz neu in der Thematik FPGAs [...]
> Da es schnell gehen muss, [...]
> ein Codefragment aus dem Internet [...]


Ihr Jungs seit echt lustig!!!

Was erwartest du hier?

von hjk (Gast)


Lesenswert?

Keine Ahnung was du vor hast (wie schnell erkannt werden soll usw), aber 
an sich ist das doch nicht viel mehr als ein Zähler...

LMV schrieb:
> ich bin ganz neu in der Thematik FPGAs ... Da es schnell gehen muss

ganz schlechte Methode. Ich hoffe das wird nicht irgentwo verkauft 
sondern ist nur eine Hausaufgabe.

von P. K. (pek)


Lesenswert?

Liegt auf der Hand, dass Du da nichts findest:

Eine PWM-Modulation machst Du typischerweise, um etwas analoges 
anzusteuern (z.B. H-Brücke, Audio, Motorensteuerungen), darum findest Du 
den Modulator auch im Netz.

Eine Anwendung des Gegenteils (digitale PWM-Demodulation) fällt mir 
nicht spontan ein.

Vielleicht wollte der Urheber Deiner Übung, dass da doch noch etwas 
Eigenleistung dazukommt?

von l.vogel@asp-equipment.de (Gast)


Lesenswert?

nicht so wirklich...
es sollte schon funktionieren im Endeffekt ;)
Mag sein, dass ich auch schon etwas auf dem Schlauch heute stehe: aber 
ich komme irgendwie nicht wieter...

Ich habe eine Eingangsfrequenz von einem Power Supply. Und diese 
Frequenz sollte zurück in einen 12-Bit Wert modulliert werden...
Der Teil des Systems wird mit 125 kHz gefahren!

Ich bräuchte nur mal ein paar Ansätze, den Rest schaff ich dann 
sicherlich!

Danke weiterhin für alle Beiträge!

von Gustl B. (-gb-)


Lesenswert?

Ich kenne mich mit PWM nicht aus, aber das ist doch nur ein Takt mit 
unterschiedlich langen Takten.

Wenn du also sowas als Eingangstakt hast, dann würde ich entweder auf 
das rising oder falling edge triggern und damit einen Zähler 
zurücksetzen. Also der zähler läuftdann vom einen falling_edge bis zum 
nächsten und zählt dann Takte eines festen Taktes bekannter Frequenz im 
FPGA.

Also sagen wir wir machen das mit 10MHz dann haben wir einen festen Takt 
0,1us und wenn der Zähler sagen wir 20 Takte zählen kann bis die Nächste 
gleiche Flanke kommt, dann war die Periodendauer des PWM gerade 
20*0,1us=2us. Mit f=1/T bekommen wir für f also 500kHz.

-gb-

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

12 Bit sind 4096. Du brauchst also zum "einfachen Mitzählen" eine 
Abtastfrequenz von 125kHz * 4096 = 512MHz. Das wird nicht einfach...

Natürlich kannst du die Taktfrequenz auch reduzieren, indem du mehrere 
PWM Pulse mitzählst. Aber dann sollte sich das Tastverhältnis nicht 
allzu schnell ändern...

von hjk (Gast)


Lesenswert?

Warscheinlicher ist wohl das mit 125khz gepulst wird, also 125kHz / 4096 
= 30Hz Intervalle.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 30 Hz
Die Speicherdrossel in dem Schaltnetzteil möchte ich mal sehen...

SNT und 125kHz scheint mir plausibler. Vielleicht erfahren wir das ja 
noch.

von hjk (Gast)


Lesenswert?

Du kannst nicht einfach das "Intervalle" weglassen, das meinte ich schon 
wirklich ;)

30 HZ Intervalle, d.h. der zu übertragende Wert wird als PWM über eine 
Zeit von 1/30s angelegt, dann kann ein Update erfolgen und es geht von 
vorne los.

Jeder Einzelne Wert (0 oder 1) ist dann 1/125000s lang gültig.

Das macht jedenfalls am meisten Sinn, wenn man überlegt was da so drinne 
sein wird im Netzteil(irgentein kleiner µC).


Wenn uns Freund Vogel etwas mehr mitteilen würde müssten wir aber nicht 
so viel rätseln :-)

von Überfragter (Gast)


Lesenswert?

Ich habe jetzt schon 5x in den thread reingesehen, aber das Problem will 
sich mir nicht erschliessen.

l.vogel@asp-equipment.de schrieb:
> zurück in einen 12-Bit Wert modulliert werden
Soll da jetzt amplituden- oder frequenz-modul(l)iert werden?

Frequenzmodulation geht über eine Multiplikation mit dem Wert - vor der 
PWM-Bildung. Amplitudenmodulation hat nichts mit den 12Bit und den 
125kHz zu tun. Die müssen hier auch nicht multipliziert werden, wie 
Lothar das tut.

von Gustl B. (-gb-)


Lesenswert?

Gute Frage. Bei Amplitude könnte man ja immer bis 4096 (oder 2erpotenzen 
davon) zählen und gucken wieviele Takte davon das Signal 1 oder 0 war.

Eigentlich könnte man doch auch einen langsamen ADC nehmen, der würde 
doch auch drüber mitteln und gleich schön einen 12Bit-Wert ausgeben. 
Kommt natürlich drauf an wie schnell sich die PWM Impulslängen 
verändern.

Für die Frequenz wird das aufwendiger, da muss man wirklich Impulslängen 
"messen".

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tja, da kann man lange raten. Und bis brauchbare Informationen (was, 
wie, warum und wozu) da sind, hat jeder Recht...

von Werner A: (Gast)


Lesenswert?

LMV schrieb:
> Da es schnell gehen muss, ...
>
> ... und könnte mir an dieser Stelle weiterhelfen?

So dringend scheint es dann doch nicht zu sein. Oder Copy&Paste hat eine 
klein Einheit in Sachen VHDL-Grundlagen eingeschoben.

von l.vogel@asp-equipment.de (Gast)


Lesenswert?

Guten Morgen,

so "Copy&Paste" musste aus gesundheitlichen Gründen mal eine Pause 
einlegen - also entschuldigt mein verspätetes Antworten...

Weiterhin natürlich auch vielen Dank für alle (spitzen) Kommentare und 
nützlichen Ratschläge!
Ich muss erst einmal alles lesen und dann werde ich weitersehen!

Danke nochmals an alle!

Bis dahin einen guten Tag für alle!

von l.vogel@asp-equipment.de (Gast)


Lesenswert?

So - kurz zur Erklärung!

Ich hab' vor zwei Wochen zwischen Tür u. Angel eine Aufgabe bekommen, 
die ich nicht besser wiedergeben kann, als ich es in meinem ersten 
Thread getan habe! Da ich wirklich reiner Informatiker bin und noch nie 
nix mit Hardware zu tun hatte, aber trotzdem auf die "Schnelle" eine 
Aussage machen muss, hab' ich die Frage mal an das Forum weitergegeben! 
Ich seh' ja erst jetzt, dass es nicht so einfach sein kann ;)
Im Projekt hat sich auch schon wieder alles geändert - deswegen kann ich 
selbst bis heute keine genaueren Aussagen machen! Höchstwahrscheinlich 
wird die PWM-Generierung der Microprozessor übernehmen!

Wenn ich was konkreteres weiss, geb' ich gern nochmal Bescheid! 
Eventuell bin ich nicht der einzige Mensch, den das interessieren 
könnte!

Bis dahin alles Gute!

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.