Hallo, ich suche einen oder mehrere RAM Bausteine die möglichst wenige IOs vom FPGA brauchen und trotzdem eine hohe Datenrate im Burst haben. Bedingungen: - Ich habe nur eine Bank an einem Artix7 für das RAM frei. - Es sollte auf 6 Lagen routbar sein und keine Blind oder burried Vias und auch keine tented oder plugges Vias benötigen, auch keine Microvias. Anforderung an die Datenrate im Burst ist eben möglichst hoch. Wenn ich HyperRAM verwende bekomme ich 400 MByte/s bei 12 IOs. Wenn ich da mehrere Steine parallel verbaue dann kann ich ein paar IOs einsparen die nicht timingkritisch sind wie Reset und CS#. Jedenfalls: HyperRAM > 266 MBit/s je IO, 1,6 GByte/s wenn ich 4 davon an eine Bank anschließe. Wie sieht das bei DDR RAM aus oder diesen QDDR SRAM Steinen? An eine Bank würde z. B. der MT41K512M8XX-107, DDR3, 8 Bit Daten, passen. Da finde ich aber leider nix zu der Datenrate. Der Stein belegt dann die ganze Bank, also schon viele IOs, was kommt da ja IO bei rüber an Daten/Zeit?
Gustl B. schrieb: > HyperRAM > 266 MBit/s je IO, 1,6 GByte/s wenn ich 4 davon an eine Bank > anschließe. Da können die aktuellen schon um einiges mehr: ...and with a data rate of up to 18 Gbit/s per pin https://en.wikipedia.org/wiki/GDDR6_SDRAM DDR5 supports a speed of 51.2 GB/s per module https://en.wikipedia.org/wiki/DDR5_SDRAM Was du noch einfach an deinen FPGA drangebunden bekommst dürfte die viel größere Frage sein und nicht nach "RAM mit der höchsten Datenrate je IO" (den du nur mit einigen wenigen Spezial-Chips überhaupt so schnell angesteuert bekommst).
Das sind aber schwammige Anforderungen: > möglichst wenige IOs Ich wette es gibt welche, die nur einen Pin brauchen. > und trotzdem eine hohe Datenrate im Burst haben. Möglichst schnell ist jeder Chip aus seiner Sicht. > Wenn ich HyperRAM verwende bekomme ich 400 MByte/s bei 12 IOs. Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht gefragt. Woran scheitert dieses HyperRAM denn, zu viele Pins oder zu langsam? Wo sind deine Grenzen des Akzeptablen?
Gustl B. schrieb: > z. B. der MT41K512M8XX-107, DDR3, 8 Bit Daten, > passen. Da finde ich aber leider nix zu der Datenrate. Der Stein belegt > dann die ganze Bank, also schon viele IOs, was kommt da ja IO bei rüber > an Daten/Zeit? steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro Baustein mit 8 IOs. Aber wenn dir die Pins am FPGA ausgehen: hast du dann noch die rund 20 Pins übrig, die du für Commands und Adressen des Bausteins brauchst? Und schaffst du auf den verfügbaren Pins das Timing für das DDR3-Interface? Bei anderen FPGAs von Xilinx gibt es den MIG (Memory Interface Generator) als Assistenten. Wenn der für deinen Artix 7 auch verfügbar ist, kannst du ja mal schauen, ob er dein DRAM-Interface unterbringen könnte.
Irgend W. schrieb: > Was du noch einfach an deinen FPGA drangebunden bekommst dürfte die viel > größere Frage sein und nicht nach "RAM mit der höchsten Datenrate je IO" Und genau das war in meiner Frage enthalten. Mit IO meine ich auch nicht Datenpin, sondern insgesamt IO. Wenn also ein DRAM z. B. 40 IOs hat und 8 davon Datenpins sind, dann teile die Transferrate trotzdem durch 40. Stefan ⛄ F. schrieb: > Ich wette es gibt welche, die nur einen Pin brauchen. Das ist auch OK. Die Datenrate muss passen. Beim HyperRAM komme ich auf ca. 266 MBit/s je IO. Wenn also der Speicher mit nur einem IO mehr als 266 MBit/s schafft, dann hänge ich statt dem HyperRAM mit 12 IOs 12 mal diesen Speicher mit nur einem IO hin und bin in Summe schneller. Stefan ⛄ F. schrieb: > Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht > gefragt. Genau. Ich möchte möglichst schnell. Stefan ⛄ F. schrieb: > Woran scheitert dieses HyperRAM denn, zu viele Pins oder zu langsam? Wo > sind deine Grenzen des Akzeptablen? Die Grenzen hatte ich geschrieben, Artix7 und eine Bank ist frei. Der RAM soll unter Anderem als Samplespeicher für einen LA oder ein DSO dienen. Da ich beim LA 2 GByte/s reinbekommen kann maximal wäre auch eine Burst Datenrate >= 2GByte/s fein. Weniger ist schon auch OK, aber ich will schnon das Schnellste verwenden das ich da anschließen kann. Achim S. schrieb: > steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s > MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro > Baustein mit 8 IOs. Nein, der hat deutlich mehr als 8 IOs. Wenn der nur 8 IOs hätte könnte ich davon 5 Stück an eine Bank anschließen. Hier kann ich nur einen anschließen und die Bank ist belegt. Beim HyperRAM kann ich 4 an eine Bank anschließen. Das sind 48 IOs in Summe und 1,6 GByte/s. Achim S. schrieb: > Aber wenn dir die Pins am FPGA ausgehen: hast du dann noch die rund 20 > Pins übrig, die du für Commands und Adressen des Bausteins brauchst? Und > schaffst du auf den verfügbaren Pins das Timing für das DDR3-Interface? Mir gehen die Pins nicht aus, ich habe eine ganze Bank. Tja wie das mit dem Timing aussieht weiß ich nicht. Achim S. schrieb: > Also 1866 Mbit/s pro IO. Wenn das stimmt, dann geht das beim Artix nicht. Aber der Baustein ist im MIG auswählbar. Seltsam. Sind das wirklich 1866 MBit/s je Datenpin oder ist das nur die Hälfte? Der Artix7 kann knapp über 1 GBit/s je Pin. Achim S. schrieb: > Wenn der für deinen Artix 7 auch verfügbar > ist, kannst du ja mal schauen, ob er dein DRAM-Interface unterbringen > könnte. Ja, das kann er. Den Stein oben kann er unterbringen. Ist nur die Frage welche Datenrate der dann tatsächlich macht.
Gustl B. schrieb: >> Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht >> gefragt. > Genau. Ich möchte möglichst schnell. Möglichst schnell ist keine valide Anforderung - das ist ein Gummiband-Begriff den sich jeder nach belieben auslegen kann.
Stefan ⛄ F. schrieb: > Möglichst schnell ist keine valide Anforderung Und wieso? Kannst du das auch begründen? Stefan ⛄ F. schrieb: > das ist ein > Gummiband-Begriff den sich jeder nach belieben auslegen kann. Nein. So schnell wie möglich sagt ganz klar das was eben mit den genannten Einschränkungen maximal möglich ist. Mir wären 2 GByte/s recht. Aber das bekomme ich da wohl nicht hin. Und jetzt suche ich eine Lösung die da möglichst nahe rankommt. Wenn ich nur sage 2 GByte/s als Anforderung, dann kommt als Aussage dass das nicht geht. Toll. Ist eben keine harte Anforderung.
Um mal etwas um die Ecke denken zu lassen, wäre eine PCIe SSD als Speicher auch andenkbar? Das läuft dann eher über die GTP als über die GPIO, der zweitkleinste Artix bringt 4 davon mit. macht bis zu 5Gbps. https://www.xilinx.com/products/silicon-devices/fpga/artix-7.html#productTable OK, ich weiss, ist blockorientiert und nicht wirklich randon access ... aber schön schlank was die anzahl der Pins betrifft. https://forums.xilinx.com/t5/PCIe-and-CPM/Using-not-recommended-GTP-locations-for-PCIe-gen-2-x4-on-Artix-7/td-p/826481
Aus zwei Gründen nein: Das ist eine normale FPGA Bank, also keine GTPs oder so. Und dann müsste ich über das PCIe noch NVME sprechen. Klar, kann ich für das Hobbyprojekt auch noch schnell implementieren, aber dann werde ich erst in vielen Jahren fertig. Einen IP der bezahlbar ist habe ich noch nicht gesehen.
:
Bearbeitet durch User
Gustl B. schrieb: > Und wieso? Kannst du das auch begründen? Habe ich doch begründet. Lies die Sätze mal zuende, bevor du sie erwiderst.
Nö sehe ich anders. Es gibt für die genannten Bedingungen tatsächlich einen schnellsten Speicher und selbst wenn nicht dann ist möglichst schnell ein valides Ziel. Wenn man etwas baut, dann gibt es da manchmal Eigenschaften die positiv wären und auch je mehr davon um so positiver. Da setzt man sich doch nicht vorher ein Limit. Wenn ich ein Seil entwickeln würde, dann wäre ja höhere Tragkraft umso besser. Da macht es keinen Sinn ein Limit zu setzen wenn vielleicht doch noch mehr geht. Und hier möchte ich möglichst schnell Daten in Speicher zu bekommen. Ob das ein RAM Baustein ist oder mehrere ist egal. Muss aber alles an eine Bank passen. Daher auch die Metrik als Datenrate je Pin.
Gustl B. schrieb: > Sind das wirklich 1866 MBit/s je Datenpin oder ist das nur die Hälfte? > Der Artix7 kann knapp über 1 GBit/s je Pin. Gustl B. schrieb: > Mit IO meine ich auch nicht Datenpin, sondern insgesamt IO na das war nicht unbedingt selbsterklärend. Da nur die Datenpins wirklich als IOs laufen, die anderen Pins aber nur in einer Richtung. kannst ja ein paar Adressleitungen fest auf 0 Klemmen. reduziert zwar den verfügbaren Speicher, aber dafür spart es Anschlüsse am FPGA ;-) wirksamer ist aber den Baustein in x16 statt in x8 zu nehmen. nur 8IOs mehr, aber ein Faktor 2 in der Datenrate. Gustl B. schrieb: > Sind das wirklich 1866 MBit/s je Datenpin oder ist das nur die Hälfte? das DRAM läuft mit einem Takt von knapp 1GHz, und jeder Datenpin überträgt 2bit pro Takt (DDR steht hier für Double Data Rate)
Achim S. schrieb: > wirksamer ist aber den Baustein in x16 statt in x8 zu nehmen. nur 8IOs > mehr, aber ein Faktor 2 in der Datenrate. Ja, aber dann passt lässt sich der mit dem MIG nicht mehr in eine Bank stecken. Laut https://www.xilinx.com/support/answers/63775.html müssten 1333 Mb/s je Datenpin drinnen sein. Aber der MIG lässt mich nur 1066 Mb/s einstellen, trotz richtigem Speedgrade. Jedenfalls ... 1333 MByte/s ist weniger als 4 HyperRAMs die zusammen ja 1,6 GByte/s schaffen und ebenfalls in eine Bank passen. Gibt es andere schnelle Speicher die ich mir angucken könnte? Kann man beim DDR3 einige Steuersignale dauerhaft auf 1 oder 0 lassen und so IOs am FPGA sparen? Oder anders: Kann man es schaffen einen DDR3 mit 16 Bit Datenbreite an nur eine Bank anzuschließen und weiterhin den ganzen Speicher zu nutzen?
https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ug586_7Series_MIS.pdf ab Seite 213 auch ein Pinout Beispiel für 1Gb 16bit DDR3 an einer Bank vll. eine passende Anregung?
Wohooo! Danke! Das funktioniert tatsächlich wenn man auch noch https://www.xilinx.com/support/answers/45588.html beachtet. Was ich seltsam finde ist, dass an den Clock Pins der Bank keine Clocks angeschlossen werden müssen. Die kann man für normale Signale verwenden und die Clocks vom DDR3 RAM kann man mit normalen IOs verbinden. Warum auch immer. Noch eine Frage: Wenn ich die Clocks "Reference Clock" und "System Clock" intern im FPGA anliefere, können die auch von einer anderen Bank kommen und aus einer PLL/MMCM? Ich vermute dass das erlaubt ist.
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.