LED-Cube X, XL, XXL

Seiten: 1 | 2 | 3 | 4 | 5 | (6) | 7
Zurück zur Startseite

felixh

17.05.13 23:06

Sorry

ja, sind angekommen, und bin gerade fleissig am Sortieren, bzw löten.

Mit grünen LED die ich noch rumfloegen hatte, hab ich mal nen 4er testwürfel gebaut. Mit FPGA und Nios 2 prozessor. läuft mit ~700 FPS

jetzt warte ich noch auf den draht für den großen...


Zuletzt bearbeitet: 17.05.13 23:07 von felixh

Dirk

18.05.13 18:02

Joo, dann ein Video und Hilfe, da du viel Erfahrung hast.

LG
Dirk

Ronni

18.05.13 19:56

Was habt ihr für eine Drahtstärke gewählt ?

Hab zwar meine erste Ebene fertig, bin mir aber nicht sicher ob es am Ende stabil genug wird.

grüße Ronni

felixh

19.05.13 00:18

Die 1. ebene meines 10er Würfels hab ich mit 1.5er draht gelötet, zwechs stabilität.

Die restlichen werde ich mit 0.4er silberdraht aus ebay bauen.
Die Müssen nurnoch ankommen

Morgen mach ich mal nen video, + detailierte beschreibung & erklärung.


Zuletzt bearbeitet: 19.05.13 00:19 von felixh

Dirk

22.05.13 17:53

Wo ist es, habe ich etwas versäumt? (:-)))

Dirk


Zuletzt bearbeitet: 22.05.13 17:54 von Dirk

felixh

26.05.13 02:52

Ach mist. das hab ich Total verpennt...
Heute ist der Silberdraht gekommen, da ists mir wieder eingefallen -.-

Video gibts zwar nicht, aber dafür hab ich mal ein paar Fotos gemacht...


Hier der Würfel in Aktion, mit Testbild.

Sonst hätte ich im Augenblick noch die Standart-Animationen wie Ebenen, Fading, Regen usw anzubieten. Aber nichts besonderes

Die LEDs sind leider bemerkenswert scheisse, so dass man die eigentlich nur bei Nacht sieht (restekiste halt). Entsprechend schlecht ist das foto, sry deswegen -.-


hier mal der ganze Aufbau aus FPGA-Board und Cube...


Der Würfel im detail

Die Transistoren sind BC557C, mit 220ohm Vorwiederstand. Diese ziehen je eine Ebene auf masse.
Die Vorwiderstände der LEDs sind unter dem klebeband.

Das Board hat einen Altera Cyclone 2 EP2C5 drauf, und einen SDRAM mit 32MB. Gabs auf ebay für ~20€. Der USB-Blaster kostet nochmal 4€.

Das FPGA steuert je 16 LEDs (also eine Ebene, 4x4) auf einmal an.
Für den 10er Würfel werde ich auf 32 Ausgänge + D-Latches umsteigen müssen, mangels IO-Pins.

Das Design besteht aktuell aus einem NIOS 2 System, und einem Display Controller.
Die einzige Aufgabe des NIOS ist es, das Bild zu generieren, und in den Grafikspeicher abzulegen.

Zum Design:


Das Teil macht eine 14 bit-PWM, davon 10 bit gamma-Korrektur.
Diese wird direkt von der Hardware erledigt, Funktioniert, ist aber noch Optimierungsfähig

Der Display-controller besteht aus 2 teilen:
matrixcomp und Cube_top. Cube-Top enthält nebenbei auch noch das NIOS-System.

zur Funktion:
in Cube_top gibt es 2 relevante Register:
[13:0]pwmcnt und [1:0]level_cnt.

Die oberen 4 bit [13:10] von pwmcnt sind für die Helligkeit der LED, die ersten 10 sind für die gamma-korrektur.

level_cnt zählt die Ebenen durch. Da es nur 4 Ebenen gibt (noch ) reichen 2 bit aus.
level_cnt dient auch gleichzeitig als Addresse für den Grafikspeicher (ram_c).

Pro Takt wird pwmcnt um 1 erhöht. Wenn die ersten 10 bit überlaufen, wird ein neuer Startwert gesetzt, zwecks gamma-korrektur.

Bei einem kompletten durchlauf von pwmcnt wird level_cnt um 1 erhöht.

assign level_out = ~(4'b0001 << level_cnt);

dient zum ansteuern der Ebenen-Transen. Die 1 wird um level_cnt stellen nach links geshiftet und Negiert (weil die BC557C PNP Transen sind...)

Der Ausgang des Grafikspeichers ist 64 Bit breit (4 bit/LED, 16 LEDs), und wird an das Modul matrixcomp angeschlossen (über wire [63:0]matrixdata). Das Erledigt der generate-Block.

Je eine Instanz von matrixcomp steuert eine LED an. (entsprechend gibt es 16 Instanzen...)
Es macht eigentlich nichts anderes, als den Aktuellen wert der letzten 4 bit von pwmcnt mit der erwünschten Helligkeit zu vergleichen. Je nach dem wird das Ausgangsbit gesetzt oder eben nicht...

Zu ram_c:
Um das ganze einfach zu halten, hab ich einfach ein paar der Internen Speicherzellen für den grafikspeicher genommen.
Da der NIOS ein 32-Bit prozzi ist, und man, um 4 Bit werte in den RAM schreiben zu können, tierisch viel (unnötige) bitschubserei machen muss, hab ich kurzerhand diese kleine Modul gebastelt, was aus einem 8-bit schreibzugriff einen 4bit-schreibzugriff macht.

Die oberen 4 Bit werden einfach Ignoriert. Bei einem Lesezuriff werden die als 0 gelesen.
So Wird aus einem 8bit ein 4 bit zugriff, 16 zu 8 und 32 zu 16 bit.

Damit lassen sich die einzelnen LEDs bequem mit dem Datentyp char addressieren, ganz ohne bitschubserei.
mit einem Short kann man 2 LEDs gleichzeitig steuern, ein Int 4.

zu addshift:
das problem beim Addressieren war jetzt nurnoch, dass ich 2 Shifts und 4 Additionen durchführen musste (Addresse = offset + x + y << 2 + ebene << 4)
Was für den Nios mehrere Anweisungen sind, ist für das FPGA eine Sache von 1 taktzyklus. So habe ich dann eine Custom-instruction gebaut die das ganze in 2 Anweisungen erledigt.

==== Download ====
Es ist mir nicht gelungen, den Projektordner aufzuräumen, ohne irgendwas wichtiges zu löschen...
nach dem ersten bauen wären die dateien eh wieder da, also was solls

Geschrieben in Verilog, die *.v dateien sind also die interessanten.

DOWNLOAD


Zuletzt bearbeitet: 26.05.13 02:53 von felixh

Celaus

26.05.13 11:58

Deine Nachricht habe ich nicht am 9.5 , sondern erst am 24.5 gelesen, weil ich am 23.5. aus dem Gefängnis entlassen worden bin, bei dem die Gitterstäbe aus den Schmerzen, die man selber hat, bestehen. Muß ich meinen CMOS-Wust noch durchsuchen?
Seufz, Celaus

Dirk

26.05.13 14:19

@felixh

Moin, das ist doch schon ein schöner Anfang.

Aber mit NIOS habe ich nichts am Hut.

Wäre es möglich dein Prg. auf einen Atmega zu portieren?

Viele werden sich bestimmt an die Anleitung auf Seite 1 beziehen.

Da ist ja auch die .hex vorhanden, aber ein paar mehr Effekte sind nicht verkehrt.

mal abwarten, wer noch etwas mehlt.

LG
Dirk

felixh

26.05.13 16:54

die .hex ist nur das Memory-initialisierungsfile...
hab ich benutzt, als der NIOS noch nicht so wollte... der grafikspeicher enthält standartmässig den dadrin abgelegten Frame (siehe 1. Bild, Testframe).

Die Programme für den NIOS hab ich bisher nur über JTAG direkt hochgeladen.

Später will ich dann nen internen ROM nehmen, da soll ein Bootloader rein, der den Programmcode von einer SD-Karte zieht...

Prinzipiell sollte es möglich sein die effekte zu Portieren. Wie gut das läuft steht aber auf nem anderen Blatt.

Dirk

30.05.13 22:06

Etwas Neues an der Front?

Dirk

Ronni

31.05.13 06:36

Bin erst bei Ebene 4

Die liebe Zeit... Werde heute bzw. am We mein Bestellung fertig machen für Reichelt.

Grüße Ronni


Dirk

05.06.13 21:08

@Ronni

Könntest du eventl. die Bestelliste hier einstellen?

Dann braucht man nicht alles neu auswählen.

LG
Dirk

Ronni

07.06.13 05:36

Moin

Im Moment liegt alles auf Eis (Hochwasser)

Wenn sich die Lage entspannt hat geht´s weiter und dann mach ich die Liste.

grüße Ronni

Dirk

18.06.13 20:55

Etwas neues an der LED-Front?

Ich komme erst ab Montag dazu die Schablonen anzufertigen.

Dirk



felixh

18.06.13 22:07

Es ist genau das eingetreten, was ich von anfang an befürchtet hab:
ich hab irgendwie interessantere tätigkeiten gefunden (Relaiscomputer, eigenbau-Stromzange, Netzteil).

Eigentlich hab ich mir fest vorgenommen, heute weiterzumachen...

Sonst: der Sockel ist gerade bei nem Freund, zum Lackieren.

//edit
Sortiert hab ich alle, hab auch schon 1 Eben komplett und 10er Streifen für 4 weitere.
ich glaub ich mach mal eben weiter


Zuletzt bearbeitet: 18.06.13 23:11 von felixh
Zurück zur Startseite
Seiten: 1 | 2 | 3 | 4 | 5 | (6) | 7