Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DE MÉXICO
FACULTAD DE INGENIERÍA
DISEÑO DIGITAL
PROYECTO FINAL
CALCULADORA 4 BITS
PROFESOR
JOSÉ MIGUEL MARTÍNEZ ALCARAZ
ALUMNOS
DÍAZ ALVA ALEXIS
AGUILAR MENDOZA JOSÉ ULISES
SEMESTRE
2019-1
INTRODUCCIÓN
Las compuertas lógicas son de gran utilidad en el diseño de los circuitos lógicos. En el estudio de
las compuertas será analizada su operación lógica mediante el álgebra booleana. También veremos
cómo se combinan las compuertas lógicas para producir circuitos lógicos que serán analizados
mediante dicha álgebra.
El álgebra booleana se utiliza para expresar los efectos que los diversos circuitos digitales ejercen
sobre las entradas lógicas y para manipular variables lógicas con el objetivo de determinar el mejor
método de ejecución de cierta función de un circuito. De hecho en el álgebra de Boole solo existen
tres operaciones básicas:
• OR
• AND •
NOT.
Usaremos el álgebra booleana primero para describir y analizar estas compuertas lógicas básicas y
más tarde para analizar combinaciones de compuertas lógicas conectadas como circuitos lógicos.
Cuando trabajamos con puertas lógicas debemos diferenciar el si ́mbolo de la puerta lógica de su
apariencia fi ́sica.
Compuerta AND
Para la compuerta AND, La salida estará en estado alto de tal manera que solo si las dos entradas
se encuentran en estado alto. Por esta razón podemos considerar que es una multiplicación
binaria.
Compuerta OR
La compuerta OR, la salida estará en estado alto cuando cualquier entrada o ambas estén en
estado alto. De tal manera que sea una suma lógica.
Compuerta NOT
En la compuerta NOT, el estado de la salida es inversa a la entrada. Evidentemente, una negación.
Compuerta NOR
En la compuerta NOR, cuando las dos entradas estén estado bajo la salida estará en estado alto.
Esencialmente una OR negada.
Compuerta XOR
La compuerta XOR Su salida estará en estado bajo cuando las dos entradas se encuentren en
estado bajo o alto. Al mismo tiempo podemos observar que entradas iguales es cero y diferentes
es uno.
Las compuertas además de tener un nombre, también se pueden identificar con una numeración,
la cual es:
AND = 7408
OR = 7432
NOT = 7404
NAND = 7400
NOR = 7402
XOR = 7486
En resumen una compuerta lógica es la mínima operación digital que se puede realizar. Existen al
menos 4 operaciones básicas, la multiplicación lógica (AND), suma lógica (OR), la negación lógica
(NOT) y la comparación lógica (XOR). El resto de las operaciones se realizan con las anteriores y sus
negaciones.
Una compuerta lógica es un conjunto de transistores que realizan dichas operaciones. Estas son los
bloques básicos con los que están construidos los sistemas digitales actuales.
Como se trata de un circuito integrado debe ir alimentado, conectado a una pila. En este caso, la
patilla 7 corresponde con el polo negativo o tierra (GND) y la patilla 14 con la alimentación positiva
(Vcc). El resto corresponde a las puertas lógicas, por ejemplo, la patilla 1 y 2 corresponden con las
entradas de una puerta AND y la patilla 3 seri ́a la salida a dicha puerta.
DESARROLLO
Sumador
Partiendo de la tabla de verdad de un sumador completo de 1 bit:
Para obtener un sumador completo de 4 bit se necesita conectar 4 sumadores completos, como se
muestra a continuación:
En donde los valores de los dos números de 4 bit a sumar son ingresados mediante dos dipswitch.
Restador
Multiplicador
Partiendo de la estructura de una multiplicación binaria:
Y recordando la multiplicación de números binarios:
En donde las multiplicaciones bit por bit se realizan usando 16 compuertas AND
Y las sumas mediante sumadores de 4 bits, dejando los correspondientes corrimientos:
Divisor
Para el caso de la división, el proceso es más complejo, por lo que generalmente en este tipo
circuitos se utilizan memorias, o circuitos secuenciales.
Y 7 entre 14:
Y por medio de leds, en donde se obtiene la parte entera de la operación y se muestra en leds, y la
parte del sustraendo que igualmente es mostrada en leds:
float div ;
float div1;
float valor1; float valor2, centenas,
decenas;
int num1, num2, num3, num4;
TRISD = 0x00;
TRISE = 0x01;
TRISB = 0x00;
TRISA=0x00;
TRISC=0x01;
TRISC=0x00;
do{
valor1 =
(input(PIN_C5))*1+(input(PIN_C6))*2+(input(PIN_C7))*4+(input(PIN_E0))*8; valor2 =
(input(PIN_B4))*1+(input(PIN_B5))*2+(input(PIN_B6))*4+(input(PIN_B7))*8;
div=(valor1/valor2)*100; num4=div/1000;
centenas=div-num4*1000;
num3=centenas/100;
PORTA=num4;
PORTC=num3; decenas=centenas-
num3*100; num2=decenas/10;
PORTD=num2;
num1=decenas-num2*10;
PORTB=num1;
}while(1); }
TRISD = 0x00;
TRISE = 0x01;
TRISB = 0x00;
TRISA=0x00;
TRISC=0x01;
TRISC=0x00;
do{
valor1 =
(input(PIN_B3))*8+(input(PIN_B2))*4+(input(PIN_B1))*2+(input(PIN_B0))*1; valor2 =
(input(PIN_B4))*1+(input(PIN_B5))*2+(input(PIN_B6))*4+(input(PIN_B7))*8; if (valor1
==0){ div=0;
res=0;
}
else{
div=(valor2/valor1); res=valor2%valor1;
}
PORTA=div;
PORTD=res;
}while(1);}