Forum: FPGA, VHDL & Co. Warum das Signal c nicht gleich auf "0" setzen?


von Peter B. (funkheld)


Lesenswert?

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;
--------------------------

von Peter B. (funkheld)


Lesenswert?

Welche Aufgabe übernimmt das :
range 0 to 24999999

Hat eine Integer nicht einen festen bestimmten Zählbereich?

Danke.
Gruss

von Sauron (Gast)


Lesenswert?

Alle Signale werden grundsätzlich nicht sofort bei der zuweisung 
aktualisiert, sondern erst bei "end prozess"

von Peter B. (funkheld)


Lesenswert?

Danke.

Das ist ja anders als wenn man normal programmiert mit C usw.
Da muß ich jetzt umdenken.

Gruss

von Christian R. (supachris)


Lesenswert?

VHDL beschreibt Hardware, das ist keine Programmiersprache, auch wenn es 
ähnlich aussieht. Da musst du eine ganz andere Denkweise lernen.

von Duke Scarring (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Da muß ich jetzt umdenken.
Ja, genau.
Es sieht aus wie Software ist aber eine Schaltplanbeschreibung in 
Textform.

Duke

von PittyJ (Gast)


Lesenswert?

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.

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.