Hallo! Ich versuche seit einigen Tagen vergeblich einen DDR2-RAM auf einem SP601-Board zu beschreiben bzw. auszulesen. Ich bin mir auch nicht sicher wo genau mein Fehler liegt. Ich habe mir zunächst mit Hilfe des MIG einen IP-Core für den Speicher erstellt. Dabei habe ich die folgenden Einstellungen getroffen: kein extended MCB DDR2 SDRAM an Bank 3 Frequenz 200 Mhz DDR2 Baustein: EDE1116ACBG-1J Fullstrength RTT = 50 Ohm DQS disable High Temperature Self Refresh Rate disable 128 Bit-bidirectional Port Bank-Row-Column Round Robin Class for Adress, Control, Data = 2 Un-Calibrated Input-Termination mit 50 Ohm RZQ an C2 differentieller System Clock Das dabei zur Verfügung gestellte Referenzdesign konnte ich auch simulieren. Im Anhang findet Ihr meinen Versuch Daten in den DDR2-RAM zu schreiben bzw. diese auszulesen. Das vom MIC bereitgestellte CALIB_DONE-Signal ist jedoch immer low, sodass es auch keine Kommunikation mit dem RAM funktionieren kann. Es scheint also schon etwas bei der Initialisierung schief zu gehen. Ich bin für jede Hilfe dankbar! (ich habe auch noch nicht so viel Erfahrung mit FPGAs)
also ich hab die standard (empfohlen) einstellungen für das sp601 verwendet und es auch nicht hinbekommen. bei mir hat er in chipscope angezeigt das es keine korrekt laufende clock gibt. als ich mir meinen eigenen kleinen testzyklus geschrieben hab und das mig interface selbst definiert hab, hats funktioniert. ich würde dir auch raten ne kleine routine für die 3 syn. fifos zu schreiben und einfach irgendwelche testdaten rein schreiben und dann auslesen. das ganze dann in chipscope darstellen und dann kannst feststellen ob es klappt oder nicht.
Soweit ich sehen konnte in deinem Projekt, hast du die externen Pins des DDR2´s nicht in der UCF beschrieben, d.h. du hättest keine hardwaretechnische Verbindung zum DDR2. Mit dem MIG hast du ja die Core erstellt, die du dann in deinem Projekt verwenden kannst, allerdings müsstest du evtl. nochmal prüfen, ob die UCF File, die vom MIG erzeugt wurde, auch mit den Pins laut USER GUIDE deines Entwicklungsboards übereinstimmen. Diese dann noch mit ins eigene Projekt einführen. So habe ich es immer gemacht. Gruß Cihan
ja ganz wichtig !! das ist mies beschrieben in der doku, du musst die ucf, die der mig-core erstellt (../user-design/..par) als haupt-ucf benutzen und deine eignen sachen wie clock,reset etc dann da eintragen. und die I/Os vom untermodul u_mig (...) müssen im hauptmodul und logischerweise auch im ucf richtig definiert/zugewiesen werden!! ich dachte immer das macht der coregenerator von alleine aber das macht er nicht.
Danke für die Hinweise zu den UCF-Dateien! Da könnte wirklich noch der Fehler liegen. Ich war auch irgendwie davon ausgegangen das der MIG das für mich erledigt (zumal ich ja ein Evaluation Board verwende) ... Ich kann das Ganze leider erst am Montag anpassen und ausprobiern. Werd mich dann aber auf jeden Fall nochmal melden und sagen ob es daran lag ;)
Tausend Dank Leute! Es lag wirklich nur an der UCF-Datei. Zumindest bekomme ich jetzt das Calibration_Done Signal und die geschriebenen Daten scheinen mit den Gelesenen übereinzustimmen ;) Werde jetzt erstmal versuchen das alles im Chipscope zu überprüfen.
Hi, ich versuche mich momentan auch an dem DDR2 Speicher vom SP601 Board und komme nicht so recht voran. Ich kriege immer Fehler beim "Translate" Schritt, da die .ucf Datei fehlerhaft ist. Kannst du nochmal eine funktionierende Version deines Beispielprogramms hochladen, oder genau erklären wie ich die .ucf konfigurieren muss?
Christian K. schrieb: > Ich kriege immer Fehler beim "Translate" > Schritt, da die .ucf Datei fehlerhaft ist. Häng doch mal Deine .ucf als Anhang hier an und zeig uns die Fehlermeldung. Duke
Ich hab den MIG nochmal mit den oben empfohlenen durchlaufen lassen und bekommen jetzt lediglich die Nachricht, dass das Programm zu groß ist um auf das Board zu passen. Bei dem oben verlinkten "FIFO.7z" sind die Hardware-Pins nicht zugewiesen in der .ucf Datei, aber wie füge ich die richtigen hinzu? Ich hab es damit versucht die (../user-design/..par) .ucf datei in die vorhandene mit reinzukopieren, aber ich bekomme Errors für so ziemlich jede Zeile die nicht kommentiert ist. Ich nutze ISE Design Suite 14.3 und den CoreGen 64-Bit / MIG 3.61 und habe auch erfolglos den MIG "Virtex-6 and Spartan-6" ausprobiert. Ich hab schon etwas Erfahrung mit VHDL, musste jedoch bisher nur den Clockgen benutzen und hab die restlichen Pins (LED, Switches, UART Schnittstelle) selbst zugewiesen, nur ist es beim DDR2 Speicher kaum noch zu überschauen.
Kopier mal deine ucf-Datei in das Verzeichnis wo auch dein Projektfile liegt und binde die dann nochmal ein.
in der ISim-Simulation läuft das Programm schon korrekt aber eine Implementierung auf das Board klappt nach wie vor nicht. Kann jemand der ein SP601 Board nutzt eventuell ein funktionierendes Beispielprojektfile hochladen? Ich hätte nicht gedacht das Daten speichern und wieder laden so kompliziert sein würde...
Ich habe entsprechende den obigen Anweisungen ein Speicherinterface für das SP601 erzeugt. Noch fehlt mir der Durchblick. Die ersten Unklarheiten, die etwas Erklärung bedürfen. Ich habe mir das mig_39.vho angeschaut, da gibt es ein Signal, das sich mir nicht so richtig erschließt.
1 | c3_clk0 :out std_logic; |
Was soll ich damit machen? interessant ist auch
1 | c3_sys_rst_i : in std_logic; |
mit der PIN-Zuweisung an LOC="M8" M8 geht im Schaltplan an den großen FMC Steckverbinder. Damit dürfte das signal c3_sys_rst_i undefiniert sein. Ein undefinierter Reset?
René D. schrieb: > da gibt es ein Signal, das sich mir nicht so richtig erschließt. >> c3_clk0 :out std_logic; > Was soll ich damit machen? Offen lassen. Damit könntest Du eigene Logik takten. Muß man aber nicht. > > interessant ist auch >>c3_sys_rst_i : in std_logic; Mysteriös. Ich würde es auf einen Taster legen und ggf. entprellen. Duke
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.