Hallo,
Quartus2 V7.1 meckert neuerdings darüber, dass ctr_48 ctr90_48,
ctr135_48 und ctr225_48 als latch implementiert werden:
1 | Inferring latch(es) for signal or variable "ctr_48" which holds its previous value in one or more paths through the process
|
Woher kommt denn das plötzlich? Ich kann mich nicht erinnern früher mal
(frühere Version von Quartus2) die Warnung bekommen haben ... und ich
weiß auch nicht wo hier das Problem sein soll ...
Hier mal mein Prozess (der Rest außenrum ist nur entity und component
deklaration)
1 | process (clk, reset)
|
2 | variable step48 : unsigned (63 downto 0) := X"1938ECE0531174F2";
|
3 | variable ctr_48 : unsigned (63 downto 0) := X"FFC0000000000000";
|
4 | variable ctr90_48 : unsigned (63 downto 0):= X"3FC0000000000000";
|
5 | variable ctr135_48 : unsigned (63 downto 0):= X"5FC0000000000000";
|
6 | variable ctr225_48 : unsigned (63 downto 0):= X"9FC0000000000000";
|
7 | variable curctr : unsigned (8 downto 0);
|
8 |
|
9 | variable abschnittu : unsigned (1 downto 0);
|
10 | variable indexu : unsigned (6 downto 0);
|
11 |
|
12 |
|
13 | begin
|
14 | if reset='0' then
|
15 | ctr_48 := X"FFC0000000000000";
|
16 | ctr90_48 := X"3FC0000000000000";
|
17 | ctr135_48 := X"5FC0000000000000";
|
18 | ctr225_48 := X"9FC0000000000000";
|
19 | data <= (others => '0');
|
20 | elsif clk'event and clk='1' then
|
21 | ctr_48 := ctr_48 + step48;
|
22 | ctr90_48 := ctr90_48 + step48;
|
23 | ctr135_48 := ctr135_48 + step48;
|
24 | ctr225_48 := ctr225_48 + step48;
|
25 |
|
26 | case phase is
|
27 | when "00" => curctr := ctr_48 (63 downto 55);
|
28 | when "01" => curctr := ctr90_48 (63 downto 55);
|
29 | when "10" => curctr := ctr135_48 (63 downto 55);
|
30 | when "11" => curctr := ctr225_48 (63 downto 55);
|
31 | when others => curctr := (others=>'0');
|
32 | end case;
|
33 |
|
34 | indexu := curctr (6 downto 0); -- index f�r die tabelle
|
35 |
|
36 | case abschnittu(1) is
|
37 | when '1' => data <= conv_std_logic_vector(-signed(output),16);
|
38 | when '0' => data <= conv_std_logic_vector(signed(output),16);
|
39 | when others => data <= (others=>'0');
|
40 | end case;
|
41 |
|
42 | abschnittu := curctr (8 downto 7);
|
43 |
|
44 | case abschnittu(0) is
|
45 | when '0' => adr <= conv_std_logic_vector(indexu,7);
|
46 | when '1' => adr <= conv_std_logic_vector(127-indexu,7);
|
47 | when others => adr <= (others=>'0');
|
48 | end case;
|
49 | end if;
|
50 | end process;
|