Hallo, ich versuche zur Zeit einen SRAM anzusteuern, was leider noch nicht richtig klappt. Wenn ich WriteEnable setze (ReadEnable nicht gesetzt) und dann eine Addresse und auf den Addressport lege und ein Datenwort von 16 Bit auf den Datenport lege wird nichts gespeichert, denk ich jedenfalls, da, wenn man es genau umgekehrt mit Lesen versucht nichts kommt. Hat vielleicht jemand von euch einen Tip was schieflaufen könnte, bzw. weiß jemand ein gutes Tutorial bezüglich des SRAM´s? Viele Grüße David
Ist dort nicht ein asynchrones SRAM auf dem Board? D.h. du legst Adresse und Daten an und gibst dann eine Flanke auf WriteEnable (nWE). Daneben hat es noch 2 Byteenable (nUB, nLB) Pins sowie ein Outputenable (nOE) und das ChipEnable (nCE) die du entsprechend steuern musst. OutputEnable (eig. ReadEnable) musst du aktivieren zum lesen, auf WriteEnable gibst du eine Flanke zum schreiben, wenn die Daten anliegen.
So hab ich es ja auch versucht, jedoch tut sich nichts. Kann es eventuell sein, dass man den SRAM-Baustein vom DE2-Board erst initialisieren muss, bevor man ihn ansteuern kann? Viele Grüße David
Nein, du musst nichts initialisieren. Wenn du alle Pins korrekt ansteuerst (negative Logik) sollte es funktionieren. Hab dir im Anhang noch ein VGA-Controller fürs DE2 welcher das SRAM als Framebuffer braucht.
Seh ich das dann richtig, dass ein paralleles Schreiben und Lesen nicht möglich ist? Viele Grüße David
Wenn WE=low schreiben sonst lesen. Gleichzeitig lesen und schreiben geht nicht.
Wie möchtest du das machen über einen Bus? Da hast du eine schöne Buscontention.
Hm, also ich möchte auf den SRAM-Chip RGB Informationen speichern, für ein Display mit der Auflösung 320 x 3 x 240. Den Addressbus habe ich in einen Zeilenaddressierer (10 Bit) und einen Spaltenaddressierer (8 Bit) gesplittet. Beide beginnen bei 0. Die Bits sind folgendermaßen gesetzt: LB = 0, UB = 0, WE = 0, OE = 1, CE = 0. Dann lege ich die Addresse und die Daten an. Z.B.: addresse <= Zeilenaddresse & Spaltenaddresse; sramdata <= RGBData; Nun lasse ich jeden Takt die Addresse einen höher zählen, bis ich das ganze Bild in RGB-Daten abgelegt habe (bzw. gern hätte). Aber leider geht irgendwas schief. Es wird nur was in die Erste Addresse geschrieben (die erste RGB-Information). Danach passiert garnichts mehr, obwohl ich die gesamten Addressen einmal durchlaufen lasse. Nun die Frage: Taktweises schreiben sollte doch möglich sein, oder muss ich zwischendurch manche Bits nochmal zurücksezten, obwohl schon alles auf Schreiben eingestellt ist? Viele Grüße David
Das SRAM schreibt die Daten auf der fallenden(?) Flanke des WriteEnable. Du musst dort die Signale geben. Je nach dem brauchst du halt einen Takt Setup und dann einen Hold.
Schau doch einfach mal ins Datenblatt des SRAMs. Dort ist ausführlich beschrieben wie er angesteuert werden möchte. Es gibt 4 Varianten Daten reinzuschreiben und du verwendest keine davon. Wenn du Hilfe möchtest, dann wäre es schon sinnvoll mal den entsprechenden Code-Schnipsel hier einzustellen (oder zumindest mal das Ergebnis der Simulation).
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.