Hallo Zusammen,
hier ist ein Ausschnitt aus meinem VHDL Code der beim Kompilieren
Probleme bereitet:
1 | p_memless : process (InputSrcRdyxS, STATExDP, ValuexD)
|
2 | begin -- process p_memless
|
3 |
|
4 | -- defaults
|
5 | STATExDN <= reset;
|
6 | InputDstRdyxS <= '0';
|
7 |
|
8 | case STATExDP is
|
9 | when reset =>
|
10 | ValuexD <= 0;
|
11 | STATExDN <= waitforSrc;
|
12 | when waitforSrc =>
|
13 | if InputSrcRdyxS = '1' then
|
14 | STATExDN <= count;
|
15 | else
|
16 | STATExDN <= waitforSrc;
|
17 | end if;
|
18 | InputDstRdyxS <= '1';
|
19 | when count =>
|
20 | InputDstRdyxS <= '0';
|
21 | if ValuexD >= 9999 then
|
22 | STATExDN <= reset;
|
23 | else
|
24 | ValuexD <= ValuexD + 1;
|
25 | end if;
|
26 | STATExDN <= waitforSrc;
|
27 | when others => null;
|
28 |
|
29 | end case;
|
30 |
|
31 | end process p_memless;
|
32 |
|
33 | p_memzing : process (CLKxCI, RSTxRBI)
|
34 | begin -- process p_memzing
|
35 | if RSTxRBI = '0' then -- asynchronous reset (active low)
|
36 | STATExDP <= reset;
|
37 | elsif CLKxCI'event and CLKxCI = '1' then -- rising clock edge
|
38 | STATExDP <= STATExDN;
|
39 | end if;
|
40 | end process p_memzing;
|
Es handelt sich dabei um eine FSM die Daten aus einer FIFO-Queue
ausliest und dabei einen Zaehler inkrementiert. Die Warnungen die ich
bekomme lauten wie folgt:
WARNING:Xst:737 - Found 1-bit latch for signal <ValuexD<13>>. Latches
may be generated from incomplete case or if statements. We do not
recommend the use of latches in FPGA/CPLD designs, as they may lead to
timing problems.
WARNING:Xst:737 - Found 1-bit latch for signal <ValuexD<12>>. Latches
may be generated from incomplete case or if statements. We do not
recommend the use of latches in FPGA/CPLD designs, as they may lead to
timing problems.
etc.
Mir ist klar, dass ich im waitforSrc state keine ValuexD Zuweisung mache
aber dort soll ValuexD ja auch denselben Wert behalten. Und im naechtsen
state habe ich eine unvollstaendige if-Schleife aber wenn ich nach der
Bedingung "if ValuexD >= 9999 then" eine Zuweisung mache z.B. ValuexD <=
0, dann kommen die Warnungen immernoch...
Gruss und Danke.