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
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
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
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
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
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
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.
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
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
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
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.
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
#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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.