Forum: FPGA, VHDL & Co. PWM 100 kHz, minimum 16 Bit Auflösung


von Bert (Gast)


Lesenswert?

Hallo Leute,

für ein Audioprojekt benötige ich aus einem FPGA eine PWM mit mindestens 
100 kHz und 16 Bit Auflösung.
Wenn ich das mit normalen Zählregistern und Vergleichern löse, bräuchte 
ich wohl eine Taktfrequenz von über 6,5 GHz. Also wohl eher 
unrealistisch.

Habe im Netz gelesen, dass es teilweise aber Leute geschafft haben, doch 
PWMs in der Art zu realisieren unter Zuhilfenahme von DDR Blöcken oder 
irgendwelche Schiebeketten. Habe das Prinzip aber nicht wirklich 
verstanden.

Hat evtl. jemand einen Beispielcode in VHDL / Verilog wie man so etwas 
für einen "normalen" FPGA (z.B. Spartan oder Kintex) umsetzt?

Danke,
Markus

von .... (Gast)


Lesenswert?

Dir ist schon klar, dass es um ein Ziel zu erreichen mehrere Ansätze 
gibt...
eine DA-Wandlung bedeutet nicht automatisch PWM. Sondern auch R2R oder 
halt Codec oder einfach nur DAC.

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


Lesenswert?

Bert schrieb:
> für ein Audioprojekt benötige ich aus einem FPGA eine PWM mit mindestens
> 100 kHz und 16 Bit Auflösung.
Das heißt also "mindestens" 65536*100kHz = 65536000000 Hz = 6,5 GHz 
interne PWM Taktfrequenz.

> Hat evtl. jemand einen Beispielcode in VHDL / Verilog wie man so etwas
> für einen "normalen" FPGA (z.B. Spartan oder Kintex) umsetzt?
Garantiert nicht.

Wie war nochmal die eigentliche Aufgabe?

: Bearbeitet durch Moderator
von Bert (Gast)


Lesenswert?

Ich würde gerne ein Netzteil / Class-D Amp mit galvanischer Trennung in 
einem bauen.

Die Idee ist ein PushPull-Design, wo ich Primärseitig mit einer 
DC-Spannung reingehe und regel die PWM primärseitig so, dass 
sekundärseitig nach Filterung das Audiosignal übrig bleiben soll und ich 
nicht noch eine extra HalfBridge/FullBridge brauche. Da ich zwei 
aufeinander abgestimmte PWMs generieren muss will ich das in einem FPGA 
lösen.

von Bert (Gast)


Lesenswert?

Zusätzlich würde ich gerne eine Rückkopplung mit einem Trenntrafo 
realisieren, den ich primärseitig mit einem AD-Wandler abtaste und mit 
einem Regler dann das Signal passend regle.

Wie realistisch mein Vorhaben ist, weiß ich nicht, aber ich will es mal 
probieren.

von .... (Gast)


Lesenswert?

Ich finde das etwas fehlgeleitet. Wenn du in den Fehlerverstärker einen 
audio-modulierten Fehlstrom einbringen willst benötigst du prinzipiell 
eine analoge Spannung, die dein Audiosignal generiert. Ob du das über 
PWM machst oder DAC oider R2R+Impedanzwandler oder was auch immer ist 
vollkommen egal.
Die Idee nen Audio-ClassD mit einem Stepdown oder was auch immer zu 
machen ist prinzipiell ok, bedenke aber, dass es eine mit aktiver Diode 
sein muss (= Halbbrücken-Ausgang) Um die Halbbrücke kommst du nicht drum 
rum.

von Frank (Gast)


Lesenswert?

In manchen uC erhöhen sie die Auflösung dadurch, dass sie neben der 
klassischen Counter PWM noch eine zuschaltbare Verzögerungslinie haben 
(z.B. bei den Piccolos von TI heißt das High Resolution PWM).

Man bräuchte also den klassischen Ansatz mit Timer/Compare und dann noch 
Verzögerungszeiten durch zuschaltbare hintereinandergeschaltete Gatter.

von ... (Gast)


Lesenswert?

Quatsch... das ist einfach der falsche Ansatz für das Problem....

von Baldrian (Gast)


Lesenswert?

> Habe im Netz gelesen, dass es teilweise aber Leute geschafft haben, doch
> PWMs in der Art zu realisieren unter Zuhilfenahme von DDR Blöcken oder
> irgendwelche Schiebeketten. Habe das Prinzip aber nicht wirklich
> verstanden.

Wo hast du das gelesen?

von Mark S. (voltwide)


Lesenswert?

Baldrian schrieb:
>> Habe im Netz gelesen, dass es teilweise aber Leute geschafft haben, doch
>> PWMs in der Art zu realisieren unter Zuhilfenahme von DDR Blöcken oder
>> irgendwelche Schiebeketten. Habe das Prinzip aber nicht wirklich
>> verstanden.
>
> Wo hast du das gelesen?

Der Ansatz erscheint mir ziemlich unrealistisch.
Vmtl glaubt der TO auch, 1kW Audio per PWM über einen ETD-39 
Ferritübertrager schicken zu können. Diese Idee ist ja nicht neu, aber 
immer noch falsch.

von Audiomann (Gast)


Lesenswert?

Wer 16Bit Audio mit 100kHz PWMs machen will, gehört so oder so auf den 
Mond geschossen.

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


Lesenswert?

Bert schrieb:
> unter Zuhilfenahme von DDR Blöcken oder irgendwelche Schiebeketten.
Du meinst die SerDes Blöcke.

von Gerald M. (gerald_m17)


Lesenswert?

Auch wenn ich mir ziemlich sicher bin, dass dieses Projekt niemals zu 
Ende gebracht wird, hier ein paar Dinge die mir spontan einfallen:
Anstatt PWM könntest du dir PDM anschauen. Bei den interessanten, 
"mittleren" Frequenzen ist die nötige Zählerfrequenz deutlich kleiner 
als bei PWM, ist auch sehr einfach mit einem FPGA.
Du könntest dir vielleicht auch mal den Stm32f334 anschauen, da der 
mehrere Phasenverschobene Counter hat, die im Endeffekt bei Standardtakt 
wie ein Counter mit 4.6GHz benutzt werden kann.
Ansonsten musst du dich noch in Filter und Dinge wie Noiseshaping 
einlesen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Bert schrieb:
>> unter Zuhilfenahme von DDR Blöcken oder irgendwelche Schiebeketten.
> Du meinst die SerDes Blöcke.

Mit SERDES werden es aber eher keine 6Gb gewesen sein, die der TE ja 
benannt hat. Das sollten dann schon Gigabit-Transceiver sein und ja- mit 
denen kann man hoch aufgelöste PDM betreiben. Das braucht man aber nur 
für z.B. RADAR und sicher nicht fürs Audio. :-)

Die Rechnung, eine PWM durch Überabtastung mit 65536 von 100kHz auf 
6Gbit aufbohren zu müssen, um 16 Bit Auflösung zu bekommen ist auch 
ziemlich falsch. Das ist für die Höhen nicht ausreichend und für Bässe 
überdimensioniert.
Wenn schon, würde man im worst case auch 15.5 Bit x 16kHz benötigen, bei 
entsprechender Filterung - wenn man so rechnen will - und da landen wir 
bei unter 1Gbit. Lustigerweise kämen dann sogar die SERDES in Betracht. 
:D

Das macht aber kein Mensch so, sondern man moduliert kontinuierlich den 
Datenstrom und nicht nur rechteckig mit der Grundfrequenz. Ergebnis 
PDM, wie schon erwähnt. Ein taugliches 16 Bit Audio als PDM 
erfordert etwa 3MBit (DSD64).

PWM setzt man nur bei einfachen Anwendungen ein, wo man sehr hoch 
überabtasten kann, also geringe Bandbreiten braucht, oder die 
PWM-Frequenz exakt bekannt sein muss, um sie z.B. messtechnisch wieder 
abziehen zu können, oder aber hohe Leistungen mit geringen Frequenzen 
geschaltet werden müssen und man die Umschaltverluste nicht haben will.

von Falk B. (falk)


Lesenswert?

@ Jürgen Schuhmacher (engineer) Benutzerseite

>Das macht aber kein Mensch so, sondern man moduliert kontinuierlich den
>Datenstrom und nicht nur rechteckig mit der Grundfrequenz. Ergebnis
>PDM, wie schon erwähnt. Ein taugliches 16 Bit Audio als PDM
>erfordert etwa 3MBit (DSD64).

Aber du willst die Leistungsendstufen mal sicher nicht mit 3 Mbit/s 
schalten ;-)

von user (Gast)


Lesenswert?

schaue dir mal den DeltaSigma Modulator an
https://en.wikipedia.org/wiki/Delta-sigma_modulation

von Edi M. (Gast)


Lesenswert?

Die Sonntagabendthemen in diesem Forum sind die Besten!
Ich haue mal ein paar Ideen raus:

@TE : Es gibt 24Bitx192kHz Wandler für unter 20,- das Stück. Wer braucht 
da einen FPGA? Den könnte man doch auf 16Bit und 100kHz runtertakten, 
wenn es so dreckig sein soll.

@Jürgen: Was ist denn bei Dir "tauglich" und für welchen Zweck? 
DSD-Audio ist inzwischen als Mythos enttarnt.

@Falk: Die PWM (oder auch die PDM) wird selbverständlich VOR der 
Endstufe gefiltert.

@user: PDM ist nichts anderes als Delta-Sigma-Modulation.

von Falk B. (falk)


Lesenswert?

@ Edi M. (elektromeister)

>@Falk: Die PWM (oder auch die PDM) wird selbverständlich VOR der
>Endstufe gefiltert.

Dann hat man aber keine Klasse-D Endstufe, wie sie der OP bauen will.

"Ich würde gerne ein Netzteil / Class-D Amp mit galvanischer Trennung in
einem bauen."

von Edi M. (Gast)


Lesenswert?

Netzteil und Class-D-Amp schliessen sich meiner Meinung nach von der 
Zieldefinition her aus. Ein Netzteil muss eine viel höhere Bandbeite 
wegregeln, als ein Audio-Verstärker, während dieser wiederum genauer 
sein muss. Aussder haben beide unterschiedliche Lasten: Class-D mit 
Gleichstromanteil möchte Ich mal sehen.

von Jens W. (jensw)


Lesenswert?

@Bert
Mal zurück zum Problem:
Warum so kompliziert?
Wenn du einen Übertrager hast, dann kannst du die Netzspannung 
gleichrichten und arbeitest mit einer Zwischenkreisspannung von 325V. 
Die Trennung macht der Trafo.
Warum Vollbrücke? Der größere Trafo für eine Halbbrücke kostet weniger 
als der Aufwand eine Vollbrücke zu designen.
Für Halbbrücken gibt es viele fertige Designs, wie man so etwas macht. 
Die musst du nur auf die höhere Spannung aufbohren und fertig. Naja, so 
einfach ist es nicht. Für die hohen Spannungen und die hohe 
Schaltfrequenz wird die Hardware schon sehr anspruchsvoll.

Das Problem, dass du hast ist, das du die Vorstellung hast, du 
bräuchtest für gute Audioqualität die hohe Schaltfrequenz und die hohe 
PWM Auflösung wie von der CD. Das ist aber nicht so. Ich kenne die 
genauen Grenzen nicht, aber man kann sicher auch mit 12bit Auflösung 
arbeiten und durch die Rückkopplung auf eine gute Qualität zu kommen. 
Der Trick nennt sich Dither.
https://de.wikipedia.org/wiki/Dithering_(Audiotechnik)

Damit kommst du auf ganz andere Anforderungen von deinem System. Damit 
wird das schon machbar, ist aber eine enorme Herausforderung.
Ich empfehle dir klein anzufangen. Bau das System mit einer 
Zwischenkreisspannung von 40V auf und teste. Das muss genauso laufen. 
Danach kannst du auf die hohe Spannung und Leistung aufbohren.

Gruß, Jens

von MaWin (Gast)


Lesenswert?

Bert schrieb:
> würde gerne ein Netzteil / Class-D Amp mit galvanischer Trennung in
> einem bauen.

Hey hey, über so was hatte ich auch mal kurz nachgedacht, vor 20 Jahren, 
und verworfen weil der Trafo zu viele Schmutzeffekte reinbringt.

Immerhin ist Audio gleichspannungsfrei.

Nimm einfach einen etablierten klassischen Class-D Verstärker der sein 
Ausgangssignal per Gegenkopplung regelt und vergiss dein FPGA und deine 
6.5GHz. Seit froh, wenn überhaupt ein Ton rauskommt. Die Störeinflüsse 
durch andere Rahmenbedingungen sind grösser.

Auf Sekundärseite sitzt der Analogeingang, Dreieckgenerator und 
Vergleicher des Ausgangssugnals zwecks Rückkopplung,, zur Primärseite 
werden nur die Schaltsignale übertragen, z.B. durch Optokoppler.

Wenn das geht, kannst du dir immer noch Gedanken über entzerrende 
Signalverarbeitung durch Vorverzerrung per FPGA machen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Mit einem Dreieickgenerator wird das kein Audio von hoher Qualität, da 
muss man etwas mehr tun. Ich kann aus unterschiedlichen Gründen da nicht 
näher zu Stellung nehmen, aber bei manchen Herstellern sind die Daten 
und Funktionsweisen ihrer digitalen Audioendstufen ja mehr oder weniger 
bekannt und wenn man sich z.B. Hy..x und Ic....er und Konsorten ansieht, 
dann arbeiten die mit sehr intelligenten Ansteuerungen und 
Modulationsverfahren. Messen bildet!

Und dann kann man den Strom auch direkt aus der Steckdose beziehen, 
sprich Schaltnetzteil und Modulationsstufe zusammenfassen. Die Regelung 
muss halt schneller sein, als die Netzoberwellen, die man man nicht 
wegfiltern kann und oberhalb einer gewissen Frequenz kann man eigentlich 
recht gut filtern, ohne Dynamik zu verlieren, zumal man nach ein paar 
Phasen ja weiss, was das Netz in den nächsten Millisekunden so tun wird.

Dann muss man nur noch wissen, was die Lautsprechermembran gerade macht, 
was sie demnächst machen soll und was der Strom durch die Wicklungen 
dazu für eine Meinung hat. Die ganzen Infos kommen dann in einen Topf, 
werden "durchgerührt" und zu einem Informationspäckchen "gefaltet" und 
dann an die Regelung übermittelt. Solche Audio-PDM-Stufen arbeiten auf 
mittleren Leistungen hoch bis 600kHz -bei hohen Leistungen immerhin noch 
300kHz (jeweils für die minimale Pulslänge).

von J. S. (engineer) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Aber du willst die Leistungsendstufen mal sicher nicht mit 3 Mbit/s
> schalten ;-)

Das war mehr als Beispiel für das Thema "16 Bit Qualität" gedacht, 
allerdings würde er bei PWM in der Tat mit entsprechenden Taktraten 
fahren müssen, um an die Genauigkeit heranzureichen. Durch die starre 
Nutzung der 100kHz entsteht ja eine Faltung mit den entsprechen Daten 
und damit immer eine Grundwelle von 100kHz und die hat eine sehr 
begrenzte Bandbreite. Damit kriegst Du nicht mal Bässe gut genug raus.


Edi M. schrieb:
> @Jürgen: Was ist denn bei Dir "tauglich" und für welchen Zweck?
> DSD-Audio ist inzwischen als Mythos enttarnt.
Im Bezug auf welches Thema, ist DSD als Mythos enttarnt? DSD ist im 
Prinzip das, was aus der analogen Audio-CD rauskommt.

> @user: PDM ist nichts anderes als Delta-Sigma-Modulation.
Jaein. Nur weil es manchmal Birnen als Dessert gibt ist "Obst" nicht 
automatisch "Nachspeise", will heissen, es gibt PDM-Verfahren, die nicht 
auf klassischer Delta-Sigma-Erzeugung basieren.

von Audiomann (Gast)


Lesenswert?

Bert schrieb:
> Zusätzlich würde ich gerne eine Rückkopplung mit einem Trenntrafo
> realisieren, den ich primärseitig mit einem AD-Wandler abtaste und mit
> einem Regler dann das Signal passend regle.

Du möchtest also die Leistungsseite mit einem Trafo rückkoppeln? Dir ist 
bewusst, was ein Trafo aus solchen Rechtecksignalen macht?

Was da rauskommt, dürfte mit dem, was Deine Lautsprecher machen, 
herzlich wenig zu tun haben. Was willst Du dann dort regeln?

Durch eine solche Regelschleife entstünde alles andere, als eine genau 
Führung des Lautsprechers.

Wahrscheinlich kriegst Du einen Signalhorngenerator, der mit der 
Phasenverzögerung durch den Trafo schwingt und fieept. Möglicherweise 
sogar Ultrasschall.

Viel Spass, Ich bin hier weg.

von MurksMurksMurks (Gast)


Lesenswert?

Audiomann schrieb:
> Du möchtest also die Leistungsseite mit einem Trafo rückkoppeln? Dir ist
> bewusst, was ein Trafo aus solchen Rechtecksignalen macht?

Wie knackig ein Rechteck ist, hängt lediglich von der maximal möglichen 
Frequenz und Faktoren wie Streuinduktivität ab.

100kHz Rechteck macht jeder normale Schaltnetzteilübertrager ohne 
Probleme mit. Der kommt auf der Sekundärseite auch wieder so heraus, wie 
du ihn hereinschickts.

Von Trafos im Sinne Eisenblech hat er sicher nicht geredet. Der sagt gar 
nichts mehr zu 100kHz ;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

MurksMurksMurks schrieb:
> 100kHz Rechteck macht jeder normale Schaltnetzteilübertrager ohne
> Probleme mit. Der kommt auf der Sekundärseite auch wieder so heraus, wie
> du ihn hereinschickts.

Naja, ein Rechteck hat beliebige Oberwellen und die werden ganz sicher 
irgendwo limitiert. Ich kenne aus praktischen Erfahrungen eigentlich 
zwei Typen von Übertragern: weitgehend lineare mit eher weichen 
Kernmaterialien, die man für Audio einsetzen kann, weil die Kennlinie 
auf unter 1-2 dB genau ist (Streuinduktivitäten und - kapazitöten mit 
einbezogen) und solche, die man für digitale Übertragungen verwendet, 
welcher aber sehr viel ungenauer sind.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Für digitale Übertragung brauchst Du aber auch keine so hohe 
Genauigkeit.
Etwas rundere Flanken sind ausserdem fürs EMV besser

von J. S. (engineer) Benutzerseite


Lesenswert?

>Etwas rundere Flanken sind außerdem fürs EMV besser

Ja, aber mitunter schlecht auszuwerten, da Jitter-anfällig. Die 
Übertrager lassen sich im Übrigen mit Kapazitäten überbrücken und damit 
HF-leitend machen.

von Duennwandiger Troll (Gast)


Lesenswert?

> Ja, aber mitunter schlecht auszuwerten, da Jitter-anfällig.

Aha. Interessant. Wie kommst du darauf ?

von J. S. (engineer) Benutzerseite


Lesenswert?

Duennwandiger Troll schrieb:
> Aha. Interessant. Wie kommst du darauf ?

Das ist eigentlich anschaulich klar: Je flacher eine Flanke ist, desto 
mehr macht eine Störung an Hub aus.
http://www.96khz.org/oldpages/jitterinaudiosystems.htm

Im Prinzip gibt es drei Fälle:

Anstiegszeit Störung >> Anstiegszeit Signal, erzeugt einen zufälligen 
Fehler, der wie Signal-dithering wirkt, also bei einem Takt zu starken 
aber hochfrequenten Phasenänderungen führt, die man mit einer PLL 
filtern kann und oft muss, weil eine PLL erforderlich wird.

Anstiegszeit Störung << Anstiegszeit Signal, erzeugt einen zufälligen 
Fehler, der wie eine Frequenzmodulation wirkt, also bei einem Takt zu 
schwachen aber niederfrequenten Phasenänderungen führt, die man mit 
einer PLL nicht filtern kann und oft auch nicht muss, weil die Änderung 
gering ist.

Anstiegszeit Störung ~~ Anstiegszeit Signal -> "Phasenlotterie", die man 
nur wenig filtern kann, aber praktisch immer muss, d.h. man hat die 
Anforderung, eine PLL zu nutzen und trotzdem noch ein schlechtes Signal.

Gerade die gering-frequenten Störungen machen einen kontinuierlichen 
Fehler, den man mit noch so viel PLL-Filterung nicht rausbekommt. Im 
Gegenteil: Man kann die beaufschlagte Störung förmlich messen. Ganz 
extrem bei einem sehr flach ansteigenden Signal-

Um dem Problem zu begegnen, macht man Flanken immer schön steil = hohes 
dV/dt und verwendet Schmitt-Trigger-Eingänge mit hohem dy/dV, weil dann 
der zusätzliche Pegel zu einem kleineren dy/dt = Zeitversatz im Baustein 
führt. Ziel ist also, immer auf Fall2 zu bleiben, den aber klein zu 
halten. Dann geht es bei vielen Anwendungen ohne eine Taktfilterung und 
bei starken Störungen mit einer überschaubaren Filterung.

Beitrag #6977125 wurde von einem Moderator gelöscht.
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.