VHDL ejemplos (entrega 4)

Buen dia.. el dia de hoy les mostrare un ejemplo utilizando un modo estructurado del lenguaje vhdl en quatus 2.
Recordemos que los 2 ultimos ejemplos mostrados fueron sumadores, Semisumador  y sumador completo o full adder, de esto tratara el ejemplo.. realizar un sumador en modo estructurado.

Ejemplo 16:
Diseñar en VHDL, un sumador completo que sume 2 numeros de 4 bits cada uno. Utilizar para este proposito 4 full adders de 2 bits.
 
Solucion:
a) Full adder.- a la entrada de este sumador tenemos 2 bits y carry de entrada. A la salida tenemos la suma y el carry de salida.

-------------------------------------------
-- electronico-etn.blogspot.com
-- DESCRIPCION ESTRUCTURAL
-- Elemento basico para el sumador pedido
-- Sumador completo 2 bits
-------------------------------------------
library  ieee;
use  ieee.std_logic_1164.all;

entity FULLADDER is
     port (a, b, c: in std_logic;
           sum, carry: out std_logic);
     end FULLADDER;

architecture RTL of FULLADDER is
begin
sum <= (a xor b) xor c ;
carry <= (a and b) or (c and (a xor b));
end RTL;

b) Sumador 2 numeros de 4 bits .- si ponemos en cascada los sumadores, podemos obtener un sumador de numeros de 4 bits. El programa siguiente utiliza la rutina anterior(FULLADDER), hace llamado de este sumador completo de 2 bits, para utilizarlo en la implementacion de un sumador pedido en el problema.
-------------------------------------------------
-- electronico-etn.blogspot.com
-- ejemplos practicos
-- Descripcion estructural

-- sumar numeros de 4 bits
-------------------------------------------------
library  ieee;
use  ieee.std_logic_1164.all;

entity FOURBITADD is
     port (a, b: in std_logic_vector(3 downto 0);
           Cin : in std_logic;
           sum: out std_logic_vector (3 downto 0);
           Cout, V: out std_logic);
end FOURBITADD;

architecture RTL of FOURBITADD is
     signal c: std_logic_vector (4 downto 0);

           component FULLADDER
           port(a, b, c: in std_logic;
           sum, carry: out std_logic);
           end component;

begin
           FA0: FULLADDER
                port map (a(0), b(0), Cin, sum(0), c(1));
           FA1: FULLADDER
                port map (a(1), b(1), C(1), sum(1), c(2));
           FA2: FULLADDER
                port map (a(2), b(2), C(2), sum(2), c(3));
           FA3: FULLADDER
                port map (a(3), b(3), C(3), sum(3), c(4));
           V <= c(3) xor c(4);
           Cout <= c(4);
end RTL;

Notas de la descripcion anterior: EN la arquitectura añadimos un SIGNAL que es una señal interna del componente que hara las veces de variable local.
Recordar que cuando creen su propyecto ahi deben de hacer el llamado del sumador de 2 bits, asi lo compilara, sino no podra hacerlo y les dara error.