Contador 0 a 99 con pin de habilitacion

Que tal todos necesito ayuda urgente... tengo que hacer un contador de 0 a 99 en VHDL en la tarjeta Basys 2. El diseño del contador ya lo tengo, y me funciona perfecto. El problema es que tengo que agregarle una entrada de 8 bits, en la cual los 4 menos significativos manejan el contador de unidades y los ultimos 4 manejan el de decenas. al yo ubicar cualquier dato en estas entradas y presionar un pulsador de la tarjeta el contador debe comenzar a contarme desde este numero.

La descripcion en VHDL del contador que ya tengo es la siguiente:

entity tercero is
Port ( clk : in STD_LOGIC;
hab : in STD_LOGIC;
up : in STD_LOGIC;
seg : out STD_LOGIC_VECTOR (6 downto 0);
enable : out STD_LOGIC_VECTOR (3 downto 0));
end tercero;

architecture Behavioral of tercero is

signal div: STD_LOGIC_VECTOR (25 DOWNTO 0);
signal uno: STD_LOGIC_VECTOR (3 DOWNTO 0);
signal dos: STD_LOGIC_VECTOR (3 DOWNTO 0);
signal tres: STD_LOGIC_VECTOR (3 DOWNTO 0);
begin

PROCESS(clk)
begin
if((clk 'event)and(clk='1'))then
div<=div+1;
end if;
end process;

process(div(24))
begin
if((div(24)'event)and(div(24)='1'))then
if(hab='1')then
if(up='1')then
if(dos<"1001")then
dos<=cu+1;
else
dos<="0000";
tres<=tres+1;
if(tres="1001")then
tres<="0000";
end if;
end if;
else
if(dos>"0000")then
dos<=dos-1;
else
dos<="1001";
if(tres="0000")then
tres<="1001";
else
tres<=tres-1;
end if;
end if;
end if;
end if;
end if;
end process;

process(div(15))
begin
if((div(15)'event)and(div(15)='1'))then
case uno is
when "1110" =>
case tres is
when "0000" =>
seg<="0000001";
when "0001" =>
seg<="1001111";
when "0010" =>
seg<="0010010";
when "0011" =>
seg<="0000110";
when "0100" =>
seg<="1001100";
when "0101" =>
seg<="0100100";
when "0110" =>
seg<="1100000";
when "0111" =>
seg<="0001111";
when "1000" =>
seg<="0000000";
when "1001" =>
seg<="0001100";
when others =>
seg<="0110000";
end case;
uno<="1101";
when "1101" =>
case dos is
when "0000" =>
seg<="0000001";
when "0001" =>
seg<="1001111";
when "0010" =>
seg<="0010010";
when "0011" =>
seg<="0000110";
when "0100" =>
seg<="1001100";
when "0101" =>
seg<="0100100";
when "0110" =>
seg<="1100000";
when "0111" =>
seg<="0001111";
when "1000" =>
seg<="0000000";
when "1001" =>
seg<="0001100";
when others =>
seg<="0110000";
end case;
uno<="1110";
when others =>
uno<="1110";
END case;
end if;
enable<=uno;
end process;

end Behavioral;


Es decir, a partir del numero que yo coloque en la entrada de 8 bits, desde ese numero debe comenzar la cuenta.
 
Hola,
Por lo que he podido entender de tu código, podrías incluir una sentencia de carga de los datos en el proceso de los contadores. En el else de hab = '1', o creando una nueva señal de carga.

Como recomendación incluye comentarios o al menos pon nombres de señales que ayuden a entender qué hacen. Por ejemplo, las señales uno, dos, tres son poco descriptivas de lo que hacen. Esto facilita la tarea a los que te quieren ayudar en este foro.

Saludos
 
Atrás
Arriba