Hallo allerseits, ich hab hier gerade ein grundlagenproblem. ich möchte mit einem altera flex einen controller für ein lcd display bauen. als bildspeicher steht ein schnelles SRAM zur verfügung. das will ich nun als quasi-dual-port RAM verwenden. also die daten werden displayseitig kontinuirlich ausgelesen und dargestellt. eingangsseitig sollen die daten beliebig in den speicher geschrieben und wenn möglich auch gelesen werden können. hab nun schon eine weile drüber nachgegrübelt. eine zufriedenstellende lösung ist mir allerdings nicht eingfallen. auch im netz war nicht wirklich was zu finden. wenn dort ein dual-port RAM realisiert wurde dann immer nur im blockram und nicht mit einem externen ram. hat schon mal jemand so was realisiert oder kennt ein projekt wo man sich sowas mal anschauen kann? gruß sunny
Wie sind die Taktverhaeltnisse? Geht einfaches Multiplexen zwischen dem Display und der Ansteuerung? Ansonsten hat Cypress auch fertige Dual Port RAMs
hi weiß jetzt nicht ob ich dich richtig verstanden habe. von der RAM-geschwindigkeit sollte das mit dem multiplexen gehen. das display läuft mit ca. 2mhz und das ram hat eine zugriffszeit von 15ns. ich denke aber man muss die daten in richtung display noch mal puffern. die DP-RAM von cypress kenn ich auch. ich wollte es aber lieber mit einem normalen ram machen weil ich das normale ram zum einen hier rum liegen habe und man ja auch was bei der sache lernt. gruß sunny
> hat schon mal jemand so was realisiert Ja, als Video-Overlay-für eine (etwas aufwendigere) Rückwärtskamera... > oder kennt ein projekt wo man sich sowas mal anschauen kann? Leider darf ich den Code nicht veröffentlichen, aber im Prinzip baust du um dein RAM einen Speichercontroller, der das Schreiben in das RAM und die Bedienung des Displays abhandelt. Es gibt die 8-Bit Graka von Ulrich Radig, der so eine FSM in ein CPLD gepackt hat: http://www.ulrichradig.de/home/index.php/cpld/8bit_c_graka
Im Prinzip hast Du 2 FIFOs: 1. Videodaten->FIFO_1 ->SRAM 2. SRAM -> FIFO_2 -> Display a) Solange FIFO_1 nicht voll -- die Videodaten ins FIFO schreiben b) Solange FIFO_1 nicht leer -- die Daten aus dem FIFO lesen und ins SRAM schreiben. c) Wenn FIFO_2 nicht voll -- die Daten aus dem SRAM lesen und ins FIFO_2 schreiben. d) Wenn FIFO_2 nicht leer -- die Daten aus dem FIFO zum Display schreiben. Das ist die ganze Statemachine, zugegebenermaßen vereinfacht ;-) Grüße, Kest
> Videodaten-> FIFO_1 ->SRAM
Dieser Weg über einen Fifo ist etwas ungünstig, wenn Daten vom
uC/Prozessor aus dem Videospeicher ausgelesen werden müssen, z.B. um ein
XOR auf einem Pixel zu machen...
genau um das prinzip eines solchen ram-controlers ging es mir. der herr radig hat da ein schön einfaches konzept. so was hab ich gesucht. da fehlt jetzt nur noch der kanal in richtung uC. das reicht mir als basis für meine experimente vollkommen aus. vielen dank für eure hilfe. gruß sunny
Hallo zusammen, Die Idee mit den FIFOs zur Entkopplung zum externen Speicher hab ich schon einige Male eingesetzt und kann sowas nur empfehlen. Da es sich beim eingesetzten FPGA um einen Altera-Chip handelt hab ich gedacht, ich kann vielleicht noch ein, zwei Tips geben. Ich geh im weiteren mal davon aus, dass fuer die SRAM-Ansteuerung die passende Altera-Komponente und ein SOPC-System verwendet wird (ansonsten kann man den Abschnitt leider einfach ignorieren). Bei reinem SRAM kann man vielleicht einfach gleichzeitig (gemultiplext) zugreifen. Wenn es ein komplizierterer Speicher (z.B. DDR2) ist, so bietet es sich an Avalon-Bursts (laengere Schreibzugriffe) durchzufuehren, sodass man verhindern kann, dass zu oft umgeschalten wird und der Chip an Effizienz verliert. Wenn man das Auslesen fuer das LCD bevorzugen moechte (sodass es nicht stockt) kann man innerhalb des SOPC-Builders noch Arbitrier-Anweisungen verteilen, sodass er im Zweifel 4-mal so oft dran kommt. Unter http://www.nioswiki.com/Nios2EmbeddedEvaluationKit/Altera's_Video_and_Image_Processing_Suite_Demo_on_the_NEEK gibt es ein nettes Projekt, das schliesslich ein LCD ansteuert ... es ist ein bisschen umfangreich aber vielleicht einen Blick wert. Hierbei wird noch ein dreifacher Framebuffer eingesetzt, sodass nie ein halb-aktualisiertes Bild uebertragen wird => die meisten der eingesetzten Komponenten sind Standards von Altera, die man jedoch lizensieren muss - kostenlos ausprobieren kann man sie als OpenCorePlus-Version jedoch trotzdem mal und hat somit schnell ein Ergebnis. Ich hoffe mal, die Antwort ist nicht ganz am Thema vorbei (mein erster Forums-Eintrag). Auf jeden Fall viel Glueck beim Basteln, Roman
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.