Forum: FPGA, VHDL & Co. SRAM speichert nicht


von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

folgendes Problem:
Ich versuche vom FPGA (Atmel FPSLIC) aus Daten im SRAM zu speichern und
vom AVR aus rauszulesen. Irgendwie bekomme ich das aber nicht hin.
Sobald ich das write-Signal (im Quelltext in Zeile 41) wieder auf Null
lege, oder weiterlaufe sind keine Daten mehr im Speicher. Muss ich da
noch irgendwas beachten?

von Jörn (Gast)


Lesenswert?

Hast dir die AppNote von Atmel angeschaut und probiert das angegebene
Timing nachzubilden?

http://www.atmel.com/dyn/resources/prod_documents/doc2824.pdf

von Paul (Gast)


Lesenswert?

ja,

ich dachte, das hätte ich, aber irgendwo hat sich wohl ein Fehler
eingeschlichen.

von Jörn (Gast)


Lesenswert?

Hast du auch die Datenverschiebung um einen halben Takt nachgebaut ;)

"Notice that address updates are generated on the rising edge of the
clock, while data and write strobe updates occur on the falling edge,
half clock cycle later. This will result in the most optimal timing
relationship at the SRAM interface."

Im Verilog Code ist als Beschreibung folgender Satz:
"  // Delay SRAM write data and write pulse by 1/2 clock cycle"

In deinem VHDL Code wird aber überall mit rising_edge gearbeitet.

Baue mal den Teil:

process(reset,fpgaclk)    -- schreibt die Daten in den SRAM
begin
if(reset='0') then
  sramdatain <= "00000000";
  sramwe <= '1';
elsif rising_edge(FPGACLK) then <-- Hier falling_edge
  sramdatain <= data_reg;
  sramwe <= write_strb;
end if;
end process;

um.
Gruss Jörn

von Paul (Gast)


Lesenswert?

Hab ich umgeändert, bringt mich aber leider auch nicht weiter.
Da ich im AVR doch den Dualportram richtig auslesen kann, muss doch der
entsprechende Wert auch mal gesetzt worden sein.
Sobald ich aber in Zeile 41 write_strb auf Null setzte, gibt das Board
nur noch Null aus.

von Jörn (Gast)


Lesenswert?

hast du deine vhdl Beschreibung schon simuliert und mit dem
Timingdiagramm in der Appnote verglichen?

von Jörn (Gast)


Angehängte Dateien:

Lesenswert?

Hast du den Verilog Code ausprobiert?

Probier mal die VHDL Beschreibung im Anhang. Hab noch ein paar Sachen
gefunden.

Gruss Jörn

von Tobias Danz (Gast)


Lesenswert?

Hallo,

ich habe grad dasselbe Problem mit einem Spartan-3 Board, d.h.
irgendwie speicher ich falsch.
Meine Frage kann man oben angegebenen Code auch für ein Spartan -3
Board  anwenden, der einzige Unterschied den mein Board hat ist, daß
meine Datenleitung zum SRAM eine Bidirektionale Leitung ist.

Gruß Tobias

von Jörn (Gast)


Lesenswert?

Hallo Tobias,

ehr unwahrscheinlich, da die RAM Ansteuerung in diesem Fall synchron
erfolgt und das RAM auf dem Xilinx Board wahrscheinlich asychron ist.

Was ist für ein RAM Chip drauf?

Gruss Jörn

von Tobias Danz (Gast)


Lesenswert?

Hallo Jörn,

Ich habe ein fast, asynchronous 256Kx16 ISSI SRAM. Ich habe Probleme
damit diesen Speicher anzusteuern. Irgendwie speichert der meine Werte
nicht oder liest völligenBlödsinn aus.

Gruß tobias

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.