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!
> 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?
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.
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?
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!
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-
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...
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 :-)
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.
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".
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.
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!
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!