Tim schrieb:
> ob ich dort auch einen RESET einfügen kann
Weil in einem Prozess immer die letzte Zuweisung an eine signal
"gewinnt", würde das im einfachsten Fall so aussehen:
1 | process begin
|
2 | wait until rising_edge(clk); -- warten bis zum nächsten Takt
|
3 | if c<24999999 then -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz
|
4 | c <= c+1; -- wenn kleiner: weiterzählen
|
5 | else -- wenn Zählerende erreicht:
|
6 | c <= 0; -- Zähler zurücksetzen
|
7 | x <= not x; -- und Signal x togglen
|
8 | end if;
|
9 | if RESET = '1' then -- Zählerreset behandeln
|
10 | c <= 0;
|
11 | x <= '0';
|
12 | end if;
|
13 | end process;
|
Oder so:
1 | process begin
|
2 | wait until rising_edge(clk); -- warten bis zum nächsten Takt
|
3 | if RESET = '1' then -- Reset aktiv?
|
4 | c <= 0; -- ja -> zurücksetzen
|
5 | x <= '0';
|
6 | else -- nein -> zählen
|
7 | if c<24999999 then -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz
|
8 | c <= c+1; -- wenn kleiner: weiterzählen
|
9 | else -- wenn Zählerende erreicht:
|
10 | c <= 0; -- Zähler zurücksetzen
|
11 | x <= not x; -- und Signal x togglen
|
12 | end if;
|
13 | end if;
|
14 | end process;
|
> mit einem anderen Prozess aktivieren bzw. deaktivieren kann,
> um eine Verzögerung zu bekommen.
Warum machst du diesen Zähler nicht gleich in dem "anderen" Prozess?