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
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.
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?
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.
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.
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.
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.
> 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?
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.
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.
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.
@ 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 ;-)
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.
@ 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."
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.
@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
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.
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).
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.
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.
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 ;-)
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.
>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.
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.