Forum: FPGA, VHDL & Co. RAM Zelle nacheinader auslesen


von Lamy (Gast)


Lesenswert?

Hallo allerseits,

und wieder mal eine VHDL Frage!

Wie kann ich in VHDL den ganzen RAM auslesen?

also in der Art :
(in C heißt schleife ;) )

1- Lese Adresse
2- Speichere wert
3- inkrementiere Adresse
4- Warte 10us
5- goto 1

Schleifen gibts in VHDL nicht, wie kann ich denn sowas realisieren (bei 
1024 Adresse)?

Wäre dankbar für einen Ansatz/Beispiel/ähnliches.

von Hmm (Gast)


Lesenswert?

Denk mal nach: Was ist das physische Äquivalent einer Schleife?

von CalM (Gast)


Lesenswert?

Hallo,

leider ist der Ton in diesem Forum unter aller Sau. Das was mein 
vorredner dir als denkanstoss geben wollte ist, was würde Hardware tun? 
Leider kenne ich das Problem aus eigener erfahrung zu gut was den 
umstieg von reiner Software-Denke auf VHDL angeht.

Was du machen kannst ist einen Automaten für das Lesen verwenden.

ungefähr folgender aufbau:

1) Sates definieren : Lesen, Ende
2) varibal für deinen Adresscounter definieren
3)Taktsynchroner Rahmen, also auf eine Taktflanke reagieren, und noch 
einen Asynchronen Reset dazu.

-wenn Reset dann State auf Lesen setzen und Counter auf 0

--sonst bei Taktflanke:
  wenn Lesen:

  Adresse anlegen Daten auslesen

      ist adresse ==1023?
      nein dann
          Counter<=Counter+1
          State <= Lesen
      sonst
          State <= Ende

  sonst wenn Ende:
          State <= Ende
          Counter <=Counter
  fertig

Sollte das dein erster kontakt mit VHDL sein wist du noch viel 
schlaflose Nächte haben :-)

mfg

CalM

von Hmm (Gast)


Lesenswert?

>leider ist der Ton in diesem Forum unter aller Sau.

Das mag so sein. Kann sich aber meiner Meinung nach nicht auf meinen 
Post beziehen. Warum das also hier bemerken? Oder ist alleine die an 
sich neutral formulierten Aufforderung über eine bestimmte Frage 
nachzudenken, schon beleidigend? Man kann die Empfindlichkeit auch 
übertreiben.

von CalM (Gast)


Lesenswert?

Nabend,

@Hmm
falls ich dir damit auf die Füße getreten habe sollte war es so nicht 
gewollt. Jedoch ist aus der Fragestellung ersichtlich das ein leichter 
Schubs nicht wirklich ausreichend ist.

@Lamy
hast du was an Literatur zur Hand in der du einwenig suchen und wühlen 
kannst?

mfg

CalM

von Lamy (Gast)


Lesenswert?

Also vielen Dank die Antwort.

@CalM
Ja du hast es richtig geahnt, ich komme aus der Software Ecke, und 
versuche gerade ein paar Aufgaben in VHDL zu erledigen.

So ganz easy ist es nicht, ich muss mir immer sagen das das HW 
Beschreibung ist und keine SW!. bei den einfachen Sachen geht es noch 
aber bei sowas wie die Aufgabe oben muss ich schon sehr lange nachdenken 
(in Sw geht es in ein paar Codezeilen) bis überhaupt weiß wie dsas in 
VHDL gehen könnte.

Ich habe hier: VHDl-Synthese(Schwarz) und FPGA Prototypnig by Examples 
(Pong Chu)

von Schlumpf (Gast)


Lesenswert?

Lamy schrieb:
> Ja du hast es richtig geahnt, ich komme aus der Software Ecke, und
> versuche gerade ein paar Aufgaben in VHDL zu erledigen.

uiuiuiuiui.... das könnte spannend werden ;-)
Mal eben so "nebenher" wird das echt schwer.
Du hast es ja richtig erkannt, mit der Hardware-Denke und die ist leider 
komplett anders, als die SW-Denke.

Letztendlich beschreibst du für dein Problem einen Adresscounter, der 
die Adressen inkrementiert. Und dann musst du irgendwie steuern, dass 
dann, wenn die Adress anliegt, und die Daten aus dem RAM am Datenbus des 
RAM stabil sind, du diese "abholst".
Das kann man zum Beispiel über eine Statemachine-Beschreibung machen. 
Wie ja bereits beschrieben wurde. Indem man in einem State die Adresse 
inkrementiert (also den Adresszähler um eins erhöht) und dann nach einer 
gewissen Zeit (z.B. einem Systemtakt), die Daten abholt.

Man könnte aber auch einen kleinen Steuer-Counter machen, der mit jedem 
Systemtakt um eins inkrementiert und ein Vergleicher, der bei "0" den 
Adresszähler um eins inkrementiert und bei "1" die Daten abholt und den 
Steuer-Counter wieder zurücksetzt.

Letztendlich sind das zwei vollkommen unterschiedliche Beschreibungen, 
wenn du den Code dazu anschaust. Aber die Synthese wird was sehr 
Ähnliches in Hardware auf dem FPGA umsetzen, da deine Zustände der 
Statemachine letztendlich auch nur in Registern gespeichert werden und 
somit dem kleinen Steuer-Counter aus dem zweiten Lösungsansatz 
entsprechen..

Will dir damit nur sagen, dass es teilweise viele Wege gibt, die in VHLD 
zu einer fast vergleichbaren Lösung in Hardware führen können.
Weil man eben nicht "programmiert", sondern ein Verhalten beschreibt.

von Markus G. (thechief)


Lesenswert?

Hallo Lamy,

evtl. hilft Dir dieser Blog beim Lernen von VHDL und Deiner Aufgabe:

http://startingelectronics.com/software/VHDL-CPLD-course

Und als Lehrbuch kann ich dieses empfehlen:

http://www.amazon.de/gp/product/3486706802/ref=oh_details_o00_s00_i00?ie=UTF8&psc=1


Viele Grüße

TheChief

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.