Forum: FPGA, VHDL & Co. SRAM auf DE2 Board


von David R. (studentt)


Lesenswert?

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

von SeriousSam (Gast)


Lesenswert?

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.

von David R. (studentt)


Lesenswert?

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

von SeriousSam (Gast)


Angehängte Dateien:

Lesenswert?

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.

von David R. (studentt)


Lesenswert?

Seh ich das dann richtig, dass ein paralleles Schreiben und Lesen nicht 
möglich ist?

Viele Grüße
David

von Dirk (Gast)


Lesenswert?

Wenn WE=low schreiben sonst lesen.
Gleichzeitig lesen und schreiben geht nicht.

von SeriousSam (Gast)


Lesenswert?

Wie möchtest du das machen über einen Bus? Da hast du eine schöne 
Buscontention.

von David R. (studentt)


Lesenswert?

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

von SeriousSam (Gast)


Lesenswert?

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.

von Mike (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.