Qué tal, me pidieron implementar un contador síncrono up/down de base 16 en VHDL (descripción estructural), pero como no me salía me decidí por empezar con uno ascendente de 2 bits, tengo esto pero no me funciona, el bit menos significativo de la cuenta se queda en "unknown", ¿me pueden echar una mano?
Codigo:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ContadorBase4 is
Port ( clk : in STD_LOGIC;
cuenta : out STD_LOGIC_VECTOR (1 downto 0));
end ContadorBase4;
architecture Behavioral of ContadorBase4 is
component FlipFlopD
port(
clk : in std_logic;
d : in std_logic;
q : out std_logic;
qnot: out std_logic
);
end component;
component xor2
port(
a : in std_logic;
b : in std_logic;
y : out std_logic
);
end component;
signal q0, q1 : std_logic;
signal qnot0, qnot1 : std_logic;
signal q0xorq1 : std_logic;
begin
ffd_00: FlipFlopD port map( clk => clk, d => qnot0, q => q0, qnot => qnot0 );
ffd_01: FlipFlopD port map( clk, q0xorq1, q1, qnot1 );
xor2_00: xor2 port map( q0, q1, q0xorq1 );
cuenta(0) <= q0;
cuenta(1) <= q1;
end Behavioral;
Saludos,
José Jorge (Geo).