• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


class D in VHDL
#1
(falls ich mich gerade wegen Unwissenheit blamiere, bitte nicht zu sehr schimpfen).

Weiss jemand, ob es ein VHDL Modul irgendwo gibt, welches direkt die Steuerung eines class-D Verstärkers übernimmt?

Mir ist bekannt, dass es quasi jede Menge fertiger Bautsteine gibt, die die Steuerung eines solches Moduls übernehmen können.

Ich habe die Idee, so eine Steuerung selbst in einem FPGA (z.B. Xilinx LCA) herzustellen. Ich verspreche mir davon mehr Möglichkeiten, das Signal zu verarbeiten, z.B. direkt den Datenstrom einer CD incl Error-Correction auszuführen, dabei könnte man einen Feedback-Kreis oder auch "Flavors" wie 'Röhrencharacteristik' einbauen, die Rechnungen würde ich allesamt rein digital durchführen (z.B. durch eine FFT mit entsprechenden digitalen Filtern).

Falls jemand sowas schon mal gehört hat, oder weiss wo man so ein IP Modul ggf. bekommt, wäre ich für einen Tip dankbar. Den *ganzen* Kram in VHDL selbst zu giessen und zu testen, scheint mir ziemich aufwendig.

... oder hat das schon mal jemand probiert und kann Gründe nennen, davon Abstand zu nehmen.

goodfellow
 
#2
Heia überrascht

Das ist aber wirklich ein hochgestecktes Ziel.

Hast Du schon mal in VHDL umfangreichere Projekte erarbeitet?
 
#3
mein Background:

Habe ca 10 Jahre Erfahrung in der Programmierung von LCAs (VHDL), denke daher schon, dass ich das auf die Reihe bringen würde (ausr. Zeit vorausgesetzt).

Würde die Arbeit aber gerne vermeiden, wenn es das schon fertig oder zumindest in Teilen fertig irgendwo gibt.

Es würde mich auch interessieren, ob jemand soetwas in dieser Richtung schon mal versucht hat.
 
#4
Naja... je länger ich mir darüber Gedanken mache (auch angesichts Deines Backgrounds) desto interessanter erscheint mir die ganze Sache.

Es hätte ja schon einen großen Charme, wenn man "nur" die Umrechnung von irgendeinem digitalen in ein Speaker-geeignetes PWM-Signal hinbekäme. Also meinetwegen Umrechnung von WAV nach PWM.

Sowas sollte es eigentlich irgendwo geben. Und falls nicht: das könnte man auch noch innerhalb 20h oder so selbst hinbiegen.

Das wäre dann sozusagen der Kern-Wandler für die Umsetzung irgendwelcher zeitdiskreter in (quasi-) zeitkontinuierliche Signale.

Und darauf sollte man dann all den anderen wunderschönen Kram aufpropfen können. Andere zeitdiskrete Formate, z.B. die von Dir gewünschte CD inkl. Err-Corr, Klangbeeinflussungen mit - gewiss auch fertig ladbaren - Digitalfiltern, PWM-Pulsweiten- und Überlappungsüberwachungen, Softstart usw... usw...

Ja. So könnte ich mich auch selbst dafür begeistern.

Erste Aufgabenstellung: Umandlung zeitdiskreter in zeitkontinuierliche PWM-Signale. Wärest Du mit dieser Herangehensweise einverstanden? misstrau
 
#5
Meines Wissen enthalten WAV-Dateien 16bit integer-Werte, praktisch so wie sie vom ADC kommen. Das in ein entsprechendes Tastverhältnis umzurechnen sollte doch eigentlich nicht so schwierig sein.
Oder liege ich da völlig falsch?
...mit der Lizenz zum Löten!
 
#6
Mal begrübeln....

Man könnte einfach den 16-Bit-Wert nehmen und ihn der Trägerfrequenz von meinetwegen moderaten 200kHz zuordnen.

Also mit den 16 Bit einen gleichgroßen Akku füllen und ihn von der Taktfrequenz dekrementieren lassen, bis dass er Null ist. In dieser Zeit ist der PWM-Ausgang high.

Danahch muss man den Akku mit dem Wert-Komplement laden und ebenso dekrementieren. Während der Zeit ist der PWM-Ausgang low.

So könnte mans tun.

In der Praxis bedeutet das aber, dass man eine Dekrementierungsfrequenz von 13 GHz benötigen würde, wenn man die 16 Bit voll auflösen will.

So gehts also vermutlich nicht.

Divisionen und Multiplikationen gehen nicht.

.... weitergrübeln... misstrau
 
#7
Wenn wir davon ausgehen, dass eine Latenzzeit im Bereich ms keine Rolle spielt, dann kann man die Arithmetik serialisieren und dann ist Multiplikation überhaupt kein Problem und Division nur eine Knobelaufgabe.

Für Filter braucht man dann wohl eine Wandlung in den Dualraum (z.B. eine FFT) und jede Menge Tabellen. Ist wohl nicht mehr trivial, aber lösbar.

Wenn das Ganze hörbar Sinn machen soll, dann muss man die Latte wohl in der Accuphase, Wadia oder Linn Liga aufhängen und da sind 16 Bit fast schon kalter Kaffee, mein (uralter) Accuphase Wandler arbeitet jedenfalls mit einem Oversampling und kommt rechnerisch dann auf 24 Bit. Darunter würde ich nicht anfangen.

3 GHz sind zwar technisch möglich, fordern aber schon erhebliche Aufwendungen im Schaltungsdesign. Ich habe das noch nicht zu Ende überlegt, glaube aber, dass man nicht wirklich so fein auflösen muss, wenn man eine Art ErrorCorrection Verfahren, wie es z.B. in der Bildverarbeitung eingestzt wird, ausnutzt ... aber wie gesagt noch nicht zu Ende überlegt.
 
#8
Das Hauptproblem ist m.E. die Taktung.

Ein analoger PWM-Modulator arbeitet kontinuierlich. Zwar ist bei 200kHz Träger kein Impuls kürzer als 100ns bzw. länger als 4900ns, ABER jeder Impuls kann eben zu einem x-beliebigen Zeitpunkt beginnen und aufhören. Angesichts der uns bekannten Dynamiken bei analogen Modulatoren liegt man da - rechnerisch - irgendwo im unteren Picosekunden-Bereich.

Selbst wenn es uns gelänge, die PWM in superschnellen 1ns-Steps auszugeben, so würde das letztlich nur einer Auflösung von 12 Bit entsprechen.

Also "oversampling". Allerdings werden wir damit gerade mal 3 Bits herausholen können, denn der Abstand zwischen höchster Eingangsfrequenz und dem PWM-Träger beträgt nur 1:8.

Hmmmm... ich befürchte, dass die rein digitale Umwandlung WAV in PWM nicht trivial wird.... misstrau
 
#9
Ich weiss zwar nicht mehr wie es geht, aber es gibt doch hochwertige Audio 1bit D/A Wandler. Vieilleicht findet sich da die fehlende Idee zur 16bit- Zeitqunantisierung
...mit der Lizenz zum Löten!
 
#10
Die kommen mit einer sehr hohen Frequenz daher und können sich dann ein umfassendes oversampling erlauben, ohne in den hörbaren Bereich einzubrechen.

Würden wir mit einem PWM-Träger von beispielsweise 1MHz arbeiten, so würde alles schon viel besser aussehen. Das kriegen wir aber in den Leistungsstufen nicht realisiert.
 
#11
Zunächst verstehe ich nicht, weshalb man eine hohe PWM-Trägerfrequenz nehmen sollte. Das ist nicht nur ein Problem für den D-Amp, sondern die Zeitrasterung würde bei 64k-Schritten / PWM-Zyklus in den pico-Sekunden-Bereich rutschen. Ich denke, dass man eine möglichst niedrige PWM-Taktfrequenz wählen sollte, vielleicht 100kHz.

Bei 100kHz PWM-Zyklus wäre das allerdings immer noch eine Abtastrate von 6,4 GHzt für 150psec/bit.
Da sowas offensichtlich unpraktikabel ist, bietet sich ein hybrides
Verfahren an.
So was in der Art wie: Nur ein Teil der Datenbits wird für die Zeitquantisierung genutzt, der Rest steuert über einen DAC eine analoge Rampe zur Feinpositionierung des PWM-Umschaltzeitpunktes.

...mit der Lizenz zum Löten!
 
#12
Zitat:Die kommen mit einer sehr hohen Frequenz daher
nein Big Grin
(wie war das gleich wieder: wenn man keine ahnung hat, einfach fresse halten....
..das musste jetzt einfach sein ...musste...musste...)
also für mich war in der zeit, als die "guten" audio-DA-wandler entwickelt wurden (so etwa 1994), der CS4303 ein traum...
http://www.datasheetarchive.com/pdf/getf...010800.pdf

das ding werkelt mit standard 16,9 MHz takt, 8x oversampling und nur mit diesen takten !
somit produziert er eine 352 kHz PWM, in 48 clocks gerastert -> eben die 16.9 Mhz
der eigentliche "dreh" ist der sog. noise-shaper !!
gab damals extra einen artikel in der JAES , weil ein shaper 5.ordung schon was besonderes ist...ab 3.ordnung wird der mist normalerweise instabil und erfordert trickreiche gegenmassnahmen
dieses prinzip könnten wir -bei machbaren 350 kHz PWM - durchaus mit einer d-amp endstufe zu nem "echt digitalen" amp verwurschteln
die berechnung im CS4303 hatte im audio-bereich immerhin fast 150dB dynamik, was imho wirklich recht ordentlich ist (rein analog kommt ja bei -150dB das atomrauschen...)
in der realität konnte der wert natürlich nicht erreicht werden, rauschen, jitter usw ... aber immerhin -140dB zeigt die messung im db
[Bild: 18_cs4303bsp.png]
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#13
Zitat:Original geschrieben von alfsch
Zitat:Die kommen mit einer sehr hohen Frequenz daher
nein Big Grin
(wie war das gleich wieder: wenn man keine ahnung hat, einfach fresse halten......das musste jetzt einfach sein ...musste...musste...)
motz

und gleich dahinter schreibst Du was von 16 MHz während ich mit "hoher Frequenz" lediglich 1 MHz meinte (und ja auch schrieb).

motz

Du hast es tatsächlich geschafft, Dich noch auf den letzten Drücker an Gerd und Kurt vorbei auf den ersten Platz des "Unuser des Jahres" zu katapultieren lachend
 
#14
Zitat:Original geschrieben von alfsch
dieses prinzip könnten wir -bei machbaren 350 kHz PWM - durchaus mit einer d-amp endstufe zu nem "echt digitalen" amp verwurschteln

Hört sich nach viel Arbeit an misstrau Was schätzt Du? misstrau
 
#15
Zitat:Du hast es tatsächlich geschafft, Dich noch auf den letzten Drücker an Gerd und Kurt vorbei auf den ersten Platz des "Unuser des Jahres" zu katapultieren
ooh, zuviel der ehre Confused
du kennst doch das standard-verfahren: guter cop - böser cop
+ nachdem du alle "bösen" rausgekickt hast, muss ja jemand die unbesetzte rolle übernehmen Tongue

Zitat:Hört sich nach viel Arbeit an Was schätzt Du?
ich wollte sowas schon lange machen, daher kann ich so spontan ja auch einiges dazu sagen...nur: ich bin leider kein VHDL-profi....und daher hab ich bislang nur gelegntlich über mögliche verfahren/methoden nachgedacht -> der aufwand ist relativ: für mich (oder dich) wohl ne echt fette aufgabe, für nen profi (wie den typ, der die FPGA-schulung gemacht hat, die ich besucht hatte) eher eine 1 bis 2-tage-beschäftigung

wenns interessiert, kann ich ja mal meine vorstellung posten...
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#16
Ich hätte "böse" lieber ohne Anführungszeichen gehabt und "rausgekickt" lieber mit Anführungszeichen. Noch sind Gerd und Co. nahe bei uns motz . Rauskicken muss ich sie nicht, weil sie zur Zeit nicht mal reinkommen ;baeh Sie stehen sozusagen auf der falschen Seite der Tür.

Deine Projektvorstellungen zu dieser VHDL-Sache würden mich schon sehr interessieren. misstrau

[SUP]Denn noch gebe ich die Hoffnung nicht auf, dass sich hinter all Deinen schlechten Eigenschaften doch noch ein fähiger Ingenieur verbirgt... [/SUP] klappe
 
#17
meine Meinung zum Thema Aufwand.

Die Minimal-Lösung: "Digital rein, PWM raus, kein Firlefanz wie Shaping usw" möge man incl Testen wohl in 1-2 Tagen hinkriegen, aber dafür gibt es ja schon fertige Chips.

In der Königsklasse (>= 24 Bit) mit sauber durchgerechneten Effekten wie Jitter, Latenzzeitkontrolle und pi pa po, würde ich den Wert locker auf 2 Wochen hochsetzen.

Das Ganze in eine Schaltung zu bauen (incl. AMP) ist dann noch mal wieder 2 Wochen (Schaltungsdesign, Layout, Impedanzkontrolle, CE/fcc Anforderungen an Abstrahlung etc) bzw Kosten von schnell mal 4-stellig, wenn man ein Standardnetzteil nimmt.

Das alles ist jetzt noch nicht sooo tragisch, würde man schon irgendwie hinkriegen.

Das Problem fängt IMHO erst mit den Sahnehäubchen an, nämlich wenn man das digitale Signal verändert.
Hier mag ich noch keine konkrete Abschätzung geben, aber nach meiner Erfahrung ist allein die Konzeptionsphase (Idee entwicklen, nachrechnen, wieder verwerfen etc) mit Monaten anzusetzen.
[Ein Bekannter von mir, der mit einer vergleichbaren Aufgabe zu tun hatte, hat dafür ein Team von 10 Leuten 5 Jahre 'durchgefüttert', aber er hatte Glück: Er hatte einen potenten Geldgeber]

Würde mich nicht wundern wenn in der hier beschriebenen Aufgabe am Ende ähnliche Beträge aufgerufen werden.

Seid Ihr jetzt abgeschreckt?

 
#18
Zitat:Original geschrieben von goodfellow
Die Minimal-Lösung: "Digital rein, PWM raus, kein Firlefanz wie Shaping usw" möge man incl Testen wohl in 1-2 Tagen hinkriegen, aber dafür gibt es ja schon fertige Chips.

Fertige Chips wollen wir ja nicht. Da lernt man ja nichts. Allerdings kann man sich die fertigen Chips ja mal anschauen. Hast Du Links? Und vielleicht finden wir ja auch diesbezüglich Arbeitsgruppen im Netz.

Ich bin dafür, dass wir mit genau der Minimallösung beginnen. 16 Bit WAV rein und PWM raus ohne Firlefanz.

Ich hab hier immer noch so ein ungenutztes CPLD-Board von Pollin rumliegen. Der könnte die eigentliche Umwandlung machen. Und dann stelle ich mir einen kleinen Tiny vor, der nen USB-Stick leersaugt und die WAV-Daten ins Pollin-RAM schiebt. Das wär doch schon mal was.
 
#19
Zitat:Seid Ihr jetzt abgeschreckt?
nee. seh ich genau so. Cool

bzgl . mit welchem chip könnte man...hab ich mir den rausgepickt:
Lattice LFXP2-8E-5TN144C
kost 14 eu bei mouser
http://de.mouser.com/Search/ProductDetai...8E-5TN144C

--weil: hat FLASH mit drauf, dh "instant ON" , kein booten usw.
- preis günstig
- compiler free
- leistung nett: 8000 zellen, 220kb ram drin, kann 600MHz, hat 16 (!) 18x18 -> 36bit multiplizierer drauf ....also ideal um DSP/filter seeehr flott zu berechnen
- im 144pin flatpack auch ohne roboter noch lötbar Wink

sieht doch gut aus, oder ?
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#20
Zitat:Original geschrieben von alfsch
sieht doch gut aus, oder ?

Pflanzt Du immer die Balkonblumen mit einer Dampframme? motz

Wenn die minimale Lösung 16 bit WAV auf PWM solche eine 1-Chip-Kampfmaschine erfodern sollte, dann ist das Projekt entweder wirklich nur was für Profis oder der ganze Ansatz ist Schrott.