Documente Academic
Documente Profesional
Documente Cultură
San Marcos
Trabajo: Laboratorio 5
13/11/2018
A) Para el circuito:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fulladder4bits is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
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 fulladder4bits;
begin
end Behavioral;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity calculadora is
port ( A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0);
masmenos : in std_logic;
resultado : out std_logic_vector(3 downto 0));
end calculadora;
architecture behavioral of calculadora is
begin
C <=A when A(3)='0' else A - A(3);
resultado <= (A - B) when masmenos ='1' else (A + B);
end behavioral;
mas cerca
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity calculadora is
port ( A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0);
D : out std_logic_vector(3 downto 0);
E : in std_logic_vector(3 downto 0);
F : in std_logic_vector(3 downto 0);
masmenos : in std_logic;
resultado : out std_logic_vector(3 downto 0));
end calculadora;
architecture behavioral of calculadora is
begin
C <=A when A(3)='0' else A - A(3);
D <=B when B(3)='0' else B - B(3);
C <=E;
D <=F;
resultado <= (E - F) when masmenos ='1' else (E + F);
end behavioral;
B) Diseñar un sumador-restador en complemento a 1, en base al 74LS283.
Simular para los números A y B positivos y negativos.
C (n – 1) An Bn n Cn
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
C1 – C3 son generados internamente
C0 es una entrada externa
C4 es una salida generada internamente
Sumador-Restador:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fulladder is
port (a,b,cin: in bit;
s,cout: out bit);
end fulladder;
architecture behavioral of fulladder is
begin
s<= a xor b xor cin;
cout<= (a and b) or (a and cin) or (b and cin);
end behavioral;
C)
El criterio para diseñar este codificador se basa en el hecho de que para los binarios
de 0 a 9 la salid en BCD es igual a la entrada y que para el intervalo de 10 a 19 la
salida BCD es la entrada sumada en 0110 (6 en binario).
Entonces se utilizo un FA de 4 bits para sumar A4A3A2A1 + 110*(M). donde M es 1
para entradas de 10 a 19 y 0 para entradas de 0 a 9. El factor M se multiplico a los 1
del sumando 0110.
Además el ultimo acarreo del FA se suma a A4 para obtener el bit de salida mas
significativo(el bit de las decenas).
M=A4A3A2A1 + A4A3
D) Diseñar una década sumadora expandible para números en exceso a 3.
Usando 2 full adder de 4 bits.
1
57 0111
0101
+4𝐴 + 0100 + 1010
74 1101 0001
1101(+3) 0011
(−3)
0111 0111
E) Diseñar un comparador común para 2 numeros de 4 bits en binario natural,
usar solo bloque sumador completo de 4 bits y puertas simples.
Código VHDL
library ieee;
use IEEE.std_logic_1164.all;
entity Comparador is
port(A,B: in std_logic_vector(3 downto 0);
mayor, menor, igual: out std_logic); --declaración variables de salida
END Comparador;
architecture situacion of Comparador is
begin
mayor <= '1' when (A>B)else '0'; --A > B, salida mayor a 1, resto a 0
menor <= '1' when (A<B)else '0'; --A<B, salida menor a 1, resto a 0
igual <= '1' when (A=B)else '0'; --A=B, salida igual a 1, resto a 0
END situacion;
F) Convertir de BCD (2-4-2-1) AIken a BCD natural. Usar un full adder de 4 bits.
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0
0 0 1 1 0 0 1 1
0 1 0 0 0 1 0 0
1 0 1 1 0 1 0 1
1 1 0 0 0 1 1 0
1 1 0 1 0 1 1 1
1 1 1 0 1 0 0 0
1 1 1 1 1 0 0 1
Para esta simulación haremos que nuestro circuito detecte los 1 del bit más a
la izquierda y actué como sumador, el circuito hace que se le sume (-6) a la
entrada para que se convierta en código BCD natural.
Pero si en la entrada se detecta que el bit de la izquierda es 0, entonces el
número seguirá igual.