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.
------------------------------------------- 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 -- 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.