Download Ejemplo PED1

Document related concepts

Unidad aritmética lógica wikipedia , lookup

74181 wikipedia , lookup

Puerta XOR wikipedia , lookup

Sumador wikipedia , lookup

Puerta lógica wikipedia , lookup

Transcript
PRIMERA ACTIVIDAD EVALUABLE
Asignatura:
FUNDAMENTOS de SISTEMAS DIGITALES
Título de la Actividad:
Diseño, Implementación, Simulación y Validación de un Circuito en Lógica Combinacional
Datos personales:
Código de la actividad que le ha correspondido realizar: A-E-1_036.doc
Enunciado.
Enunciado A-E-1_036.doc
Disponemos de una palabra de 4 bits (P3, P2, P1 y P0) y de una señal adicional, x, con las que queremos
controlar el funcionamiento de una Unidad Aritmético Lógica, pero la programación de la ALU no depende
directamente de estas señales sino de la paridad o no de la palabra junto con el valor “0” o “1” de la
variable x. Así, el criterio para controlar las operaciones que realiza la ALU sobre las 2 palabras de 4 bits
[A(A3, A2, A1, A0) y B(B3, B2, B1, B0)] es el siguiente:
a)
Si la palabra es par y x=1, la ALU hace la operación aritmética sin acarreo A PLUS AB .
b)
Si la palabra es par y x=0, la ALU hace la operación lógica A
c)
Si la palabra es impar y x=1, la ALU hace la operación aritmética con arrastre A PLUS A B PLUS 1
.
d)
Si la palabra es impar y x=0 entonces la ALU debe ponerse a 0.
B.
Diseñe el circuito del codificador y úselo para controlar las operaciones de la ALU que se han
especificado.
SOLUCION:
Lo primero que debemos hacer para diseñar el circuito, es centrarnos en la tabla de
verdad de la ALU SN74181 que es la que emplearemos para realizar el ejercicio, dicha
tabla es la mostrada a continuación:
Una vez que tenemos la tabla de la ALU, debemos determinar cada una de las salidas
que queremos implementar en el circuito generador de señales, en la siguiente tabla
podemos ver cuales son las configuraciones de cada señal según la palabra de entrada y
la señal X y que función se activaría en la ALU para cada una de ellas, para ello
debemos tener en cuenta el circuito que nos produce la generación de paridad para los
4 bits de entrada además del valor de la señal X.
A continuación podemos ver la tabla de verdad del circuito generador de paridad.
P3 P2 P1 P0 Z
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
Se puede observar que el generador produce como salida un 0 si el numero de bits de la
palabra que están a 1 es par.
Podemos tratar de reducir la función de salida mediante la siguiente tabla de karnaugh
Pero como se puede observar la función de salida es irreducible, siendo esta igual a la
función OR EXCLUSIVE de cada uno de los bits de entrada.
Z = P3 ⨁ P2 ⨁ P1⨁ P0
Dicha función puede ser implementada mediante tres puertas OR EXCLUSIVE, una de
ellas realizara la operación lógica OR EXCUSIVE de los dos bits de menos peso, otra
realizara la misma operación con los dos bits de mayor peso y una tercera realizara la
operación OR EXCLUSIVE de los resultados obtenidos, el circuito seria el mostrado en
la figura.
Cuyo cronograma es el siguiente:
Para la realización del cronograma se han empleado cuatro relojes con los siguientes
valores de señal:
P0:
P1:
P2:
P3:
ONTIME = 1 us ,
ONTIME = 2 us ,
ONTIME = 4 us ,
ONTIME = 8 us ,
OFFTIME = 1 us.
OFFTIME = 2 us.
OFFTIME = 4 us.
OFFTIME = 8 us.
Estos valores han sido establecidos para poder observar todas las posibles
configuraciones de entrada.
Una vez que tenemos definidas todas las salidas del generador de paridad para cada
configuración de entrada, debemos realizar la tabla de verdad del circuito generador de
señales, en la figura se muestra la tabla de verdad completa.
Como se puede observar, cuando M esta a nivel alto, da igual cual sea el valor de
que la ALU realizara una función lógica.
ya
Simplemente observando la tabla de verdad, podemos determinar que el valor que debe
tomar la señal M tan solo depende del valor que tome la señal X, siendo este igual a
M=
Por la sencillez de las señales que se deben implementar, se pueden deducir a simple
vista el resto de las señales que necesitamos.
Observamos que la señal S0 solo depende del valor de X, siendo este igual a
S0 =
De la misma forma determinamos que el e valor de S1 es el siguiente
S1 = Z
El valor de S2 solo depende del valor de X siendo igual a
S2 = X
Y el valor de S3 es igual a
S3 =
Una vez determinadas las salidas necesarias del circuito generador de señales,
procedemos a su implementación, quedándonos el siguiente circuito:
El cronograma de este circuito es el siguiente:
La señal M coincide con S0.
En cuanto a los valores empleados en las entradas, son los mismos que en el circuito
generador de paridad visto anteriormente y para la señal de X (S2 en el cronograma) se
han empleado las siguientes señales:
X: ONTIME = 16 us , OFFTIME = 16 us.
Estando definidas todas las señales, ya podemos conectar el circuito de control con
la ALU como se muestra en la siguiente figura.
Para que el resultado sea mas fácil de entender, los dos bits mas significativos de cada
palabra se han puesto a 0, realizándose las operaciones con los dos bits menos
significativos, por este motivo la señal de salida Cn +4 siempre es 0, esta señal la
emplearíamos si necesitamos conectar nuestro circuito con otra ALU para realizar
operaciones con palabras de mas de 4 bits.
Las tablas de verdad de cada una de las diferentes funciones que hemos implementado
son las siguientes:
A PLUS A
A3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
A2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
A1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
B3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
B1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
F3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
F2
0
0
1
1
0
0
1
1
0
0
0
1
0
0
0
0
F3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
F1
0
1
0
1
0
0
0
0
0
1
1
0
0
0
1
1
F2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
F0
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
1
F1
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
Cn
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
F0
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
A PLUS A PLUS 1
A3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
A0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
B1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
F3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
F2
0
0
1
1
0
0
1
1
0
0
0
1
0
0
0
1
F1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
F0
1
1
1
1
1
0
1
0
1
1
1
1
1
0
1
0
Cn
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
En cuanto a la tabla de verdad de puesta a 0 no se implementa, por ser demasiado
trivial.
El cronograma del circuito en funcionamiento es el siguiente:
Para generar las señales, se han empleado además de los valores citados anteriormente
estos otros:
A0:
A1:
B0:
B1:
ONTIME = 125 ns , OFFTIME = 125 ns.
ONTIME = 250 ns , OFFTIME = 250 ns.
ONTIME = 500 ns , OFFTIME = 500 ns.
ONTIME = 1000 ns , OFFTIME = 1000 ns.
Como se puede comprobar la tabla de verdad teórica se corresponde con la tabla de
verdad práctica.
Este documento se ve complementado con los siguientes archivos adjuntos:
1. Circuito del generador de paridad : generador de paridad.sch
2. Circuito generador de señales de control: generador de control.sch
3. Circuito completo: circuito conectado.sch