Hallihallo zusammen, ich hab mal ein kleines SoC (System-on-a-Chip) auf die Beine geworfen. Die Basis ist ein AtMega103 softcore von opencores.org. (8-Bit AVR) Dem habe ich ein Wishbone-interface verpasst, sodass man damit jegliche wishbone-basierte Peripherie steuern kann. Das Projekt implementiert eine relativ einfache Ausbaustufe des SoC, es ist als Grundbaustein gedacht, falls man mal auf die Schnelle einen pflegeleichten und eventuell schon vertrauten (AVR) softcore in seinem FPGA-Design braucht. Damit entfällt jegliches "Gebastel" z.B. mit Picoblazes etc. etc. Als Beispiel wird im Projekt im Anhang ein UART-Core angesteuert und die LEDs und Schiebeschalter meines "Xilinx Spartan-3E Starer Kits" werden ebenfalls verwendet. Dank des Wishbone-Interfaces (http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29) kann weitere Peripherie rasch und ohne Probleme angestöpselt werden. Es werden sowohl der IO- als auch der RAM-Bus des AVR als Wishbone-Bus hinausgeführt. Die firmware für den AVR wird wie jede normale firmware eines AtMega103 entwickelt, z.B. mit WinAVR. Mittels eines speziellen tools von Xilinx (data2mem, das jeder ISE-Installation beiliegt) muss nicht jedes Mal, wenn man die firmware updaten will, der ganze core neu implementiert werden. Das tool kann nämlich direkt einen vorhanden Bitstream mit einem entsprechenden .elf-file zu einem neuen Bitstream modifizieren, welcher dann die BRAMs des Programmspeichers korrekt lädt beim Initialisieren des FPGA. Man muss also nur den Bitstream mit dem Tool neu erzeugen und schwupps ist die neue firmware im FPGA. Dauert keine 5 Sekunden. Weitere Infos gibts in der Doku im .zip des Projekts Anhang. Ich bin jetzt auch nicht der VHDL-Profi, falls also jemand Verbesserungsvorschläge hat, bin ich gerne offen dafür! Herzlichen Gruss und viel Spass damit! Mario
"Gebastel" mit MicroBlaze? Ich hab zwar noch nie was mit FPGAs gemacht, aber ist MicroBlaze nicht dieser Xilinx eigene Prozessor? Warum Gebastel? Und woher kommt eigentlich die Intellectual-Property von dem AVR von opencores.org? Hat die möglicherweise einer nachgebastelt? ;-) In dem Falle wäre Letzteres mehr Gebastel als Ersteres :-)
Hab noch ein Update, die GPO- und GPI-Module waren ein bisschen crap.... Im Anhang die verbesserte Version, nun wird auch das LCD des Starter-Kits noch unterstützt und von der firmware angesteuert. Lg Mario
Genial! Tolle Arbeit. Ach, hätte ich jetzt doch Zeit, mich mal damit zu beschäftigen :-( Na ja, vielleicht später mal :-) Vielen Dank.
Hier noch ein paar Hinweise, z.B. für die Portierung auf andere/ältere FPGAs: DCM: Das Design braucht 2 Clocks: Beide à 30MHz (oder weniger), und beide 180° phasenverschoben zueinander. Im Spartan-3E bewerkstelligt das ein einzelner DCM problemlos. Speicher: Die 20 BRAMs des Spartan-3E auf dem Xilinx-Starter-Kit werden momentan voll ausgenützt. Den Speicherbedarf des AVR kann man aber verkleinern: Am einfachsten ist es, wenn man dem AVR etwas SRAM abschneidet. Dazu muss man lediglich die BRAMs neu konfigurieren und anordnen. Man muss einfach irgendwie auf 8 Bit Busbreite kommen. Hier steht für den Spartan-3E wie's geht mit der BRAM-Benennung und Konfigurierung: http://www.xilinx.com/support/documentation/application_notes/xapp463.pdf Nachteil: Man braucht meist eher SRAM als Programmspeicher... Beim Programmspeicher wirds etwas kniffliger, hier muss man nämlich aufpassen, dass man die Initialisierungskonstanten korrekt benennt und dass diese Benennung mit dem Inhalt im prog_mem.bmm - file konsistent ist. Man muss also beide files anpassen - das VHDL-File mit dem Programmspeicher und das .bmm-File, damit die Initialisierungskonstanten identisch sind. Das .bmm-File wird vom data2mem tool benötigt, damit dieses weiss, wie der Speicher aufgebaut ist und welche Daten wie und wo hingehören. Aber ansonsten kann man den Programmspeicher gleich zusammenschnipseln wie das SRAM, hier muss man einfach irgendwie auf 16-bit Busbreite kommen. Herzlichen Gruss Mario
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.