Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T3 Bloques PDF
T3 Bloques PDF
Los bloques lógicos son combinaciones de puertas lógicas (AND, OR, NOT …) que
realizan distintas funciones lógicas.
Los distintos bloques lógicos que vamos a describir son formalizaciones que realizan
diversas operaciones lógicas más o menos frecuentes en el diseño de los dispositivos
electrónicos digitales, y en concreto de los microprocesadores. Partimos, por tanto, de
puertas lógicas elementales, para acabar describiendo, aunque sea a grandes rasgos, los
componentes que forman la organización de un procesador.
Bloques combinacionales
Multiplexor
Permite seleccionar una de entre muchas líneas de entrada, y conectarla con una única
salida. La selección se realiza mediante una serie de líneas de dirección. Con n bits en la
dirección, podemos seleccionar una de entre 2n líneas de entrada. Las líneas de entrada y
de salida pueden ser de 1 o de varios bits.
Diagrama
Función lógica
Demultiplexor
Realiza la operación inversa al multiplexor, es decir, conecta una única entrada a una de
entre 2n líneas de salida.
Diagrama
F1 F0 Operación
0 0 S = A AND B
0 1 S = A OR B
1 0 S = NOT A
1 1 S = A + B + Cin
Decodificador
El decodificador es un circuito muy similar al multiplexos. Tiene
Z0
una entrada binaria de n bits, y 2n salidas. Cuando introducimos un
X0
valor por la entrada, se activa la línea de salida correspondiente al Z1
valor introducido, y se desactivan todas las demás. Se añade una
Z2
línea adicional de “permiso” (grant). Si la línea de permiso está X1
desactivada, no se activará ninguna línea en la salida. Z3
Los decodificadores que se activan en alto, ponen en nivel de
tensión alto (1 lógico) la línea activada, y a 0 todas las demás. Un
decodificador que se activa en bajo, pone a 0 la línea activada, y a P
G A B Y0 Y1 Y2 Y3
1 X X 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
Esquema de implementación
Codificadorconprioridad
X0
Realiza la función inversa al decodificador. A partir de 2n líneas
de entrada, devuelve a la salida en binario el número de la línea Z0
X1
de entrada más alta que esté activa (nivel lógico 1). Una línea
adicional (Bloque Activo) nos indicará si hay alguna línea activa, X2
o están todas inactivas (nivel lógico 0). Z1
X3
X3 X2 X1 X0 Z1 Z0 BA
0 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 1 X 0 1 1
0 1 X X 1 0 1
1 X X X 1 1 1
X0 Z0
X1 Z1
MemoriaROM
Una forma muy sencilla de implementar una funión lógica cualquiera consiste en
utilizar para ello una memoria ROM. Ló único que necesitamos para ello es una
memoria con tantos bits de dirección como variables de la función lógica, y tantos bits
por dirección (anchura de la memoria) como salidas necesitemos. En la memoria ROM
habrá que almacenar, para cada posible entrada (cada dirección de memoria) el
resultado que se espera de la función a implementar.
Ejemplo: Implementación de un sumador de dos bits, salida con acarreo.
Tenemos 4 bits de entrada (dos por cada operando) y tres de salida (resultado más
acarreo). Necesitaremos, por tanto, una ROM de 16 direcciones, y cada una de ellas de
3 bits (por lo menos).
Si las líneas de direccionamiento son d0, d1, d2 y d3, y las salidas son z0, z1 y z2,
asociamos d0=x0, d1=x1, d2=y0, d3=y1, y z3=C (acarreo)
Valor de la memoria:
1 0 0 1 0 1 1
1 0 1 0 1 0 0
1 0 1 1 1 0 1
1 1 0 0 0 1 1
1 1 0 1 1 0 0
1 1 1 0 1 0 1
1 1 1 1 1 1 1
Bloques secuenciales
Los bloques secuenciales son aquellos en los que la salida en un tiempo T depende de
los valores de la entrada en T y en los instantes anteriores. Tienen “memoria histórica”,
en el sentido de que su valor depende de cuánto ha valido la entrada anteriormente.
X
F
Z
Pueden ser:
- asíncronos: Z(T) = F(X(t=0..T))
- síncronos : Z[k] = F(X[k], X[k-1], X[k-2]
…) donde X[k] es la entrada en el ciclo k. El tiempo se va desarrollando en instantes
discretos o “ciclos”, que vienen determinados por un reloj, un dispositivo que genera
una onda cuadrada, y va marcando el paso del tiempo.
Registro
El elemento secuencial básico es el registro. Es un bloque que permite almacenar un
valor introducido por la entrada del mismo (escritura), y mantener dicho valor en la
salida (lectura), incluso en ausencia de nuevo valor en la entrada.
El circuito base de los registros es el biestable R-S, cuyo comportamiento es el
siguiente:
S
R Q
R Q Q-
S Q
0 0 Q Q-
0 1 0 1
1 0 1 0
1 1 0 0
Para conseguir que el elemento funcione de forma síncrona, basta con que agregemos
una etapa previa controlada por un reloj.
clear
R
Q
clock
Q
S
preset
En los biestables síncronos, las entradas sólo se pueden transmitir a las salidas (y por
tanto, quedar “almacenadas” en el dispositivo) cuando la señal del reloj está en alto,
quedando las salidas desconectadas de la entrada cuando el reloj está en bajo (un reloj
en bajo hace que ambas entradas a las puertas NOR estén también en bajo). Así
conseguimos sincronizar el dispositivo, de forma que lea los datos sólo en instantes
determinados.
Aunque aquí no vamos a entrar en más detalles técnicos, es posible modificar las
estructuras anteriores, de forma que consigamos registros que respondan sólo durante el
flanco de subida del reloj, o durante el flanco de bajada. A título meramente
descriptivo, presentamos algunas variaciones del mismo.
Biestable tipo T
Cambia su estado con cada ciclo de reloj. Permite construir contadores.
¿Cuáles serían las salidas de Q0, Q1, Q2 y Q3 a medida que va funcionando el reloj?
Registros
clock X 8 15 30
Z ? 8 15
Z t
Para que una señal presentada en la entrada del registro pase correctamente a la salida
del mismo, se deben cumplir ciertas restricciones temporales en torno al instante del
flanco ascendente del reloj (el momento en el que el reloj pasa de 0 a 1). Esto es debido
a que, aunque conceptualmente digamos que las señales son cuadradas (pasan
instantáneamente de 0 a 1), en la realidad esto no es así. Ni el reloj pasa
clock
X 3 8 15
tsu th
Z 8 15
tdelay
Si aumentamos la frecuencia del reloj, y por tanto, vamos estrechando el tiempo del
ciclo (tw) podemos encontrarnos con la siguiente situación al enlazar la salida de un
elemento con la entrada de otro:
En este caso, el tiempo de retardo más el tiempo de setup sumados son menores que el
ciclo de reloj. Por tanto, el sistema nos obliga a tener estabilizada una señal en la
entrada del segundo dispositivo (setup) antes de tener la seguridad de que el primer
dispositivo nos está dando una señal correcta (delay), comportándose el circuito de
forma imprevisible.
clock Enable
Los registros con permiso pueden tener varias aplicaciones. Por ejemplo, imaginemos
que tenemos en un procesador un banco de registros donde almacenar los resultados de
operaciones aritméticas o lógicas que efectúa una ALU. Podemos conectar las entradas
de todos los registros a la salida de la ALU, y mediante un decodificador, activar
únicamente la línea de permiso del registro en el que queremos guardar el resultado,
dejando los demás registros como estaban.
Memoria RAM
La memoria RAM, es funcionalmente muy similar a una memoria ROM, con la
diferencia de que además de leer datos, podemos escribirlos. Por tanto, además de las
líneas de dirección y de salida, que ya teníamos en la ROM, necesitaremos líneas de
control que nos permitan indicar al dispositivo si lo que queremos es leer un dato
almacenado en la RAM, o escribir en la memoria un dato que introducimos por el bus
de datos. Así, mientras en la ROM el bus de datos era unidireccional (salida), en la
RAM es bidireccional (entrada y salida). Las celdas básicas de una RAM, dado que
necesitamos leer y escribir, no serán elementos preconfigurados por hardware (como en
la ROM), sino que serán esencialmente biestables como los vistos hasta ahora.
No pulsado / Pulsado /
apagado Encencido
Soltar Soltar
Pulsado / No pulsado /
Apagado Encencido
Pulsar No pulsar
Mantener pulsado
Como podemos deducir del diagrama, tendremos una entrada (pulsador) con dos valores
posibles, una salida con dos valores posibles (motor encendido / apagado), y cuatro
estados posibles.
Las máquinas de estados se pueden implementar electrónicamente mediante una
combinación de bloque secuencial (registro que guarda el estado del sistema) y bloque
combinacional, que calcula en cada ciclo el valor de la salida, y el nuevo estado del
sistema.
Los autómatas secuenciales son las implementaciones electrónicas de las máquinas de
estados, y pueden ser:
- síncronos: Las salidas y el estado cambian automáticamente con cualquier
modificación de las entradas, estabilizándose el sistema en un estado tal que el
“siguiente estado” es él mismo.
- Asíncronos: Las salidas y el estado del sistema cambian sólo en instantes de
tiempo predeterminados, marcados por un reloj de sincronización.
En general, un autómata de moore requiere más estados para modelar una máquina de
estados, por lo que utilizará más memoria, aunque suelen ser más fáciles de modelar que
los autómatas de Mealy. Sin embargo, ambos modelos son equivalentes. Cualquier
máquina de estados se puede modelar mediante un autómata de Moore o de Mealy, y
hay normas para transformar un modelo en otro.
Registro (estado)
Implementación electrónica
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 1 0
1 1 1 1 1
(S1S0 es el estado actual. S’1S’0 es el siguiente estado del sistema)