Está en la página 1de 5

Instituto Tecnológico de Santo Domingo (INTEC)

Clave: IEC208L

Sección: 3

Tema:

Implementar en VHDL el sumador parametrizado y la ALU

Nombre

Gian Susana Sánchez

ID:1099881

Asignatura: FUNDAMENTOS ELECTRÓNICA DIGITAL

Nombre del profesor/a: YOBANY DIAZ ROQUE


Objetivo: Implementar en VHDL el sumador serie de N bits y la ALU

Procedimiento
Sumador serie de N bits
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY NAdder IS
GENERIC(iAnchoPalabra: integer:=8);
PORT ( svA, svB: IN std_logic_vector(iAnchoPalabra-1 DOWNTO 0);
sCarryIn:IN std_logic;
svSum: OUT std_logic_vector(iAnchoPalabra-1 DOWNTO 0);
sCarryOut:OUT std_logic);
END NAdder;

ARCHITECTURE NAdderArch OF NAdder IS


-- Se declara el uso de componentes tipo FullAdder.
COMPONENT FullAdder
--Se indica los puertos que tiene el componente.
PORT ( sA, sB, sCin: IN std_logic;
sSuma, sAcarreo: OUT std_logic);
END COMPONENT;

Arquitectura:
-- Señal auxiliar para la propagacióon de acarreos.
SIGNAL svCarryTemp: std_logic_vector(iAnchoPalabra DOWNTO 0);

BEGIN --Comienzo de la arquitectura.


-- Se inicializa el acarreo.
svCarryTemp(0)<=sCarryIn;
-- Se genera el conjunto de FullAdders.
GeneraFA: FOR i IN 0 TO iAnchoPalabra-1 GENERATE
FA: FullAdder PORT MAP (sA=>svA(I), sB=>svB(I),
sCin=>svCarryTemp(I),
sSuma=>svSum(I),
sAcarreo=>svCarryTemp(I+1));
END GENERATE;

-- Se genera el acarreo de salida.


sCarryOut<=svCarryTemp(iAnchoPalabra);

END NAdderArch;
ALU

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
--Necesaria para el operador &
use IEEE.std_logic_unsigned.all;
---------------------------------------------
ENTITY ALU IS
PORT (--Asociadas al indicador de Flag.
sCLK, sResetL, sIdFlag: IN std_logic;
sFlag: OUT std_logic;
--Asociadas al Multiplexor.
sInALU: IN std_logic;
svEntradaB:IN std_logic_vector(3 DOWNTO 0);
--Asociadas a la ALU.
sOpALU: IN std_logic;
svEntradaA:IN std_logic_vector(3 DOWNTO 0);
svResultado:OUT std_logic_vector(4 DOWNTO 0));
END ALU;
Arquitectura:
ARCHITECTURE ALUArch OF ALU IS
--Señales internas del Sistema
signal svRealB: std_logic_vector(3 DOWNTO 0);
signal sZero: std_logic;
BEGIN
--Descripción del proceso concurrente asociado
--al funcionamiento del bloque Multiplexor.
Mux:PROCESS (svEntradaB, sInALU)
BEGIN
IF (sInALU = '0')
THEN svRealB <= svEntradaB;
--Asignación de 0 a un vector con OTHERS.
ELSE svRealB <= (OTHERS => '0');
END IF;
END PROCESS Mux;

También podría gustarte