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?:-)
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.
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
@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
@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
Danke für die Infos.:-) Aber ich dachte mir eher, das müßte eine Variable sein, die man hochzählt! michi
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
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:?)
Variablen werden mit einem := zugewiesen. Die Zuweisung muss wie folgt aussehen: count:=count + 1;
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.