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 schrieb: > (D.h., die PWM muss mindestens in 100...150 ps-Schritten schaltbar sein.) D.h. die Taktfrequenz muss 10GHz sein... > mit einem Xilinx CPLD erzeugen? Nein. Und auch sonst mit keinem. Und selbst als ASIC ist das nichts für Anfänger. Dort wurde schon mal eine kombinatorische Lösung via Carry-Chain für FPGAs diskutiert: https://ieeexplore.ieee.org/document/6377307/ Im Beitrag "PWM 100 kHz, minimum 16 Bit Auflösung" war da auch schon einer in diesem Bereich unterwegs. Und im Beitrag "High Resolution PWM Mikrocontroller (<ns Auflösung)" sucht wer µC dafür. Der https://www.renesas.com/kr/en/about/press-center/news/2013/news20130920.html bringt auch "nur" 300ps zuwege... Kent schrieb: > Welche Zeiten sind denn etwa realisierbar? Was willst du denn machen? 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?
:
Bearbeitet durch Moderator
@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.
> +/-20ps genau
Deine Messtechnik kann ps auflösen?
Oder sind die 20 ps nur ein "educated guess"?
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.
http://www.ti.com/power-management/digital-power/overview.html Diese Digital Power Dinger haben auch hochauflösende PWMs, vielleicht kann man damit was anfangen.
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.
Gerald M. schrieb: > falls die <1ns zu lang ist. Du hast gelesen, dass es sich hier um ein Timing im 100ps-Bereich handelt?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.