Schema SRAM Ansteuerung

Gast #2334913
Lesenswert?

Hallo Zusammen.
Ich arbeite mich gerade in VHDL ein.
Leds jetzt zum leuchten bringen und derartige Spielerreien bekomme ich 
jetzt gut hin. Als nächstes würde ich gerne einen externen SRAM-Bautein 
(IS61LV256Al) ansprechen.

-Startwert soll an die Startadresse geschrieben
-dann zu nächsten Adresse gegangen werden
-Wert wird um 1 erhöht und reingeschrieben
..
bis der Speicher voll ist.
Der Endwert soll dann evtl später eingelesen und über LED ausgegeben 
werden.

Mir geht es in erster Line gar nicht um den Code an sich sondern um die 
schematische Herangehnsweise.
Wie realisiert man am besten den Controlpfad und den Adresspfad oder 
denke ich da schon zu kompliziert? Spielt simulation schon eine Rolle?

Hoffe auf ein paar nützliche Tipps und Hinweise.


MfG,
Walter
Gast #2335107
Lesenswert?

Mit State-Maschine meinst du in etwa sowas?

---------------------------------------------
Wenn
  _CE =1 dann state = IDLE
Wenn
  _WE = 1
  _CE = 0
  _OE = 0
    dann READ
Wenn
  _WE = 0
  _CE = 0
  _OE = 1
    dann WRITE


switch state
  case IDLE
    Reset gedrückt?
    Start gedrückt?
    Adresse = 0
    Wert = 0
  case READ
    Wert <= Data
    wenn Endadresse dann
      state = IDLE
  case WRITE
    Data <= Wert
    Wert++
    Adresse++
  andernfalls
    Data = Z
---------------------------------------------

Und zum Simulieren noch eine Frage. Gibt es SRAM Hersteller bei denen 
man eine Testbench fertig vorfindent?
Gast #2335917
Lesenswert?

Walter schrieb:
> Mit State-Maschine meinst du in etwa sowas?
Jepp. Das scheint in die richtige Richtung zu gehen.

> Und zum Simulieren noch eine Frage. Gibt es SRAM Hersteller bei denen
> man eine Testbench fertig vorfindent?
Ein komplette Testbench sicher nicht. Aber die Modelle dürften sich 
finden lassen. Such mal nach cy7c1354b.vhd oder cy7c1380d.vhd.

Duke
#3083196
Lesenswert?

Hallo zusammen,
ich habe hinsichtlich des Themas auch noch mal eine kleine Frage.

Spartan 3 Board - gl. SRAM
Also ich möchte 16 Bit parallel (extern) bei jeder steigenden Taktflanke 
in mein SRAM speichern.

CE  =   0
UB  =   0
LB  =   0

WE  =   0
OE  =   1

Adresse bei 0 beginnend und zählt bei jeder Flanke um 1 hoch?
sieht dann etwa so aus:


clk  ___|---|___|---|___|---|___|---|___         9 MHz
DATA ===x=======x=======x=======x======         16 Bit
CE ___________________________________        '0'
LB ___________________________________        '0'
UB ___________________________________        '0'
WE ___________________________________        '0'
OE -------------------------------------        '1'
Adr  0  |   1   |   2   |   3   |   4   ......

leider will das ganze nicht so wie ich will.
Muss ich WE zwischendurch (vor jeder Adressänderung) immer wieder auf 
'1' setzen ? Wenn ja müsste ich also min. mit dem doppelten Takt 
arbeiten als mit dem, um die Daten zu schreiben. Somit komm ich also um 
ein DCM nicht herrum , oder?


MFG
#3083254
Lesenswert?

Zu allererst:

Es sieht in dem ASCII-Bild so aus, als wenn DATA sich während der 
steigenden Flanke von clk ändert.

Was hältst Du davon, zu diesen Zeitpunkt die Daten stabil zu lassen und 
sie z.B. während der fallenden Flanke zu ändern? Dann würde zumindest 
auch was Eindeutiges gespeichert werden... ;-)

Gruß,
Thomas

PS: Sehe gerade, die Adressen ändern sich ja auch genau während der 
steigenden Flanke. Das geht so nicht...
Gast #3083290
Lesenswert?

Laut diesem Datenblatt (Seite 7, Write Timing) -
http://www.issi.com/pdf/61LV256AL.pdf

- muss WE sich bei jedem Schreibzyklus ändern.

Also in beim Schreiben wechselt WE auf 0 danach wieder auf 1,
vorher Adresse und Daten anlegen , die steigende WE flanke übernimmt
die Daten dann.


http://de.yhs4.search.yahoo.com/yhs/search;_ylt=A03uocQ5bj9RcVgATA5fCwx.?p=IS61LV256Al+datasheet&fr2=sb-top&fr=altavista&rd=r1

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren