Forum: FPGA, VHDL & Co. Schema SRAM Ansteuerung


von Walter (Gast)


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

von Duke Scarring (Gast)


Lesenswert?

Walter schrieb:
> Wie realisiert man am besten den Controlpfad und den Adresspfad oder
> denke ich da schon zu kompliziert?
Mit einer State-Machine.

> Spielt simulation schon eine Rolle?
Auf jeden Fall. Das macht die ganze Sache sehr anschaulich.

Duke

von Walter (Gast)


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?

von Duke Scarring (Gast)


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

von Ramon F. (tronixx)


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

von Thomas T. (knibbel)


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...

von bko (Gast)


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

von Ramon F. (tronixx)


Lesenswert?

hi,

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

oh ja Fehler von mir. dem ist nicht so :)


aber wie sieht es denn mit we aus. kann ich das durchgehend auf '0' 
lassen und nur die adresse ändern?

MfG

von Ramon F. (tronixx)


Lesenswert?

sry nicht rechtzeitig aktualisiert ....

thx

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.