Komische Info von ISE

#609809
Lesenswert?

Hallo,

ich hab ein Projekt synthetisiert, und bekomme für diese Statemachine:
1
Analyzing FSM <FSM_2> for best encoding.
2
Optimizing FSM <Inst_ADRDEC_V/state> on signal <state[1:5]> with one-hot encoding.
3
-------------------
4
 State | Encoding
5
-------------------
6
 idle  | 00001
7
 r1    | 00100
8
 r2    | 01000
9
 w1    | 00010
10
 w2    | 10000
eine ganz normale Statemachine halt, diese Infos:
1
Synthesizing (advanced) Unit <FSM_2>.
2
INFO:Xst:2387 - HDL ADVISOR - A 2-bit shift register was found for signal <FFd1> and currently occupies 2 logic cells (1 slices). Removing the set/reset logic would take advantage of SRL16 (and derived) primitives and reduce this to 1 logic cells (1 slices). Evaluate if the set/reset can be removed for this simple shift register. The majority of simple pipeline structures do not need to be set/reset operationally.
3
INFO:Xst:2387 - HDL ADVISOR - A 2-bit shift register was found for signal <FFd2> and currently occupies 2 logic cells (1 slices). Removing the set/reset logic would take advantage of SRL16 (and derived) primitives and reduce this to 1 logic cells (1 slices). Evaluate if the set/reset can be removed for this simple shift register. The majority of simple pipeline structures do not need to be set/reset operationally.
4
Unit <FSM_2> synthesized (advanced).

Diese Machine fragt im Idlezustand drei Signale ab,
und wenn die eine von zwei möglichen Konstellationen haben,
geht sie (die Machine) durch 2 fast und einen ganz leeren State, 
Waitstates,
und dann wieder zu idle.

Könnte diese Info von den leeren States kommen?
Ich weiß, dass die Infos nichts dramatisches sind,
aber es kneift mich trotzdem und ich möchte es gern verstehen. :)
#611467
Lesenswert?

Hallo,

also die SM sieht so aus:
1
if(H1'event and H1 = '1') then    -- steigende Flanke
2
      
3
 case state is 
4
   when idle =>
5
     if (RW='1' and PAGE2='0' and ADDR="10") then
6
      UART_CS <= '0';
7
      state <= R1;    
8
     elsif (RW='0' and PAGE2='0' and ADDR="10") then
9
      UART_CS  <= '0';
10
      state <= W1;    
11
     else
12
      state <= idle;                       
13
     end if;                                           
14
   when R1 =>
15
    UART_RD <= '0';
16
    state <= R2;                                
17
   when R2 =>                    
18
    UART_CS <= '1';                  
19
    state <= R3;                                  
20
   when R3 =>
21
    state <= R4;
22
   when R4 =>                    
23
    UART_RD <= '1';              
24
    state <= R5;                                    
25
   when R5 =>                    
26
    state <= R6;                                       
27
   when R6 =>            
28
    state <= R7;          
29
   when R7 =>            
30
    state <= idle;                  
31
   when W1 =>                    
32
    state <= W2;
33
   when W2 =>
34
    UART_CS <= '1';
35
    state <= W3;
36
   when W3 =>
37
    state <= W4; 
38
   when W4 =>
39
    UART_WR <= '1';
40
    state <= W5;
41
   when W5 =>
42
    state <= W6; 
43
   when W6 =>
44
    state <= W7; 
45
   when W7 =>
46
    state <=  idle;  
47
   when others =>
48
    state <= idle;
49
  end case;
50
end if;

Ich habe den RESET-Zweig schonmal entfernt,
die Meldung bleibt die gleiche, also das RESET ist offensichtlich
nicht das Problem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren