Hallo zusammen,
ich bekomme durch das folgende (unvollständige) Codestück einen Latch
und habe leider keine Ahnung wie ich es beheben kann:
1 | entity xzy is
|
2 | port(
|
3 | ...
|
4 | round : out std_logic_vector(3 downto 0));
|
5 | end;
|
6 |
|
7 | architecture rtl of xzy is
|
8 |
|
9 | signal current_round : std_logic_vector(3 downto 0) := "0000";
|
10 |
|
11 | begin
|
12 | process(state)
|
13 | begin
|
14 | round <= "0000";
|
15 | case state is
|
16 | ...
|
17 | when wait_sb => current_round <= current_round +1;
|
18 | round <= current_round;
|
19 | when mix =>
|
20 | when other =>
|
21 | end case;
|
22 | end process;
|
23 | ...
|
24 | end;
|
(in einem anderen Case-Statement wird current_round bei "1001"
zurückgesetzt)
Die Sache ist, dass ich round inkrementieren muss, aber da es ein
out-Port ist, nehme ich dazu das Hilfsignal current_round, welches den
latch durch den "mix"-case bildet.
ich habe schon versucht current_round als Variable zu deklarieren und
auch im "mix"-case das Statement current_round <= current_round or
"0000" und Ähnliches getestet...
Ich hoffe man versteht was ich hier meine und vielleicht hat jemand
einen Tipp dazu?
Gruß David