Forum: FPGA, VHDL & Co. 500 kHz-PWM mit Xilinx CPLD?


von Kent (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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.

von Kent (Gast)


Lesenswert?

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?

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


Lesenswert?

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
von Falk B. (falk)


Lesenswert?

@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

von Falk B. (falk)


Lesenswert?

@ 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.

von Roger S. (edge)


Lesenswert?

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

von Εrnst B. (ernst)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@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.

von Falk B. (falk)


Lesenswert?

@ Ε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?

von Kent (Gast)


Lesenswert?

Ε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.

von Roger S. (edge)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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."

von Εrnst B. (ernst)


Lesenswert?

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.

von Phil E. (aktiver_mitleser)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Phil E. (aktiver_mitleser)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von --- (Gast)


Lesenswert?

> +/-20ps genau

Deine Messtechnik kann ps auflösen?

Oder sind die 20 ps nur ein "educated guess"?

von Phil E. (aktiver_mitleser)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von Ingenieur (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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!!!

von Duke Scarring (Gast)


Lesenswert?

Falk B. schrieb:
> PFUI^2
Das kann man kürzen zu:
1
P^2 * F * I

: Bearbeitet durch Moderator
von J. S. (engineer) Benutzerseite


Lesenswert?

--- 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.

von Phil E. (aktiver_mitleser)


Lesenswert?

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?

von Gerald M. (gerald_m17)


Lesenswert?

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).

von Weltbester FPGA-Pongno (Gast)


Lesenswert?

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?

von Gerald M. (gerald_m17)


Lesenswert?

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.

von Kent (Gast)


Lesenswert?

Gerald M. schrieb:
> falls die <1ns zu lang ist.

Du hast gelesen, dass es sich hier um ein Timing im 100ps-Bereich 
handelt?

von Dr. Sommer (Gast)


Lesenswert?

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.

von Kent (Gast)


Lesenswert?

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

von Gerald M. (gerald_m17)


Lesenswert?

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
Noch kein Account? Hier anmelden.