Hallo,
kann ich eine PWM mit 500 kHz Schaltsignal und einer minimalen Auflösung
meines erzeugten Signals von 14 Bit überhaupt mit einem Xilinx CPLD
erzeugen?
(D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar
sein.)
Wenn ja, welchen Baustein muss ich dafür mindestens verwenden?
Vielen Dank für alle Tipps.
@ Kent (Gast)
>kann ich eine PWM mit 500 kHz Schaltsignal und einer minimalen Auflösung>meines erzeugten Signals von 14 Bit überhaupt mit einem Xilinx CPLD>erzeugen?
Nö.
>(D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar>sein.)
Eben darum geht es nicht.
>Wenn ja, welchen Baustein muss ich dafür mindestens verwenden?
Nimm einen PICCOLO.
Falk B. schrieb:>>(D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar>>sein.)>> Eben darum geht es nicht.
Welche Zeiten sind denn etwa realisierbar?
@Kent (Gast)
>>>(D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar>>sein.)>>> Eben darum geht es nicht.>Welche Zeiten sind denn etwa realisierbar?
Nur so schnell, wie man sequentielle Logik takten kann. Selbst wenn man
ALLE Register seines Können zieht, wird man kaum über 500MHz/2ns
Auflösung kommen.
Es gibt ein paar Tricks mit FPGAs, welche über GBit-Tranceiver verfügen.
Die kann man je nach Typ mit 3-10 GHz takten. Wenn man sie als einfache
Schieberegister ohne jegliche Kodierung etc. verwendet, kann man
100-300ps Zeitauflösung erzielen. Allerdings kostet so ein FPGA deutlich
mehr als ein PICCOLO und der Aufwand, das hinzukriegen ist auch um
einiges höher. Beim PICCOLO lädt man ein Beispielprogramm und ist fast
fertig. Das Eval-Board C2000 kostet gerade mal 25 Euro.
https://www.reichelt.de/c2000-piccolo-launchpad-testplattform-ti-launchxl-p129632.html?&trstct=pos_0
@ Lothar M. (lkmiller) (Moderator)
>> Welche Zeiten sind denn etwa realisierbar?>Was willst du denn machen?
DAS ist die entscheidende Frage. Meist ist das so oder so nur Spinnerei.
>BTW: wie kannst/willst du dieses zig GHZ-Signal (PWM ist ja eigentlich>rechteckig, d.h. die Oberwellen gehen noch weit, weit höher) auf der>Leiterplatte handhaben?
Nur weil ein 500kHz PWM-Signal 100ps ZeitAUFLÖSUNG hat, hat es noch
lange keine 100ps ANSTIEGSZEIT.
Mit einem Kintex-7 und dessen ODELAY laesst sich ohne viel Aufwand eine
Zeitaufloesung im unteren zweistelligen Picosekunden Bereich
realisieren.
aber in einem CPLD wird das nix.
Cheers, Roger
Was soll es denn am Ende werden, warum meinst du, die hohe Frequenz und
Auflösung zu brauchen?
Flimmerfreier Lampendimmer?
Super-HiFi Class-D Verstärker?
SDR für Langwellen-Funk?
Wie schnell ändert sich der Sollwert, kann man evtl. mit 10 Bit PWM
arbeiten, und die 4 fehlenden Bit dazu-"dithern"?
(13 Durchläufe mit Sollwert 987, dann 3 Durchläufe mit 988, dann von
vorne)
Geht eine Analog-Lösung? 14-Bit DAC, dahinter schneller Komparator gegen
Sägezahn/Dreieck?
@Roger S. (edge)
>Mit einem Kintex-7 und dessen ODELAY laesst sich ohne viel Aufwand eine>Zeitaufloesung im unteren zweistelligen Picosekunden Bereich>realisieren.
So wenig wie eine Schwalbe einen Sommer macht, macht ein Odelay einen
PWM-Generator mit 100ps Zeitauflösung.
@ Εrnst B. (ernst)
>Geht eine Analog-Lösung? 14-Bit DAC, dahinter schneller Komparator gegen>Sägezahn/Dreieck?
Und du glaubst ernsthaft, daß man das analog WIRKLICH so hinbekommt?
Schon mal an die Spannungsauflösung und Rauschen gedacht?
Εrnst B. schrieb:> Super-HiFi Class-D Verstärker?
So etwas in dieser Richtung, mit SiC-MOSFETs aufgebaut.
Εrnst B. schrieb:> Geht eine Analog-Lösung? 14-Bit DAC, dahinter schneller Komparator gegen> Sägezahn/Dreieck?
Da auch noch weitere Funktionen benötigt werden, wie z.B. veränderbare
Filter, soll der komplette Pfad vom Einlesen des Signals bis zur
PWM-Erzeugung in einem Baustein realisiert werden.
Falk B. schrieb:> So wenig wie eine Schwalbe einen Sommer macht, macht ein Odelay einen> PWM-Generator mit 100ps Zeitauflösung.
Genauso wie Deine Schwalbe mit dem MGT.
Cheers, Roger
@ Roger S. (edge)
>> So wenig wie eine Schwalbe einen Sommer macht, macht ein Odelay einen>> PWM-Generator mit 100ps Zeitauflösung.>Genauso wie Deine Schwalbe mit dem MGT.
Das ist ein Adler! ;-)
Ja klar, aber das sagte ich bereits.
"Allerdings kostet so ein FPGA deutlich mehr als ein PICCOLO und der
Aufwand, das hinzukriegen ist auch um einiges höher."
Kent schrieb:> Da auch noch weitere Funktionen benötigt werden, wie z.B. veränderbare> Filter, soll der komplette Pfad vom Einlesen des Signals bis zur> PWM-Erzeugung in einem Baustein realisiert werden.
Ok, also ist deine Anwendung:
irgendwoher kommt ein Analog-Audio-Signal.
Das wird digitalisiert, digital nachbearbeitet, div. Filter usw.
Vermutlich in "Echtzeit" ohne lange Verzögerung.
Und dann, möglichst ohne wieder analog zu werden, auf eine
Class-D-Endstufe geleitet.
Hast du dich mal in der DSP-Ecke umgesehen? die haben teilweise recht
schicke PWM-Ausgänge. 500kHz@14bit zwar eher nicht, aber vielleicht
reicht die ja trotzdem, und du musst zumindest nicht bei 0 anfangen...
DSP für Audio-Anwendungen einzusetzen ist ja nicht sooo ungewöhnlich.
Kent schrieb:> (D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar> sein.)Kent schrieb:> So etwas in dieser Richtung, mit SiC-MOSFETs aufgebaut.
Und die SiC-FETs deren An- und Ausschaltzeiten auf <100ps gematcht sind,
welche Silizium-Fee verkauft euch die? Samt den MOSFET-Treibern?
Eure Idee fällt wahrscheinlich leider in die Kategorie "Wenn es so
einfach wäre, hätte es vor euch schon jemand gemacht". Ist ja
schließlich verlockend, die Effizienz von gepulstem Class-D-Betrieb in
immer höhere Frequenz- und Auflösungsbereiche zu drehen in dem man
einfach die PWM-Taktraten hoch genug schraubt... :-/
Bis zu welcher Ausgangsbandbreite und -auflösung solls denn gehen?
Vielleicht kann man euch dann bessere Hilfestellung geben.
Mein Vorschlag wäre, vom Konzept her eher in Richtung hybrides
Delta-Sigma zu gehen, (ihr vergleicht euer Ausgangssignal mit eurem
Referenzsignal und schaltet eure FETs dadurch gesteuert ein und aus),
denn dann sind die ganzen Nichtlinearitäten der Treiber, FETs und Filter
mit in der Feedbackschleife. Mit einem geeigneten Modulationsverfahren
höherer Ordnung kommen dann bei niedrigen Taktraten auch schon gute
Signal-Rauschabstände raus.
Falk B. schrieb:>>kann ich eine PWM mit 500 kHz Schaltsignal und einer minimalen Auflösung>>meines erzeugten Signals von 14 Bit überhaupt mit einem Xilinx CPLD>>erzeugen?> Nö.
Mit einem FPGA habe ich schon auf statisch +/-20ps genau getriggert. War
ein Stratix. Mit einem aktuellen Artix und den IOs in Verbindung mit
dynamisch alloziierten LUTs geht das sicher in einer ähnlichen Liga. Das
erfordert aber einiges an analoger Beschaltung, Kalibrierung,
Wärmemodell und der FPGA darf an der Ecke auch sonst nichts Dynamisches
machen, was unkalkulierbare IO-Last erzeugt. Die 150ps des TE sind aber
eigentlich recht gut zu machen.
Philipp M. schrieb:> Und die SiC-FETs deren An- und Ausschaltzeiten auf <100ps gematcht sind,> welche Silizium-Fee verkauft euch die? Samt den MOSFET-Treibern?
Das wird wegkalibriert, indem die Ausgänge des FPGAs entsprechend
individuell agieren.
> Eure Idee fällt wahrscheinlich leider in die Kategorie "Wenn es so> einfach wäre, hätte es vor euch schon jemand gemacht".
BTDT :-)
> Mein Vorschlag wäre, vom Konzept her eher in Richtung hybrides> Delta-Sigma zu gehen,
So wird das bei modernen digitalen Audioverstärkern auch gemacht,
allerdings zeigt es sich trotzdem, dass es am Besten ist, durch
entsprechende Ansteuerung erst gar keinen unnötigen Regelbedarf
einzuspseisen, jedenfalls nicht in dem Spektralbereich, der durch die
Schleife und Messungen nicht geregelt werden kann.
Für Präzisionsaufgaben benötigt man schon beides.
Jürgen S. schrieb:> Mit einem FPGA habe ich schon auf statisch +/-20ps genau getriggert.
Was dann aber auch wieder in Richtung programmierbarer Delay geht und
nicht eine 50GHz-Clock. Das wäre dann wieder der PICCOLO, da er ja nicht
die dicke Datenverarbeitung des FPGA braucht.
Es muss ja kein "dickes" FPGA sein. So viel SV ist da nicht drin. Ein
kleiner Artix wäre preiswert und hätte alles an board. Eine gute PLL
braucht es halt noch.
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5424742/ - /A 7.4 ps
FPGA-Based TDC/
Auflösen ist nicht das Problem. Erzeugen ist das Problem.
@Jürgen S.: magst du darauf ein bisschen genauer eingehen? Das Thema
finde ich sehr interessant. Alternativ auch Links zu Whitepapern oder
Appnotes etc.
Falk B. schrieb:> Diese Digital Power Dinger haben auch hochauflösende PWMs, vielleicht> kann man damit was anfangen.
Die dürften eine analoge Regelung drin haben, die keine zeitliche
Rasterung mehr haben.
@ Ingenieur (Gast)
Du schmückst dich mit fremden Federn. PFUI!
>> Diese Digital Power Dinger haben auch hochauflösende PWMs, vielleicht>> kann man damit was anfangen.>Die dürften eine analoge Regelung drin haben, die keine zeitliche>Rasterung mehr haben.
Nicht mal ein Datenblatt kann er lesen, aber rumtönen!
PFUI^2!!!
--- schrieb:> Deine Messtechnik kann ps auflösen?
Mein eigene nicht, die des Kunden schon. Die Messung erfolgte über die
Wirkung des HL-Schaltens. Effektiv eine Zeit-Spannungsumsetzung mit
mehrfacher Kalibrierung. Dazu zählt auch das Messen der sich im Betrieb
ändernden Randbedingungen, deren Vorausberechnung zum Zeitpunkt des
"Zündens" und der dann mutmaßlich vorliegenden Effekte und deren
Einflüsse auf das analoge System.
Philipp M. schrieb:> @Jürgen S.: magst du darauf ein bisschen genauer eingehen? Das Thema> finde ich sehr interessant. Alternativ auch Links zu Whitepapern oder> Appnotes etc.
Zu dem Thema gibt es nur "black papers" in denen drin steht, keine
Details zu publizieren. Auch der FPGA-Hersteller hat damals ein NDA
zeichnen müssen.
Umgekehrt halte ich die meisten Überlegungen aber für naheliegend und
genau genommen liegen sie auch offen. Nehmen wir z.B. den Effekt Nummer
1, nämlich die Variation des Stromes eines FPGA-Ausgangspins in
Abhängigkeit der Aktivität seines Nachbarn. Die Schlussfolgerung, die
Dinger möglichst leistungslos zu schalten, die Aktivität des Nachbarn
mit zu berücksichtigen, das Folgesignal zu gaten und die Steuerung des
Gatens HF-fest zu machen, ist in ählicher Weise in jeder zweiten
HF-Baugruppe zu finden, die kurze Pulse braucht.
Jürgen S. schrieb:> Zu dem Thema gibt es nur "black papers" in denen drin steht, keine> Details zu publizieren. Auch der FPGA-Hersteller hat damals ein NDA> zeichnen müssen.
Hm, okay :-/ interessant wäre noch die Pulsbreite bzw die Wiederholrate
- waren die im regulär machbaren Bereich des FPGA (d.h. so was wie <300
MHz mit 20ps aufgelöst) oder habt ihr da auch was getrickst?
Ich würde das ganz auch mit einem Piccolo oder STM32F334 machen. Der STM
wird einfach programmiert als hätte der Timer eine 4.9GHz Clock, bei dem
Piccolo (gibt an bei 500kHz 13,8 Bit Auflösung, etwas unter dem
geforderten, aber hört ja eh niemand) weiß ich das nicht.
Dann einfach alles im FPGA machen und 14 Ausgänge parallel an den
Mikrocontroller, und diesen Wert einfach ständig in das Compare-Match
Register schreiben. Bei dem STM32 muss man da nichteinmal programmieren
können, das macht CubeMX für einen (bis auf das Schreiben der Eingänge
in das Register, ist aber nur eine Zeile).
Gerald M. schrieb:> Dann einfach alles im FPGA machen und 14 Ausgänge parallel an den> Mikrocontroller,
Und wer sorgt dafür, dass das timing des FPGA so genau ist, dass der dem
keine Variation in der Zeitauferelegt? Hast Du schon einmal
FPGA-Ausgänge angesehen?
Welche Variation? Dass der eine Pin noch im alten Zustand ist während
der Nachbarpin den neuen hat? Dann nehm halt noch einen 15. Pin als
"ready" Signal, falls die <1ns zu lang ist. Bei 500kHz kann der
Mikrocontroller sogar anfragen ob alles passt.
Kent schrieb:> Du hast gelesen, dass es sich hier um ein Timing im 100ps-Bereich> handelt?
Der PWM Duty Cycle wird sich ja nur mit 500kHz, d.h. alle 2 us, ändern.
Dr. Sommer schrieb:> Der PWM Duty Cycle wird sich ja nur mit 500kHz, d.h. alle 2 us, ändern.
Richtig, aber mein PWM-Signal sollte sich zum Beispiel so verhalten:
Schwingung n: High = 1,0015 us und Low = 0,9985 us
Schwingung n+1: High = 1,0016 us und Low = 0,9984 us
Ja, das bedeutet dass sich alle 2us das Verhältnis ändert. Und genau das
würdest du mit den Pins übergeben. Die Unterteilung in die beiden high
und low-Zeiten macht der Mikrocontroller. Der STM32 über mehrere
phasenverschobene Zähler und der Piccolo über eine Schieben des
Zeitpunktes des Pintoggelns im ps Bereich.
Ich weiß nicht ob du nicht verstanden hast was ich meine oder du nicht
verstanden hast was du vor hast, aber ich bin mir ziemlich sicher dass
das Teil so eh nicht gebaut wird und die Diskussion sich damit eh
erledigt.