Ejemplo 2
Este ejemplo presenta una aplicación de la instrucción generate
El mismo sumador implementado en el ejemplo 1 puede ser implementado utilizando generate
--Sumador carry-propagate de 4 bits
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
Entity Suma is
port(A, B: in std_logic_vector(3 downto 0);
Cin: in std_logic;
S: out std_logic_vector(3 downto 0);
Cout: out std_logic);end Suma;
Architecture estructural of Suma is
component fa -- Declaración de componente a usar
port (a, b, c:in std_logic;
s, co: out std_logic);end component;
signal int: std_logic_vector(4 downto 0);
beginint(0) <= cin;
gen: for i in 0 to 3 generateu: fa port map (a=>A(i), b=>B(i), c=>int(i), s=>S(i), co=>int(i+1));
end generate;
Cout <= int(4);end estructural;
La estructura utilizada para implementar el sumador es la misma que la del ejemplo1
Sin embargo, cuando se utiliza la instrucción generate debe tenerse cuidado de incrementar de forma adecuada los índices