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
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
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
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
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.
Hallo stefan, die quellen sehen aber aus wie der sram-baustein selber, ich suche aber eine schnittstelle. Was sind Spikes nd Hazards. gruß tobias
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.
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.
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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.