Forum: FPGA, VHDL & Co. Einstieg in FPGA/CPLD


von Dominik Thalhammer (Gast)


Lesenswert?

Hallo,
Ich muss in meinem aktuellen Projekt eine große Anzahl PWM Kanäle bei 
hoher Frequenz >1kHz bereitstellen.
Zu erst waren die atmel Xmega's geplant, die ja jeder 16x16bit haben.
Leider musste ich noch wärend der Threorie Phasen eingstehen, das die 
viel zu langsam sind und nicht mal annähernd an 1kHz herankommen.
Ich habe schon öfter von FPGA und CPLD's gelesen, und wenn ich das 
richtig verstanden habe dann ist es möglich mit diesen nahezu jede 
beliebinge Digitale Schaltung in einem Chip zu realisieren, oder ?
Da sollte es doch kein Problem sein, einen 16bit Zähler und ein paar 
komperatoren zu verwirklichen ?
Da ich jedoch leider noch nie mit FPGA/CPLD's gearbeitet habe muss ich 
mich erst noch einlesen, weshalb ich nach guten turorials suche.
Da es mir jedoch nicht möglich ist ein BGA Package zu löten ist die 
Auswahl hier recht klein.
Die Daten sollen per SPI von einem kleinen atmega in den CPLD geschoben 
werden.
Mal angenommen ich nehme diesen FPGA:
http://www.reichelt.de/GALs-PALs/XC3S-50-TQ144/3/index.html?;ACTION=3;LA=446;ARTICLE=70655;GROUPID=2955;artnr=XC3S+50+TQ144
Währe es dann möglich mit diesem rund 90 PWM Kanäle @ 1kHz mit 16bit zu 
erzeugen ?
Ich habe mal gelesen das bei einem FPGA das "programm" nach dem Start 
jedesmal wieder in den Chip geladen werden muss.
Ist das mit einem atmega machbar ?
Bei CPLD's bleibt das "programm" anscheinend auch ohne Strom erhalten.
Sind CPLD's dafür schnell genug ?

MFG Thalhammer

von Thomas T. (knibbel)


Lesenswert?

Dominik Thalhammer schrieb:

> Da ich jedoch leider noch nie mit FPGA/CPLD's gearbeitet habe muss ich
> mich erst noch einlesen, weshalb ich nach guten turorials suche.
> Da es mir jedoch nicht möglich ist ein BGA Package zu löten ist die
> Auswahl hier recht klein.

> Die Daten sollen per SPI von einem kleinen atmega in den CPLD geschoben
> werden.
> Mal angenommen ich nehme diesen FPGA:
> 
http://www.reichelt.de/GALs-PALs/XC3S-50-TQ144/3/index.html?;ACTION=3;LA=446;ARTICLE=70655;GROUPID=2955;artnr=XC3S+50+TQ144
> Währe es dann möglich mit diesem rund 90 PWM Kanäle @ 1kHz mit 16bit zu
> erzeugen ?

Würde gehen, wobei im TQ144-Gehäuse maximal 97 I/Os zur Verfügung 
stehen. Könnte also mit SPI und Clockeingang knapp werden.

> Ich habe mal gelesen das bei einem FPGA das "programm" nach dem Start
> jedesmal wieder in den Chip geladen werden muss.
> Ist das mit einem atmega machbar ?

Ja, das wäre machbar. Einfacher wäre aber wohl ein kleines Flashrom, 
welches automatisch bei jedem Start die Konfiguration überträgt. 
Bedenke: maximal 3,3V beim FPGA. 5V nur über Pegelwandler...

> Bei CPLD's bleibt das "programm" anscheinend auch ohne Strom erhalten.
> Sind CPLD's dafür schnell genug ?

CPLD und FPGA sind verschiedene Bauelemente, aber für deine Anwendung 
schnell genug.


Gruß,
Thomas

von Schlumpf (Gast)


Lesenswert?

Mit nem normalen CPLD wirst du dabei aber an die Grenzen stoßen.

Für 90 PWM a 16 Bit brauchst du alleine für die Komparatoren 1440 
Register. Dazu kommt dann noch der Counter mit 16 Registern und das SPI 
und dann nen entpsrechenden fetten Multiplexer, der die die Daten des 
SPI auf das jeweilige Komparatorregister schaltet.

Also der von dir vorgeschlagene Typ könnte gehen, aber viel Luft nach 
oben hast dann nicht mehr.

Schau dir mal von Lattice den XP2 an. Den gibt es mit 5k LUT im TQPF 144 
Package. 100 IOs und 5000 Register UND du brauchst kein externes 
Boot-Device.
Der scheint mir für deine Anwendung geeigneter zu sein.
Kostet im Lattice Online Store 13 USD

von Dominik Thalhammer (Gast)


Lesenswert?

Thomas T. schrieb:
> a, das wäre machbar. Einfacher wäre aber wohl ein kleines Flashrom,
> welches automatisch bei jedem Start die Konfiguration überträgt.
> Bedenke: maximal 3,3V beim FPGA. 5V nur über Pegelwandler...

3.3V sind nicht das Problem, da meine AVR's auch mit 3.3V laufen.

>Schau dir mal von Lattice den XP2 an. Den gibt es mit 5k LUT im TQPF 144
>Package. 100 IOs und 5000 Register UND du brauchst kein externes
>Boot-Device.

Mach ich auf jeden Fall.
Habt ihr vielleicht einen Link auf ein gutes Devboard, das nicht zu 
teuer ist ?
Denn alle die ich gesehen habe haben jede Menge sachen drauf die ich 
garnicht brauche(Ethernet/USB usw.).
Also das meine Grundüberlegung funktionierd finde ich schon mal gut.
Welche Frequenz/Auflösung währe da denn maximal drin ?
Also Auflösung @1kHz oder Frequenz@16bit , nur damit ich das ein wenig 
abschätzen kann.

von Schlumpf (Gast)


Lesenswert?

Wenn du dich für nen XP2 von Lattice entscheidest, dann käme vielleicht 
dieses Board in Frage:

http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2brevia2developmentkit.cfm

Mit der Einschränkung, dass dir nur 40 IOs zur Verfügung stehen (Als 
Pfostentecker). Aber zum Ausprobieren sollte das ja reichen.

Wenn du den Chip dann wirklich verwenden willst, musst du aber bedenken, 
dass du dann noch eine Zusätzliche 1,2V Versorgung für den Core 
brauchst. Das ist aber bei den meisten FPGAs so.

Abschätzung des Speeds:

1 kHz PWM mit 16 Bit Auflösung:

1 kHz * 2^16 = 65,5 MHz

Dein Counter muss also mit 65,5 MHz laufen. Das ist eine 
Geschwindigkeit, die mit einem FPGA problemlos machbar ist.

von Dominik Thalhammer (Gast)


Lesenswert?

Also das Board sieht gut aus.
Da mir der preis auch zusagt werde ich das Teil woll mal bestellen.
Giebts auser den verschiedenen Spannungen noch was zu beachten ?

von Schlumpf (Gast)


Lesenswert?

Dominik Thalhammer schrieb:
> Giebts auser den verschiedenen Spannungen noch was zu beachten ?

Na ja beim Board selber denke ich nicht, was deine Anwendung angeht.
Aber wenn du noch nie was mit VHDL gemacht hast, dann wirst du sicher 
noch über viele Hürden müssen, bis das dann alles funktioniert :-)

von Lattice User (Gast)


Lesenswert?

Statt dem XP2 würde ich den MachXO2-7000 vorschlagen.
das MachXO2 Breakout Board ist jetzt damit bestückt:

http://www.latticesemi.com/products/developmenthardware/developmentkits/machxo2breakoutboard.cfm

Auf dem Board stehen mehr als 100 pins des FPGAs auf den Pfostenleisten 
zur Verfügung.

von Schlumpf (Gast)


Lesenswert?

Lattice User schrieb:
> Statt dem XP2 würde ich den MachXO2-7000 vorschlagen.

da ist aber der 1200er bestückt und in den werden seine 90 PWM´s auch 
nicht reinpassen.
Aber klar, das Board ist sicher auch eine gute Alternative, um mal in 
die Thematik den Einstieg zu bekommen.

von Lattice User (Gast)


Lesenswert?

Schlumpf schrieb:
>
> da ist aber der 1200er bestückt und in den werden seine 90 PWM´s auch
> nicht reinpassen.

Seit Januar ist der 7000er bestückt.

von Schlumpf (Gast)


Lesenswert?

Lattice User schrieb:
> Seit Januar ist der 7000er bestückt.

Fett :-)
Dann würde ich auf jeden Fall auch dieses Board nehmen!

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Dominik Thalhammer schrieb:
> Habt ihr vielleicht einen Link auf ein gutes Devboard, das nicht zu
> teuer ist ?

Schau dir mal dies hier an: HWD-LFXP3C für 19,04€

Findest du hier: http://www.hardware-design.de/restposten.html

Hab ich auch und man hat jetzt nicht soviel Schnick-Schnack drauf.


Gruß Steffen

von Schlumpf (Gast)


Lesenswert?

Das Board von Steffen ist sicher ein absolutes Schnäppchen.
Nur brauchst du bei dem noch einen Programmer, während du bei den 
anderen direkt mit nem USB-Kabel ran kannst.

Wenn du aber eh irgendwann den Chip selber auf deiner Leiterplatte 
setzen willst, dann brauchst da auch ein Programmierkabel. Daher wäre 
das nur eine vorgezogene Anschaffung.

Das Board von Steffen ist mit einem FPGA bestückt, der leider schon sehr 
alt ist. Was aber nicht heißen soll, dass man damit nicht arbeiten kann.

Wie du siehst, gibt es einige Möglichkeiten.

von Steffen H. (avrsteffen)


Lesenswert?

Schlumpf schrieb:
> Nur brauchst du bei dem noch einen Programmer

Der ist schnell selber gebaut, zumindest wenn man noch irgenwie einen 
LPT zur Verfügung hat. Hab gerade geschaut, hab noch eine selbergeätzte 
LP eines Lattice ISP da.

von Dominik Thalhammer (Gast)


Lesenswert?

Steffen H. schrieb:
> Der ist schnell selber gebaut, zumindest wenn man noch irgenwie einen
> LPT zur Verfügung hat.

Also nen LPT hab ich nicht mehr, aber da das ganze ja über JTAG 
programmiert wird finden sich bestimmt selbstbauprojekte mit nem kleinen 
Atmel aus der Bastelkiste, die dann mit USB oder zumindest RS232 gehen.

Die verschiedenen Board's schau ich mir mal an, aber ob 20€ plus 
selbstbauadapter oder 50$ mit onboard adapter macht jetzt auch nicht den 
großen Unterschied. Mit günstig meinte ich eigentlich so <75€, weil 
alles was ich gefunden hab hatte MINDESTENS Ethernet und USB, teilweise 
LVDS und ne menge anderen Krimskrams den ich nicht brauchen kann.

Eine Frage hab ich aber noch:
Welchen Strom können die I/O's der Xillinix FPGA's liefern ?
Bei den Atmels sind es ja bekanntlich 20mA pro I/O oder 200mA pro Port, 
aber bei den FPGA's konnt ich beim überfliegen des Datenblatts nichts 
finden.

von Schlumpf (Gast)


Lesenswert?

Dominik Thalhammer schrieb:
> Welchen Strom können die I/O's der Xillinix FPGA's liefern ?

Willst jetzt also doch zurück zu Xilinx?
Wieviel der liefern kann, weiss ich auch nicht.
Aber wenn du mal 90 PWMs hast, die beim Nulldurchgang alle gleichzeitig 
schalten, dann würde ich dir empfehlen, den Strom gering zu halten.
Sonst kann es passieren, dass dein FPGA nicht schnell genug 
"nachschieben" kann und das kann unschöne Effekte auf dem Board haben.

Weiterhin darfst du natürlich den Summenstrom für eine Bank nicht 
überschreiten.

von Dominik Thalhammer (Gast)


Lesenswert?

Schlumpf schrieb:
> Willst jetzt also doch zurück zu Xilinx?

Ne hab mich vertan, meinte natürlich die von Lattice.

von Chris2k (Gast)


Lesenswert?

Lattice User schrieb:
> Statt dem XP2 würde ich den MachXO2-7000 vorschlagen.
> das MachXO2 Breakout Board ist jetzt damit bestückt:
>
> http://www.latticesemi.com/products/developmenthar...
>
> Auf dem Board stehen mehr als 100 pins des FPGAs auf den Pfostenleisten
> zur Verfügung.

und ich hab das vor ein paar Monaten noch von Hand umgelötet...

von Lattice User (Gast)


Lesenswert?

Dominik Thalhammer schrieb:

> Eine Frage hab ich aber noch:
> Welchen Strom können die I/O's der Lattice FPGA's liefern ?

Bei LVCMOS33 einstellbar von 4-24 mA pro Pin.
Aber zwischen je 2 GND Pins darf die Summe n*8 mA sein, wobei n die Zahl 
der Pins zwischen den GND ist.

Also ganz allgemein, bei vielen Outputs maximal 8 mA pro Output.

Wie auch schon Schlumpf oben erwähnt, alle gleichzeitig zu schalten ist 
kritisch. Im Diamond gibt es Tools zur Power und SSO Analyse. (SSO = 
Simultanous Switching Outputs).

Bei 90 PWMs ist es sinnvoll diese alle Phasenverschoben anzusteuern, 
macht sich sicher auch bei der Störabstrahlung der nachgeschalteten 
Schaltung positiv bemerkbar. Was ist das eigentlich, 90 Motoren oder 90 
LEDs?

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


Lesenswert?

Dominik Thalhammer schrieb:
> Ich muss in meinem aktuellen Projekt eine große Anzahl PWM Kanäle bei
> hoher Frequenz >1kHz bereitstellen.
Wie unabhängig sind die? Braucht jede PWM ihren eigenen Zähler, oder 
brauchst du nur 1 Zähler und viele Komparatoren?

Schlumpf schrieb:
> Dazu kommt dann noch der Counter mit 16 Registern
Bei 90 angechlossenen Koparatoren wird der Synthesizer diesen Zähler 
aber von sich aus verdoppeln (Stichworte Fan-Out und Register-Doubling). 
Zudem werden auch noch die Speicherflipflops zum Speichern der 
Vergleichswerte benötigt, dazu der SPI-Slave und eine FSM, die die Werte 
passend verteilt. Also werden in der Summe schon 3k Flipflops (zusammen 
mit ihrer LUT auch LE genannt) benötig, die dann zudem noch verdrahtet 
werden müssen (Routing)...

Und dann noch die Taktfrequenz: 16Bit PWM bei 1kHz ergibt eine 
Taktfrequenz von 65MHz quer übers ganze FPGA. Das kann einen Anfänger 
shcon mal herausfordern...

> Mit nem normalen CPLD wirst du dabei aber an die Grenzen stoßen.
Es ist tatsächlich absurd, hier über ein CPLD überhaupt 
nachzudenken... ;-)

von Dominik Thalhammer (Gast)


Lesenswert?

Es Handelt sich um 30 RGB LEDs.
die brauchen nur einen Zähler.

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


Lesenswert?

Dominik Thalhammer schrieb:
> Es Handelt sich um 30 RGB LEDs.
> die brauchen nur einen Zähler.
Dann hast du aber keinen Phasenversatz und damit recht viele 
gleichzeitig schaltende Ausgänge..

> Welchen Strom können die I/O's der Xillinix FPGA's liefern ?
Das steht im Datenblatt.

> Bei den Atmels sind es ja bekanntlich 20mA pro I/O oder 200mA pro Port,
Das ist der Wert, der bei "Absolute Maximum Ratings" steht. Damit 
rechnet man nicht, sondern man bleibt möglichst weit davon weg!
BTW: die 200mA sind doch recht kurios, weil ja ein Port nur 8 Pins hat. 
Und 8*20mA sind... :-o

Also: schlag dir die Idee aus dem Kopf, die 90 LEDs direkt ans FPGA zu 
klemmen. Selbst wenn das FPGA es könnte: dein Layout wird es nicht 
können...

von Schlumpf (Gast)


Lesenswert?

Dominik Thalhammer schrieb:
> Es Handelt sich um 30 RGB LEDs.
> die brauchen nur einen Zähler.

Und ist es da tatsächlich notwendig, jede LED einzeln und dann auch noch 
mit 16 Bit pro Farbe anzusteuern?

von Schlumpf (Gast)


Lesenswert?

Irgenwie scheinen mir deine Anforderungen ein wenig an den Haaren 
herbeigezogen zu sein..
Warum 1kHz PWM-Frequenz? Gibt es dafür eine Notwendigkeit, oder hast du 
Angst, dass man bei niedrigeren Frequenzen ein Flackern sehen könnte?

von Lattice User (Gast)


Lesenswert?

Wie hell sollen denn diese LEDs wirklich leuchten?

ich habe mal eine einzelne RGB Led mit PWM vom FPGA angesteuert. Und 
zwar direkt,  d.h. PIN -> LED -> 300 Ohm -> 3.3V.
Das sind je nach Farbe ca 1-2 mA pro EinzelLED und war bereits bei voll 
aufgedrehter PWM viel zu hell für einen Betrachtungsabstand von 1-2 m.

von Thomas T. (knibbel)


Lesenswert?

Dominik Thalhammer schrieb:
> Es Handelt sich um 30 RGB LEDs.
> die brauchen nur einen Zähler.

Und jede Farbe in 65536 Stufen dimmen? Halte ich für etwas übertrieben. 
Du solltest vielleicht das gesamte Vorhaben überdenken.

Mein Vorschlag: Die RGB-LEDs mit integriertem Controller (WS2811/WS2812) 
und dazu ein kleiner AVR, der von SPI ins WS28xx-Protokoll wandelt.

Die WS2811/12-LEDs haben zwar nur 8 Bit pro Farbkanal, aber wirklich 
unterscheiden kann man die Mischfarben dann auch nicht mehr.

Der AVR müsste auch nicht gerade sehr viel können...

Du hättest eigentlich nur Vorteile:

* Einfachere Verdrahtung
* Einfachere (schnellere) Programmierung
* Einfachere Spannungsversorgung (5 Volt für die LEDs)

Gruß,
Thomas

von Dominik Thalhammer (Gast)


Lesenswert?

Ja die 90 Led's müssen sein,
Nein sie werden nicht direkt angeschlossen sondern über Transistoren,
Ja die 16bit müssen sein,(ergeben nach Gammakorrektur 8bit)
Ja die 1kHz müssen sein, da ich festgestellt hab, das es bei 500Hz und 
niedrigen werten schon recht stark flackert(probiert auf einem 
atxmega32a4@32Mhz--->~488 Hz PWM Frequenz)
Ja ich will ein FPGA verwenden, um mich damit vertraut zu machen und um 
sowas mal auszuprobieren.
Nein ich verwende keine Einzelnen LED's sondern Solche LED STreifen zum 
aufkleben.
Die 30 RGB Kanäle brauche ich auch, da die LED's über einen ganzen Raum 
verteilt werden und gleichzeitig als Beleuchtung und Partylicht dienen, 
das ich möglichst genau einstellen können will, ausserdem ist es mal ein 
interressantes Projekt.

von Schlumpf (Gast)


Lesenswert?

Na du hast dir ja die Gründe für deine Anforderungen gut überlegt.
War ja nur ne Frage, weil viele hier einfach was fordern und sich nicht 
bewusst sind, dass das total überzogen ist.
Aber wenn deine LEDs bei 500 Hz sichtbar flackern, dann musst du eben 
mit 1kHz ran.  Meine Augen sind nicht so schnell, aber da ist sicher 
jeder anders.

Ja, dann sind ja deine Fragen eigentlich beantwortet, und du kannst 
loslegen.

Ich denke, dass wir wieder von dir lesen werden, wenn es ans 
synthetisieren geht und dein SPI mal tut und mal nicht tut ;-)
Aber wenn es dir darum geht, in eine neue Technik einzusteigen, dann ist 
dieses Projekt sicher kein schlechter Einsteig in die FPGA-Welt.

Viel Spass beim Basteln!

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


Lesenswert?

Dominik Thalhammer schrieb:
> da die LED's ... als Beleuchtung und Partylicht dienen
Dafür brauchst du niemals 65535 Helligkeitsstufen. Die bräuchtest du 
nämlich nur dann, wenn du damit fotorealistische Bilder oder Videos 
darstellen müsstest, wo es auf jede kleine Grünschattierung (z.B. auf 
einer schönen Almwiese) oder auf das hübsche Azurblau des Himmels (z.B. 
beim Strandurlaub) ankommen würde.
Sowas also: http://www.fotocommunity.de/pc/pc/display/18558036
Und sowas:  http://www.fotocommunity.de/pc/pc/display/24947099

Kurz: es ist ein hübsches Projekt, aber für eine Raumbeleuchtung 
maximaler technischer Overkill.

von Bronco (Gast)


Lesenswert?

Dominik Thalhammer schrieb:
> Nein sie werden nicht direkt angeschlossen sondern über Transistoren,
> Ja die 16bit müssen sein,(ergeben nach Gammakorrektur 8bit)

Verstehe ich das richtig, daß Du den Duty-Cycle in Schritten à 15ns (1 / 
(65536*1kHz) ) auflösen willst?
Sind die Transistoren dafür schnell genug?
Kann mich ja täuschen, aber ich habe da scheußlich verschliffene 
Oszi-Bilder von zu hoch getakteten PWM-Motortreibern im Kopf...

von Dominik Thalhammer (Gast)


Lesenswert?

Lothar Miller schrieb:
> Kurz: es ist ein hübsches Projekt, aber für eine Raumbeleuchtung
> maximaler technischer Overkill.

Vielleicht, aber für die mehrfeatures meiner meinung nach durchaus ok, 
denn bei einer Normalen Lösung (8bit PWM lässt sich ja leicht in 
Software auf nem AVR realisieren) bräuchte ich auch mindestens 2 avr's, 
alleine schon wegen der Pins und preislich geben sich 2x AVR vs FPGA + 
avr nicht viel, sodass ich lieber die Lösung mit FPGA nehm und dafür 
dann im AVR ein Interface mit jeder Menge Schnittstellen basteln 
kann(beim kleinsten Xmega schon 5xRS232, 2xI2C und 2xSPI(von denen einer 
für den FPGA drauf geht.).
An den zweiten SPI häng ich dann ne SDCard mit vordefinierten 
Farbverläufen usw, an einen UART kommt die Hausautomation usw.

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


Lesenswert?

> Sind die Transistoren dafür schnell genug?
> Kann mich ja täuschen, aber ich habe da scheußlich verschliffene
> Oszi-Bilder von zu hoch getakteten PWM-Motortreibern im Kopf...
Mir würden dazu dann noch ein paar hässlich gerunzelte Stirnfalten im 
EMV-Labor einfallen...

Dominik Thalhammer schrieb:
> und preislich geben sich 2x AVR vs FPGA+ avr nicht viel
Dass du dir da mal nicht irgendwas schönrechnest. Aber fürs Hobby muss 
man nicht immer aufs Geld schauen...

von Dominik Thalhammer (Gast)


Lesenswert?

Bronco schrieb:
> Verstehe ich das richtig, daß Du den Duty-Cycle in Schritten à 15ns (1 /
> (65536*1kHz) ) auflösen willst?
> Sind die Transistoren dafür schnell genug?

Also laut Datenblatt machen die von mir eingeplanten BC817 min. 100MHz 
mit, sollte also kein Problem sein.
(Quelle:http://www.nxp.com/documents/data_sheet/BC817_BC817W_BC337.pdf
Seite 5)
> Kann mich ja täuschen, aber ich habe da scheußlich verschliffene
> Oszi-Bilder von zu hoch getakteten PWM-Motortreibern im Kopf...

Ka vermutlich ist das bei deinen Treibern anders.

//Sorry für den doppelt Post, aber du hast zu spät gepostet.

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


Lesenswert?

Dominik Thalhammer schrieb:
> Also laut Datenblatt machen die von mir eingeplanten BC817 min. 100MHz
> mit, sollte also kein Problem sein.
Hast du da nur die Kleinsignalbandbreite angeschaut?
Die BC817 schaltest du auf keinen Fall mit 100MHz voll durch.
Das wird schon am Layout scheitern...

von Georg W. (gaestle)


Lesenswert?

Dominik Thalhammer schrieb:
> Ja die 16bit müssen sein,(ergeben nach Gammakorrektur 8bit)

Dann kannst du doch erst die Korrektur anwenden und danach die 
korrigierten Werte in die PWM laden? Damit würde sie auch mit weniger 
Auflösung auskommen, was den ganzen Rattenschwanz mit den hohen 
Taktfrequenzen und schnellen Signalen entschärfen würde. Du hast ja eine 
Verkabelung durch den ganzen Raum welche die hochfrequenten Signale u.U. 
abstrahlt. Da ist es dann auch besser wenn die Transistoren nicht zu 
schnell schalten, das reduziert die Abstrahlung auf Kosten der 
Verlustleistung.

von Lattice User (Gast)


Lesenswert?

Georg W. schrieb:
> Dominik Thalhammer schrieb:
>> Ja die 16bit müssen sein,(ergeben nach Gammakorrektur 8bit)
>
> Dann kannst du doch erst die Korrektur anwenden und danach die
> korrigierten Werte in die PWM laden?

Dominik hat das wohl etwas unglücklich ausgedrückt. Nach der 
Gammakorrektur braucht man mehr Bits, sonst verschenkt man 
Eingangsauflösung. Wobei ich aber auch der Meinung bin, dass 16 bit 
nicht nötig sind. Wenn der Eingangswert 8 Bit (d.h. 256 
Helligkeitstufen)
reichen nach der Gammakorrektur auf jedem Fall 12 bits, wahrscheinlich
sogar 10. Auch Profimonitore machen da nicht mehr.

> Damit würde sie auch mit weniger
> Auflösung auskommen, was den ganzen Rattenschwanz mit den hohen
> Taktfrequenzen und schnellen Signalen entschärfen würde. Du hast ja eine
> Verkabelung durch den ganzen Raum welche die hochfrequenten Signale u.U.
> abstrahlt. Da ist es dann auch besser wenn die Transistoren nicht zu
> schnell schalten, das reduziert die Abstrahlung auf Kosten der
> Verlustleistung.

Moment, die PWM Frequenz ist von der Auflösung unabhängig, und damit 
auch die Störstrahlung und Verlustleistung. Nur an beiden Ende der Skala 
entstehen Nichtlinearitäten wenn Transistor/LED zu langsam sind, was man 
aber in der Gammatabelle berücksichtigen kann.

In der vorliegenden Anwendung wird die Auflösung auch nicht gebraucht um 
Genauigkeit zu erzielen, auf mehr als 6 bit wird niemand die Farben 
unterscheiden können. Hier geht es darum, dass man beim langsamen auf- 
und abdimmen keine Helligkeitssprünge sieht, und dafür sind 8 bit ohne 
Gammakorrektur nicht ausreichend.

von Georg W. (gaestle)


Lesenswert?

Lattice User schrieb:
> Dominik hat das wohl etwas unglücklich ausgedrückt. Nach der
> Gammakorrektur braucht man mehr Bits, sonst verschenkt man
> Eingangsauflösung. Wobei ich aber auch der Meinung bin, dass 16 bit
> nicht nötig sind. Wenn der Eingangswert 8 Bit (d.h. 256
> Helligkeitstufen)
> reichen nach der Gammakorrektur auf jedem Fall 12 bits, wahrscheinlich
> sogar 10. Auch Profimonitore machen da nicht mehr.
>
Kommt das von unserem nichtlinearen Helligkeitsempfinden? Dann würde man 
nur in einem Teilbereich die feine Auflösung benötigen und könnte den 
Rest mit gröberen Schritten abhandeln? Falls das überhaupt sinnvoll 
machbar ist.

Wenn wir großzügig sind und 12Bit Auflösung wählen reichen aber auch 
4,1MHz Takt aus. Das ist schon mal viel entspannter.
>
> Moment, die PWM Frequenz ist von der Auflösung unabhängig, und damit
> auch die Störstrahlung und Verlustleistung. Nur an beiden Ende der Skala
> entstehen Nichtlinearitäten wenn Transistor/LED zu langsam sind, was man
> aber in der Gammatabelle berücksichtigen kann.

Ja, du hast recht. Ich musste mal etwas zu einem Gerät, welches neben 
dem Tastverhältnis auch die Frequenz verändert hat dazu bauen, das war 
nicht lustig. Das hatte ich im Sinn als ich das obige schrieb. Ich sehe 
den kritischen Punkt wenn man fast ganz herunter oder herauf dimmt. Dann 
muss man einen sehr schmalen Impuls mit sehr steilen Flanken und damit 
verhältnismäßig viel hochfrequentem Anteil alle Millisekunde erzeugen. 
Du würdest dann mit der flachen Flanke leben und bei der Impulsbreite 
entsprechend "vorhalten"?

von Falk B. (falk)


Lesenswert?

@  Dominik Thalhammer (Gast)

>Nein sie werden nicht direkt angeschlossen sondern über Transistoren,
>Ja die 16bit müssen sein,(ergeben nach Gammakorrektur 8bit)

Willst du einen Photodrucker bauen?

>Ja die 1kHz müssen sein, da ich festgestellt hab, das es bei 500Hz und
>niedrigen werten schon recht stark flackert(probiert auf einem
>atxmega32a4@32Mhz--->~488 Hz PWM Frequenz)

Niemals. Wahrscheinlich hast du eine Fuses falsch eingestellt oder einen 
falschen Prescaler einschaltet. Hast du die 488 Hz mit einem Oszi 
gemessen?

>Ja ich will ein FPGA verwenden, um mich damit vertraut zu machen und um
>sowas mal auszuprobieren.

>Nein ich verwende keine Einzelnen LED's sondern Solche LED STreifen zum
>aufkleben.

Und die sollen dann mit bis zu 15ns breiten Pulse angesteuert werden? 
Dream on. ;-)

>Die 30 RGB Kanäle brauche ich auch, da die LED's über einen ganzen Raum
>verteilt werden und gleichzeitig als Beleuchtung und Partylicht dienen,

Was nie und nimmmer Den HokusPokus mit 16 Bit PWM und Gammakorrektur 
braucht. Spätestes nach dem 2. Bier reichen 3 Bit, eins für jede Farbe. 
Aber wenn's ne LSD-Party ist könnten sanfte Farbübergänge schon 
angebracht sein . . .

Ausserdem steuert man so verteilte Lampen auch verteilt an, z.B. eine 
Steuerung pro Leiste, das Ganze dann per DMX oder so verkabelt. Das 
verringert auch die Leitungslänge, auf der die PWM mit steilen Flanken 
rumschaltet und ordentliche Störungen erzeugt.

>das ich möglichst genau einstellen können will, ausserdem ist es mal ein
>interressantes Projekt.

Naja, aber meilenweit weg von der Realität. Also doch was mit LSD? ;-)

von Bronco (Gast)


Lesenswert?

Lattice User schrieb:
> Moment, die PWM Frequenz ist von der Auflösung unabhängig, und damit
> auch die Störstrahlung und Verlustleistung. Nur an beiden Ende der Skala
> entstehen Nichtlinearitäten wenn Transistor/LED zu langsam sind, was man
> aber in der Gammatabelle berücksichtigen kann.

Nur so am Rande:
Ich hatte da mal eine Schaltung mit einem BTM7751 Motortreiber. Der kann 
laut Datenblatt eine PWM-Frequenz bis max. 1kHz.
Nun hatte ich einen Motor, für den 20kHz empfohlen wurden.
Hab mal aus Spaß versucht, die 20kHz mit dem BTM7751 darzustellen.
Dabei ist der Dutycycle total weggelaufen, d.h. bei 50% Soll kamen noch 
vielleicht 20-30% Ist raus, und diese waren heftigst verschliffen.

von Lattice User (Gast)


Lesenswert?

Bronco schrieb:
> Lattice User schrieb:
>> Moment, die PWM Frequenz ist von der Auflösung unabhängig, und damit
>> auch die Störstrahlung und Verlustleistung. Nur an beiden Ende der Skala
>> entstehen Nichtlinearitäten wenn Transistor/LED zu langsam sind, was man
>> aber in der Gammatabelle berücksichtigen kann.
>
> Nur so am Rande:
> Ich hatte da mal eine Schaltung mit einem BTM7751 Motortreiber. Der kann
> laut Datenblatt eine PWM-Frequenz bis max. 1kHz.
> Nun hatte ich einen Motor, für den 20kHz empfohlen wurden.
> Hab mal aus Spaß versucht, die 20kHz mit dem BTM7751 darzustellen.
> Dabei ist der Dutycycle total weggelaufen, d.h. bei 50% Soll kamen noch
> vielleicht 20-30% Ist raus, und diese waren heftigst verschliffen.

Klar, da war der Treiber ja schon viel zu langsam für die PWM Frequenz. 
Das ist aber im vorliegendem Fall der LED Ansteuerung bei weitem nicht 
der Fall. Natürlich wird in den Endpunkten trotz Korrektur die 
Genauigkeit leiden, schon alleine wegen der Bauteiletoleranzen, vor 
allem hfe des Transistors. Wird vermutlich trotzdem gut genug sein.

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.