www.mikrocontroller.net

Forum: FPGA, VHDL & Co. einfacher zähler


Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag zusammen!

Habe ein Anfängerproblem (VHDL) und zwar mit einem Zähler.

In Abel konnte man einen Zähler, wie folgt hochzählen lassen:

zaehler:=zaehler+1; und dann Bedingungen stellen wie lange er zählen
soll.

In VHDL probierte ich das gleiche, aber er erhöht wirklich nur um eins
(0+1= 1) und nur das, auch wenn man eine Schleife macht (von 0-9), es
ist immer das gleiche!

Hat wer nen Tipp für mich?:-)

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein ganz einfacher Counter in VHDL sieht folgendermaßen aus:

signal count: std_logic (7 downto 0);

process (clk)
begin
   if clk='1' and clk'event then
      count <= count + 1;
   end if;
end process;

Ist ein 8 Bit Counter der bei jedem Takt inkrementiert.

Autor: Daniel Jelkmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Jörn:
Bist Du sicher, dass das so geht mit dem
 count <= count + 1;
? count ist doch ein std_logic_vector.

Ich kenne das nur über dieses umständliche
count <= conv_std_logic_vector(unsigned(count)+1, 8);

Und das Signal count, müsste man das nicht auch als
std_logic_vector deklarieren?

Wäre für mich mal interessant zu wissen, ob das inkrementieren wirklich
so einfach funktioniert, wie Du geschrieben hast.

MfG
 Daniel Jelkmann

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jens:

ja, hast recht das signal muss ein std_logic_vector sein. Danke für die
Verbesserung.

Der Counter funktioniert mit count<=count + 1;
Hab ich schon so eingebaut und ISE hat daraus den Zähler gebaut.

Gruss Jörn

Autor: Daniel Jelkmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörn:

Wer ist Jens? G

Interessant, das mit dem count<=count+1;
Mit ISE habe ich noch nie gearbeitet, aber ich werde mal bei nächster
Gelegenheit ausprobieren, wie die QuartusII-Software von Altera darauf
reagiert. Ich bin mal gespannt.

MfG
 Daniel Jelkmann

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gute Frage, nächste Frage. Ich heute etwas durch den Wind. Sorry Daniel.

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Infos.:-)

Aber ich dachte mir eher, das müßte eine Variable sein, die man
hochzählt!

michi

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist egal, denn das Synthese-Tool macht daraus eine Netzliste. Und
auch Variablen müssen in der Hardware realisert werden. Aus einem
std_logic_vector wird eine Reihe aus FlipFlops und aus einem Zähler
auch. Dies soll nur dem Anwender das Programmieren erleichtern.

Grüsse

Michael

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs nach Jörns Vorschlag gemacht und er zählt, danke nochmals.

So hab ichs gehabt, nur mit Variablen.

Jetzt würd mich aber interessieren, wieso er bei der gleichen
Schreibweise, bei Variablen, spinnt:?)

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variablen werden mit einem := zugewiesen. Die Zuweisung muss wie folgt
aussehen:

count:=count + 1;

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.