Forum: FPGA, VHDL & Co. SD-RAM oder DDR-RAM an Xilinx-FPGA


von TPSK (Gast)


Lesenswert?

Hallo,

ich möchte ein SD-RAM oder ein DDR-RAM an ein Xilinx Spartan 3-PGA
anschließen. Da dies leider ziemliches Neuland für mich ist, wäre es
super, wenn Ihr mir helfen könntet:

1) wie schließe ich ein SD-RAM oder ein DDR-RAM hardware-mäßig an ein
FPGA an ? Welche Pins sind zu benutzen etc. (evtl. Links im Internet)

2) wie sieht das notwendige timing bzw. die notwendigen Lese-und
Schreib-Operationen für das RAM aus ? Wie realisiere ich es im FPGA
mittels VHDL (Links zu Modellen ?)

3) das ganze soll später benutzt werden, um Grafiken in dem Speicher
abzulegen uns später auf einem TFT auszugeben. Wie kann ich eine Grafik
in das RAM laden ?

Das ganze soll irgendwie mittels VHDL realisiert werden.

Vielen Dank für die Hilfe....

von Axel Meineke (Gast)


Lesenswert?

:-) auch da kannst du dich mal hier ...
http://direct.xilinx.com/bvdocs/userguides/ug130.pdf
 hinklicken... Dann schaust du aber auf die Seite 11. Da ist erklärt
die der Speicher an den Spatan angeschlossen ist.


Axel MEineke

von Jochen Pernsteiner (Gast)


Lesenswert?

>wie schließe ich ein SD-RAM oder ein DDR-RAM hardware-mäßig an ein
>FPGA an?

Anlöten?


>wie sieht das notwendige timing bzw. die notwendigen Lese-und
>Schreib-Operationen für das RAM aus ?

Wieso schaust Du nicht einfach im Datenblatt nach?


>Wie kann ich eine Grafik in das RAM laden ?

Indem Du es ins RAM schreibst?

von TPSK (Gast)


Lesenswert?

OK, deine Antworten helfen mir nicht so wirklich weiter (sorry, dass ich
Anfänger bin).

Aber kannst du mir erklären (möglichst ausführlich), wie ich eine
Grafik in das RAM lade. Wenn möglich in einer VHDL-Routine.

Ich nehme an das RAM wird fester Bestandteil meines Adressraum des FPGA
(kenne es nur vom Microcontroller so). Wie lade ich eine Grafik in das
RAM, um sie später auf ein Display wieder auszugeben.

Danke....

von Jörn (Gast)


Lesenswert?

1) Manche FPGA haben bestimmte Pins für den Anschluss von SDRAM /
DDRRAM. Mußt du im Datenblatt deines FPGA nachschauen.
http://direct.xilinx.com/bvdocs/appnotes/xapp454.pdf

2)Wenn du Anfänger bist, würde ich dir empfehlen einen fertigen RAM
Controller zu nehmen. Schau direkt bei Xilinx oder bei Opencores
(http://www.opencores.org/browse.cgi/by_category)

3)Kommt drauf an was du für Interfaces zur Verfügung hast. Per serielle
Schnittstelle o.ä.

von Jochen Pernsteiner (Gast)


Lesenswert?

>Aber kannst du mir erklären (möglichst ausführlich), wie ich eine
>Grafik in das RAM lade. Wenn möglich in einer VHDL-Routine.

Nein kann ich nicht. Welche Grafik denn überhaupt? Welches TFT-Display?
Welches SDRAM?

Was genau willst Du eigentlich bauen?
Willst Du oder musst Du?

Da Du offenbar - oder irre ich mich da? - keinerlei Ahnung von VHDL
und/oder FPGAs/CPLDs hast, wieso lernst du nicht zuerst die Grundlagen

bevor Du mit so einem Riesenprojekt anfängst?

Lies Dir zuerst mal ein Buch über VHDL durch oder schau im Netz nach
Tutorials und Ähnlichem.

>Ich nehme an das RAM wird fester Bestandteil meines Adressraum des
>FPGA

Ein FPGA hat keinen Adressraum, weil ein FPGA kein Mikroprozessor ist.
Ausser natürlich Du implementierst einen Prozessor mit dem FPGA.
Ein FPGA wird nicht "programmiert"; in einem FPGA läuft kein Programm
ab. Ein VHDL-"Programm" ist eine Beschreibung digitaler Logik.

von TPSK (Gast)


Lesenswert?

OK, also ganz freiwillig mache ich das nicht. Aber das kann man sich
nicht immer aussuchen (Studium etc...)

Mit dem Rest liegst du schon ganz richtig. Das ganze Ding mit FPGA ist
Neuland für mich. OK ein FPGA hat kein Adressraum, aha (wieder etwas
dazugelernt). Zu meiner Verteidigung muss ich aber sagen, dass es
Anfänger schwer auf diesem Gebiet haben. Man wird nicht gerade mit
Infos darüber zugeschüttet wird - aber dafür gibt es ja Foren wie
dieses, in dem man geholfen bekommt.

Also mit Mikrocontroller habe ich schon gearbeitet und auch VHDL ist
mir nicht fremd (aber kein Profi). OK, ob man jetzt VHDL als
Programmiersprache ansieht oder nicht, kann man sich streiten - OK
genau genommen ist es keine Programmiersprache, das stimmt.

Gruß und Danke....hoffe aber auf weitere Hilfe....

von Jochen Pernsteiner (Gast)


Lesenswert?

Es genügt übrigens wenn du einmal postest...

>OK, also ganz freiwillig mache ich das nicht. Aber das kann man sich
>nicht immer aussuchen (Studium etc...)

So hörte es sich auch an. Studienprojekt oder wie?


>Zu meiner Verteidigung muss ich aber sagen, dass es
>Anfänger schwer auf diesem Gebiet haben.

Da hast Du wahr. Das schwierige an VHDL ist nicht die Sprache an sich,
sondern dass viele Anfänger einfach keine Ahnung von Digitaldesign
haben. Du musst halt wissen was kombinatorische und sequentielle Logik
ist; du musst die elementaren Bausteine digitalter Schaltungen kennen.
Dann hast Du auch keine Probleme sie mit VHDL (oder Verilog oder was
auch immer) zu beschreiben.
Wenn Dir dieses Wissen abgeht, wirst Du immer wieder Probleme bekommen.

von spoonox (Gast)


Lesenswert?

Beiträge, wie die von Jochen Pernsteiner, kann man getrost überlesen.
Sie zeigen nur den oberflächlichen Charakter eines
mitteilungsbedürftigen Menschen, der eigenlich keine Ahnung hat.

spoonox

von Axel Meineke (Gast)


Lesenswert?

Wobei er schon recht hat. Das Problem ist bei den meisten zu verstehen,
das der programmtext nicht immer sequenziell ablaufen. Brauchst du denn
noch tipps für den einstieg in VHDL??? Da kann ich dir nen paar nette
links posten. Es ist doch auch wirklich schwer dir die komplette Lösung
bei einem so komplexen Thema zu posten, da musst du doch zustimmen oder?

von TPSK (Gast)


Lesenswert?

Über ein paar links zu VHDL wäre ich immer dankbar. Habe zwar schon mit
VHDL gearbeitet, aber ein Profi bin ich echt noch nicht...

Mir ist schon klar, dass man mir wahrscheinlich keine komplette Lösung
für mein Problem geben kann.
Über ein paar Tipps, Ansätze oder auch nur ein paar Links (über
Speicher, Anschluß von Speichern an FPGA & MC, VHDL-Modelle von
Speichern etc),  wäre ich schon dankbar und würde mir auch reichen...
Das ich mich letztlich damit allein durchschlagen muss, ist klar. Aber
ich bin über jede Hilfe dankbar.

Gruß an Jochen Pernsteiner ;-)

Gruß & Danke...

von Sven Johannes (Gast)


Lesenswert?

Moin...

Da muss ich mich doch auch mal melden, das kommt mir doch alles so
bekannt vor. Also, meine Erfahrungen:

Besorg dir ein EVK. Das Original von Xilinx ist nicht schlecht und
kostet nur knapp 100eur. Das JTAG Kabel das es dazu gíbt kostet allein
schon 60eur. Weiß jetzt aber nicht ob DRAM drauf ist. Avnet und Memec
haben auch gute Boards. Das Avnet habe ich gerade mit einem V2p vor
mir, die Fehler sind erträglich.

- Vergiss alles was Xilinx veröffentlicht. Nichts davon läuft, egal wie
schön die das reden.
- Wenn du nicht musst, vermeide DDR-RAM. SDRAM reicht dir!
- Interessant ist der Xmil. Bekommst du als registrierter Benutzer. Der
generiert die Interfaces auf Knopfdruck.
- Design ist trotzdem Schrott => komplett überarbeiten.

Dein kleinstes Problem wird übrigens das VHDL sein. Ich gebe (endlich)
nächste Woche meine Diplomarbeit ab: DDR-SDRAM an Virtex2p und
Migration an Virtex4. Macht keinen Spass, ohne passende Software. Womit
willst du Synthese uns Simulation machen?

--
 Sven Johannes

von Axel Meineke (Gast)


Lesenswert?

Morgen...
Also um deine Unsicherheit zu beseituigen, Das Spartan-3 Starter Kit
hat 2x256kbx16 SRam.
Aber mich würde das Xmil interessieren. Ixch gestehe, das ich das noch
gar nicht kenne. Bei Xilinx finde ich auch nichts wo ich genauere Infos
dazu bekomme. Hast du ein Manual dazu? Oder ein Link wo man sich
informieren kann?

von Sven Johannes (Gast)


Lesenswert?

Moin...

wie gesagt, gibts gegen Registrierung.
Dann bekommt man auch die confidential Xapps, die sind immer so 50%
unfangreicher als die "normalen" Versionen:
http://xilinx.com/products/design_resources/mem_corner/index.htm

Das Tool heißt MIG, xmil ist eine andere Version, sorry.

Das wirklich nette an dem Ding ist, dass alle Delaylines damt
Kompensation automatisch angelegt werden. Das was an Source ansonsten
ausgespuckt wird kannst du aber ziemlich vergessen. Xapp688c und 678c
sollen das eigentlich dokumentieren; das hat man dem Entwickler aber
wohl nicht mitgeteilt...

BTW: ich habe nochmal etwas weiter gelesen. Du willst also ein Display
sammt Speicher anklemmen. Bist du sicher das SDRAM da die beste Lösung
ist? Ich würde mir erstmal das Starter Kit auf den Tisch legen und
versuchen den bereits vorhandenen VGA Port zum Leben zu erwecken. DAs
Board hat schon alles was du brauchst!

--
 Sven Johannes

von Axel Meineke (Gast)


Lesenswert?

Haben wir ihm auch schon ans Herz gelegt. Er ist ja auch schon fleissig
am Studieren, wie das mit back porch front porch etc so abläuft.
(Anderer Thread hier im Forum).
Ich denke seine Aufgabe ist nicht die leichteste.
Aber das andere werd ich mir mal genauer anschauen. Klingt sehr
interessant.

Danke

von Michael Noll (Gast)


Lesenswert?

@ Sven Johannes
> - Vergiss alles was Xilinx veröffentlicht. Nichts davon läuft, egal
>   wie schön die das reden.

Kann ich eigentlich nicht bestätigen. Imho kann sich eine Firma wie
Xilinx es sich auch nicht leisten unverifizierte Komponenten ins Netz
zu stellen.
Wenn man sich die Manuals zu den Komponenten durchliest und genau das
macht, was da drin steht, dann funktionieren die auch tadellos.

Was du vielleicht meinst: Die Xilinx Cores sind nicht gerade mit
generics gespickt ... d.h. sie sind meist nur auf einen spezifischen
Fall zugeschnitten. Da diese Cores aber meist nur als Netzliste (EDN)
vorliegen, kann man da leider aber nichts mehr dran ändern ... naja
heißt es halt selbst schreiben.

gruß michael

von Sven Johannes (Gast)


Lesenswert?

Moin...

Ich meine nicht die Cores, die sind sogar ziemlich gut durchgetestet.
Versuch mal eine der Xapps zum laufen zu bekommen. Da kommt man sich
vor als ob das ein Mensch mit Ahnung entworfen und zu 80% gebaut hat
und dann kam der Azubi der die letzten 20% vermixt. So Sachen das laut
Dokumentation Fifo verwendet werden, im Code sind dann Schieberegister
verbaut. Timer die dokumentiert sind, aber niemals abgefragt werden
usw...

--
 Sven Johannes

von Michael Noll (Gast)


Lesenswert?

Kannst du mal eine XApp nennen mit der du Probleme hast? Vllt kann ich
dir ja helfen. Ist vllt etwas Offtopic aber egal ...

von Axel Meineke (Gast)


Lesenswert?

Nun mir scheint eh als ob TPSK Kapituliert hat. Na ich hoffe mal das er
noch nicht aufgegeben hat  sein Videoprojekt in die Tat umzusetzen.

von Sven Johannes (Gast)


Lesenswert?

Moin...

@michael
253,678(c),688(c),758(c) und noch so einige Andere.
KEINE von denen war auch nur ansatzweise lauffähig, entgegen der Doku.
Viele Fehler kann man beim Entwurf eigentlich nicht übersehen haben, es
sei denn man wollte sie verstecken. Sorry, aber mit denen bin ich durch.

Nett war das Ding auf das mein Kollege gestossen ist: Serielles
Interface im Spartan. Schieberegister zum deserialisieren eingesetzt.
Korrekt implementiert, danach auskommentiert und mit falscher
Schieberichtug wieder eingefügt.
Dazu dann noch die Tatsache das die Dokumentationen nicht immer SO GANZ
den tatsächlichen Designs entsprechen....

--
 Sven Johannes

von TPSK (Gast)


Lesenswert?

Moin, moin...I'm back (Gruß an Axel).

Also ich habe noch nicht kapituliert mit meinem Video-Projekt (ganz im
Gegenteil, es ärgert mich, dass ich so wenig Ahnung von der ganzen
Thematik habe, dass ich mittlerweile wieder ziemlich motivieren bin -
auch wenn ich immer noch nicht durchblicke...)

Aber mal zurück zu MEINEM Problem:

Zusammenfassung: zur Darstellunng einer Grafik benötige ich ein RAM
(DDR-RAM oder SRAM - je nachdem, wie meine Vorgaben sein werden), das
praktisch als Grafikspeicher dient. Als FPGA kommt ein Xilinx Spartan 3
zum Einsatz.
Ich habe mich nun etwas in die Thematik von RAM-Speichern eingelesen.
Meine Frage ist (nach wie vor), wie ich ein DDR-RAM oder SD-RAM an ein
FPGA anschließe.

Am liebesten wäre mir ja, wenn mir einer mal eine Schematic (von
Speicher und FPGA mit allen notwendigen Steuer- und Datenleitungen) und
dazu passenden VHDL-Code eines RAM-Controllers schicken könnte.

Ich weiß, ist vielleicht etwas zu viel verlangt, aber ich freue mich
natürlich auch über jede andere Hilfe (Gruß und Kompliment an alle User
dieses Forums).

Achso, so ganz nebenbei ist mir auch noch nicht klar, wie ich dann eine
Grafik in den Speicher bekomme. Kann ja bestimmt nicht einfach sagen
"speicher xxx.jpeg" ;-)

Achso an alle "FPGA-Profis": schaut mal bitte unter meinen anderen
Beitrag "Display-Ansteueung mittels Xilinx-FPGA" -- Hilfe ???

Danke

von TPSK (Gast)


Lesenswert?

Hi Sven Johannes,

ich lade mir mal "MIG" herunter und werde es studieren.

Da du dich ja in deiner Diplomarbeit mit fast der gleichen Thematik
(und den gleichen Problemen) beschäftigt hast, scheinst du ja mein Mann
zu sein (sorry, die anderen natürlich auch ;-).

Super, dass su auch meinen anderen Beitrag gelesen hast. Das Problem
ist, dass ich zur Realisierung nicht einfach ein fertiges
Evaluation-Board mit VGA-Port etc. einsetzen kann, sondern letztendlich
auch ein eigenes Board entwerfen muß, um alles zu realisieren.

So, jetzt wißt ihr auch, warum ich so viele Fragen habe...

von Axel Meineke (Gast)


Lesenswert?

Autsch... du musst ein eigenes Board entwerfen???
Argh... das wird nicht ganz ohne. Das musst du auch alles Bestücken
lassen. So weit ich weiss, gibt es Spartan-3 Bausteine nur in einem BGA
gehäuse oder???
Ist das für dich auch ne Diplomarbeit???
Dann hast du wirklich noch viel zu tun. Ich habe aber immer noch nicht
so richtig verstanden was du da machen must. Du hast nen Jpeg welches
du auf dem Display darstelen sollst? Oder wie habe ich das verstanden.

von TPSK (Gast)


Lesenswert?

OK, also es ist eine Diplomarbeit für mich (Ahhaaa !!!), allerdings will
ich nicht allzuviel darüber reden (Firma etc...)

Also ich muss ein Board entwickeln, auf dem u.a. ein FPGA und ein
Speicher (DDR-RAM oder SD-RAM) enthalten ist (Layout und Bestückung ist
kein Problem).

Mit Hilfe dieses Board soll ein großes Grafik-Display angesteuert
werden. Die anzuzeigende Grafik befindet sich im Grafikspeicher...

So ganz grob mein Vorhaben bzw. mein Problem...

von Michael Noll (Gast)


Lesenswert?

Hallo TPSK

Muss es denn unbedingt SD-RAM oder DDR-RAM sein? Wieviele Pixel hat
denn das Grafik-Display?
Ich denke nämlich, dass das nur ein Bildwiederholspeicher sein muss und
da reicht ein SRAM aus.
Falls du dennoch vorgefertigte Bilder aus einem Speicher holen sollst,
dann wäre Flash auf jeden Fall 'ne Alternative. Bevor du dich in die
Timings von SD-RAM und DDR-RAM eingearbeitet hast ist das meiner
Meinung nach 'ne sinvollere Lösung.

von Jörn (Gast)


Lesenswert?

@ Michael: Das Display ist hier beschrieben :
http://www.mikrocontroller.net/forum/read-9-184389.html

von Jörn (Gast)


Lesenswert?

@TPSK:

Mußt du "nur" die Schaltung entwickeln?

Vielleicht nützt dir das Blockschaltbild was:
http://www.xess.com/prod035.php3
oder :
http://direct.xilinx.com/bvdocs/appnotes/xapp134.pdf

von Sven Johannes (Gast)


Lesenswert?

Moin...

Na putzig. Also deine Probleme habe ich auch schon durch. Ein Display
am Xilinx habe ich als Studienarbeit gemacht, DDR-SDRAM als Diplom.
Wenn du die Platine auch nochmachen willst wünsche ich dir jetzt schon
viel Spass...

Nochmal der Tip: Nimm dir ein EVK vor das zumindestens grob das macht
was du anstrebst. Wenn du alle Baustellen gleichzeitig anpackst weisst
du nacher nicht mehr wo du eigentlich stehst und wer oderwas dir in die
Suppe spuckt!
- SRAM ansteuern. Wenn Daten kommen=> gut.
- VGA Signal erzeugen. Wenn IRGENDEIN Bild da => gut.
- Eigenes Board entwerfen, alte SRAM Ansteuerung => Daten?
- eigene VGA Lösung, alte bilderzeugung => gleiches Bild?

Dann hast du zumindestens nur HW oder SW als Fehlerquelle. Fallsches
Design und verkorkste Logik => Ticket in die Hölle!

--
 Sven Johannes

von Michael Noll (Gast)


Lesenswert?

@ Sven

an welcher Uni warst du? Irgendwie kommen mir deine Studien- &
Diplomarbeit als auch dein Name bekannt vor ...

von TPSK (Gast)


Lesenswert?

@ Michael Noll...

Noch zu deinem Einwand: "ich denke, dass das nur ein
Bildwiederholspeicher sein muss".

Kannst du mir genau dessen Bedeutung erklären oder etwas mehr Info
darüber geben, wann, wie und wozu ich so etwas brauche ?

Ich bin mir natürlich nicht sicher. Letztendlich sollen irgendwann mal
Grafiken auf einem Display erscheinen. Ich denke, die müssen dann auch
in irgendeinem Speicher stehen, oder ? und du würdest dazu einen Flash
nehmen ? Mmmhhh, macht eigentlich Sinn, da die Grafik im RAM ja nicht
dauerhaft bleiben.

Gruß

von Michael Noll (Gast)


Lesenswert?

Abend...

Sorry, aber langsam glaube ich, du hast da bei deiner
Diplom(oderwasauchimmer)-Arbeit etwas zu hastig nach den Sternen
gegriffen - ist meine persoenliche Meinung, musst du also nix drauf
geben.

Jedoch zu deiner Frage:
Bildwiederholspeicher - eigentlich sagt der Name schon alles?
Bild: ... deine Daten
wiederhol: zyklisch
speicher: erklaert sich von selbst, oder?

Wie ein CRT-Monitor oder ein Display funktioniert weisst du ja
bestimmt?
Nun, im Allgemeinen kann man sagen, dass ueber einen laengeren*
Zeitraum der Inhalt des Displays/Monitors nicht veraendert wird. Das
Bild aber muss zyklisch und kontinuierlich aufgebaut werden.
Soll heiszen: In deinem Bildwiederholspeicher (ab jetzt kurz BWS) liegt
z.B. an Adresse 0000 der Farbwert fuer das Pixel ganz links oben und
z.B. an Adresse 0FFF der Farbwert fuer das Pixel ganz rechts unten. Nun
zaehlst brav deine Adressen hoch und erzeugst noch, lapidar gesagt,
zusaetzlich die fuer dein Display noetigen HSYNC und VSYNC-Signale. An
der letzen Adresse angekommen, springst wieder auf deine Startadresse
(daher also wiederholen)

Die Daten fuer den Bildwiederholspeicher kannst du dir woher auch immer
holen. Du musst halt nur beachten, dass du waehrenddessen du einen
Zyklus durchlaeufst nur bedingt schreiben (Tristate) oder nur mit
Aussetzen schreiben kannst. Prinzipiell ist das aber moeglich, da ja
egal ist woher die Daten vom Datenbus kommen. Aber vorsicht mit deinen
WE und OE-signalen am Speicher.
Vllt. ist dir bei LCD-Displays an Ticketautomaten schon mal
aufgefallen, dass wenn du ein anderes Menue waehlst, kurz der
Bildschirm schwarz wird. In dieser Zeit wird eine neue Grafik in den
BWS geschrieben, d.h. der Zyklus des Auslesens wurde Angehalten um neue
Bilddaten in den BWS zu laden.

Hoffe, du hast jetzt so einigermaszen das Prinzip eines BWS
verstanden.
Wir beantworten dir gerne weiterhin deine Fragen. Also nicht scheuen

Schoenen Abend noch.

von Sven Johannes (Gast)


Lesenswert?

Moin...

@Michael
ich bin/war an der HAW Berliner-Tor in Hamburg. Technische Informatik.

Habe am Montag mein vorläufiges Zeugnis bekommen ... (freu) Ich kann
garnicht sagen WIE SEHR ich die Schna*** voll habe!

--
 Sven Johannes

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
Noch kein Account? Hier anmelden.