Half Adder: Ieee Ieee STD - LOGIC - 1164 Ieee STD - Logic - Arith Ieee STD - Logic - Unsigned
Half Adder: Ieee Ieee STD - LOGIC - 1164 Ieee STD - Logic - Arith Ieee STD - Logic - Unsigned
Half Adder: Ieee Ieee STD - LOGIC - 1164 Ieee STD - Logic - Arith Ieee STD - Logic - Unsigned
entity ha is Port ( a : in STD_LOGIC; b : in STD_LOGIC; sum : out STD_LOGIC; carry : out STD_LOGIC); end ha; architecture Behavioral of ha is begin sum<= a xor b; carry<= a and b; end Behavioral;
full adder
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FA is Port ( a : in STD_LOGIC; b : in STD_LOGIC; cin : in STD_LOGIC; sum : out STD_LOGIC; carry : out STD_LOGIC); end MUL; architecture Behavioral of FA is begin sum<=a xor b xor cin; carry<=(a and b) or (a and cin) or (b and cin); end Behavioral;
Mux
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
architecture Behavioral of MUX is begin process(a,b,c,d,se1) begin if (se1="00") then z<=a; elsif (se1="01") then z<=b; elsif (se1="10") then z<=c; elsif (se1="11") then z<=d; end if; end process;
end Behavioral;
Demux
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity DEMUX is Port ( a : in STD_LOGIC; se1 : in STD_LOGIC_vector( 1 downto 0); z : out STD_LOGIC_vector(3 downto 0)); end DEMUX; architecture Behavioral of signal x:std_logic; begin process(a,se1) begin if(se1= "00") then z(0)<=a; z(1)<=x; z(2)<=x; elsif (se1= "01") then z(0)<=x; z(1)<=a; z(2)<=x; elsif (se1= "10") then z(0)<=x; z(1)<=x; z(2)<=a; elsif (se1= "11") then z(0)<=x; z(1)<=x; z(2)<=x; end if; DEMUX is
Decoder
library IEEE; use IEEE.STD_LOGIC_1164.ALL;
entity DECODE is Port ( a : in STD_LOGIC_vector( 2 downto 0); z : out STD_LOGIC_vector( 7 downto 0)); end DECODE; architecture Behavioral of DECODE is begin process(a) begin if(a="000") then z<="00000001"; elsif(a="001") then z<="00000010"; elsif(a="010") then z<="00000100"; elsif(a="011") then z<="00001000"; elsif(a="100") then z<="00010000"; elsif(a="101") then z<="00100000"; elsif(a="110") then z<="01000000"; elsif(a="111") then z<="10000000"; end if; end process; end Behavioral;
Encoder
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ENCODE is
Port ( a : in STD_LOGIC_VECTOR( 7 DOWNTO 0); z : out STD_LOGIC_VECTOR( 2 DOWNTO 0)); end ENCODE; architecture Behavioral of ENCODE is begin process(a) begin if(a="00000001") then z<="000"; elsif(a="00000010") then z<="001"; elsif(a="00000100") then z<="010"; elsif(a="00001000") then z<="011"; elsif(a="00010000") then z<="100"; elsif(a="00100000") then z<="101"; elsif(a="01000000") then z<="110"; elsif(a="10000000") then z<="111"; end if; end process; end Behavioral;
Ouput of multiplier library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
in in in in
p0 p1 p2 p3 end MUL;
: : : :
architecture Behavioral of MUL is component ha port( a :in STD_LOGIC; b :in STD_LOGIC; sum :out STD_LOGIC; carry :out STD_LOGIC); end component ha; component and1 port( a :in STD_LOGIC; b:in STD_LOGIC; c:out STD_LOGIC); end component and1; signal s0,s1,s2,c1:STD_LOGIC; begin h1 :ha port map (s0,s1,p1,c1); h2 :ha port map (c1,s2,p2,p3); g1 :and1 port map (x0,y0,p0); g2 :and1 port map (x1,y0,s0); g3 :and1 port map (x0,y1,s1); g4 :and1 port map (x1,y1,s2); end Behavioral;