library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity top is
port(
Cin: in std_logic;
A: in std_logic_vector (3 downto 0);
b: in std_logic_vector (3 downto 0);
s2: in std_logic;
s1: in std_logic;
s0: in std_logic;
Xout: out std_logic_vector (3 downto 0));
end top;
architecture Behavioral of top is
component logic_c is
port (
A, B, S0, S1: in STD_LOGIC;
Y: out STD_LOGIC
);
end component;
component mux2_1 is
Port ( Xm, Ym, S2 : in std_logic;
G : out std_logic);
end component;
component fulladd is
port (
Af, Bf, Ci, S0f, S1f: in STD_LOGIC;
C0f, Xf : out STD_LOGIC);
end component;
--Logic signals
ArithTemp: std_logic_vector (3 downto 0);
LogicTemp: std_logic_vector (3 downto 0);
CoutTemp:std_logic_vector (3 downto 0);
begin
CU0: logic_c port map(A(3), B(2), s0, s1, LogicTemp(2));
CU1: logic_c port map(A(2), B(2), s0, s1, LogicTemp(2));
CU2: logic_c port map(A(2), B(2), s0, s1, LogicTemp(2));
CU3: logic_c port map(A(2), B(2), s0, s1, LogicTemp(2));
CU4: fulladd port map(A(3),B(3),Cin,s0,s1,CoutTemp(3),ArithTemp(3));
CU5: fulladd port map(A(2),B(2),CoutTemp(3),s0,s1,CoutTemp(2),ArithTemp(2));
CU6: fulladd port map(A(1),B(1),CoutTemp(2),s0,s1,CoutTemp(1),ArithTemp(1));
CU7: fulladd port map(A(0),B(0),CoutTemp(1),s0,s1,CountTemp(0),ArithTemp(0));
CU8: mux2_1 port map(ArithTemp(3), LogicTemp(3), sel2, Xout(3));
CU9: mux2_1 port map(ArithTemp(2), LogicTemp(2), sel2, Xout(2));
CU10: mux2_1 port map(ArithTemp(1), LogicTemp(1), sel2, Xout(1));
CU11: mux2_1 port map(ArithTemp(0), LogicTemp(0), sel2, Xout(0));
end Behavioral;
UCF
NET A<3> LOC = P126; //Slide switches
NET A<2> LOC = P129;
NET A<1> LOC = P133;
NET A<0> LOC = P135;
NET B<3> LOC = P138;
NET B<2> LOC = P140;
NET B<1> LOC = P145;
NET B<0> LOC = P147;
NET X<3> LOC = P154; //LEDs
NET X<2> LOC = P161;
NET X<1> LOC = P163;
NET X<0> LOC = P165;
NET s2 LOC = P149; // Pushbutton switches
NET s1 LOC = P150;
NET s0 LOC = P151;
NET c1 LOC = P152;