Forum: FPGA, VHDL & Co. DDR-SDRAM an FPGA


von Michael (Gast)


Lesenswert?

Hallo!
Ich arbeite jetzt schon seit längerer Zeit mit FPGA´s und bin auch in
VHDL schon ganz fit, deshalb würde ich jetz gerne mal ein größeres
Projekt angehen. Mir schwebt da etwas in Richtung MicroBlaze usw. vor,
mit denen ich schon gearbeitet habe. Ich würde jedoch gerne eine
Dual-Core (oder mehr) CPU realisieren, da man die Taktfrequenz dann
nicht an die Grenze treiben muss. Verwenden würde ich gerne einen
Spartan 3E, da mit die Virtex Boards einfach zu teuer sind...
Das Problem wird meiner Meinung nach jedoch die Ram-Anbindung. Die CPU
soll zwar einen recht großen Cache bekommen, den sich alle Cores teilen
(keine Kohärenzprobleme), jedoch brauch ich einen Bus mit hoher
Bandbreite, deshalb dachte ich an DDR-SDRAM. Damit habe ich leider noch
gar keine Erfahrung. Was schätzt ihr, was für eine Taktfrequenz für den
Speicher drin wäre und wie groß der Aufwand für die Realisierung dieses
DDR-Controllers wäre?
Und zu guter Letzt: Was haltet ihr überhaupt von der Idee eine
Dual-Core CPU zu entwickeln?

Gruß Michael

von Sven Johannes (Gast)


Lesenswert?

Moin...

Es ist eine DRECKS-arbeit DDR Speicher anzubinden. Zumindestens, wenn
die Ergebnisse reproduziert werden sollen und dem Standart abgepasst
sind.

Benutze den Memory Interface Builder von Xilinx, der berücksichtigt
weitgehend die Normen und Möglichkeiten der Chips. Im Virtex2/Spartan3
ist es ziemlich elend den Takt von Ram zu verschieben, das kann V4
besser. Der Builder hat aber alle gängigen Speicher drauf.

Mit dem FPGA ist das Elend aber noch nicht am Ende: das Board möchte ja
auch noch nach den Regeln der Kunst entworfen werden. Also so Scherze
wie Äquidistanz der Signale, impedanzgeführtes Design, differentielle
Signale für die clk, Termination mit schicken Anforderungen an die
Präzision.... also, es reicht locker für ein Diplom soetwas tatsächlich
von Grund auf zu realisieren.

GANZ schick wirds dann, wenn etwas nicht läuft. BGA-FPGA verbunden mit
BGA-RAM Baustein und selbst wenn man ein Signal messen kann, sprich
rankommt, zerlegt die Impedanz des Messkopfes sofort das komplette
Signal...

Meine Profs meinten, das Ding hätte ich auch zu Promotion auswalzen
können.

Mein Tipp: DDR nur dann wenn du mit SDRAM wirklich nicht mehr
hinkommst.

--
 Sven Johannes

von Michael (Gast)


Lesenswert?

Ok, dann werde ich den DDR-SDRAM Controller wohl erstmal vergessen.
Die DDR-SDRAM´s hätte ich im TSOP Gehäuse gekauft, wo zumindest das
Löten deutlich einfacher geworden wäre, aber impedanzgeführte Designs
hören sich dann doch schon etwas komplizierter an, als ich vermutet
hatte. Mit Terminierung usw. sitzt man da wohl ne Weile, bis so ein
Board fertig ist und daraus ne Diplomarbeit zu machen hatte ich
eigentlich auch nicht vor*g*. Aber warum muss man bei normalen SDRAM
darauf nicht so gezielt achten? Ich habe hier im Forum schon viele
Bilder von AVR´s mit SDRAM gesehen, die mehr oder weniger über einzelne
Kabel verbunden waren. Spielt da die Taktfrequenz eine große Rolle, oder
sind diese DDR´s einfach empfindlicher?

Gruß Michael

von Florian G. (Gast)


Lesenswert?

Hallo Michael,

Du hast mit beiden Vermutungen recht. Bei den Taktfrequenzen, die
man mit einem AVR erreicht, ist das Layout natürlich unkritisch.
Bei 166MHz kommt man aber auch bei SDRAM nicht um ein sauberes
Layout herum.
DDR-RAMs sind sehr viel empfindlicher, da schon einige 'Tricks'
nötig sind, um diese Datenraten zu erreichen. Schau einfach mal
in Datenblätter und Application Notes von SDR- und DDR-RAM rein
(z.B. auf www.micron.com). Bei den FPGA Herstellern gibts auch
Infos zum Thema, obwohl es da natürlich viel einfacher klingt als
es in wirklichkeit ist ;)
Noch zum Gehäuse, auch wenn das RAM ein TSOP-Gehäuse hat, kommst
Du beim FPGA fast nicht um ein BGA herum. Mit einem TQFP wird
das Layout für DDR-RAM nochmal mühsamer, sieht dann zum Beispiel
so aus wie das Twister-Board auf www.fpga.nl

Gruss Flo

von Michael (Gast)


Lesenswert?

So, hab nochmal bischen bei XIlinx gestöbert und wie ihr schon
geschrieben habt wird da alles ziemlich geschönt, jedoch haben die FPGA
ab Virtex 2 Pro irgendwelche I/O Pins, die verschiedene Pegel, wie sie
für DDR anscheinend gebraucht werden treiben/auswerten können und auch
noch die Impedance einstellbar ist. Wenn ich da einen so nen DDR-RAM
Riegel wie sie auf normalen Motherboards vorhanden sind anschließe
könnte das doch garnicht so kompliziert werden, oder?? Oder ist das von
Xilinx mehr ein "Marketing" Trick, der aber eigentlich nicht wirklich
was taugt?

Außerdem hab ich bischen gescuht, aber nirgendwo Preise für Virtex 2
pro Boards oder die FPGA selber gefunden. Wird mich freuen, wenn ihr
mir ein paar Links hättet!

Gruß Michael

von Kest (Gast)


Lesenswert?

Zum Thema DDR-Controller

schau Dir MIG an (irgendwo bei Xilinx.com gibt's den). Damit erstellst
Du einen Controller, aber nur für Xilinx FPGAs und nicht für alle

Gruß
Kest

von FPGAküchle (Gast)


Lesenswert?

Preise schlage ich gern bei www.avnet.com unter part builder nach (so
als grobe orientierung)
in D ist der Xilinx distributer inzwischen die silica (auch avnet).

Die Unterstützung der DDR Pegel (STL) bringt nicht viel weiter. Man
kann immer auf dem PCB alles falsch machen, aber der hauptbrocken ist
der SDRAM Controller. Das ist mehr als nur addresse, steuersignale und
daten übernehmen.

von Michael (Gast)


Lesenswert?

Ich habe mir am Wochenende ein paar Jedec Spezifikationen für DDR
geladen und gelesen und auch einiges verstanden. Der Controller wäre
schon deutlich komplexer als der für SDRAM, aber wenn es wie Kest
geschrieben hat dafür Programme gibt, die den Controller für einen
erstellen, dann ist das ja eigentlich auch kein Problem mehr. Oder ist
das Interface dieses Controllers wiederum jenseits von Gut und Böse?

Auf jeden Fall danke für den Link, sieht sehr interssant aus, wobei die
Boards leider auch ziemlich teuer sind )-:
Ein Problem ist halt, dass diese Boards ziemlich viele Features haben,
die ich eigentlich garnicht benötige. Ich bräuchte eher solche Module
wie das Memec™ Xilinx® Virtex™-4 FX12 Mini-Module für 250€. Diese USB
Schnittstellen usw. brauche ich erstmal nicht, mir geht es erstmal
darum einen Prozessorcore zu erstellen und damit bischen zu spielen*g*
Ich suche also sowas wie eine Adapterplatiene von BGA auf DIP oder
ähnlich, wie es halt dieses Board dort hergibt, damit ich es nachher
auf mein eigenes "Motherboard" stecken kann. Oder meint ihr, dass man
es sich dadurch erst so richtig erschwert?

Gruß Michael

von Sven Johannes (Gast)


Lesenswert?

Moin...

Auf den Trick, das der Virtex2 ja "alles mitbringt" bin ich auch
reingefallen. Die Impedanz kannst du aber nur am Chip einstellen, nicht
am Ram. Mit einem Speicher noch ok, ab zwei wirds verdammt eklig. Für
den K.O. guck dir mal den Takt an. Er wird der Spezifikation nach
Quellensynchron generiert, für die DDR-IOBs brauchst du ihn aber 90°
verschoben. Bei 100MHz sind das 2,5ns. Bei setup und hold in der Gegend
von 1ns wird das Zeitfenster verdammt klein. Achja: bitte noch an 8
Datenleitungen verteilen, und das x-mal!

Erst Virtex4 macht das mit dedizierten Verzögerungen direkt in den
IOB.

BGA auf DIP ist ja wohl die Krönung. Welche Signale willst du denn da
durchschicken? Und was soll da noch rauskommen? Werf mal einen Blick
auf die Memec Boards: die freundlichen Stecker da kommen von Samtec und
sind für die schnelle Datenübertragung gedacht. Guck dich mal auf der
Site um und leg dann deine Dip und Konsorten mal weit weg. Wenn du die
alten Standarts weiter verwendest gehen die natülich auch noch.

Mein Tipp bleibt bestehen: Guck dir mal das Spartan3 Minimodul an, wenn
du dich mit diesen Memec Teilen anfreunden kannst. Wenn du damit an
Grenzen stößt, mach mit V2p oder V4 weiter. Wenn ich das richtig
verstehe, kann man auf diesem Baseboard alle Minimodule austauschen.

--
 Sven Johannes

von Michael (Gast)


Lesenswert?

Ok, das mit dem BGA auf DIP, war nicht wörtlich gemeint, sondern eher
dumm von mir ausgedrückt. Ich meinte einfach nur, dass ich ein Board
suche auf dem so ein FPGA, wenn möglich ein Ressourcenstarker, weil ich
nicht 200€ für ein Board ausgeben möchte, dass nach nem halben Jahr
schon voll ist*g* Mit DIP meinte ich halt, dass es einigermaßen
brauchbare Leiterbahnabstände sind und nicht diese BGA´s, wo ich noch
nichtmal ne Idee hab, wie man die überhaupt auf die Platiene
draufbekommt!? Erst Lötstellen anschmelzen und dann reindrücken? (-;

Aber mal schauen, vielleicht freunde ich mich ja noch mit so einem
Miniboard an...
Gruß Michael

von FPGA-User (Gast)


Lesenswert?

Hallo Michael,

so ein DDR-SDRAM Controller ist am Ende auch keine Zauberei.
Habe sowas mal vor 3 Jahren für einen Virtex II gemacht,
das Ergebnis liegt bei www.opencores.org.
Vorteil war : ich hatte ein fertiges Board von CESYS, musste mich
also nicht auch noch um das Layout kümmern.
Es sollte nicht unbedingt das erste Speicher-Interface sein, dass
man programmiert.
Und - man kann ja erstmal vereinfachen, also fixe Burstlänge, usw.
Wichtig ist: Du musst die Funktion des Speichers 100 Pro verstanden
haben und Dich genau an die Spec halten. Dann klappt das schon.

Mal so in einer Woche ist da aber nichts getan. Worauf man achten
muss, steht in unzähligen App-Notes, Schaltpläne kann man von
Dev-Kits abkupfern.
Bestenfalls harte Arbeit, aber keine Drecksarbeit. ;-)
Übrigens habe ich den Core ohne Scope zum spielen gebracht,
was für das cesys-board spricht.

von Kest (Gast)


Lesenswert?

Ich hab' mal für Spartan 3 mit MIG DDR-Controller erstellt. Es waren
gleich 3 Stück (64 Bit, und 2x 32 Bit... oder umgekehrt, aber alle auf
einem Board)

Ich habe auch alles auch bis zur Simulation gebracht, was so la la
funktioniert hat. MIG hat aber einen Haufen Bugs, d.h. so, wie der die
Dateien rausspuckt, gingen sie nicht auf Anhieb. Vielleicht ist es
schon besser geworden, keine Ahnung. Aber zumindest war das ein
Anfang.
Bis zu der Inbetriebnahme bin ich aber nicht gekommen, das tolle Board
wurde eingestampft :-o

Zum Layout: Es war nicht besonders schwer. Dauert halt etwas, wenn man
hunderte Wiederstände platzieren muss ;-) (war aber auch von
irgendeinem Board abgekupfert)

Ich würde also FPGA-User zustimmen, sollte nicht das erste
Speicherinterface sein, ist aber machbar.

Ich will aber nicht wissen, wieviel Arbeit auf mich zugekommen wäre,
müsste ich alles in Betrieb nehmen ;-)

Zur Dual-Core-CPU:
ich finde die Idee lustig :-)
Willst Du microblazes nehmen? Oder selber was machen?

Gruß
Kest

von FPGAküchle (Gast)


Lesenswert?

#so ein DDR-SDRAM Controller ist am Ende auch keine Zauberei.
#Habe sowas mal vor 3 Jahren für einen Virtex II gemacht,
#das Ergebnis liegt bei www.opencores.org.

Hallo FPGA-user,

kennen wir uns? Jedenfalls hatte ich 2001-2002 mit den leutchen an
einem Tisch gesessen, die an dem DDR-Core auf opencores gearbeitet
haben. Das war in Eg.... .

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.