ELSE ENTITY COR IS s <= '1'; PORT (a,b,c,d: IN BIT; END IF; s :OUT BIT); END PROCESS; END COR; END PRONOT; ARCHITECTURE PROOR OF COR IS BEGIN ....... MUX(ALGORITMO) PROCESS(a,b,c,d) ENTITY CMUX IS BEGIN PORT (a,b,c,d,e,f,g,h,sel: IN BIT; IF a='1' OR b = '1' OR c= '1' OR d='1' THEN s :OUT BIT); S <= '1'; END CMUX ELSE ARCHITECTURE PROMUX OF CMUX IS s <= '0'; BEGIN END IF; PROCESS(a,b,c,d,e,f,g,h,sel) END PROCESS; BEGIN END PROOR; CASE sel IS WHEN "000" =>s<= 'a'; ---------COMPUERTA NAND(ALGORITMO) WHEN "001" =>s<= 'b'; ENTITY CNAND IS WHEN "010" =>s<= 'c'; PORT (a,b,c,: IN BIT; WHEN "011" =>s<= 'd'; s :OUT BIT); WHEN "100" =>s<= 'e'; END CNAND WHEN "101" =>s<= 'f'; ARCHITECTURE PRONAND OF CNAND IS WHEN "110" =>s<= 'g'; BEGIN WHEN "111" =>s<= 'h'; PROCESS(a,b,c) END CASE BEGIN END PROCESS; IF a='1' AND b = '1' AND c= '1' THEN END PROMUX; S <= '0'; ..........DECO (ALGORITMO) ELSE ENTITY CDECO IS s <= '1'; PORT (entrada : IN BIT_VECTOR (3 END IF; DOWNTO 0); END PROCESS; s :OUT BIT_VECTOR (15 DOWNTO 0)); END PRONAND; END CDECO; ...... COMPUERTA NOT (ALGORITMO) ARCHITECTURE PRODECO OF CDECO IS ENTITY CNOT IS BEGIN PORT (a: IN BIT; PROCESS (entrada) s :OUT BIT); BEGIN END CNAND CASE entrada IS ARCHITECTURE PRONOT OF CNOT IS WHEN "0000" => s<= BEGIN "0000000000000001"; PROCESS(a) WHEN "0001" => s<= BEGIN "0000000000000010"; IF a='1' THEN WHEN "0010" => s<= "0000000000000100"; WHEN "0011" => s<= WHEN "0111" => s<= "00000101"; "0000000000001000"; WHEN "1000" => s<= "00010101"; WHEN "0100" => s<= WHEN "1001" => s<= "00010100"; "0000000000010000"; WHEN "1010" => s<= "00010010"; WHEN "0101" => s<= WHEN "1011" => s<= "00010011"; "0000000000100000"; WHEN "1100" => s<= "00001000"; WHEN "0110" => s<= WHEN "1101" => s<= "00001001"; "0000000001000000"; WHEN "1110" => s<= "00010001"; WHEN "0111" => s<= WHEN "1111" => s<= "00010000"; "0000000010000000"; END CASE; WHEN "1000" => s<= END PROCESS; "0000000100000000"; END PROGRAY; WHEN "1001" => s<= .......... SUMADOR COMPLETO DE 4 BITS "0000001000000000"; (ALGORITMO) WHEN "1010" => s<= ENTITY CSUMADOR IS "0000010000000000"; PORT (A,B: IN BIT_VECTOR (3 DOWNTO 0); WHEN "1011" => s<= s :OUT BIT_VECTOR (3 DOWNTO 0)); "0000100000000000"; END CSUMADOR; WHEN "1100" => s<= ARCHITECTURE PROSUMADOR OF "0001000000000000"; CSUMADOR IS WHEN "1101" => s<= SIGNAL C: bit_vector ( 3 DOWNTO 0); "0010000000000000"; BEGIN WHEN "1110" => s<= PROCESS (a,b) "0100000000000000"; BEGIN WHEN "1111" => s<= s(0) <= A(0) XOR B(0) XOR '0'; "1000000000000000"; C(0) <= (A(0) AND B(0)) OR (A(0) AND '0') END CASE; OR (B(0) AND '0'); END PROCESS; s(1) <= A(1) XOR B(1) XOR C(0); END PRODECO; C(1) <= (A(1) AND B(1)) OR (A(1) AND C(0) ) ..........GRAY A BCD (ALGORITMO) OR ( B(1) AND C(0)); ENTITY CGRAY IS s(2) <= A(2) XOR B(2) XOR C(1); PORT (entrada : IN BIT_VECTOR (3 C(2) <= (A(2) AND B(2)) OR (A(2) AND C(1) ) DOWNTO 0); OR ( B(2) AND C(1)); s :OUT BIT_VECTOR (7 DOWNTO 0)); s(3) <= A(3) XOR B(3) XOR C(2); END CGRAY; C(3) <= (A(3) AND B(3)) OR (A(3) AND C(2) ) ARCHITECTURE PROGRAY OF CGRAY IS OR ( B(3) AND C(2)); BEGIN END POCESS; PROCESS (entrada) END PROSUMADOR; BEGIN CASE entrada IS WHEN "0000" => s<= "00000000"; WHEN "0001" => s<= "00000001"; WHEN "0010" => s<= "00000011"; ..........MAYOR ENTRADA (ALGORITMO) WHEN "0011" => s<= "00000010"; ENTITY CMAYOR IS WHEN "0100" => s<= "00000111"; PORT (a,b,c: IN BIT_VECTOR(2 DOWNTO 0); WHEN "0101" => s<= "00000110"; s :OUT BIT_VECTOR(2 DOWNTO 0)); WHEN "0110" => s<= "00000100"; END CMAYOR ARCHITECTURE PROMAYOR OF CMAYOR IS BEGIN s<= '1' WHEN a='0' ELSE '1'; PROCESS(a,b,c) END PRONOT; BEGIN .. MUX (RTL) IF a > b AND a > c THEN ENTITY CMUX IS S <= 'a'; PORT (a,b,c,d,e,f,g,h,sel: IN BIT; ELSIF b > a AND b > c THEN s :OUT BIT); s <= 'b'; END CMUX ELSIF c > a AND c > b THEN ARCHITECTURE PROMUX OF CMUX IS s <= 'c'; BEGIN else WITH sel SELECT s <= "000"; S <= 'a' WHEN "000", END IF; 'b' WHEB "001", END PROCESS; 'c' WHEB "010", END PROMAYOR; 'd' WHEB "011", -.................................. 'e' WHEB "100", AHORA EN RTL 'f' WHEB "101", ................COMPUERTA OR(RTL) 'g' WHEB "110", ENTITY COR IS 'h' WHEB "111"; PORT (a,b,c,d: IN BIT; END PROMUX; s :OUT BIT); ........ DECO (RTL) END COR; ARCHITECTURE PROOR OF COR IS ENTITY CDECO IS BEGIN PORT (entrada : IN BIT_VECTOR (3 S <= '1' WHEN a='1' OR b = '1' OR c= '1' OR DOWNTO 0); d='1' ELSE '0'; s :OUT BIT_VECTOR (15 DOWNTO 0)); END PROOR; END CDECO; ARCHITECTURE PRODECO OF CDECO IS ......... COMPUERTA NAND(RTL) BEGIN ENTITY CNAND IS WITH entrada SELECT PORT (a,b,c: IN BIT; s :OUT BIT); s<= "0000000000000001" WHEN "0000", END CNAND "0000000000000010" WHEN "0001", ARCHITECTURE PRONAND OF CNAND IS "0000000000000100" WHEN "0010", BEGIN "0000000000001000" WHEN "0011", S <= '0' WHEN a='1' AND b = '1' AND c= '1' "0000000000010000" WHEN "0100", AND d='1' ELSE '1'; "0000000000100000" WHEN "0101", END PRONAND; "0000000001000000" WHEN "0110", "0000000010000000" WHEN "0111", "0000000100000000" WHEN "1000", "0000001000000000" WHEN "1001", "0000010000000000" WHEN "1010", ...........COMPUERTA NOT (RTL) "0000100000000000" WHEN "1011", ENTITY CNOT IS "0001000000000000" WHEN "1100", PORT (a: IN BIT; "0010000000000000" WHEN "1101", s :OUT BIT); "0100000000000000" WHEN "1110", END CNOT "1000000000000000" WHEN "1111"; ARCHITECTURE PRONOT OF CNOT IS END PRODECO BEGIN ...................... GRAY A BCD (RTL) OR ( B(2) AND C(1)); s(3) <= A(3) XOR B(3) XOR C(2); ENTITY CGRAY IS C(3) <= (A(3) AND B(3)) OR (A(3) AND C(2) ) PORT (entrada : IN BIT_VECTOR (3 OR ( B(3) AND C(2)); DOWNTO 0); END PROSUMADOR; s :OUT BIT_VECTOR (7 DOWNTO 0)); END CGRAY;
ARCHITECTURE PROGRAY OF CGRAY IS
BEGIN
WITH entrada SELECT
s<= "00000000" WHEN "0000",
"00000001" WHEN "0001", "00000011" WHEN "0010", "00000010" WHEN "0011", "00000111" WHEN "0100", "00000110" WHEN "0101", "00000100" WHEN "0110", "00000101" WHEN "0111", "00010101" WHEN "1000", "00010100" WHEN "1001", "00010010" WHEN "1010", "00010011" WHEN "1011", "00001000" WHEN "1100", "00001001" WHEN "1101", "00010001" WHEN "1110", "00010000" WHEN "1111"; END PROGRAY;
---------- SUMADOR COMPLETO 4BITS (RTL)
ENTITY CSUMADOR IS PORT (A,B: IN BIT_VECTOR (3 DOWNTO 0); s :OUT BIT_VECTOR (3 DOWNTO 0)); END CSUMADOR; ARCHITECTURE PROSUMADOR OF CSUMADOR IS SIGNAL C: bit_vector ( 3 DOWNTO 0); BEGIN s(0) <= A(0) XOR B(0) XOR '0'; C(0) <= (A(0) AND B(0)) OR (A(0) AND '0') OR (B(0) AND '0'); s(1) <= A(1) XOR B(1) XOR C(0); C(1) <= (A(1) AND B(1)) OR (A(1) AND C(0) ) OR ( B(1) AND C(0)); s(2) <= A(2) XOR B(2) XOR C(1); C(2) <= (A(2) AND B(2)) OR (A(2) AND C(1) )