www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Sdram mit niedrigem Takt an Cpld


Autor: Matthias N. (strassenkind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich möchte ein Sdram (hynix hy57v28820hct, 128mbit, 8bit Datenbus, 
pc133) als Ersatz für parallele Maskroms mit 120ns Zugriffszeit an einer 
betagten Videospielkonsole benutzen.
Hatte geplant, das Interface mit nem Cpld zu realisieren, wahrscheinlich 
xc95144.
Systemtakt ist 21,28Mhz, also deutlich langsamer als für das Sdram 
üblich. Laut Datenblatt liegt die maximal erlaubte Dauer eines Clock 
Cycles für das Sdram bei 1000ns, entspricht wenn ich mich nicht irre nem 
Takt von 1Mhz, sollte also theoretisch kein Problem sein.
Ich habe vorher noch nie mit Sdram gearbeitet, aber Erfahrung mit Cplds 
und Vhdl.

Soweit die Vorgeschichte, jetzt zum Problem:
Habe nach genauem Studium diverser Sdram-Datenblätter das Timing 
durchgerechnet und fürchte, dass ich die 120ns Zugriffszeit vorne und 
hinten nicht einhalten kann.

Soweit ich das sehe, dauert ein Clock Cylce bei 21,28Mhz ca 47ns.
Grob überschlagen würde z.B. ein Lesezugriff wohl folgende Schritte 
beinhalten:

1.Cpu der Konsole gibt Adresse auf den Bus
2.Cpld startet nen Lesevorgang, aktiviert row, setzt row adress
(Ras to Cas Delay von 20ns entfällt hoffentlich, ein Clock Tick dauert 
über 23ns)
3.Cpld sendet read command, setzt column adress
4.Cpld wartet 2 oder 3 cycles abhängig von cas latency
5.Cpld liest Daten mit Auto Precharge
6.Daten erscheinen auf dem Datenbus der Konsole

Macht soweit ich das sehe mindestens 7 Cycles bzw. 329ns Zugriffszeit 
und ist damit viel zu langsam.

Meine Frage an Sdram-Erfahrene ist nun, ob ich irgendwo einen Denkfehler 
gemacht habe, ob eine niedrige Taktung von Sdrams erfahrungsgemäss zu 
Problemen führen kann und wie ich die vorgegebe Zugriffszeit aus eurer 
Sicht am Besten erreichen kann.

Logisch wäre natürlich, das Ganze einfach höher zu takten. Das würde 
aber bedeuten, 2 unterschiedliche Clockdomains zu benutzen, was ich wenn 
möglich vermeiden möchte.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias N. wrote:
> Hallo!
> Ich möchte ein Sdram (hynix hy57v28820hct, 128mbit, 8bit Datenbus,
> pc133) als Ersatz für parallele Maskroms mit 120ns Zugriffszeit an einer
> betagten Videospielkonsole benutzen.

Wie bekommst du die Daten in das SDRAM ?

> Meine Frage an Sdram-Erfahrene ist nun, ob ich irgendwo einen Denkfehler
> gemacht habe, ob eine niedrige Taktung von Sdrams erfahrungsgemäss zu
> Problemen führen kann

Wenn du die mindest Werte im Datenblatt einhälst, dann sollte  es keine 
Probleme geben.

> und wie ich die vorgegebe Zugriffszeit aus eurer
> Sicht am Besten erreichen kann.

Dürfte schwer werden. Du hast die Schwierigkeit von (S)DRAMs schon 
erkannt: Diese sind nur bei Sequentiellen Zugriffen wirklich schnell, 
bzw. haben eine hohe Latenzzeit ehe die Daten anstehen.
Außer einem ehöhten Takt (z.B. per PLL, dann sollten die beiden 
Clockdomains nicht ganz soviele Probleme machen) fällt mir jetzt keine 
Lösung ein. Ich würde daher auf 4x Frequenz, also 85MHz gehen, dann 
brauchst du etwa 8-9 Takte für ein Byte, macht 105ns.

Ein weiteres Problem ist eventuell noch: Wie erkennst du einen neuen 
Lesezugriff ? Wird OE\ bei jedem zu lesenden Byte erneut aktiviert, oder 
kann es auch sein, dass nur die Adresse geändert wird ?

Autor: Matthias N. (strassenkind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort!

> Wie bekommst du die Daten in das SDRAM ?

Erstmal auf ähnlichem Weg wie sie rauskommen, über einzelne 
Schreibbefehle der Konsolen-Cpu. Emulieren möchte ich ein Maskrom, aber 
im Endeffekt soll es dann von der Cpu wie ein Sram angesprochen werden 
können, irgendwie müssen die Daten ja, wie du schon sagtest, ins Sdram 
rein.


> Dürfte schwer werden. Du hast die Schwierigkeit von (S)DRAMs schon
> erkannt: Diese sind nur bei Sequentiellen Zugriffen wirklich schnell,
> bzw. haben eine hohe Latenzzeit ehe die Daten anstehen.
> Außer einem ehöhten Takt (z.B. per PLL, dann sollten die beiden
> Clockdomains nicht ganz soviele Probleme machen) fällt mir jetzt keine
> Lösung ein. Ich würde daher auf 4x Frequenz, also 85MHz gehen, dann
> brauchst du etwa 8-9 Takte für ein Byte, macht 105ns.

Das hört sich sehr gut an.
Die Konsole läuft mit 5V, deswegen hatte ich auch ursprünglich an den 
xc95144 von Xilinx gedacht, weil der bei 3,3V Versorgungsspannung noch 
5V Inputs akzeptiert. Nen PLL hat der natürlich nicht an Bord.

Ich möchte das Design was die Bauteile angeht so kompakt und simpel wie 
möglich gestalten und auch noch in der Lage sein, es selbst zu löten, 
deshalb bin ich Fpgas gegenüber eher skeptisch. Insbesondere die 
verschiedenen Versorgungsspannungen, externe Konfigurationsspeicher und 
die notwendige Bus-Translation auf 5V schrecken mich ab.

Ich habe mich ein bisschen umgesehen und hab nach längerem Suchem die 
ispXpld 5000 Cpld-Serie von Lattice entdeckt, da speziell das lc5512mv.
5V-tolerante Eingänge bei 3,3V Corespannung, PLL und dazu noch ne Menge 
Macrocells etc.
Nachteil wären der recht hohe Preis von ca $30 bei Mouser und die 
kleinen Pins, aber das ist noch im Rahmen denke ich.

Möglich wäre wohl auch ein externes PLL-Ic an nem normalen Xilinx-Cpld, 
aber ich tendiere momentan eher zum Lattice. Werde mich jetzt erstmal 
weiter in die Materie einlesen.

> Ein weiteres Problem ist eventuell noch: Wie erkennst du einen neuen
> Lesezugriff ? Wird OE\ bei jedem zu lesenden Byte erneut aktiviert, oder
> kann es auch sein, dass nur die Adresse geändert wird ?

OE wird bei jedem Zugriff erneut aktiviert, ja, das sollte kein Problem 
sein.
Vielen Dank nochmal für deine Hilfe!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Matthias N. (strassenkind)

>Ich möchte ein Sdram (hynix hy57v28820hct, 128mbit, 8bit Datenbus,
>pc133) als Ersatz für parallele Maskroms mit 120ns Zugriffszeit an einer
>betagten Videospielkonsole benutzen.

Um es kurz zum machen. Vergiss es.
Es gibt einen wesentlichen Unterschied zwischen SRAM und S_D_RAM.
Siehe Speicher.
Nimm einfach SRAM oder EEPROM/FLASH.

MfG
Falk

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
wieso spendierst du dem CPLD/SDRAM nicht eine eigenen takt?

Ein ROM besizt ja keine takt-leitung an sich. Addresse anlegen Read-pin 
geht low und nach 120ns müssen die daten bits stabil am ausgang 
anliegen.

Was hindert dich den CPLD mit 66MHz zu betreiben? Oder 100? Du must ja 
'nur' ein latch implementieren das die daten vom SDram aufnimmt und 
solange hält wie der read-pin low ist.

Nur so ne idee...

mfg.
Olaf

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso braucht eine betagte Videokonsole 128MBit Speicher? Gibts kein 
passender SRAM?

Wenn es darum geht Catridges zu kopieren, dann fürde ich die Flash 
empfehlen ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.