Gast
#2235314
Hallo, ich bin in Sachen FPAG noch ganz am Anfang und lerne gerade autodidaktisch mit nem Xilinx S3AN StarterKit und folgenden beiden Büchern: VHDL-Snythese Entwurf digitaler Schaltungen und System von Reichardt und Schwarz FPGA Prototyping by VHDL Examples von Pong P. Chu Dazu gleich die erste Frage: Sind das geeignete Lehrmittel zum Einstieg in die Materie? Was ich bisher gelesen habe scheint mir ganz gut verständlich und einige Beispiele konnte ich schon gut nach-bauen. Aber vielleicht gibt es ja noch weitere / bessere Literatur? Im Moment bin ich wie gesagt noch dabei alles von Null auf zu erlernen. Vorerfahrungen habe ich nur mit AVRs gemacht. Wenn ich mit dem Durcharbeiten der Literatur fertig bin habe ich folgendes Projekt ins Auge gefasst und würde gern von euch wissen ob das so realisierbar ist und wie ihr das angehen würdet. Ich erwarte keine fertigen Lösungen, der Lerneffekt ist mir äußerst wichtig! Zum Projekt: Ich habe eine LED-Matrix der Größe 32x16 in RGB. Diese habe ich seinerzeit mit einem (einzigen!) ATMEGA 328 in Betrieb genommen und (meiner Meinung nach) alles aus dem µC rausgeholt was geht. Ich mache damit Multiplexing auf 3x512 LEDs simultan und komme mit den 16MHz Systemtakt auf 216 Farben bei noch hinnehmbarer Wiederholrate. Mehr schafft der AVR einfach nicht. Das Projekt kann man sich hier anschauen: https://sites.google.com/site/arduinodiyprojects/projects/Modular-Plasma-Wall Ich dachte ich mir nun, dass es doch eine gute Herausforderung und ein wahnsinniger Lerneffekt wäre die bereits fertige Matrix mal mit nem FPGA anzusteuern um zu schauen ob es nicht möglich wäre 24bit (8 pro Farbe) Farbtiefe zu realisieren. Schön wäre es natürlich wenn die Farbtiefe in Wirklichkeit bei 12 oder 13 bit pro Farbe läge und ich über den FPGA ne exponentielle Anpassungen hinbekäme um dann auf 256 echte lineare Farbstufen zu kommen. Nun kommt erschwerend hinzu, dass meine Matrix NICHT im klassischen Sinne aufgebaut ist, d.h. ich habe nicht 16 Zeilen mit je 32 LEDs und muxe NICHT 1:16. Vielmehr funktioniert das Ganze so: Die Gesamtkonstruktion besteht aus insgesamt 8 Segmenten mit jeweils 8x8 LEDs. Hinter jedem Segment sitzt ein „Treiberboard“ mit 4 Schieberegistern (1xr; 1xg; 1xb; 1xZeilen). Die Segmente sind in zwei Reihen angeordnet eine obere und eine untere. In den beiden Reihen sind die Schieberegister einer Farbe sowie die Schieberegister für die Zeilen immer in Reihe geschaltet. Ich habe also insgesamt. 8 Datenleitungen die vom µC weggehen. Zur besseren Übersicht habe ich unter oben genanntem Link ein paar Schemata gezeichnet. Wenn ich das Ganze jetzt auf den FPGA portieren möchte werde ich mir natürlich die Tatsache zur Nutze machen, dass so ein Teil mit sehr vielen I/Os daherkommt. Also soll jedes Schieberegister eine extra Datenleitung bekommen. Der ganze Aufbau soll dann also so aussehen: Der FPGA bekommt über SPI Daten vom µC. 512 byte pro Farbe. Nun soll der FPGA die 512 byte in 8 Segmente teilen und für jedes Segment ein multiplexing machen und dann an das entsprechende Schieberegister ausgeben. Ich hoffe das ist einigermaßen anschaulich!? Ich stelle mir nun die Frage ob ich nicht ein Problem mit der Kapazität bekomme? Ich denke ich bekomme es irgendwie hin ein Schieberegister in VHDL zu schreiben welches 512byte aufnimmt. Das bräuchte ich dann aber 3 mal (r,g,b). Also müssten im FPGA rund 1.5kB „zwischengespeichert“ werden. Geht das überhaupt? Jetzt haben also die 3 virtuellen Schieberegister 3*512 byte aufgenommen. Und nun müssen diese auf 8*3=24 „MUX-Bausteine“ aufgeteilt werden die dann parallel laufen. Und zum Schluss hängt an jedem MUX-Baustein noch ne Logig die die Daten bit-weise raus schaufeln muss. Die Ansteuerung der Zeilen habe ich jetzt mal außen vor gelassen, die sollte das Kraut nicht fett machen :-) Bevor ich jetzt zu viel Gehirnschmalz da reinstecke wollte ich euch fragen ob das denn überhaupt irgendwie realisierbar ist und wie ihr das angehen würdet? Sorry für den vielen Text und schon einmal besten Dank für die Antworten! LG, Pepe
