Tema: Circuitos combinacionales
implementados en FPGA
Curso: Laboratorio de circuitos
digitales
Informe: Laboratorio número 4
Profesor: Granados Ly Alfredo
Alumno: Rosario Granados Renzo Luis
Código: 18190160
Horario: jueves de 10:00am a 12:00pm
LIMA-PERÚ
2020
1. Implemente el circuito semisumador (HALF_ADDER) en el módulo FPGA,
complete la siguiente tabla de verdad con los resultados obtenidos:
Utilicé el simulador MAX+PLUS II:
ENTRADAS SALIDAS
X Y C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
2. Utilizando el módulo HALF_ADDER creado en el punto anterior, implemente
el circuito FULL_ADDER en el módulo FPGA. Complete la siguiente tabla de
verdad:
Utilicé el simulador MAX+PLUS II:
Xi Yi Cin C S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
3. Utilizando el módulo FULL_ADDER creado en el punto anterior, implemente
el circuito sumador de 2 números de 3 bits c/u.
Utilicé el simulador MAX+PLUS II:
Co A2A1A0 B2B1B0 C3 S2S1S0
0 011 100 0 101
1 010 011 0 111
0 100 100 0 001
1 010 101 0 111
0 001 111 0 001
1 101 110 0 111
4. Utilizando el módulo FULL_ADDER creado en el punto 2, implemente el
circuito sumador / restador de 2 números de 4 bits c/u. Utilice los SWITCH
para las entradas de los números y un botón como el selector de operación M.
Utilicé el simulador MAX+PLUS II:
A continuación mostrare con diferentes valores:
En: A = 0010, B = 0011, M=0, S = 0101, C = 0, V = 0
En: A = 0010, B = 0011, M=1, S = 1111, C = 0, V = 0
En: A = 0101, B = 0010, M = 0, S = 0111, C = 0, V = 0
En: A = 0101, B = 0010, M = 1, S = 0011, C = 1, V = 0
En: A = 0111, B = 1000, M=0, S = 1111, C = 0, V = 0
En: A = 0111, B = 1000, M=1, S = 1111, C = 0, V = 1
En: A = 1111, B = 0110, M=0, S = 0101, C = 1, V = 0
En: A = 1111, B = 0110, M=1, S = 1001, C = 1 V =0
Complete la siguiente tabla:
A = 0010, B = 0011, M=0, S = 0101, C = 0, V = 0
A = 0010, B = 0011, M=1, S = 1111, C = 0, V = 0
A = 0101, B = 0010, M=0, S = 0111, C = 0, V = 0
A = 0101, B = 0010, M=1, S = 0011, C = 1, V = 0
A = 0111, B = 1000, M=0, S = 1111, C = 0, V = 0
A = 0111, B = 1000, M=1, S = 1111, C = 0, V = 1
A = 1111, B = 0110, M=0, S = 0101, C = 1, V = 0
A = 1111, B = 0110, M=1, S = 1001, C = 1, V =0
Cuál es la función de la salida V: la función es una compuerta XOR: 𝐶3⊕𝐶4
donde si hay entradas iguales sale 0 lógico y si son diferentes saldrá 1 lógico
5. Consideremos la suma aritmética de dos dígitos decimales en BCD
junto con un acarreo de entrada de una etapa anterior. Puesto que
ninguno de los dígitos de entrada es mayor que 9, la suma de salida
no puede ser mayor que 9+9+1=19, donde el 1 de la suma es el
acarreo de entrada. Suponga que aplicamos dos dígitos BCD a un
sumador binario de cuatro bits. El sumador formará la suma en
binario y producirá un resultado entre 0 y 19. Estos números
binarios se presentan en forma de lista en la tabla que se muestra en
la siguiente página y se rotulan con los símbolos K, Z8, Z4, Z2 y
Z1. K es el acarreo, y los subíndices de Z representan los pesos 8,
4, 2 y 1 que se pueden asignar a los cuatro bits en el código BCD.
Las columnas bajo “Suma binaria” presentan el valor binario que
aparece en las salidas del sumador binario de cuatro bits. La suma
de dos dígitos decimales se debe representar en BCD, así que
deberá aparecer en la forma presentada en la columna bajo “Suma
BCD”. El problema consiste en encontrar una regla para convertir
la suma binaria en la representación BCD correcta de la suma.
Suma Binaria Decimal
K Z8 Z4 Z2 Z1
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 2
0 0 0 1 1 3
0 0 1 0 0 4
0 0 1 0 1 5
0 0 1 1 0 6
0 0 1 1 1 7
0 1 0 0 0 8
0 1 0 0 1 9
0 1 0 1 0 10
0 1 0 1 1 11
0 1 1 0 0 12
0 1 1 0 1 13
0 1 1 1 0 14
0 1 1 1 1 15
1 0 0 0 0 16
1 0 0 0 1 17
1 0 0 1 0 18
1 0 0 1 1 19
Suma BCD Decimal
C S8 S4 S2 S1
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 2
0 0 0 1 1 3
0 0 1 0 0 4
0 0 1 0 1 5
0 0 1 1 0 6
0 0 1 1 1 7
0 1 0 0 0 8
0 1 0 0 1 9
0 1 0 1 0 10
0 1 0 1 1 11
0 1 1 0 0 12
0 1 1 0 1 13
0 1 1 1 0 14
0 1 1 1 1 15
1 0 0 0 0 16
1 0 0 0 1 17
1 0 0 1 0 18
1 0 0 1 1 19
Al examinar el contenido de la tabla, será evidente que cuando la suma
binaria es 1001 o menos, el número BCD correspondiente es idéntico, de
modo que no es necesaria conversión alguna. Cuando la suma binaria es
mayor que 1001, se obtiene una representación no válida en BCD. La suma
de 6 binario (0110) a la suma binaria la convierte en la representación BCD
correcta y también produce el acarreo de salida necesario.
El circuito de lógica que detecta la corrección necesaria se deduce de las
entradas de la tabla. Es obvio que se necesita una corrección cuando la
suma binaria tiene un acarreo de salida K=1. Las otras seis combinaciones
(1010 a 1111) que necesitan una corrección tienen un 1 en la posición Z8.
Para distinguirlas de los números binarios 1000 y 1001, que también
tienen un 1 en la posición Z8, especificamos además que Z4 o Z2 deben
tener un 1. La condición para la corrección y el acarreo de salida se
expresa mediante la función booleana:
C=K+Z8Z4+Z8Z2
Cuando C=1, es necesario sumar 0110 a la suma binaria y generar un
acarreo de salida para la etapa siguiente.
En la siguiente figura se observa un sumador BCD que suma dos dígitos
BCD y produce un dígito de suma en BCD. Primero se suman los dos
dígitos decimales, junto con el acarreo de entrada, en el sumador de
cuatro bits de la parte de arriba, para producir la suma binaria. Si el
acarreo de salida es 0, no se suma nada a la suma binaria. Si es 1, se suma
0110 binario a la suma binaria con el sumador de cuatro bits de la parte
de abajo. El acarreo de salida generado por el sumador de abajo se
desecha, pues proporciona información con que ya se cuenta en la
terminal de acarreo de salida. Un sumador decimal en paralelo que suma
n dígitos decimales necesita n etapas de sumador BCD. El acarreo de
salida de una etapa deberá conectarse al acarreo de entrada de la siguiente
etapa de orden superior.
6. Implemente un circuito sumador de 4 bits con nombre SUM_BIN_4BITS y
con este módulo implemente el circuito SUMA_BCD de la gráfica anterior.
Complete la siguiente tabla:
Se tiene el siguiente circuito implementado en el max plus 2:
Agrupando los pines suma1, suma2, suma3 y suma4 en sumando1; también
suma5, suma6, suma 7 y suma8 en sumando2, se tiene la siguiente gráfica:
Completando los datos en la tabla:
Sumando1 = 0000 , Sumando2 = 0000 , Resultado=0000
Sumando1 = 0001 , Sumando2 = 0001 , Resultado = 0010
Sumando1 = 0010 , Sumando2 = 0010 , Resultado = 0100
Sumando1 = 0011 , Sumando2 = 0011 , Resultado = 0110
Sumando1 = 0100 , Sumando2 = 0100 , Resultado = 1000
Sumando1 = 0101 , Sumando2 = 0101 , Resultado = 1010
Sumando1 = 0110 , Sumando2 = 0110 , Resultado = 1010
Sumando1 = 0111 , Sumando2 = 0111 , Resultado = 0100
Sumando1 = 1000 , Sumando2 = 1000 , Resultado = 0110
7. implemente el circuito en VHDL
En la simulación se obtiene que:
8. Implementando el siguiente circuito en VHDL:
En la simulación se obtiene que:
Implementar el circuito sumador 2 dígitos BCD en VHDL:
Implementación en VHD:
Se obtiene:
PROBLEMA PROPUESTO:
Implemente el circuito sumador de dos dígitos BCD en
VHDL.
Usé el simulador MAX+PLUS II:
Compilamos y simulamos:
Tenemos la suma en binario:
Simulación tipo TEMPORAL
Simulación tipo FUNCIONAL