library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity ALU is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
B : in STD_LOGIC_VECTOR (3 downto 0);
S : in STD_LOGIC_VECTOR (3 downto 0);
R : in STD_LOGIC;
load : in STD_LOGIC;
clk : in STD_LOGIC;
flags : out STD_LOGIC_VECTOR (4 downto 0);
result : out STD_LOGIC_VECTOR (3 downto 0));
end ALU;
architecture Behavioral of ALU is
signal result1 : std_logic_vector (3 downto 0);
signal c,z : STD_LOGIC;
component topleveladd
Port (
x : in STD_LOGIC_VECTOR (3 downto 0);
y : in STD_LOGIC_VECTOR (3 downto 0);
cin : in STD_LOGIC;
sum : out STD_LOGIC_VECTOR (3 downto 0);
cout : out STD_LOGIC);
end component;
begin
stage5 : topleveladd port map(x=>A, y=>B, cin=>c, sum=>result, cout=>z);
end Behavioral;
Estoy tratando de hacer una ALU. Mi plan es hacer todos los circuitos necesarios como el sumador y el sustractor en diferentes módulos. Luego los implementaré en el módulo principal de ALU usando el mapa de puertos. Mi problema es que no sé cómo usar los mapas de puertos para las declaraciones de casos o algo similar. Por ejemplo,
Case S is
when "0000" =>
result <= stage5 : topleveladd port map(x=>A, y=>B, cin=>c, sum=>result, cout=>z);
Entiendo que esto no funcionará porque stage5 no es un vector.
En conclusión, estoy ejecutando un mapa de puertos y quiero que se muestren los "resultados" de ese mapa de puertos cuando se selecciona un determinado pin a través de S. Con suerte, proporcioné la información adecuada. Lo siento si mi lógica no encaja, ya que tengo muy pocas experiencias con VHDL.