www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Mit FPGA exterenen RAM auslesen


Autor: Lo Me (lome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

mal ne ganz dumme Frage:

Ist es eigentlich sehr kompliziert mit einem FPGA Daten aus einem 
externen RAM zu lesen?
Ich bin in diesem Bereich quasi blutiger Anfänger und hab schon von 
einigen LEuten mit Kenntnissen in der FPGA Programmierung gehört, dass 
es recht kompliziert ist, das Timing für schreib- und Lese-Zyklus 
richtig hinzubekommmen. Ich möchte in dem RAM Bilddaten zwischen 
speichern um Sie dann in den FPGA BlockRam abzulegen.
Wie gesagt, ich bin zwar Anfänger, aber würde mich nicht davon 
abschrecken lassen, wenn es für einen Anfänger machbar ist.

Vielen DANK

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast nicht gesagt welche Art von RAM ;)
Aber SRAM sollte auf jeden Fall machbar sein. Auch für einen Anfänger.
Als "blutiger Anfänger" wären wohl DRAM, SDRAM und vor allem DDR 
vielleicht etwas zu kompliziert. Vor allem DDR hat es echt in sich.

Hast Du dir schon einen Typen ausgesucht?

Autor: Lo Me (lome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICh habe eine Development Board von Xilinx. Spartan 3E mit nem XC3S500E 
FPGA. Auf dem Board ist aber ein 64 MByte DDR SDRAM. Wird wohl etwas 
komplizierter.

Autor: findar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit einem Spartan 3E ist das nicht so wild, da kannst du ja nen 
Microblaze implementieren und den SDRAM Controller IP von Xilinx nutzen. 
Damit ist das sehr einfach...

Autor: Lo Me (lome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser MicroBlaze ist doch so etwas wie ein  im FPGA integrierter 
Processor, oder?
Ich hatte vor das FPGA mit dem XILINX-Blockset unter Matlab zu 
programmieren. Hat das schon einmal jemand gemacht?
Ich könnte mir trotzdem vorstellen, dass das Einstellen des Timings für 
den SDRAM recht schwierig wird. Oder gibts da irgend welche Tips/Tricks. 
Muss nämlich Bidler, welche von einem uC gesendet werden irgendwo 
ablegen.

Autor: Der Mitlesende (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>ICh habe eine Development Board von Xilinx. Spartan 3E mit nem XC3S500E
>>FPGA. Auf dem Board ist aber ein 64 MByte DDR SDRAM. Wird wohl etwas
>>komplizierter.

Schaue, ob Xilinx ne Appnote dazu hat. Es ist selten, dass die was auf 
dem Board platzieren, ohne code dazu beizulegen.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher als das DDR-SDRAM anzusprechen wäre vieleicht über den
FX2-Stecker per Flachbandkabel oder EvalBoard (z.B. FX2BB) ein
externes SRAM anzuschliesen. SRAM läst sich um ein vielfaches
einfacher ansprechen bzw. in einfache Applicationen (ohne
MicroBlaze-Core) einbinden.

Falls es aber doch DDR-SDRAM sein soll:
Entweder Du schaust mal unter MIG (MemoryInterfaceGenerator), ein
Tool zur Generierung von Speicherinterfaces für Xilinx-FPGAs (ist
aber auch nicht einfach)
oder:
Auf der XILINX-Seite unter Documents ist Dein Board in einem PDF
beschrieben (glaube "ug230.pdf"). Im Dokument findest Du dann einen
Link  auf das DDR-SDRAM Micron 512MBDDRx16.
Lade das zugeh. Dokument einfach mal runter und entscheide dann
selbst, ob Du lieber DDR oder SRAM verwenden willst. Du must Dich an 
dutzende Parameter halten und für Start,Read,Write bestimmte
Protokolle einhalten, Autorefrech,Burst uvm noch mitberücksichtigen. 
Schreckt vieleicht ein wenig ab, aber falls Du Dich eingearbeitet
hast, dann kannst Du einen auf Deine Bedürfnisse zugeschnittene 
FSM-Automaten (idR. sogar mehrere) schreiben und das RAM optimal
ausnutzen. Ist aber SEHR zeitaufwendig.

Nebenbei bemerkt: Bilder (z.B. von Videokamera etc.) passen wohl
kaum in ein BlockRam, unter Umständen reichen sogar all Deine
BlockRams nicht aus (und Du hast 20 davon in (D) einem FPGA), um
ein vollständiges Bild zu  speichern. Bei normaler (d.h. nicht
komprimierter) Textdarstellung brauchst Du idR schon 2 RamBlocks,
eins für den Text und eins für den Zeichensatz. Falls Du also Bilder 
einlesen, verarbeiten und ausgeben willst (und das noch mit max 
Geschwindigkeit), kommst Du um SRAM wohl nicht herum.

Autor: Andreas F. (chefdesigner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ist es. Für Bildverarbeitung im FPGA reichen die Bloak RAMs gerade 
für einige Zeilen. Reicht, um Kantendetektion zu betreiben ...

Autor: Lo Me (lome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte ja gar keine großen Bildveränderungen vornehmen. Einfach nur 
Bilder, die auf nem uC hinterlegt sind in den FPGA und vom FPGA über die 
VGA-Schnittstelle des Entwicklung-Boards wieder ausgeben.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Egal ob Du eine Bildveränderung oder eine Darstellung über VGA machen
möchtest. Da Deine Bilder von einem uC kommen, rate ich einfach mal,
dass sie nicht "VGA-synchron" übermittelt werden (uC ist dafür viel zu
langsam). Und genau in diesem Fall muss nunmal das Bild in irgendeinem 
hinreichend grossen Speicher zwischengespeichert werden. Und da bleiben
Dir wohl nur die Standard-Möglichkeiten SRAM, MIG für SDRAM/DDR-SDRAM
oder ein eigenes SDRAM-Interface.
Aber so wie ich Deine verschiedenen Forenbeiträge noch in Erinnerung
habe, hast Du ein Sparten3E-Starter-Kit. Darauf befindet sich auch ein
hinreichend grosser und auch schneller Flash-Speicher. Falls Du also
ein Bild übertragen und dann dauerhaft anzeigen möchtest (Prinzip
digitaler Bilderrahmen), verwende vieleicht diesen: Flash löschen, Bild
speichern und dann über Schleife anzeigen,anzigen,anzeigen...

Autor: Bildheiny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Tat. Du brauchst ein RAM, das mit der Bildwechselfrequenz von 
mindestens 10 Frames geschrieben wird, und dann mindestens 60x 
wiedergegeben wird. Am Besten geht das mit einem SRAM und einen Dual 
Port Arbitter: Das RAM lässt man auf 100MHz laufen, wobei immer 
blockweise Daten von einem Eingangspuffer geschrieben werden und 
gleichsam auch Daten rausgelsen werden. An beiden Schnittstellen einen 
FIFO und dann hat man die volle Datenrate von 50MHz rein und raus. 
Bezogen auf 16Bit gegen 32 Bit Farbdaten sind das 25 MHz Pixeltakt. Das 
reicht für VGA640480.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.