mikrocontroller.net

Forum: FPGA, VHDL & Co. DDR SDRAM liest dieselben Daten zweimal im READ burst mit BL=2


Autor: Klaus Rindtorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen DDR SDRAM controller basierend auf dem VHDL code von 
Steve Rhoads geschrieben. Dieser wird für das MT46V32M16 auf dem S3E 
starter board verwendet.
Der controller funktioniert prima - aber nur in der behavioral 
simulation. Ich teste ihn indem ich Daten mit 4 mal 2 words in einem 
burst an aufeinanderfolgende Adressen schreibe, diese dann mit 4 2-word 
bursts zurücklese.
In der hardware funktioniert es dann leider nicht. Ich sehe das dasselbe 
word 2 mal hintereinander gelesen wird. Interessanterweise das zweite im 
WRITE burst geschriebene. Also geschrieben AB CD EF GH, gelesen BB DD FF 
HH.
Die clocks sind DCM generiert. Das SD_CK_FB feedback SIgnal auf dem SE3 
SK wird benutzt. Für das Schreiben verwende ich FDDRRSE (ODDR2) FFs.
Mit meinem Ant8 logic analyzer sehe ich dass die nötigen Signale 
generiert werden. Jedoch reicht die zeitliche Auflösung nicht aus um 
einen timing Fehler zu erkennen.

Irgendeine Idee wo der systematische Fehler liegen könnte?

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat denn Steve Rhoads für sein DDR-Controller-Design
Timing/Placing-Constraints für die Synthese definiert ?
Ohne eine richtig umgesetze Logik für die Einsychronisierung
der Lesedaten und eine richtige Ausgabe der Schreibdaten (Man beachte
Phasenlage von DQS zu DQ) ist die ganze Klamotte witzlos.
Eine Timing-Simulation könnte dir Aufschluss darüber geben, ob die
DDR-Signale an deinen FPGA-Pins richtig aussehen.
Empfehlenswerte Alternative: DDR-Controller IP-Core

Gruß,
SuperWilly

Autor: Klaus Rindtorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp SuperWilly. Wie sich herausgestellt hat war die 
Phasenlage von DQS zu DQ schon ok. Auch die MAXDELAY constraints waren 
nicht so kritisch wie ich dachte.
Aber ich habe wohl das timing der tri-state buffer beim Schreiben falsch 
gewählt, so dass das HIGH von DQS nicht komplett sichtbar war. Nachdem 
ich das korrigiert habe funktioniert es nun bei 100 MHz. Jetzt mache ich 
ersteinmal ein paar READ/WRITE tests um zu sehen wie stabil es läuft.

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.