You are on page 1of 2

Laboratorio ALU

I. INTRODUCCION La unidad Aritmtico Lgica (ALU) es un componente que conforma la CPU, que almacena datos binarios que se encuentran en la memoria y ejecuta operaciones aritmticas bsicas, como: la suma, la resta, la multiplicacin, la divisin; y operaciones lgicas como OR, AND, NOT entre otras. Los valores de sus salidas dependen solamente de los valores de entrada (seleccionador de funcin). Varias clases de circuitos electrnicos realizan algn tipo de operacin aritmtica, como por ejemplo un reloj digital que suma un 1 al tiempo actual y comprueba si debe reiniciar su contador de segundos e incrementar el contador de minutos. Los dispositivos que operan mediante una ALU, ejecutan operaciones que son sencillas o complejas, como por ejemplo un microprocesador. La mayora de rdenes que ejecutan por un computador se hacen por medio de la ALU. II. OBJETIVOS A. Objetivo especifico:

Seleccionador (S) 000 001 010 011 100 101 110 111

Operando A-1 A+B A-B A+1 NOT A A AND B A A OR B

Tabla 1. Tabla de Seleccin de Operacin

Construir una ALU de manera estructural por medio del lenguaje VHDL, que realice operaciones aritmticas y lgicas sencillas B. Objetivos generales: Establecer operaciones bsicas de funcionamiento de la ALU. Identificar Acarreo de las operaciones realizadas.

Figura 1. Implementacin de la ALU

IV. DESARROLLO Se implementar estructuralmente en lenguaje VHDL el funcionamiento de una ALU, se tendr encuentran indicador de acarreo (C), segn el resultado de la operacin ejecutada. Se simulara el diseo y se verificara su correcto funcionamiento.

III. PLANTEAMIENTO DEL PROBLEMA Se pretende realizar una ALU de 4 bits con un seleccionador de 3 bits que ejecutara 8 operaciones que se indican en la siguiente tabla. Basados en el funcionamiento de una ALU, establecer las operaciones que se necesita para su implementacin.

IV. PROBLEMAS SIMULACIONES


Codigo
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ALU is generic(n:integer:=4); port ( A,B: in STD_LOGIC_VECTOR (n-1 DOWNTO 0); SELECCION: in std_logic_vector (2 downto 0); CARRY:OUT std_logic; RESULTADO: OUT std_logic_vector (n-1 downto 0):="0000" ); end ALU; architecture Behavioral of ALU is signal SENAL_A,SENAL_B: STD_LOGIC_VECTOR (n-1 DOWNTO 0); signal TOTAL:std_logic_vector (n downto 0); begin process (TOTAL,SENAL_A,SENAL_B,SELECCION) begin SENAL_A<=A; SENAL_B<=B; case (SELECCION) is when "000" => TOTAL<='0'&SENAL_A-'1'; when "001" => TOTAL<='0'&SENAL_A+SENAL_B; when "010" => TOTAL<='0'&SENAL_A-SENAL_B; when "011" => TOTAL<='0'&SENAL_A+'1'; when "100" => TOTAL<=NOT('0'&SENAL_A); TOTAL(4)<='0'; when "101" => TOTAL<='0'&SENAL_A AND '0'&SENAL_B; when "110" => TOTAL<='0'&SENAL_A; when "111" => TOTAL<='0'&SENAL_A OR '0'&SENAL_B; when others => TOTAL<="00000"; end case; RESULTADO<=TOTAL(n-1 downto 0); CARRY<=TOTAL(n); END PROCESS; END behavioral;

Combinaciones. A=13=1101 B= 5=0101 Seleccin 000 A-1 =12 =1100 Seleccin 001 A+B =15 =1111 Se activa el carry Seleccin 010 A-B =8 =1000 Seleccin 011 A+1 =14 =1110 Seleccin 100 NOT (A) = 2 =0010 Seleccin 101 A =13 =1101 Seleccin 110 (A) AND (B) =5 =0101 Seleccin 111 (A) OR (B) = 13=1101

Figura 2. Simulacin del funcionamiento de la ALU

You might also like