Dem letzten Thread EF9366 zufolge gab es Interessenten für das neue GODIL FPGA Board.
Hier ist jetzt die vorläufige Dokumentation.
Fragen, Anregungen & Kritik sind stets herzlichst willkommen.
MIKE
PS: Demnaechst hier verfügbar:
Dem letzten Thread EF9366 zufolge gab es Interessenten für das neue GODIL FPGA Board.
Hier ist jetzt die vorläufige Dokumentation.
Fragen, Anregungen & Kritik sind stets herzlichst willkommen.
MIKE
PS: Demnaechst hier verfügbar:
Huebsch! Falls Du damit auch ausserhalb Europas gehen moechtest, vielleicht laesst sich das auch ueber Sparkfun vertreiben. Das ist in USA eine "der" Adressen fuer "Nerd Stuff" und dort bestellen auch Leute aus anderen Laendern.
Sieht sehr gut aus. Kommt leider heutzutage immer seltener vor, daß auch die gesamte Schaltung im Datenblatt enthalten ist. Kann man dann bei deiner Webseite auch eine initiale UCF-Datei runterladen? Viele Pins wird man zwar sowieso für die konkreten Anwendungen umbenennen, aber ist eine kleine Hilfe, wenn man schonmal die Pinbezeichnungen des Moduls als Basis hat.
Hast du das Testboard für den Grafikcontroller schon losgeschickt? Ich habe schonmal angefangen, die VGA-Ausgabe von meinem uralten Verilog-Programm nach VHDL umzusetzen, um was zu sehen. Mit meinem Spartan 3E Starterkit, was praktischerweise direkt einen VGA-Anschluss hat, womit man 8 Farben ausgeben kann, wird ein 640x480 Testbild bei 25 MHz Pixeltakt angezeigt, mit einem 1 Pixel breiten äußeren weissen Rahmen, einen 1 Pixel grünen Rahmen darin und mit Teststreifen in allen 8 möglichen Farben dort drin. Könnte man wohl auch mit ein paar 7400 und Flipflos bauen, wenn die 25 MHz könnten :-)
So muß das Testbild aussehen, falls es einer selber ausprobieren möchte:
Die Auto-Adjust Funktion von meinem Bildschirm bekommt das fast hin, nur die letzte Pixelspalte mit dem rechten weissen Rand verschluckt es. Manuell den Pixelclock ein wenig runtersetzen und dann was nach links schieben und alles passt drauf. Merkwürdig übrigens, wenn man mehr schwarz an den Rändern links und rechts generiert, dann versucht der Monitor das entsprechend aufzuziehen und blendet den Randbereich somit aus. Schade daß er sich nicht einfach an den VGA-Standard für 640x480 hält, denn das zeigt das Menü zumindest an, hätte er detektiert, was auch mit den Timings recht exakt stimmen sollte, wenn ich da keinen Fehler gemacht habe.
Unten der Quelltext. Interessant wird es nach der Zeile
if lineCounter < 480 and imageState = IMAGE_DATA then
Dort kann man recht leicht seine Grafikdaten ausgeben.
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;
entity OutputGenerator is port( clk: in std_logic; vgaRed: out std_logic; vgaGreen: out std_logic; vgaBlue: out std_logic; vgaHsyncN: out std_logic; vgaVsyncN: out std_logic ); end entity OutputGenerator;
architecture rtl of OutputGenerator is type lineStateType is ( LINE_HSYNC_LOW, LINE_BACK_PORCH, LINE_DATA, LINE_FRONT_PORCH ); signal lineState: lineStateType := LINE_HSYNC_LOW;
type imageStateType is ( IMAGE_VSYNC_LOW, IMAGE_BACK_PORCH, IMAGE_DATA, IMAGE_FRONT_PORCH ); signal imageState: imageStateType := IMAGE_VSYNC_LOW;
signal pixelCounter: natural range 0 to 1023 := 0; signal lineCounter: natural range 0 to 1023 := 0; signal devide2: std_logic := '0'; begin
vgaOut: process(clk) begin if rising_edge(clk) then devide2
Hallo Frank,
dein Päckchen geht heute morgen raus. Erst mal musste ich das Manual halbwegs fertigstellen, ist leider immer mehr Arbeit als man denkt. Und Kundenauftaege haben Prioritaet. Ich hoffe du bist nicht völlig lötkolbenlos, die Stecker musst du selber rauflöten, eben je nach Gusto.
.ucf Files gibt es, ich werde die mal noch auf die Webseite packen.
Ansonsten freut mich dein unerschrockenes VHDL Engagement...
MIKE
Danke.
Notfalls ginge es per Steckboard, was bei dem DIL-Formfaktor ja recht einfach machbar wäre. Dann von einem alten VGA-Kabel den Stecker abschneiden, die Kabel ins Steckboard, per passenden Widerständen mit dem FPGA verbinden und schon kann man 8 Farben ausgeben. Aber keine Sorge, ich habe auch einen Lötkolben da, sowie VGA-Einbaubuchsen und Lochraster :-)
Ich mache das jetzt auch schon seit ein paar Jahren beruflich für einen Kunden, daher schreckt mich VHDL nicht mehr allzu sehr. Ich finde da gegenüber Verilog besonders die Typsicherheit und allgemein strengere Prüfungen gut, da man dann weniger Fehler machen kann. Ist leider ein wenig redundant und teilweise umständlich drin zu programmieren, aber man gewöhnt sich an alles.
Hier übrigens die etwas überarbeitete Spezifikation des Grafikcontrollers, mit Dokumentation in Form von C-Code für alle Grafikkommandos:
Falls ein FPGA kein Block RAM mit 3 Ports zur Verfügung stellt (zwei Leseports und ein Schreibport), dann werde ich das erstmal mit Hilfe zweier Dualport-BRAMs simulieren, wobei immer auf beide geschrieben wird und getrennt gelesen werden kann. Kann man dann später noch optimieren, wenn der Rest mal läuft. Interessant wäre dabei vielleicht auch noch eine Ausbaustufe mit externem SRAM oder gar SDRAM, weiteren Grafikbeschleunigerfunktionen, 3D-Funktionen usw., aber dazu braucht man dann wohl größere FPGAs. Oder auch eine Variation ohne Beschleunigerfunktion, aber mit externem SRAM, für kleine CPLDs.
Die erste Version des Grafikcontrollers ist fertig, inklusive Grafikbeschleunigerfunktionen, SPI-Interface und zum Testen ein RS232-nach-SPI Umsetzer in VHDL. Reload auf der Seite durchführen, falls noch nicht das neue YouTube-Video unten zu sehen ist :-)
Mit der Speichergröße ist noch ein Problem. Wenn man noch Fonts usw. mit unterbringen will, dann geht gerade mal 320x240 in schwarz/weiß in den FPGA des Starterkits. Bei dem Beispiel habe ich 640x480 als Videomodus verwendet, da mein Monitor nichts darunter mehr kann, und jeweils jede Zeile doppelt und jeden Punkte doppelt angezeigt. Die VGA-Ausgabe-Entity habe ich dabei komplett neu geschrieben, da das ursprüngliche Programm viel zu umständlich war (war ja auch eins meiner ersten FPGA-Programme).
Vielleicht sollte ich doch noch einen Textmodus einbauen? Damit könnte man problemlos 640x480 hinbekommen. Dann wäre es aber auch gut, z.B. auf feste
8 Bit Datenwortgröße zu gehen, was das ganze aber wieder komplizierter machen würde und ein überlegtes Redesign erfordert.Das GODIL FPGA Board von Mike ist auch angekommen, werde ich nächste Woche dann mit einem VGA-Ausgang versehen und testen.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required