Forum: FPGA, VHDL & Co. Parallel Flash Memory ansteuern


von Roland Müller (Gast)


Lesenswert?

Auf eimem FPGA-Board befindet sich ein 32MBit Flash Memory, das für
Applikationen (nicht Konfiguration) genutzt werden soll. Das Flash wird
parallel von dem FPGA (Spartan-3) angesteuert, d.h. ich habe 16
Datenleitungen (D0..15) und 25 Adressleitungen (A0...24) sowie diverse
Steuerleitungen.

Ich möchte nun diese Flash Memory für meine Apllikationen nutzen. Da
ich aber leider null Erfahrungen mit dem Ansteuern von Speichern habe,
baue ich schwer auf Eure Hilfe.

Kann mir einer mit Erklärungen, Links oder auch am besten mit
Codebeispielen (VHDL) helfen ? Ich bin für jede Art von Hilfe dankbar.

Ich vermute mal ich muss eine Art Controller realisieren, der mir ein
geeignetes Timing zur Ansteuerung erzeugt.

Wie greife ich auf bestimmte Bereiche im Flash zu ? Gibt es dort auch
so eine Art Speicher Mapping. Wie macht man diese Zuordnung mit VHDL ?


Danke !!!

Gruß aus der Pfalz

von Xenu (Gast)


Lesenswert?

Das Wichtigste - wie so oft - ist das Du Dir erstmal in Ruhe das
Datenblatt des betreffenden FLASH-Speicherbausteins durchliest.

von Roland Müller (Gast)


Lesenswert?

Hallo,

ich denke, das Datenblatt gibt mir erstmal keine Hinweise darauf....

Ist es sinnvoll eine State Machine zur Erzeugung des Timings zu bauen
?

nachdem das Timing erzeugt ist, wie nutze ich dann den Speicher bzw.
wie spreche ich ihn an (wie eine Array ?) Wie realisiere ich das in
VHDL ?

von Christian (Gast)


Lesenswert?

Aus den Timingdiagrammen solltest du eigendlich leicht auf die
Ansteuerung kommen. Eine FSM ist sinnvoll.

von TobiFlex (Gast)


Lesenswert?

Möchtest Du den Flash nur lesen oder auch beschreiben?

von Roland Müller (Gast)


Lesenswert?

ich möchte das Flash nur lesen !!!

Hat einer eine Idee, wie man so etwas realisiert ? Hat einer ein
Codebeispiel ?

Achso als Flash kommt ein Intel Strata Flash 28f320j3 zum Einsatz.

von TobiFlex (Gast)


Lesenswert?

Also wenn der Flash nur gelesen werden soll verstehe ich das Problem
nicht. Adresse anlegen CE und OE auf Low - RST und WE bleiben immer auf
high und die Daten stehen zur Verfügung.
Oder ist VHDL Dein Problem?

Du hast 25 Adressleitungen - also:

signal  flash_addr    : std_logic_vector(24 downto 0);

Du hast 16 Datenleitungen - also:

signal  flash_data              : std_logic_vector(15 downto 0);

Wenn Du einen Takt von 10MHz nutzt und bei jeder steigenden Flanke die
Flashadresse um 1 erhöhst sollte der Flash schnell genug sein seine
Daten zu liefern.

Viele Grüße
TobiFlex

von Roland Müller (Gast)


Lesenswert?

OK, da ich nur lesend auf das zugreife, ist es vielleicht wirklich nicht
so schwer.

Wenn ich das richtig verstanden habe, dann muss ich mit einem Takt von
10 MHz arbeiten, wenn die Zugriffszeit auf die Daten (sprich von
Anlegen der Adresse bis zur Verfügbarkeit der Daten) so um die 100ns
liegt. Ist das richtig ?


Allerdings arbeitet das Flsh im Page Mode, d.h. die Zugriffszeit für
das erste Datenbyte sind länger als für die anderen (oder allgemein
ausgedrückt die Zugriffszeiten sind unterschiedlich).

Wie muss ich meine State Machine takten bzw. mit welchem Takt muss ich
dann arbeiten. ?

von Thomas O. (Gast)


Lesenswert?

Hallo,

suche mal nach EEPROM habe schon einige Beitrage dazu verfasst wie ich
ein parallelles EPPROM angesteuert habe. Ich habe zwar dafür einige
Latches verwendet aber vom Timing her ist ja das gleiche.

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.