Hola whog3.
Vamos a ver...
Estas intentando usar una entrada normal de la fpga (pin93), para manejar el reloj de tu contador, puesto que con esta pretendes incrementar la cuenta.
Esto no se puede hacer debido a que esa entrada no tiene la "potencia" suficiente para manejar registros.
A lo mejor para este contador simple, si tiene potencia y no tendrías problemas, pero imagínate que intentaras hacer lo mismo con un microprocesador. El resultado sería que la señal de reloj no llega a todos los sitios a la vez, es decir, tendrías sitios donde el pulso de reloj llega instantáneamente y otros en los que llegaría muy retrasado.
Para evitar esto, las FPGAS tienen un pin (o varios) dedicados a transportar la señal de reloj por todo su interior mediante buffers internos.
El programa de síntesis detecta los registros que tengas declarados y la señal de reloj que los hace cambiar y le asigna a ésta, un GCLKIOB, que es un pin de reloj global.
Después de todo este rollo y si todabía no te has dormido... te comento lo que yo haría dentro del proceso que has hecho:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;
entity ControlaLed is
Port ( clk: in std_logic; led: out std_logic_vector (6 downto 0);
entra: inout std_logic
);
end ControlaLed;
architecture Funcionamiento of ControlaLed is
signal number: std_logic_vector (3 downto 0);
signal liko: std_logic;
signal lock: std_logic;
begin
process (clk, entra)
begin
if (clk"envent and clk="1") then
if (entra="0" and lock = "0") then
number <= number + 1;
lock <="1";
elsif(entra="1" and lock="1") then
lock <= "1";
else
lock <= "0"
end if
--La señal debe ser inout para que se pueda leer las comparaciones del if
--La señal lock evita que cuando pulses entra el contador se incremente a la
--velocidad del reloj
case number is
when "1111" => led <= "1110111";
when "1110" => led <= "0010010";
when "1101" => led <= "1011101";
when "1100" => led <= "1011011";
when "1011" => led <= "0111010";
when "1010" => led <= "1101011";
when "1001" => led <= "1101111";
when "1000" => led <= "1010010";
when "0111" => led <= "1111111";
when "0110" => led <= "1111011";
when others => led <= "1101101";
end case;
end if;
end process;
end Funcionamiento;
Asigna el clk al pin 88 y tu push button a la 93