Forum: FPGA, VHDL & Co. Ansteuerung von SRAM


von Tobias Danz (Gast)


Lesenswert?

Hallo zusammen,

ich besitze eine Spartan-3 Board und möchte den dazugehörigen SRAM
Speicher ansteuern. Bisher habe ich nichts vernünftiges gefunden oder
hinbekommen. Vielleicht kann mir jemand helfen, wo ich etwas darüber
finde oder villeicht hat das jemand schon mal gemacht.

Danke und Gruß

Tobias

von Christian (Gast)


Lesenswert?

Hallo

guck dir mal die Timingdiagramme vom SRAM an. Daraus kannst du lesen,
wann du welches Signal anlegen musst.

Wie weit bist du denn gekommen?

Gruss
Christian

von Tobias Danz (Gast)


Lesenswert?

Meine Timingdiagramme sehen so aus wie sie müssten. Meine Probleme sind
erstens, dass bei der Simulation, wenn der Speicher ausgelesen wird bei
einem bestimmten wert einfach anhält und nicht weitermacht. nd zweitens,
wenn ich die schaltungauf dem fpga habe, sehe ich auf dem pc entweder
gar nichts oder nur blödsinn

von Tobias Danz (Gast)


Lesenswert?

Hallo,

gibt es denn niemanden hier, der schon einmal, auf einem Spartan-3
Starter Kit Board, den auf dem Board sich befindenen SRAM angesprochen
hat?

Ich hoffe mir kann jemand antworten.

Gruß Tobias

von Stefan May (Gast)


Lesenswert?

Versuche es mal mit einer Timingsimulation mit einem vernünftigen
RAM-Modell. z.B. dem hier:

http://tech-www.informatik.uni-hamburg.de/vhdl/models/sram/sram.html

Achte in der Timingsimulation vor allem auf Spikes und Hazards. Wenn Du
es ganz sicher machen willst, dann lege die Steuersignale auf
zusätzliche Flip-Flops in den IOBs.

ciao, Stefan.

von Tobias Danz (Gast)


Lesenswert?

Hallo stefan,

die quellen sehen aber aus wie der sram-baustein selber, ich suche aber
eine schnittstelle. Was sind Spikes nd Hazards.

gruß tobias

von Stefan May (Gast)


Lesenswert?

Hmmm, fangen wir also von vorn an. Deine Frage solltest Du beantworten,
bevor Du Dich an einen RAM-Controller machst. :-)

Spikes und Hazards sind unerwünschte Signalwechsel, die durch
Laufzeitunterschiede der Gatter entstehen. Suche mal im Internet
danach, Du wirst dazu reichlich Infos finden. Ansonsten empfehle ich
Dir, Dich erst mal mit Digitaltechnik zu beschäftigen. Das wird Dir den
Einstieg erleichtern. Du suchst im Moment am falschen Ende nach
Erkenntnis.

Wenn Du es dennoch versuchen willst: Den im VHDL vorliegenden
SRAM-Baustein kannst Du für Deine Testbenches in der Simulation
verwenden. Hast Du Deinen VHDL-Code eigentlich schon mal simuliert?

ciao, Stefan.

von Tobias Danz (Gast)


Lesenswert?

Hallo,

also die Arroganz von einigen Leuten hier ist faszinierend, die
glaubten sie wären die besten.

Immerhin studiere ich noch und höre noch zwei Semster etwas von dem
ganzen Zeug und ein bißchen blöd bin ich selber.

von Stefan May (Gast)


Lesenswert?

Also jetzt mal immer langsam. Ich wollte niemanden beleidigen,
geschweige denn Arrogant sein.

Immerhin habe ich Dir sogar Deine Fragen beantwortet. Was willst Du
mehr? Soll ich Dir noch etwa die fertige Lösung hier reintippen?

Was mir auffällt ist, daß sich viele Anfänger mit ihren Projekten
übernehmen, das Zeug dann frustriert in die Ecke schmeißen und sagen:
"Alles Scheiße, viel zu kompliziert". Fangt doch mal klein an!

Thomas, was ist denn nun. Hast Du das schon simuliert? Oder nicht?
Immerhin habe ich versucht Dir zu helfen. Du wirfst mir nur Arroganz
vor.

Kopfschüttelnd, Stefan.

von Tobias Danz (Gast)


Lesenswert?

Hallo,

Dann sorry, dann war das nicht so gemeint.
Natürlich habe ich schon simuliert. Ich studiere Elektrotechnik und bin
grad im fünften Semester und absolviere grad mein Praxissemster in einer
Firma, wo ich dieses Wissen benötige. Ich denke ich habe mich nicht
übernommen, denn ich habe vorher schon kleinere Aufgaben als
Vorbereitung absolviert. Außerdem hatte ich bisher bloß ein Semester zu
VHDL und Hardwareprogrammierung und habe noch zwei Semster dazu vor mir.


Ich habe jetzt ein Prozess zum Schreiben und einen zum Lesen. Um diese
beiden zu steuern habe ich in ein eigenen Prozess ein enable Signal
definiert, dass die beiden steuert. Wenn beim Schreiben der Wert 255
erreicht ist sendet er ein Signal an den Prozess Enable und der
schaltet mit Hilfe einer Xor-Verknüpfung auf Lesen um. Dasselbe
geschieht, wenn der prozess am Ende ist.

Gruß Tobias

von Stefan May (Gast)


Lesenswert?

Hi Thomas,

Kannst Du den Code mal posten? So ganz verstehe ich Deine Beschreibung
nicht.

Bei mir besteht der SRAM-Controller aus einen Moore-Automaten und zwei
Zählern für die Waitstates. Die Zähler sind für die Anpassung des
Timing nötig. Der Schreibzyklus läuft dann bei mir so ab:

1.) Daten in Ausgangsregister übernehmen
2.) Ausgangsregister aktivieren (Tri-State!)
    Chip Enable und Write Leitung aktivieren
    (dieser Zustand bleibt solange aktiv, wie der Zähler
     noch nicht abgelaufen ist)
3.) Ende


Weiterhin: Du sagst, daß Du das ganze schon simuliert hast. Du solltest
mal das RAM-Modell (siehe Link oben) in Deinen Testbench einbauen. Dann
kannst Du schon mal verifizieren, ob Dein VHDL-Code funktioniert. Nur
weil da die Signale rauskommen, die Du erwartest, muß das nicht
funktionieren. Wenn die Verhaltenssimulation klappt, dann mache eine
Timingsimulation. Wenn Du pech hast, dann funktioniert das hier nicht
mehr.

Hmm, an welcher Hochschule studierst Du? An meiner Hochschule (HAW
Hamburg) hat man im 5ten Semester schonmal was von Spikes, Hazards und
metastabilen Zuständen gehört. Wenn Du ein gutes Buch über VHDL suchst:
http://users.etech.haw-hamburg.de/users/reichardt/buch.html
Das ist von meinem Prof., ist auch zum Nachschlagen geeignet.

ciao, Stefan.

von Tobias Danz (Gast)


Lesenswert?

Das die Schaltung ein Moore-Automat sein muß ,habe ich auch schon
rausbekommen, mein Problem aber ist wie die Startbedingung aussieht,
die Zähler müssen ja durch irgendein Ereignis ausgelöst werden?
Ich studiere an der FH Schmalkalden. Wir haben im sechsten Semster
Vorlesungen zu Synthese und Verifikationen.

PS: Mein größtes Problem ist, daß ich relativ alleine dastehe mit
meinen Problemen und ich deswegen nicht entscheidend vorwärtskomme.

von Stefan May (Gast)


Lesenswert?

Die Zähler kannst Du durch ein Clear-Signal sperren.

WaitState: process(CLK) is
variable COUNT: natural range 0 to WAITSTATES;
begin
   if CLK'event and CLK = '1' then
      if CLEAR = '1' then
         COUNT := 0;
      else
         COUNT := COUNT + 1;
      end if;
   end if;
   if COUNT = WAITSTATES then
      ENDE <= '1';
   else
      ENDE <= '0';
   end if;
end process;


Eingangssignal ist CLK und CLEAR, Ausgangssignal ist ENDE, welches bei
Erreichen des WaitStates-Wertes aktiviert wird.

Am besten malt man den Moore-Automaten auf Papier auf und testet dann
Anhand der Eingangssignale erst mal, ob das überhaupt Gedanklich
funktioniert. Wenn man den Automaten auf Papier richtig aufgemalt hat,
kann man den in VHDL implementieren. Vorteil: Man doktort nicht am Code
umständlich rum, man hat schon eine Dokumentation und man weiß ganz
genau, was gerade passiert. Ich habe schon etliche Leute gesehen, die
ihren eigenen Code nicht verstanden haben.

Daß Du damit allein stehst ist eigentlich traurig. Das ist mal wieder
ein Zeichen, daß Praktika nicht richtig ernst genommen werden in
Unternehmen. Hast Du keinen Betreuer?

Hab mir mal das Programm Eurer FH angeschaut. Da gibt es ja nichtmal
Praktika zu den Vorlesungen Digitale Schaltungstechnik. Wie soll man
denn da bitteschön das ganze praktisch anwenden lernen? Bei uns werden
Praktika leider auch immer weiter reduziert. Das hängt auch viel mit
den Bachelor-Abschlüssen zusammen.

ciao, Stefan.

von Tobias Danz (Gast)


Lesenswert?

Doch wir haben Praktikum zu Schaltungstechnik, das findet aber ein
Semester später statt als die Vorlesungen. Mein Betreuer in dem Betrieb
ist selber kein VHDL Programmierer.
Ich an ein Sacher tätig, die die Firma bisher nicht gemacht hat, es
aber möchte und deswegen bin daran tätig.

Ich werds ein Mal einbauen und testen, danke schon mal im vorraus

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.