Hallo, guten Tag.
Warum wird dieses Signal "c" nicht gleich auf "" gesetzt, es wird doch
nachher hochgezählt?
Danke.
Gruss
------------------------
signal c : integer range 0 to 24999999 := 0; -- 0,5s bei 50MHz fosc
signal x : std_logic:= '0';
begin
process begin
wait until rising_edge(clk); -- warten bis zum nächsten Takt
if (c<24999999) then -- 0…24999999 = 25000000 Takte = 1/2
Sekunde bei 50MHz
c <= c+1; -- wenn kleiner: weiterzählen
else -- wenn Zählerende erreicht:
c <= 0; -- Zähler zurücksetzen
x <= not x; -- und Signal x togglen
end if;
end process;
led <= x; -- Signal x an LED ausgeben
end Behavioral;
--------------------------
Welche Aufgabe übernimmt das : range 0 to 24999999 Hat eine Integer nicht einen festen bestimmten Zählbereich? Danke. Gruss
Gast
#3620151
Alle Signale werden grundsätzlich nicht sofort bei der zuweisung aktualisiert, sondern erst bei "end prozess"
Danke. Das ist ja anders als wenn man normal programmiert mit C usw. Da muß ich jetzt umdenken. Gruss
VHDL beschreibt Hardware, das ist keine Programmiersprache, auch wenn es ähnlich aussieht. Da musst du eine ganz andere Denkweise lernen.
Gast
#3621806
Peter Bierbach schrieb: > Da muß ich jetzt umdenken. Ja, genau. Es sieht aus wie Software ist aber eine Schaltplanbeschreibung in Textform. Duke
Gast
#3621844
Ich glaube, es wird Zeit für ein gutes Buch, in dem man die Details einmal nachliest. z.B: Zahlenbereiche, Zuweisungen etc. Ich habe gute Erfahrungen mit Ashenden, Designers Guide to VHDL. Aber das ist Geschmackssache.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.