www.mikrocontroller.net

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

Autor: Lo Me (lome)
Datum: 30.04.2008 08:08

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: 30.04.2008 08:43

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: 30.04.2008 08:56

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: 30.04.2008 09:06

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: 30.04.2008 09:12

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: 30.04.2008 16:26

>>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: 30.04.2008 19:17

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 Fischer (chefdesigner)
Datum: 01.05.2008 13:38

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: 02.05.2008 13:11

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: 02.05.2008 18:14

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: 02.05.2008 18:59

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net