MICRO CONTROLADORES I INGENIERÍA SISTEMAS ELECTRÓNICOS
UNIDAD ARITMÉTICA LÓGICA IMPLEMENTACION DE LA UNIDAD ARITMÉTICA LÓGICA CON EL PROGRAMA DE SIMULACIÓN PROTEUS
INTEGRANTES:
ING:
Paralelo :
La paz-Bolivia
(2018)
INDICE
I.ABSTRACT.........................................................................................................................4 II.AGRADECIMIENTO.........................................................................................................4 II.DEDICATORIA..................................................................................................................4 III.RESUMEN......................................................................................................................... IV.INTRODUCCIÓN..............................................................................................................5 V.OBJETIVOS........................................................................................................................5 Objetivo General Objetivo Específico VI.MARCO TEÓRICO.............................................................................................................5 Unidad Aritmética Lógica Operaciones de la ALU Compuertas Lógicas Compuerta AND Compuerta OR compuerta NOT compuerta de multiplexor compuerta comparador VII.Desarrollo de la ALU...........................................................................................................................................9 Bloque AND Bloque OR Bloque XOR SUMADOR RESTADOR,XOR y AND MULTIPLEXOR VIII.ILUSTRACIONES INTERNAS DE LA UNIDAD ARITMÉTICA LÓGICA EN PROTEUS...................................................................................................................................6 ALU genera
bloque de and composición interna de bloque and bloque or composición interna de bloque or bloque xor composición interna de bloque xor composición de sumador restador composición interna de sumador restador composición de full adder bloque de mux composición interna de mux de 4 partes parte 1,2,3,4 bloque de mux IX.BLOQUE DE LA MEMORIA..................................................................................................................................14 BLOQUE DE REGISTRO EN BASE DE FLIP FLOPS Composición interna del registro en base de flip flops D BLOQUE DE BANDERAS “PARIDAD” Composición interna de bloque Paridad BLOQUE DE BANDERAS “CARRY" Composición interna de bloque Paridad X.CONCLUSIONES.............................................................................................................15 XI.RECOMENDACIONES...................................................................................................16 XII.REFERENCIAS..............................................................................................................16
I.ABSTRACT Due to the demand to improve the capacity of the processors to handle the most complex and challenging processors, the integration of several processor cores in a chip has been achieved. Even so, the load on the processor is not less in the generic system. An arithmetic logic unit (ALU) is the heart of all microprocessors. It is a combinatorial logical unit that performs its logical or arithmetic operations. ALU is becoming smaller and more complex today to allow the development of a more powerful but smaller computer. In this work, a proposed 4-bit ALU has been designed so that the benefits of all the calculations have been made and are available at the same time. KEYWORDS: Door, arithmetic logic unit, processor
AGRADECIMIENTO Agradecemos a todas las personas que hicieron posible la elaboración de nuestro trabajo, entre ellos a nuestro Docente ING. GERMAN JESUS PEREIRA , compañeros que formaron parte de esta gran aventura.
III.RESUMEN
II.DEDICATORIA A nuestro Docente por su tiempo compartido Y por impulsarnos el desarrollo de nuestra formación profesional y por apoyarnos en su momento en la elaboración de nuestro trabajo, también a nuestros amigos, quienes nos brindaron todo su apoyo y motivación.
Al aumentar la demanda de mejorar la capacidad de los procesadores más complejos y desafiantes ha resultado en la integración de una serie de núcleos de procesador en un chip. Todavía la carga de en el procesador no es menos en el sistema genérico. Una unidad de lógica aritmética (ALU) es el corazón de todos los microprocesadores. Es una unidad lógica combinatoria que realiza sus operaciones lógicas o aritméticas. ALU es cada vez más pequeño y más complejo hoy en día para permitir el desarrollo de un ordenador más potente pero más pequeño. En este trabajo se a ha propuesto una de 4 bits ALU ha sido diseñado para los beneficios de todos los cálculos, al mismo tiempo también en el diseño por unidades de una ALU que se presentan en los sistemas digitales, donde realizaremos una implementación de algunos operadores aritméticos donde constara de una Unidad aritmética. Sumador - restador de Unidad lógica Operaciones lógicas AND, OR, NOT, XOR. El formato de cada número está conformado por una trama de n-bits: que conforman un número en complemento a dos, aparte se le agregan 2 bits para representar el signo y números que no tienen representación logarítmica, como el cero, indeterminaciones e indefiniciones.
IV.INTRODUCCIÓN Este proyecto fue realizado para poner en práctica lo aprendido durante el curso, ya que antes de empezarlo se tenía un conocimiento casi nulo sobre los temas vistos, como el funcionamiento de una compuerta lógica, ya sea positiva o negativa. A su vez temas nuevos, como la utilización de un mapa de Karnaugh. Así mismo el proyecto es orientado a la implementación de las compuertas lógicas, su comportamiento, etc. Puesto que existen circuitos integrados ya existentes que hacen la función de una manera más fácil y sencilla, pero a su vez desconocemos su funcionamiento interno, ese es el ¿por qué? de la realización de este proyecto, ver, analizar y comprender como funcionan internamente dichos circuitos, como son los multiplexores, sumadores, restadores, etc. A su vez se hizo un análisis de como el lenguaje binario es implementado en las compuertas lógicas para un mejor entendimiento “simulación”
El sistema de numeración con base logarítmica permite realizar multiplicaciones, divisiones de una manera más simple que un sistema de numeración de punto fijo pero con la dificultad que la realización de operaciones de suma y resta, se vuelve más compleja. Un beneficio obtenido al utilizar un sistema de numeración con base logarítmica, es que el rango numérico puede incrementarse en comparación con el sistema de números en punto fijo, al igual que el punto flotante. Se debe encontrar el número de bits de palabra adecuado, el cual permita tener un intervalo numérico que produzca resultados acordes a la aplicación que se le esté dando al sistema.
5.OBJETIVOS Objetivo General
Las operaciones que se pueden desarrollar en las ALU’s descritas anteriormente son sumas, con la representación adecuada de los dígitos binarios (en complemento a dos), con la misma unidad sumadora se pueden implementar las restas. Para el desarrollo de multiplicaciones es necesaria la implementación de un algoritmo y de hardware adicional (incrementando el retardo de esta operación) pero solo lo realizaremos con sumas. Caso similar ocurre con la implementación de las divisiones. De esta manera al utilizar estas unidades en la solución de sistemas complejos que involucran un uso mayor que el usual de instrucciones aritméticas, tales como filtros digitales y transformadas, el tiempo requerido para la ejecución de los algoritmos se eleva.
Desarrollar e implementar la arquitectura de una unidad aritmética lógica en base logarítmica en un dispositivo de lógica programable. Objetivo Específico
Determinar el número de bits que se necesitan para la representación de los números en base logarítmica. Tener amplio conocimiento del funcionamiento de y arquitectura de la ALU Conocer el funcionamiento ALU mediante la utilización de puertas lógicas Establecer el los enlaces de los dispositivos para entender los diferentes funcionamiento de las funciones.
VI.MARCO TEORICO
de Proceso, está estructurado por tres unidades operativamente diferentes:
Unidad Aritmética Lógica La Unidad aritmético-lógica (ALU por sus siglas en inglés: Arithmetic Logic Unit) es un contador digital capaz de realizar las operaciones aritméticas y lógicas entre los datos de un circuito; suma, resta, multiplica y divide, así como establece comparaciones lógicas a través de los condicionales lógicos “si”, “no”, y, “o”. Desde los circuitos más simples, como relojes y calculadoras, hasta complejos circuitos, como los microchips actuales, todos incluyen al menos una Unidad aritmético-lógica, que varía su poder y complejidad según su finalidad. Las computadoras más modernas, que incluyen procesadores de múltiples núcleos, incorporan a su vez múltiples dispositivos ALU, con una diagramación compleja y potente. Pero yendo a los orígenes, fue el matemático húngaro-estadounidense John von Neumann quien, en el año 1945, a través de un informe fundacional sobre el desarrollo del Computador Automático Variable Discreto Electrónico (EDVAC, por sus siglas en inglés), propuso la idea de la ALU, explicando que es un requisito indispensable para cualquier computadora el poder efectuar operaciones matemáticas básicas. En la actualidad, las operaciones que realiza una ALU entre los distintos datos, que deben ser iguales a los que emplea el circuito digital, es la representación del número binario de complemento a dos. Sin embargo, no siempre fue así: en sus comienzos, las distintas computadoras utilizaron una amplia gama de sistemas numéricos, como el Complemento a uno, o el sistema decimal, adecuando el diseño de las ALU a cada sistema. A través del tiempo, el Complemento a dos resultó ser el preferido por la industria, al ser el de mayor simplicidad para la diagramación del circuito de la ALU. Lo que definimos como CPU (Central Process Unit) o Unidad Central
1. La ALU o unidad aritmética lógica. 2. La UC o unidad de control. 3. Los registros internos. Operaciones de la ALU
Desplazamientos: lógicos, circulares y aritméticos. Operaciones lógicas: NOT, AND, OR, XOR. Operaciones aritméticas: suma, resta, multiplicación y división. Estas operaciones se pueden ejecutar de diversas maneras, dependiendo del paralelismo que implemente en cada una de ellas. A mayor paralelismo, mayor rapidez; pero habrá más unidades funcionales, con lo que la ALU ocupará más superficie de silicio y por tanto será más cara. Las operaciones básicas y más frecuentes (suma-7resta, desplazamientos y operaciones lógicas) siempre se implementan con una unidad combinacional específica. Los procesadores más potentes incorporan unidades específicas para realizar las operaciones de multiplicación y división en coma flotante, quedando para coprocesadores aritméticos Compuertas Lógicas Compuerta AND Es una puerta lógica digital que implementa la conjunción lógica -se comporta de acuerdo a la tabla de verdad mostrada a la derecha. Esta tendrá una salida ALTA (1), únicamente cuando los valores de ambas entradas sean ALTOS. Si algunas de estas entradas no son ALTAS, entonces tendrá un valor de salida BAJA (0). Desde el punto de vista funcional, la puerta AND es un multiplicador pues su salida es el producto de sus entradas.1 Adicionalmente, encuentra el mínimo entre dos dígitos binarios, así como la puerta OR encuentra el máximo. La puerta AND puede usarse como inhibidor. los datos que llegan
a una de las entradas (A) se transmiten a la salida (C) mientras la otra entrada (B) reciba 1 (VDD) si esta entrada es 0 (GND) la salida en (C) es 0 independientemente de la señal en (A). Para que el bit inhibidor (b) se active con 1 (VDD) en lugar de con 0, sería necesario añadir una puerta
compuerta or La puerta OR o compuerta OR es una puerta lógica digital que implementa la disyunción lógica -se comporta de acuerdo a la tabla de verdad mostrada a la derecha. Cuando todas sus entradas están en 0 (cero) o en BAJA, su salida está en 0 o en BAJA, mientras que cuando al menos una o ambas entradas están en 1 o en ALTA, su SALIDA va a estar en 1 o en ALTA. En otro sentido, la función de la compuerta OR efectivamente encuentra el máximo entre dos dígitos binarios, así como la función AND encuentra el mínimo. Se puede ver claramente que la salida X solamente es "0" (0 lógico, nivel bajo) cuando la entrada A como la entrada B están en "0". En otras palabras, la salida X es igual a 0 cuando la
NOT en dicha entrada.
entrada A y la entrada B son 0.
Estructura interna de la compuerta OR Compuerta not Estructura interna de la compuerta AND
Tabla de la compuerta AND
En lógica digital, un inversor, puerta NOT o compuerta NOT es una puerta lógica que implementa la negación lógica . A la derecha se muestra la tabla de verdad. Siempre que su
entrada está en 0 (cero) o en BAJA, su salida está en 1 o en ALTA, mientras que cuando su entrada está en 1 o en ALTA, su SALIDA va a estar en 0 o en BAJA. La función física del inversor es la de cambiar en su salida el nivel del voltaje de su entrada entre
Estructura interna de la compuerta MUX los definidos como lógico ALTO Y lógico BAJO
Estructura interna de la compuerta NOT MULTIPLEXor Los multiplexores son circuitos combinacional, es con varias entradas y una única salida de datos. Están dotados de entradas de control capaces de seleccionar una, y sólo una, de las entradas de datos para permitir su transmisión desde la entrada seleccionada hacia dicha salida. En el campo de la electrónica el multiplexor se utiliza como dispositivo que puede recibir varias entradas y transmitirlas por un medio de transmisión compartido. Para ello lo que hace es dividir el medio de transmisión en múltiples canales, para que varios nodos puedan comunicarse al mismo tiempo. Una señal que está multiplexada debe de multiplexores en el otro extremo.
Tabla de la compuerta MUX Compuerta de multiplexor En electrónica digital, un de multiplexor es un circuito combinacional que tiene una entrada de información de datos d y n entradas de control
que sirven para seleccionar una de las 2n salidas, por la que ha de salir el dato que presente en la entrada. Esto se consigue aplicando a las entradas de control la combinación binaria correspondiente a la salida que se desea seleccionar. Por ejemplo, si queremos que la información que tenemos en la entrada d, salga por la salida S4, en la entrada de control se ha de poner, de acuerdo con el peso de la misma, el valor 100, que es el 4 en binario.
Un circuito comparador combinatorio compara dos entradas binarias (A y B de n bits) para indicar la relación de igualdad o desigualdad entre ellas por medio de "tres banderas lógicas" que corresponden a las relaciones A igual B, A mayor que B y A menor que B. Cada una de estas banderas se activará solo cuando la relación a la que corresponde sea verdadera, es decir, su salida será 1 y las otras dos producirán una salida igual a cero.
En el campo de las telecomunicaciones el de multiplexor es un dispositivo que puede recibir a través de un medio de transmisión compartido una señal compleja multiplexada y separar las distintas señales integrantes de la misma encaminándolas a las salidas correspondientes.
Dentro de la familia de circuitos TTL se les denomina a estos circuitos con el número 7485 y manejan entradas de 4 bits, además de que también se les puede conectar en cascada para manejar entradas más grandes.
La señal compleja puede ser tanto analógica como digital y estar multiplexada en cualquiera de las distintas formas posibles para cada una de ellas.
Estructura interna de la compuerta DEMUX
Tabla de la compuerta DEMUX Compuerta comparador
Estructura interna COMPARADOR
de
la
compuerta
ALU a0 a1 a2 a3
VII.Desarrollo de la ALU
R1
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
d0 d1 d2 d3
c
c
s0 s1 s2 s3 s4 s5 s6 s7
1. AND Internamente compuesta por compuertas and 2. OR Internamente compuesta por compuertas or 3. XOR Internamente compuesta por compuertas xor 4. SUMADOR RESTADOR Internamente compuesta por compuertas XOR y AND Internamente compuesta bloques ful adder 5. MULTIPLEXOR Internamente compuesta por 4 bloques de compuertas Not, And,Or
0 0 1 0
R0
R2
0 1 0 0
Constituida por 5 bloques internos.
a0 a1 a2 a3
11 12 13 15 16 17 18 19
CCT012
D0 D1 D2 D3 D4 D5 D6 D7
U49
CE OE VPP 20 22 1
1 1 1 0
1
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
27C256
CARRY
sub
c s7
c Co
0
s7 CCT008
Co
PARIDAD d0 d1 d2 d3
ALU a0 a1 a2 a3
a0 a1 a2 a3
R1 R2
0 1 0 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
c s7
Co
0
DET. CEROS
Co
PARIDAD d0 d1 d2 d3
d0 P d1 d2 d3
d0 d1 d2 d3
0 P
CCT013
d0 d1 d2 d3
d0 Z d1 d2 d3
d0 Z d1 d2 d3
d3
d3 N
s0 s1 s2 s3 s4 s5 s6 s7
0
CCT015
N
CCT012 11 12 13 15 16 17 18 19
CCT015
D0 D1 D2 D3 D4 D5 D6 D7
U49
REG D
27C256
CE OE VPP 20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
REG D
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
0 N
DET. NEG. d3 N
Z
DET. NEG.
0 Z
CCT014
d3
0
CCT014
DET. CEROS
c
P
CCT013
s7 CCT008
d0 d1 d2 d3
c
c
0
d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
1
1 0
d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0
1
1 1 1 0
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 1 0
R0
d0 P d1 d2 d3
0 0
VIII.ILUSTRACIONES INTERNAS DE LA UNIDAD ARITMETICA LOGICA EN PROTEUS
o ALU general Forma interna
AND a0 a1 a2 a3
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
a0 a1 a2 a3
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
And0 And1 And2 And3
And0 And1 And2 And3
CCT007
OR Or0 Or1 Or2 Or3
Or0 Or1 Or2 Or3
MUX1 And0 And1 And2 And3
CCT010
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
Or_0 Or_1 Or_2 Or_3
Xor0 Xor1 Xor2 Xor3
Xor0 Xor1 Xor2 Xor3
Xor0 Xor1 Xor2 Xor3
Xor_0 Xor_1 Xor_2 Xor_3
s4 s3 s2 s1 s0
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3 S4 S3 S2 S1 S0
R1
CCT011
re0
r0
re1
r1
re2
r2
re3
r3
c0
c
R3 d3
1 1 1 1
d2
SUMADOR RESTADOR a0 a1 a2 a3
R0
R2 Or0 Or1 Or2 Or3
XOR a0 a1 a2 a3
And_0 And_1 And_2 And_3
r0 r1 r2 r3
res0 res1 res2 res3
s6
S6
s5
S5
d1 d0
CCT004
CCT001
Acá se puede observar la composición interna del bloque ALU. A continuación se analizara la composición interna de los bloques que
se encuentran dentro del bloque ALU.
o Bloque de and
o Bloque Or
AND a0 a1 a2 a3
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
OR
And0 And1 And2 And3
And0 And1 And2 And3
CCT007
a0 a1 a2 a3
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
Or0 Or1 Or2 Or3 CCT010
o Composición interna de bloque Or
o Composición interna de bloque and U17
Or0 Or1 Or2 Or3
?
U21
?
a0
a0 And0
Or0
b0
b0
OR
AND
U18
?
U22
?
a1
a1
Or1
And1
b1
b1
OR
AND
U19
?
U23
?
a2
a2
Or2
And2
b2
b2
OR
AND
U20
?
U24
?
a3
a3
Or3
And3
b3
b3 AND
OR
o Bloque Xor
o Bloque SUMADOR-RESTADOR
SUMADOR RESTADOR
XOR a0 a1 a2 a3
a0 a1 a2 a3
b0 b1 b2 b3
b0 b1 b2 b3
Xor0 Xor1 Xor2 Xor3
Xor0 Xor1 Xor2 Xor3
CCT011
o Composición interna de bloque Xor
b0
3 2
b0 b1 b2 b3
s4 s3 s2 s1 s0
S4 S3 S2 S1 S0
r0
re1
r1
re2
r2
re3
r3
c0
c
CCT001
Xor0
o La composición de sumador restador se encuentra a base de Full Adder´s.
?
U25:B b1
b0 b1 b2 b3
re0
1
74HC386
a1
a0 a1 a2 a3
?
U25:A a0
a0 a1 a2 a3
5 4 6
U46:A 1
Inc
Xor1
3 2
re0
74HC386
74HC386
U47 U46:B
?
U25:C a2 b2
a0 b0
5 4 6
AND 74HC386
8 10 9
U50
Xor2
AS0
U48
74HC386 AND
?
U25:D a3 b3
12 11 13 74HC386
Xor3
OR
o Composición interna de sumador restador 1
U1
a0
FULL ADDER 1
1
U9
AND
0
XOR
U2
0
U10
a1
Inc
re0
a0
AS0
1 re0
b0
AND
0
XOR
U3
CCT002
0
U11
a2
FULL ADDER 2 AND
1
XOR
U4
1
U12
a3
Ae1 a1
0
re1 AS1
re1 b1
AND
0
XOR
U5
0
U13
b0
CCT003
AND
0
XOR
U6
FULL ADDER 3
0
U14
b1
Ae2 AND
0
XOR
U7
0
U15
b2
a2
re2 b2
AND
1
0
re2 AS2
CCT005 XOR
U8
1
U16
b3
FULL ADDER 4
AND XOR
S0
Ae3
re3
?
co
1
a3 S4
S2
re3 b3
S3
0
S1
1
0
1
0
c0
CCT006
o Bloque de mux o Composición interna de Mux de 4 partes MUX1 And0 And1 And2 And3
And_0 And_1 And_2 And_3
R0 R1 R2
Or0 Or1 Or2 Or3
Or_0 Or_1 Or_2 Or_3
R3 d3
1 1 1 1
U26:A U29
Xor_0 Xor_1 Xor_2 Xor_3
U26:B 3 4 5
Or_0
6
74HC11
2 3
U26:C
4 5
U30 9 10 11
Xor_0
U31
d0
74HC4072 8
74HC11
r0 r1 r2 r3
res0 res1 res2 res3
NOT
U27:A 1 2 13
res0
12
S5
S5
S6
s5
S6
74HC11
s6
U28:A 1
NOT
d1
12
74HC11 NOT
d2 Xor0 Xor1 Xor2 Xor3
1 2 13
And_0
U32:C 9 10 11
8
CCT004 74HC11
R0
CARRY
BLOQUE DE “PARIDAD”
IV.BLOQUE DE LA MEMORIA
BANDERAS
CCT008
U49
CCT012 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
1 1 1 0
1
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
PARIDAD
s0 s1 s2 s3 s4 s5 s6 s7
CE OE VPP 27C256
d0 d1 d2 d3
0
d0 P d1 d2 d3
P
CCT013
o Composición interna de bloque Paridad
U53:A
U57
1
d0
3 2
d1
U53:B
U60
5
d2
U54
NOT
74LS386
AND
4 6
d3
U56
NOT
74LS386
P
U53:C d0
AND
10 9
d2
La memoria fue grabada con ayuda del programa Max Loader, con el cual se cargo un archivo de extención(.bin)
U61
8
U53:D
U62
12
d2
U55
NOT
74LS386
AND
11 13
d1
74LS386
NOT
o BLOQUE DE BANDERAS “CARRY”
CARRY c s7
c Co
0
s7 CCT008
Co
o Composición interna de bloque Paridad U52
?
c s7 AND
Co
DET. CEROS BLOQUE DE DETECTOR DE NEGATIVOS
BLOQUE DE REGISTRO EN BASE DE FLIP FLOP
CCT014
DET. NEG. d3
REG D
0
d3 N
d0 d1 d2 d3
N CCT015
D0 D1 D2 D3
0
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
1 o Composición interna del bloque detector de negativos.
U74 d3 N
1
0 0 o Composición interna del registro en base de flip flops D
4013
12 Q
13
Q2
CLK
Q
Q
4013
2
Q1 4013
12 Q
Q0 2 Q
4013
9
11
1 Q D
CLK 3
5 13 Q
CLK
D 9
11
1 5
D
Q
?
CK
NOT D0
74HC4072
CLK
6
Z
3
U58:B U58:A
U73 1
4 5
U59:A
D3 D2 D1
U72:A
S
d2 d3
2 3
R
d0 d1
4
8
o Composición interna del bloque detector de ceros.
S
CCT014
R
Z
10
0
d0 Z d1 d2 d3
6
d0 d1 d2 d3
S
DET. CEROS
R
CCT013
4
8
D
S
BLOQUE DE DETECTOR DE CEROS
R
PARIDAD
10
U59:B
Q3
AND
ALU a0 a1 a2 a3
APLICACIONES DE LA ALU EN OPERACIONES ARITMETICAS
a0 a1 a2 a3
R2
1 1 0 0
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
1° EJERCICIO
R1
b0 b1 b2 b3
s0 s1 s2 s3 s4 s5 s6
CARRY
1 1 0 0
R0
c s7
Co
Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
0
c s7 CCT008
0
d0 P d1 d2 d3
P
CCT013
DET. CEROS
c d0 d1 d2 d3
0
d0 Z d1 d2 d3
Z
CCT014
DET. NEG.
[(3*2)-2+1]/5
d3 CCT012 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
0 1 0 0
N
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
20 22 1
1
0
d3 N
U49 11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
D0 D1 D2 D3
0
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0
CE OE VPP
0
27C256
0
3.- LIB A [2] // Se procede a leer el segundo dato a introducir en este caso para realizar una multiplicación 4.- Nota: se toma una variable auxiliar para realizar un conteo [d] 5.- ADD // Se suma la variable guardada en ”a” , con la introducida en “b”. 6.- Nota: el contador nos indica cuantas veces se ALU a0 a1 a2 a3
a0 a1 a2 a3
R1 R2
1 1 0 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
CARRY
0 1 1 0
R0
c s7
Co CCT008
0 Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
c s7
d0 P d1 d2 d3
0 P
CCT013
DET. CEROS
c d0 d1 d2 d3
d0 Z d1 d2 d3
0 Z
CCT014
DET. NEG. d3
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
1 1 1 0
1
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
1.- LIB B [3] // Se procede a introducir el primer número y leerlo para verificar su entrada. 2.- ck=1; ck=0 // Se procede a guardar en “a”.
0 N
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
1
CCT009
1
CE OE VPP 27C256
CODIGO DE MAQUINA
d3 N
U49
CCT012
0 0
repite el procedimiento de ADD. 7.- ck=1, ck=0 [6]// Se guarda el resultado obtenido en “a”.
8.- LIB B // Se introduce el siguiente dato y se lo identifica. 9.- ADD// Se suma el dato introducido y el guardado en “a”. 10.- ck=1, ck=0 [4]// Se guarda el resultado obtenido en “a”. ALU a0 a1 a2 a3
a0 a1 a2 a3
R1 R2
0 1 0 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 1 0
R0
c s7
Co CCT008
1 Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
c s7
0
d0 P d1 d2 d3
P
CCT013
DET. CEROS
c d0 d1 d2 d3
ALU
0
d0 Z d1 d2 d3
a0 a1 a2 a3
Z
CCT014
DET. NEG. d3
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
1
N
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
CCT009
1
1 0 1 0
1 0 0 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
c s7
c
c Co CCT008
Co
PARIDAD d0 d1 d2 d3
d0 P d1 d2 d3
0
CCT013
DET. CEROS
c d0 d1 d2 d3
d0 Z d1 d2 d3
d3
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
1 1 1 0
1
d3 N
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
11 12 13 15 16 17 18 19
0
D0 D1 D2 D3
0
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
1
CCT009
0 1 0
R3
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 0 0
R1
c s7
Co
0 Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
c s7 CCT008
d0 P d1 d2 d3
1 P
CCT013
DET. CEROS
c d0 d1 d2 d3
d0 Z d1 d2 d3
1 Z
CCT014
DET. NEG.
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
0 0 0 0
0
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0 1 0
14.- LIB B // Se introduce el siguiente dato y se lo identifica.
1
d3 N
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
0 N
U49
CCT012
CE OE VPP 27C256
D0 D1 D2 D3
CE OE VPP
d0 d1 d2 d3
REG D d0 d1 d2 d3
REG D d0 d1 d2 d3
Z
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
0
d3 N
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
d3
N D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
0
DET. NEG. U49
D0 D1 D2 D3 D4 D5 D6 D7
R0
b0 b1 b2 b3
CCT014
CCT012
Z
N
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
R2
s0 s1 s2 s3 s4 s5 s6
P
1
d0 Z d1 d2 d3
ALU a0 a1 a2 a3
1 1 1 1
0
s7
d0 d1 d2 d3
CCT013
DET. CEROS
c
27C256
ALU
R2
P
U49
20 22 1
1
a0 a1 a2 a3
R1
1
d0 P d1 d2 d3
CCT014
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
0 0 0 1
0
R0
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
CCT012
CARRY
1 Co
DET. NEG.
1
CE OE VPP
Co CCT008
d0 d1 d2 d3
c
c s7
d3
11.- LIB B // Se introduce el siguiente dato y se lo identifica. 12.-SUB// Se resta el dato introducido y el guardado en “a”. 13.- ck=1, ck=0 [5]// Se guarda el resultado obtenido en “a”. a0 a1 a2 a3
R3
c s7
0
27C256
a0 a1 a2 a3
R1
b0 b1 b2 b3
CARRY
0 0 0 0
R0
R2
s0 s1 s2 s3 s4 s5 s6
REG D d0 d1 d2 d3
a0 a1 a2 a3
1 0 1 0
0
d3 N
U49
CCT012
0 0 0 1
15.- Nota: se toma como referencia si el detector de ceros esta en 1. 16.- SUB //Se resta el valor guardado en “a”. 17.- ck=1, ck=0 [0]// Se guarda el resultado obtenido en “a”. 18.- LIB A // Se lee el valor guardado en “a” para identificar la paridad. 19.- Nota: se muestra el valor obtenido en el conteo de las iteraciones antes de salir del ciclo (Z=1).
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0
CE OE VPP 27C256
0 0
2° EJERCICIO
2.- ck=1; ck=0 // Se procede a guardar en “a”.
[8+2-10+4]
3.- LIB B [2] // Se procede a introducir el segundo número y leerlo para verificar su entrada. ALU a0 a1 a2 a3
a0 a1 a2 a3
R1 R2
0 1 0 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 1 1
R0
c s7
Co
Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
0
c s7 CCT008
0
d0 P d1 d2 d3
P
CCT013
DET. CEROS
c d0 d1 d2 d3
0
d0 Z d1 d2 d3
Z
CCT014
DET. NEG. d3
1
d3 N
N
U49
CCT012 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
1 1 1 0
20 22 1
0
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
D0 D1 D2 D3
1
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
1
CE OE VPP
0
27C256
1
4.- ADD// Se suma el dato introducido y el guardado en “a”. 5.- ck=1, ck=0 [10]// Se guarda el resultado obtenido en “a”. 6.- LIB B [10] // Se procede a introducir el tercer número y leerlo para verificar su entrada. 7.- SUB //Se resta el valor guardado en “a”. 1.- LIB B [8] // Se procede a introducir el primer número y leerlo para verificar su entrada. a0 a1 a2 a3
R1 R2
0 0 0 1
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 0 1
R0
c s7
Co
0
d0 P d1 d2 d3
0
d0 Z d1 d2 d3
0
d3 N
20 22 1
11 12 13 15 16 17 18 19
0
0 0 0 1
Z
1
0
1
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0
CE OE VPP 27C256
1 P
CCT013
d0 Z d1 d2 d3
1 Z
CCT014
0 1
d3 N
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
0 N
U49 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
REG D d0 d1 d2 d3
d0 P d1 d2 d3
DET. NEG.
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
1 Co
DET. CEROS
c d0 d1 d2 d3
CCT012
N
U49 D0 D1 D2 D3 D4 D5 D6 D7
c
Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
d3
DET. NEG.
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
d0 d1 d2 d3
c s7 CCT008
P
CCT014
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
R3
DET. CEROS
c d0 d1 d2 d3
CCT012
R2
c s7
CCT013
d3
0 1 0 0
R1
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 0 0
R0
b0 b1 b2 b3
s0 s1 s2 s3 s4 s5 s6
Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
c s7 CCT008
a0 a1 a2 a3
0 1 0 1
ALU a0 a1 a2 a3
ALU a0 a1 a2 a3
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
1
CE OE VPP 27C256
0 1
8.- ck=1, ck=0 [0]// Se guarda el resultado.
5°EJERCICIO
9.- LIB B [4] // Se procede a introducir el cuarto número y leerlo para verificar su entrada.
[3+(2*2)-1]/2
10.- ADD// Se suma el dato introducido y el guardado en “a”. 11.- Nota: se muestra el resultado obtenido. ALU a0 a1 a2 a3
a0 a1 a2 a3
R1 R2
0 0 1 0
b0 b1 b2 b3
R3
d0 d1 d2 d3 s0 s1 s2 s3 s4 s5 s6
s0 s1 s2 s3 s4 s5 s6
CARRY
0 0 1 0
R0
c s7
Co
0 Co
PARIDAD d0 d1 d2 d3
d0 d1 d2 d3
c
c s7 CCT008
d0 P d1 d2 d3
0 P
CCT013
DET. CEROS
c d0 d1 d2 d3
d0 Z d1 d2 d3
0 Z
CCT014
DET. NEG. d3
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
0
d3 N
20 22 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
0 N
U49
CCT012
1 1 1 0
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
CCT015
s0 s1 s2 s3 s4 s5 s6 s7
REG D d0 d1 d2 d3
0
D0 D1 D2 D3
Q0 Q1 Q2 Q3
a0 a1 a2 a3
CK
0
CCT009
0
CE OE VPP 27C256
0 0
1.- LIB [0010] // Insertamos la primera variable el 3 grabamos en a con un pulso de reloj
2.-ADD A+B [0111]//sumamos la variable guardada con “2” volvemos a grabar con otro pulso de reloj 3.- ADD A+B [0111] // realizamos el mismo paso para poder multiplicar 2*2 que podría expresarse 2+2 grabamos con otro pulso de reloj
4.-SUB
A-B
[1000]//restamos
el
6°EJERCICIO [(6/2)+5-7]*5
“1”
5.- activamos el display con 0 para poder dividir 6.-SUB A-B [1000]// realizamos este proceso hasta que nuestra salida será cero el resultado se muestra en el display
1.-LIB [0010]// grabamos en A para poder dividir restando
2.- SUB A-B [1000] // activamos el display para ayudarnos a dividir restamos hasta que nuestra variable A sea 0
7.- ADD A+B [0111]// sumamos el valor guardado en A + 1 realizamos 4 veces el procedimiento para poder realizar 1*5
7°EJERCICIO [10-7+(2*3)]/3
4.- LIB [0010]// grabamos el dato que estaba en display
5.-ADD A+B [0111]// sumamos el 3 + 5
6.- SUB A-B[1000]//restamos el valor guardado en a 8 – 7
1.- LIB [0010]//grabamos el primer dato “10” 8°EJERCICIO (7+5-9+6+3)/3
2.- SUB A-B[1000]//restamos el valor guardado
10 – 7 3.- ADD A+B[0111]//sumamos 2 veces 3 para poder realizar la multiplicación 2*3
1.-LIB [0010]// grabamos el primer dato 7 4.-SUB A-B[1000]// activamos el display para esta división restamos hasta que la variable A sea 0 y lo que nos muestra el display es el resultado
2.- ADD A+B [0111]//sumamos el dato grabado
7+5 3.- SUB A-B [1000]// almacenado 12-9
restamos
el
dato
5°EJERCICIO [(5*2)+2]/2
4.-ADD A+B [0111]//hacemos este paso 2 veces para poder sumar el 3+6+3
5.- SUB A-B[1000]//activamos el display y restamos hasta que los valores del resultado sean cero
1.- LIB [0010]// grabamos el primer dato 5
2.- ADD A+B[0111]//sumamos 5+5 para poder realizar 2*5
3,-ADD
A+B
[0111]//sumamos
10+2
4.-SUB A-B [1000] activamos el display y luego restamos hasta que sea cero y el resultado es el que muestra el dispay
-
-
de ahí la importancia de saber programar para un ingeniero. Lenguajes de programación como VHDL, C o cualquier otro nos ofrecen posibilidades infinitas de aplicación, basta con un poco de imaginación para implementar programas que nos permitan realizar operaciones complicadas o cualquier otra tarea. El consumo de recursos en un programa es muy importante debido a que, si este es muy grande y la capacidad de la memoria es reducida, tendremos problemas al querer quemar el programa. Por consiguiente, nuestro objetivo como futuros ingenieros es lograr la mayor eficiencia, consumiendo la menor cantidad de recursos. Y es así como queda demostrado la implementación de la ALU XI. RECOMENDACIONES
Después de corregir fallos, procedimos a la simulación, confirmando de esta forma el buen funcionamiento de todas las operaciones de la ALU, así como el buen funcionamiento de todo el circuito XII. REFERENCIAS [1]http://www.forosdeelectronica.com/tutoriales/f lip-flops.htm [2]The Student's Guide to VHDL (Systems on Silicon) by Peter J Ashenden . X. CONCLUSIONES De acuerdo a los resultados obtenidos en la simulación pudimos llegar a las siguientes conclusiones: -
La elaboración de la ALU nos permite realizar operaciones aritméticas y lógicas simples de una forma rápida y confiable,