Académique Documents
Professionnel Documents
Culture Documents
SEGUNDO PARCIAL
5 DE JULIO DE 2017
INFORME PROYECTO
DISEÑO DE ALU
Integrantes:
Patricio Gomez
Rodrigo Rivas
NRC: 3658
Sangolquí - Ecuador
Índice de Contenido
Índice de Contenido............................................................................................................................ 1
Índice de Figuras ...................................................................................Error! Bookmark not defined.
Índice de Tablas ....................................................................................Error! Bookmark not defined.
1. OBJETIVOS .............................................................................................................................. 2
1.1. Objetivo General................................................................................................................. 2
1.2. Objetivo Especifico ............................................................................................................. 2
2. MATERIALES Y EQUIPOS ................................................................................................... 2
3. MARCO TEORICO ................................................................................................................. 3
3.1. Códigos BCD: ....................................................................................................................... 3
3.2. Operaciones bit a bit .......................................................................................................... 4
3.3. Proceso para multiplicación bit a bit de dos números. ................................................... 11
3.4. Programación en memoria EPROM para multiplicación bit a bit ................................... 12
4. DESCRIPCION DE FUNCIONAMIENTO DE CIRCUITO ............................................. 15
5. CONCLUSIONES RECOMENDACIONES ........................................................................ 16
1. OBJETIVOS
1.1. Objetivo General
Diseñar y construir una ALU (Unidad Aritmética Lógica) que me permite realizar 8
operaciones lógicas y aritméticas, de dos números formados por una solo cifra y cuyo
resultados es visible en display y led’s.
2. MATERIALES Y EQUIPOS
Materiales
Dip switch de 4 posiciones.
Resistencias.
Display 7 segmentos cátodo común.
Decodificadores BCD 74LS48.
Compuertas lógicas: 74LS32, 74LS08, 74LS04.
Memoria EPROM 2732.
Led’s de varios colores.
Cable conductor.
Equipos
Protoboard
Fuente de tensión 5V
Grabador de memorias
3. Problema
Diseñar y construir una unidad Aritmética lógica ALU que cumpla con las siguientes
especificaciones:
1. Bloque funcional:
Funcionalidad:
4. Análisis
Para resolver el problema planteado se decidió utilizar dos memorias ROM 2732 que posee 8
localidades y 8 salidas para lo cual va a ser programada cada localidad dependiendo de
funcionalidad y sus entradas, para la primera ROM se programara las salidas del display uno y para
la memoria dos se programara las salidas del display 2 y 3
5. MARCO TEORICO
Cuando se suman dos dígitos decimales representados en el código BCD (binary coded decimal) la
respuesta que se obtiene puede no estar en el código BCD, por lo que habría que efectuar una
corrección.
La corrección consiste en sumar el número 6 (0110) a los cuatro bits menos significativos
Para empezar la programación, hemos hecho una tabla de suma de todas las posibles sumas
de números binarios BCD que podemos obtener
x 0 1 2 3 4 5 6 7 8 9
0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
1 0001 0010 0011 0100 0101 0110 0111 1000 1001 10000
2 0010 0011 0100 0101 0110 0111 1000 1001 10000 10001
3 0011 0100 0101 0110 0111 1000 1001 10000 10001 10010
4 0100 0101 0110 0111 1000 1001 10000 10001 10010 10011
5 0101 0110 0111 1000 1001 10000 10001 10010 10011 10100
6 0110 0111 1000 1001 10000 10001 10010 10011 10100 10101
7 0111 1000 1001 10000 10001 10010 10011 10100 10101 10110
8 1000 1001 10000 10001 10010 10011 10100 10101 10110 10111
9 1001 1010 10001 10010 10011 10100 10101 10110 10111 11000
Debido a que la programación se la hizo en hexadecimal procedemos a convertir la tabla de la
suma en números hexadecimales
x 0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9 10
2 2 3 4 5 6 7 8 9 10 11
3 3 4 5 6 7 8 9 10 11 12
4 4 5 6 7 8 9 10 11 12 13
5 5 6 7 8 9 10 11 12 13 14
6 6 7 8 9 10 11 12 13 14 15
7 7 8 9 10 11 12 13 14 15 16
8 8 9 10 11 12 13 14 15 16 17
9 9 10 11 12 13 14 15 16 17 18
Como nuestro circuito posee dos memorias con 8 salidas hemos decido utilizar una memoria para
poder la cual nos entregara en las primera 4 salidas el código del número BCD de las unidades del
resultado que se conectara a un decoder y este a su vez aun display y los 4 siguientes salidas para
las decenas que sería el acarreo y este se conectara de igual manera a un decoder y luego a un
display para poder visualizar el resultado como se puede visualizar en la imagen.
Donde las entradas FF son las direcciones con números que no son BCD por lo cual se puso un
valor que no tiene importancia ya que la programación esta validad para que apaguen cuando no
son BCD
x 0 1 2 3 4 5 6 7 8 9
0 0000 10001 10010 10011 10100 10101 10110 10111 11000 11001
1 0001 0000 10001 10010 10011 10100 10101 10110 10111 11000
2 0010 0001 0000 10001 10010 10011 10100 10101 10110 10111
3 0011 0010 0001 0000 10001 10010 10011 10100 10101 10110
4 0100 0011 0010 0001 0000 10001 10010 10011 10100 10101
5 0101 0100 0011 0010 0001 0000 10001 10010 10011 10100
6 0110 0101 0100 0011 0010 0001 0000 10001 10010 10011
7 0111 0110 0101 0100 0011 0010 0001 0000 10001 10010
8 1000 0111 0110 0101 0100 0011 0010 0001 0000 10001
9 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000
Donde podemos visualizar que en los números negativos posee un bit más que indica el signo
negativo
Al poseer dos memorias y tres display se decidió utilizar una memoria para poder visualizar los
números y la otra memoria con un display para poder visualizar el signo menos
signo A B C D E F G PT
valor 0 0 0 0 0 0 1 0
Como el numero binario 01000000 en hexadecimal es 40 utilizamos esta numero para programar
Obteniendo así nuestra respuesta en el display uno se visualizara el signo y en el display 2 y 3 los
números de la resta
Debido a que para la rom uno tomaremos los dígitos para las primeras salidas y las unidades en las
4 últimas salidas la tabla a números hexadecimales
x 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 5 6 7 8 9
1 0 1 2 3 4 6 7 8 9 10
2 0 2 4 6 8 7 8 9 10 11
3 0 3 6 9 12 8 9 10 11 12
4 0 4 8 12 16 9 10 11 12 13
5 0 5 10 15 20 10 11 12 13 14
6 0 6 12 18 24 11 12 13 14 15
7 0 7 14 21 28 12 13 14 15 16
8 0 8 16 24 32 13 14 15 16 17
9 0 9 18 27 36 14 15 16 17 18
x 0 1 2 3 4 5 6 7 8 9
0 ERROR 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
1 ERROR 1,00 0,50 0,33 0,25 0,20 0,17 0,14 0,13 0,11
2 ERROR 2,00 1,00 0,67 0,50 0,40 0,33 0,29 0,25 0,22
3 ERROR 3,00 1,50 1,00 0,75 0,60 0,50 0,43 0,38 0,33
4 ERROR 4,00 2,00 1,33 1,00 0,80 0,67 0,57 0,50 0,44
5 ERROR 5,00 2,50 1,67 1,25 1,00 0,83 0,71 0,63 0,56
6 ERROR 6,00 3,00 2,00 1,50 1,20 1,00 0,86 0,75 0,67
7 ERROR 7,00 3,50 2,33 1,75 1,40 1,17 1,00 0,88 0,78
8 ERROR 8,00 4,00 2,67 2,00 1,60 1,33 1,14 1,00 0,89
9 ERROR 9,00 4,50 3,00 2,25 1,80 1,50 1,29 1,13 1,00
Como poseemos dos memorias y tres displays para la memoria uno con dos displays se visualizara
los números decimales y para la otra memoria se visualizara el número entero con punto
x 0 1 2 3 4 5 6 7 8 9
0 AA 0 0 0 0 0 0 0 0 0
1 AA 0 50 33 25 20 17 14 13 11
2 AA 0 0 67 50 40 33 29 25 22
3 AA 0 50 0 75 60 50 43 38 33
4 AA 0 0 33 0 80 67 57 50 44
5 AA 0 50 67 25 0 83 71 63 56
6 AA 0 0 0 50 20 0 86 75 67
7 AA 0 50 33 75 40 17 0 88 78
8 AA 0 0 67 0 60 33 14 0 89
9 AA 0 50 0 25 80 50 29 13 0
Para la segunda memoria que nos entregara el número entero con punto
signo A B C D E F G PT
0 1 1 1 1 1 1 0 1
1 0 1 1 0 0 0 0 1
2 1 1 0 1 1 0 1 1
3 1 1 1 1 0 0 1 1
4 0 1 1 0 0 1 1 1
5 1 0 1 1 0 1 1 1
6 0 0 1 1 1 1 1 1
7 1 1 1 0 0 0 0 1
8 1 1 1 1 1 1 1 1
9 1 1 1 0 0 1 1 1
E 1 0 0 1 1 1 1 1
x 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01
2 00 00 02 02 00 00 02 02 00 00 02 02 00 00 02 02
3 00 01 02 03 00 01 02 03 00 01 02 03 00 01 02 03
4 00 00 00 00 04 04 04 04 00 00 00 00 04 04 04 04
5 00 01 00 01 04 05 04 05 00 01 00 01 04 05 04 05
6 00 00 02 02 04 04 06 06 00 00 02 02 04 04 06 06
7 00 01 02 03 04 05 06 07 00 01 02 03 04 05 06 07
8 00 00 00 00 00 00 00 00 08 08 08 08 08 08 08 08
9 00 01 00 01 00 01 00 01 08 09 08 09 08 09 08 09
A 00 00 02 02 00 00 02 02 08 08 0A 0A 08 08 0A 0A
B 00 01 02 03 00 01 02 03 08 09 0A 0B 0B 0B 0B 0B
C 00 00 00 00 04 04 04 04 08 08 08 0B 0C 0B 0B 0C
D 00 01 00 01 04 05 04 05 08 09 08 0B 0B 0D 0B 0D
E 00 00 02 02 04 04 06 06 08 08 0A 0B 0B 0B 0E 0E
F 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Tabla 4 Tabla de multiplicación Bit a Bit en Hexadecimal
A B OR
0 0 0
0 1 1
1 0 1
1 1 1
Tabla 2 Tabla lógica de la compuerta AND
El resultado en cada posición es 1 si cualquiera de los sumandos es 1, y 0 cuando ambos
sean 0, por ejemplo:
5.11. Programación en memoria EPROM para suma bit a bit
Realizamos un cuadro de suma para los posibles casos dados, la cual tiene semejanza con
un cuadro de suma normal:
+ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
1 0001 0001 0011 0011 0101 0101 0111 0111 1001 1001 1011 1011 1101 1101 1111 1111
2 0010 0011 0010 0011 0110 0111 0110 0111 1010 1011 1010 1011 1110 1111 1110 1111
3 0011 0011 0011 0011 0111 0111 0111 0111 1011 1011 1011 1011 1111 1111 1111 1111
4 0100 0101 0110 0111 0100 0101 0110 0111 1100 1101 1110 1111 1100 1101 1110 1111
5 0101 0101 0111 0111 0101 0101 0111 0111 1101 1101 1111 1111 1101 1101 1111 1111
6 0110 0111 0110 0111 0110 0111 0110 0111 1110 1111 1110 1111 1110 1111 1110 1111
7 0111 0111 0111 0111 0111 0111 0111 0111 1111 1111 1111 1111 1111 1111 1111 1111
8 1000 1001 1010 1011 1100 1101 1110 1111 1000 1001 1010 1011 1100 1101 1110 1111
9 1001 1001 1011 1011 1101 1101 1111 1111 1001 1001 1011 1011 1101 1101 1111 1111
10 1010 1011 1010 1011 1110 1111 1110 1111 1010 1011 1010 1011 1110 1111 1110 1111
11 1011 1011 1011 1011 1111 1111 1111 1111 1011 1011 1011 1011 1111 1111 1111 1111
12 1100 1101 1110 1111 1100 1101 1110 1111 1100 1101 1110 1111 1100 1101 1110 1111
13 1101 1101 1111 1111 1101 1101 1111 1111 1101 1101 1111 1111 1101 1101 1111 1111
14 1110 1111 1110 1111 1110 1111 1110 1111 1110 1111 1110 1111 1110 1111 1110 1111
15 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
Aplicando el mismo concepto de figura 2, creamos una nueva tabla que tendrá la
programación:
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
1 01 01 03 03 05 05 07 07 09 09 0B 0B 0D 0D 0F 0F
2 02 03 02 03 06 07 06 07 0A 0B 0A 0B 0E 0F 0E 0F
3 03 03 03 03 07 07 07 07 0B 0B 0B 0B 0F 0F 0F 0F
4 04 05 06 07 04 05 06 07 0C 0D 0E 0F 0C 0D 0E 0F
5 05 05 07 07 05 05 07 07 0D 0D 0F 0F 0D 0D 0F 0F
6 06 07 06 07 06 07 06 07 0E 0F 0E 0F 0E 0F 0E 0F
7 07 07 07 07 07 07 07 07 0F 0F 0F 0F 0F 0F 0F 0F
8 08 09 0A 0B 0C 0D 0E 0F 08 09 0A 0B 0C 0D 0E 0F
9 09 09 0B 0B 0D 0D 0F 0F 09 09 0B 0B 0D 0D 0F 0F
A 0A 0B 0A 0B 0E 0F 0E 0F 0A 0B 0A 0B 0E 0F 0E 0F
B 0B 0B 0B 0B 0F 0F 0F 0F 0B 0B 0B 0B 0F 0F 0F 0F
C 0C 0D 0E 0F 0C 0D 0E 0F 0C 0D 0E 0F 0C 0D 0E 0F
D 0D 0D 0F 0F 0D 0D 0F 0F 0D 0D 0F 0F 0D 0D 0F 0F
E 0E 0F 0E 0F 0E 0F 0E 0F 0E 0F 0E 0F 0E 0F 0E 0F
F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F
6. DESCRIPCION DE FUNCIONAMIENTO DE CIRCUITO
Como se puede visualizar en el circuito las memorias están conectadas en las entradas los
números binarios de A y B y los selectores, los números binarios de A y B se conectaran a
su respectivo decoder que permitirá la visualización en los displays y estos se conectaran
con compuertas AND y OR para validar que sean números BCD caso contrario se apagaran
los diplasy y también los de salida
Los leds estarán conectadas a la memoria 2 (la de arriba) que estar programada
dependiendo el caso que exista
7. CONCLUSIONES RECOMENDACIONES
Conclusiones
El uso de las memorias ROM nos pueden facilitar el circuito y a su vez disminuirlo ya
que al poder grabar las respuesta no será el uso necesario de varios integrados como
compradores o sumadores
Se concluye que una ALU nos permite realizar varias operaciones aritméticas y lógicas
que pueden servirnos en diferentes casos
Recomendaciones