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);
begin

int(0) <= cin;
gen: for i in 0 to 3 generate

u: 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

Anterior
Volver a inicio curso
Volver a inicio capítulo


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: VHDL estructurado