Ayuda con VHDL
Publicado por L (1 intervención) el 23/03/2008 18:31:16
Hola!!! Estoy empezando a programar en VHDL. Es mi primera práctica. Me han pedido que haga la arquitectura estructural de una ALU con operandos de un numero variable de n bits. Utiliza los componentes AE(segundo operando),LE(operaciones logicas),CI(acarreo),FA(sumador completo de 1 bit). Este es el codigo que he hecho, pero no me funciona correctamente. ¿Alguien me puede ayudar? Estoy ya desesperada. Muchas graciasss
entity alu is generic(
n : natural := 8); -- operand width. Podemos utilizar n como un parametro constante
port(
a : in std_logic_vector (n-1 downto 0);
b : in std_logic_vector (n-1 downto 0);
s : in std_logic_vector (2 downto 0);
f : out std_logic_vector (n-1 downto 0);
carry : out std_logic;
overflow : out std_logic);
end alu;
architecture structural of alu is
component circuitoAE
port (s: in std_logic_vector; b: in std_logic; fae: out std_logic);
end component;
component circuitoCI
port (s: in std_logic_vector; fci: out std_logic);
end component;
component circuitoLE
port (s:in std_logic_vector; a, b: in std_logic; fle: out std_logic);
end component;
component circuitoFA
port (a, b, c: in std_logic; c_mas,s: out std_logic);
end component;
signal salidafa, salidafae, salidafle, salidafci: std_logic_vector(n-1 downto 0);
begin
0: circuitoCI port map (s);
cAlu: for i in 0 to n generate
1: circuitoAE port map (s, b(i), salidafae(i));
2: circuitoLE port map (s, a(i), b(i) ,salidafle(i));
3: circuitoFA port map (salidafle(i),salidafae(i), salidafci(i), salidafci(i+1), salidafa(i));
end generate;
carry<=salidafci(n);
overflow <= salidafci(n) xor salidafci(n-1);
end structural;
entity alu is generic(
n : natural := 8); -- operand width. Podemos utilizar n como un parametro constante
port(
a : in std_logic_vector (n-1 downto 0);
b : in std_logic_vector (n-1 downto 0);
s : in std_logic_vector (2 downto 0);
f : out std_logic_vector (n-1 downto 0);
carry : out std_logic;
overflow : out std_logic);
end alu;
architecture structural of alu is
component circuitoAE
port (s: in std_logic_vector; b: in std_logic; fae: out std_logic);
end component;
component circuitoCI
port (s: in std_logic_vector; fci: out std_logic);
end component;
component circuitoLE
port (s:in std_logic_vector; a, b: in std_logic; fle: out std_logic);
end component;
component circuitoFA
port (a, b, c: in std_logic; c_mas,s: out std_logic);
end component;
signal salidafa, salidafae, salidafle, salidafci: std_logic_vector(n-1 downto 0);
begin
0: circuitoCI port map (s);
cAlu: for i in 0 to n generate
1: circuitoAE port map (s, b(i), salidafae(i));
2: circuitoLE port map (s, a(i), b(i) ,salidafle(i));
3: circuitoFA port map (salidafle(i),salidafae(i), salidafci(i), salidafci(i+1), salidafa(i));
end generate;
carry<=salidafci(n);
overflow <= salidafci(n) xor salidafci(n-1);
end structural;
Valora esta pregunta


0