Hi, Ich muss für eine Studienarbeit einen VGA Bildschirm ansprechen und auf diesem eine Benutzeroberfläche mit Maussteuerung realisieren. Jetzt bin ich an dem Punkt angelangt, dass ich einen Videospeicher für meine VGA-Schnittstelle brauche. Vorgabe ist, dass ich ein Spartan 3E Starterkit Board (xc3s500e-5fg320) benutze. Jetzt hab ich allerdings das Problem, dass auf dem Board ja nur DDR Ram vorhanden ist und um ehrlich zu sein würd ich mich lieber darum drücken diesen zu verwenden. Ich hab aber leider keine Idee was ich sonst verwenden könnte. Ich hab jetzt zwar schon was vom MIG gehört aber auch da bräuchte ich ja erstmal generelle Informationen über DDR Ram. Generell stell ich mir dass nachher so vor, dass ich zwei Speicherbereiche habe. in einem wird geschrieben und aus dem anderen wird gelesen. Ist eine Bildschirmseite fertig geschrieben und eine Seite fertig gezeichnet werden die Speicher "getauscht" also es wird aus dem Speicher gelesen in dem vorher geschrieben wurde und umgekehrt. Daraus folgt auch der Wunsch, dass die zwei Speicherbereiche unabhängig von einander sind. Das ganze soll in einem 50MHz Takt geschehen. Ich lege also sowohl die Daten und Ardesse zum Schreiben als auch zum lesen an und beim nächsten Takt hab ich dann einmal die Daten geschrieben und die Daten gelesen. Also: Hat vielleiht jemand schonmal so einen Block geschrieben und würde ihn mir zur verfügung stellen :) wäre mir natürlich am liebsten. Oder hat jemand ne idee was ich anstelle des DDR Rams verwenden kann. Naja oder muss ich wohl oder übel mich noch in DDR Ram einarbeiten? Dann wäre es ganz hilfreich, wenn jemand ein gutes einsteiger Tutorial zu DDR Ram kennt. Ich finde leider meistens nur was zu einbauen in den PC :(.
Der Spartan 3e hat auch internen Speicher (Blockram). Den könntest du benutzen. Allerdings hat er nicht sonderlich viel davon. Bei 640x480x1 würde das gerade mal für eine Seite reichen... Du könntest das aber auch im Textmodus machen und den Mauszeiger als Sprite o.ä. realisieren.
Ja den Blockram hat ich mir auch schon angesehn. Aber es soll schon eine Grafische Oberfläche sein auf der mit der Maus Buttons geklickt werden können. Und da reicht der Blockram ja leider vorne und hinten nicht... Evtl. könnt ich auch aufs Spartan 3 Board umsteigen Dann hätte ich SDRam statt DDR Ram. Aber dann würd ich ja wieder Probleme mit dem "gleichzeitigen" lesen und schreiben bekommen...
Gleichzeitig lesen und schreiben ist auch nur mit spezieller Hardware möglich, SDRAM bzw. DDR bietet diese Möglichkeit nicht (zumindest auf dem S3E Board) Für deine Applikation wirst du ohne Zusatzboard um den DDR-Speicher und 2 FiFos nicht herumkommen. DDRX-SDRAM ist auf Wikipedia ganz gut erklärt (habs aber gerade auch nur überflogen) und beim MIG wird die Dokumentation miterzeugt, bzw. ist auf der Xilinx HP abrufbar. Einfach oben im Suchfeld MIG eingeben. PS: keine Angst vor dem DDR Ram, der MIG nimmt dir da ziemlich viel Arbeit ab (Der FiFo-Gen. übrigens auch) Gruß und einen schönes WE
Ich will ja auch nur quasi gleichzeitig lesen und schreiben. Aber wahrscheinlich werd ich wohl wirklich nicht um den DDR Ram herum kommen. Danke für die Hilfe
> Aber es soll schon eine Grafische Oberfläche sein auf der mit der Maus Buttons geklickt > werden können. Als Notfall-Lösung (falls es mit dem DDR-RAM aus irgendeinem Grund nicht klappt), bleiben dir trotzdem noch Lösungen mit dem BlockRAM. Damals unter DOS gab es auch "graphische" Oberflächen die auf dem Textmodus aufgesetzt haben, und im FPGA bist du ja nicht auf irgendwelche vorgebauten Graphikmodi beschränkt, kannst also durchaus Zwischenlösungen zwischen einem "reinen" Pixelspeicher und einem "reinen" Textmodus bauen. Versuch es aber erstmal mit dem DDR-RAM, das wäre auf jeden fall eindrucksvoller.
Hi, ich habe vor einer Weile einen einfachen Grafikcontroller mit Hilfe des wb_ddr Controller von https://roulette.das-labor.org/bzrtrac/wiki/wb_ddr geschrieben. wb_ddr ist ein kleiner DDR Controller mit WISHBONE-Interface, getrenntem Bus- und Speichertakt. Einen Cache bringt er auch mit und ist sehr einfach zu verwenden. Fuer das S3E Starterkit ist das ganze auch schon angepasst. Nebenbei: Der DDR-Controller ist in Verilog geschrieben und mein Grafik-Teil war in VHDL. Das laesst sich im Xilinx Webpack zwar wunderbar gemeinsam verarbeiten und synthetisieren, aber nicht mit Modelsim synthetisieren (die Xilinx-Version ist auf eine Sprache beschraenkt). Der ISE-Interne SImulator kommt dagegen auch mit gemischten HDLs klar. Sebastian
Hey Danke der WB_DDR ist genau das was ich gesucht habe. Gibt es dazu noch eine Anleitung? Ich habe nämlich keine gefunden und da ich mich erst seit wenigen Wochen überhaupt mit FPGAs beschäftige(VHDL) werd ich aus dem Verilog code nicht schlau. Um etwas konkreter zu werden: Was machen die Inputs wb_cyc_i, wb_stb_i und rot(2:0)? Und kann ich den ddr_clk_fb einfach an den ddr_clk hängen?
Matthias Kemper wrote: > Hey Danke der WB_DDR ist genau das was ich gesucht habe. Gibt es dazu > noch eine Anleitung? Ich habe nämlich keine gefunden und da ich mich > erst seit wenigen Wochen überhaupt mit FPGAs beschäftige(VHDL) werd ich > aus dem Verilog code nicht schlau. > Um etwas konkreter zu werden: Was machen die Inputs wb_cyc_i, wb_stb_i > und rot(2:0)? Und kann ich den ddr_clk_fb einfach an den ddr_clk hängen? Um das ganze im Detail zu erklaeren fehlt mir im Moment ein bisschen die Zeit. Falls beim wb_ddr selbst kein Beipiel dabei ist, schau dir mal soc-lm32 an. Das ist ein ziemlich grosses Paket aus 32-Bit Prozessor Softcore und einiger Peripherie die ueber WISHBONE angebunden ist. Der wb_ddr controller steckt da auch wieder drin. Ist allerdings nen ziemlicher Brocken... foerdert vielleicht die Uebersicht zu anfang nicht gerade. Mir hat das Paket aber sehr geholfen da es eine funktionierende Demoumgebung fuer das Spartan-3E Starter Kit enthaelt. Die kann man auf dem Board ausprobieren oder simulieren und sich die Bustransfers angucken. Ausserdem solltest du dir die Spezifikation zum WISHBONE-Bus auf opencores.org ansehen [1]. Dort drin ist (etwas verklausuliert aber eindeutig) beschrieben was die verschiedenen Signale machen... wenn du dich an diesen Standard haelst kannst du nicht nur wb_ddr verwenden sondern auch diverse andere Komponenten von OpenCores. Schau dir die o.g. Sachen mal an... wenn dann noch Fragen sind kann ich mal versuchen zu helfen :-) Sebastian [1] Info und Link zur Spec.: http://en.wikipedia.org/wiki/Wishbone_(computer_bus)
Okay :) Dann hab ich jetzt auf jeden fall mal nen Anhaltspunkt, wo ich ansetzen kann. Wenn ich garnicht mehr weiter komm meld ich mich nochmal ;)
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.