www.mikrocontroller.net

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

Autor: Matthias N. (strassenkind)
Datum: 17.04.2008 00:28

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)
Datum: 17.04.2008 08:17

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: 17.04.2008 13:51

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: 17.04.2008 19:11

@ 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: 23.04.2008 15:35

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: 01.05.2008 20:25

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net