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