VHDL: problemas de advertencia de código

2

Estoy teniendo algunos problemas con mi código, y entiendo lo que mis advertencias están tratando de decirme ...

Estas son las advertencias que recibo

WARNING:Xst:737 - Found 4-bit latch for signal <counter_10>. 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 4-bit latch for signal <counter_1>. 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 <ret>. 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:2677 - Node <Sreg_FSM_FFd1> of sequential type is unconnected in block <game>.
WARNING:Xst:2677 - Node <Sreg3_FSM_FFd1> of sequential type is unconnected in block <game>.
WARNING:Xst:2677 - Node <Sreg2_FSM_FFd1> of sequential type is unconnected in block <game>.
WARNING:Xst:2677 - Node <Sreg1_FSM_FFd1> of sequential type is unconnected in block <game>.
WARNING:PhysDesignRules:372 - Gated clock. Clock net
   segment2/counter_1_cmp_eq0000 is sourced by a combinatorial pin. This is not
   good design practice. Use the CE pin to control the loading of data into the
   flip-flop.
WARNING:PhysDesignRules:372 - Gated clock. Clock net segment2/counter_10_and0000
   is sourced by a combinatorial pin. This is not good design practice. Use the
   CE pin to control the loading of data into the flip-flop.
WARNING:Route:455 - CLK Net:segment2/ret may have excessive skew because 
WARNING:Route:455 - CLK Net:segment2/counter_1_cmp_eq0000 may have excessive skew because 
WARNING:Route:455 - CLK Net:segment2/counter_10_and0000 may have excessive skew because 
WARNING:PhysDesignRules:372 - Gated clock. Clock net
   segment2/counter_1_cmp_eq0000 is sourced by a combinatorial pin. This is not
   good design practice. Use the CE pin to control the loading of data into the
   flip-flop.
WARNING:PhysDesignRules:372 - Gated clock. Clock net segment2/counter_10_and0000
   is sourced by a combinatorial pin. This is not good design practice. Use the
   CE pin to control the loading of data into the flip-flop.

Y mi código se ve así enlace

Estaría muy agradecido si alguien pudiera señalar cuál es el problema.

Un gran problema es cuando test cambia de valor en un módulo, el otro módulo reaccionará, pero el segmento no muestra la combinación correcta, lo que me irrita mucho.

    
pregunta Carlton Banks

1 respuesta

2

Uno de tus principales problemas está en test.vhd. No tienes ninguna declaración para tu entidad. No hay entradas a ese bloque, ni salidas. test.vhd es todo por su cuenta. Es una mala práctica no tener una declaración de entidad. Me sorprende que incluso se sintetice.

Lo que parece que estás tratando de hacer en una prueba es crear un nuevo reloj. Si eso es lo que estás haciendo, lo estás haciendo mal. La mejor práctica para dividir un reloj es usar un registro y un contador. Cuando el contador alcanza su máximo, haga que cambie una señal intermedia, algo que no se llama reloj. Tal vez el nombre half_clock o my_clock.

signal my_clock : std_logic := 0;
signal counter, counter_next : natural := 0; --use a type where addition is easy

process(clk)
begin
if(clk'event = '1') then    --clk is the board clk. My FPGA runs it a 50 MHZ
    counter <= counter_next;
    counter_next <= counter_next +1;
    if(counter = MAX) then   --insert your max counter number into MAX
        counter <= '0';
        --toggle your my_clock signal here
    end if;
end if;
end process;

Este código sudo debería salvarlo de la advertencia del reloj de su puerta.

En cuanto a los cierres cerrados, asegúrese de haber cubierto todos los casos posibles. Recuerda que con std_logic hay 9 posibilidades diferentes. Siempre tenga un caso de otro tipo que cubra los casos no enumerados. La palabra clave "otros" es muy útil en este caso.

Además, ¿qué conjunto de herramientas está utilizando y qué placa?

    
respondido por el NorseEngineering

Lea otras preguntas en las etiquetas