Tema 5 Circuitos Secuenciales
Tema 5 Circuitos Secuenciales
Todo circuito digital lo podemos clasificar como: se basan en valores anteriores del
circuito → necesita elementos para
Circuito combinacional: guardar esa info → biestables
Circuitos secuenciales:
Estos biestables son los En estos circuitos se dispone, además de su red combinacional, de unos elementos
elementos básicos de los biestables o celdas de memoria donde se guarda información de estados en los que se
circuitos secuenciales ha encontrado antes el circuito. Con esta información el circuito es capaz de responder
de forma diferente, dependiendo del estado en el que se encuentre, con
combinaciones de las variables de entrada iguales.
En estos circuitos hay que tener en cuenta el tiempo, ya que la salida del circuito
dependerá de la combinación de las variables de entrada y del estado en el que se
encontraba el circuito en un tiempo anterior, así que denominaremos Qt al estado en
el que nos encontremos en un instante determinado, y Qt-1 al estado anterior en el que
se encontraba el circuito.
Dependiendo de la forma de conexión entre los elementos de memoria se pueden clasificar en:
RS
Asíncronos
JK
Biestables
2 estados estables T
Síncronos RS
JK
Con realimentación
Monoestables
Circuitos temporales 1 estado estable Sin realimentación
Sistemas secuenciales
Astables
ningún estado estable Entrada/salida serie
Contadores
Las máquinas de estados
controlan el funcionamiento de
Biestables + Puertas lógicas = Registros Entrada/salida paralelo
un circuito que tiene memoria Máquinas de estados
Universales
Memorias
Sistemas μP → Microprocesadores y microcontroladores
5.3. Biestables
El biestable o flip-flop es el circuito básico en los sistemas secuenciales. Son circuitos con una serie de
entradas de control y dos salidas complementarias (𝑄, 𝑄̅).
Estas entradas no necesitan de la señal de reloj (en los biestables síncronos) para
actual sobre la salida. Pueden ser:
RS
Es un circuito con:
S (SET) se pone a 1
Dos entradas:
R (RESET) se pone a 0
𝑄 = 1, 𝑄̅ = 0 → estado 1
Dos salidas (𝑄, 𝑄̅ ):
𝑄 = 0, 𝑄̅ = 1 → estado 0
Una activación de la señal S provoca el cambio al estado 1, y una activación de
la señal R provoca el cambio al estado 0.
0 1
̅̅̅̅̅̅̅
1 + 0 = 1̅ = 0
̅̅̅̅̅̅̅
0 + 0 = 0̅ = 1
̅̅̅̅̅̅̅
0 + 1 = 1̅ = 0
Observamos que, si introducimos la combinación S=R=0, las dos salidas son
forzadas a tomar el valor 1, situación absurda ya que deben tener siempre
valores diferentes. Si en esta situación (𝑄 = 1, 𝑄̅ = 1) las dos entradas
tomasen el valor S=R=1, las dos salidas pasarían a tomar el valor 0, que llegaría
a las entradas de las dos puertas NOR por la realimentación y provocaría un
nuevo cambio a (𝑄 = 0, 𝑄̅ = 0), con lo que se produce una oscilación
teóricamente indefinida de las salidas. En la práctica esta oscilación no se
produce, ya que una de las dos puertas tendrá un tiempo de conmutación
menor, con lo que el circuito quedará con una salida aleatoria.
1 1 1 0 0 0 1 0
1 0 1 0
̅̅̅̅̅̅
1 · 1 = 1̅ = 0
̅̅̅̅̅̅
1 · 0 = 0̅ = 1
̅̅̅̅̅̅
1 · 1 = 1̅ = 0
También podemos definir el funcionamiento del biestable con otro tipo de
tabla, denominada tabla de transición:
o no cambio→R=0 Me da igual lo
o RESET→R=1 que valga R→X
S=1→SET→1
R=1→RESET→0
o no cambio→S=0 Me da igual lo
o SET→S=1 que valga S→X
JK
0
Su tabla de transición es:
Los cambios de estado sólo son posibles con las activaciones de la señal de reloj,
permaneciendo el biestable inmune a los cambios en las entradas cuando la señal del
reloj está inactiva.
Dependiendo del momento en que los datos son validados por la entrada del reloj
podemos clasificar estas entradas de sincronismo o reloj en:
Entradas asíncronas:
Pueden ser:
Para un biestable RS que conmute por flanco de subida de la señal de reloj sería:
0
Como ha llegado sin
respetar ts (muy cerca del 0-1
flanco de CLK puede que el
biestable le haga caso o no
0
S=1 S=0
→SET→Q=1 No le hace caso → → Q=1
1 R=0 1 R=0
ts th ts th
D:
El problema de que sea activo por nivel es D≈SR con D=S y D=R
que si CLK=1 y el dato cambia, está
cambiando la salida Q y normalmente me S=1
→Q=1
interesa que Q cambie en el instante R=0
adecuado.
S=1
→Q=0
Todos los cambios que hay en D mientras R=0
CLK=1 aparecen en Q pero con cierto
retraso (por las puertas que tiene).
T:
T=0 → Q se mantiene
T=1 → Q cambia
Su tabla de transición es:
RS:
JK:
Hay diversas conexiones para conseguir otro tipo de vida estable a partir de
biestables JK y D:
5.4. Circuitos temporales
Son circuitos que retornan a un estado después de un cierto tiempo t, sin haber cambios en las
variables de entrada. Según su funcionamiento los podemos clasificar en:
Circuitos monoestables:
Son circuitos que poseen sólo un estado estable. El paso al estado inestable se produce
por el disparo del circuito (cambio de una entrada exterior). Una vez que se dispara el
monoestable (paso al estado inestable) este computará al estado estable en un tiempo
t→RETARDO. Este retardo se consigue:
Redisparables:
Circuitos astables:
En realidad, C se carga y se
V2 V1
descarga entre V1 y V2 C descargado C cargado
Son circuitos secuenciales cuya misión es realizar la cuenta hasta el ascendente o descendente de una
magnitud en un determinado código. Como cualquier circuito secuencial, están compuestos por una
serie de biestables y un circuito combinacional que determina las entradas a los biestables a partir de
las salidas de estos en un estado anterior.
Para su funcionamiento únicamente necesitan de la transición de una señal de reloj (CLK) aunque
pueden disponer de entradas de control como:
̅̅̅̅̅̅̅̅̅ 𝑜 𝐶𝐿𝐸𝐴𝑅
𝑅𝐸𝑆𝐸𝑇 ̅̅̅̅̅̅̅̅̅: señal, normalmente activa a nivel bajo, que inicializa el contador en la
cuenta 0.
̅̅̅̅̅̅̅̅̅̅̅ 𝑜 ̅̅̅̅̅
𝑃𝑅𝐸𝑆𝐸𝑇 𝑆𝐸𝑇: señal, normalmente activa el nivel bajo, que coloca al contador en un
determinado estado o cuenta.
̅̅̅̅̅̅̅̅̅: señal que se define si la cuenta se realiza de forma ascendente (1) o descendente
𝑈𝑃/𝐷𝑂𝑊𝑁
cero (0).
El código binario que más comúnmente se utiliza para el contaje es el binario natural BN, pero también
existen o se pueden diseñar contadores que utilicen cualquier otro código.
Si el contador utiliza el código BN la cuenta más alta que puede realizar depende del número de bits o
elementos biestables de que disponga. Así un contador con 5 biestables podrá realizar en código BN
un contaje desde 0 hasta 25 -1=31.
Son circuitos cíclicos, después de llegar al último nº empieza con el primero otra vez.
Podemos diseñar un contador de 2 formas:
Ji, Ki, Si, Ri, Di: valores que debe entregar la parte combinacional del contador
a las entradas de los diferentes biestables JK, SR, D para que el contador
evolucione de forma adecuada.
Las salidas Ji, Ki, Si, Ri, Di únicamente dependen de las entradas Qit-1, apareciendo en
la tabla de verdad las columnas Qit únicamente para poder determinar los valores de
las salidas, en función de los valores de transición que tiene cada uno de los diferentes
biestables que se pueden utilizar.
Mediante su cronograma:
Este método de diseño es mucho más efectivo que el método de tabla de transición al
no estar limitado por el número de salidas del contador y la complejidad para realizar
simplificaciones de funciones con número de entradas mayor de 5.
Como puede comprobarse los biestables con salidas Q0 y Q1 conmutan por flanco de
subida de la señal de reloj CLK, instantes de tiempo presentados con líneas verticales.
Puede comprobarse en el cronograma que las transiciones de las salidas Q0 y Q1
ocurren siempre después de los flancos de subida de la señal de reloj.
Para obtener las ecuaciones del contador nos basaremos en estas dos premisas:
igualdad lógica→D=Q
El biestable siempre permanece
igualdad en programación→D:=Q
con el mismo valor.
Fijándonos en la primera salida Q0, vemos que esta siempre conmuta en todos los
flancos de subida de la señal de reloj. Su ecuación lógica será:
̅̅̅̅
𝑄0 = 𝐷0
La salida Q1 es algo más compleja, presenta dos cambios de nivel y dos
mantenimientos (uno a 1 y otro a 0), todo ello en un ciclo del contador (estados del 0
al 3):
𝐷1 = ̅̅̅̅
𝑄1 → 𝑐𝑎𝑚𝑏𝑖𝑎 𝐷1 = 𝑄1 → 𝑛𝑜 𝑐𝑎𝑚𝑏𝑖𝑎
̅̅̅̅ · 𝑐𝑜𝑛𝑑𝑖𝑐𝑖ó𝑛 𝑐𝑎𝑚𝑏𝑖𝑜 + 𝑄1 · 𝑐𝑜𝑛𝑑𝑖𝑐𝑖ó𝑛 𝑚𝑎𝑛𝑡𝑒𝑛𝑖𝑚𝑖𝑒𝑛𝑡𝑜
𝐷1 = 𝑄1
Debemos implementar una ecuación lógica que tenga dos minitérminos, uno que se
active en las transiciones y otro que se active en los mantenimientos. La ecuación
lógica será:
cambia cuando Q0=1
𝐷1 = ̅̅̅̅
𝑄1 · 𝑄0 + 𝑄1 · ̅̅̅̅
𝑄0 se mantiene cuando Q0=0
Las condiciones de cambio y de mantenimiento las obtendremos de las salidas de
menor peso del propio contador, así vemos (indicado por flechas verdes) que cuando
Q1 cambia de estado, Q0 toma siempre el valor 1. En los mantenimientos observamos
que cuando deben producirse (círculos en Q1) Q0 tomar siempre valor 0, indicado
ahora por una flecha azul.
En este caso son necesarios 3 biestables, tantos como el número de bits del
número de la cuenta más alta.
Fijándonos en las salidas Q0 y Q1, comprobamos que siguen las mismas ecuaciones del
contador de 0-3, esto ocurrirá siempre que el contador realice el contaje en el código
BN y se le deje alcanzar la cuenta máxima para el número de bits que posee.
𝐷1 = 𝑄1 · 𝑄0 + 𝑄1 · ̅̅̅̅
𝑄0
̅̅̅̅ · 𝑄0 · 𝑄1 + 𝑄2 · (𝑄0
𝐷2 = 𝑄2 ̅̅̅̅ + 𝑄1)
Contador descendente de 7 a 0:
𝐷0 = ̅̅̅̅
𝑄0
Para la variable de salida Q1 ahora sí se producen cambios en las
condiciones de cambio mantenimiento debido a la inversión temporal,
igual que ocurre en la salida Q2.
̅̅̅̅ · 𝑄0
𝐷1 = 𝑄1 ̅̅̅̅ + 𝑄1 · 𝑄0
𝐷2 = ̅̅̅̅
𝑄2 · ̅̅̅̅
𝑄0 · ̅̅̅̅
𝑄1 + 𝑄2 · (𝑄0 + 𝑄1)
Contador ascendente de 0 a 6:
Q1
Q2
0 1 2 3 4 5 6 0 1
𝑄0 · ̅̅̅̅̅̅̅̅̅̅̅̅
𝐷0 = ̅̅̅̅ (𝑄1 · 𝑄2)
̅̅̅̅ · 𝑄0 + 𝑄1 · 𝑄0
𝐷1 = 𝑄1 ̅̅̅̅ · 𝑄2
̅̅̅̅
𝐷2 = ̅̅̅̅
𝑄2 · 𝑄0 · 𝑄1 + 𝑄2 · ̅̅̅̅
𝑄1
Contador ascendente de 1 a 5:
Q0
Q1
Q2
5 1 2 3 4 5 1 2
̅̅̅̅ · (𝑄1Ꚛ𝑄2) + 𝑄0 · 𝑄2
𝐷0 = 𝑄0
̅̅̅̅ · (𝑄2
𝐷1 = 𝑄1 ̅̅̅̅ · 𝑄0) + 𝑄1 · 𝑄0
̅̅̅̅
𝐷2 = ̅̅̅̅
𝑄2 · 𝑄1 · 𝑄0 + 𝑄2 · ̅̅̅̅
𝑄0
Contador BCD:
Q0
Q1
Q2
Q3
0 1 2 3 4 5 6 7 8 9 0
𝐷0 = ̅̅̅̅
𝑄0
̅̅̅̅ · 𝑄3
𝐷1 = 𝑄1 ̅̅̅̅ + 𝑄1 · 𝑄0
̅̅̅̅
9 8 7 6 5 4 3 2 1 9 0
𝐷0 = ̅̅̅̅
𝑄0
𝐷1 = ̅̅̅̅ 𝑄0 · ̅̅̅̅̅̅̅̅̅̅̅̅
𝑄1 · ̅̅̅̅ ̅̅̅̅ · ̅̅̅̅
(𝑄2 𝑄3) + 𝑄1 · 𝑄0 = ̅̅̅̅
𝑄1 · ̅̅̅̅
𝑄0 · (𝑄2 + 𝑄3) + 𝑄1 · 𝑄0
̅̅̅̅ · 𝑄0
𝐷2 = 𝑄2 ̅̅̅̅ · 𝑄1
̅̅̅̅ · 𝑄3
̅̅̅̅ + 𝑄2 · (𝑄0 + 𝑄1)
𝐷3 = ̅̅̅̅
𝑄3 · ̅̅̅̅
𝑄0 · ̅̅̅̅
𝑄1 · ̅̅̅̅
𝑄2 + 𝑄3 · (𝑄0 + 𝑄1 + 𝑄2)
5.6. Registros de desplazamiento
Un registro es un conjunto de biestables en los que la señal de reloj CLK llega a todos a la vez, lo que
hace que conmuten todos a la vez.
Conmutar implica que, si tiene que cambiar, pasa
Podemos clasificar los registros según: de 0 a 1 o de 1 a 0, y. si no le toca cambiar,
conmuta igualmente de 0 a 0 o de 1 a 1.
Su función de su entrada/salida:
Todos los bits se mueven una Sirve para hacer desplazamientos en serie, desplaza un bit a lo largo de los
posición cuando llega CLK registros.
0 1 1 0 D0 Q0 D1 Q1 D2 Q2 D1 Q1 D2 Q2
D0 Q0
D Q
0 1 1 0
Carga asíncrona:
1 0 1 1 1 1 1 0 1 1
Activa a nivel bajo:
0 1 1 0 1
0 1 1 0 1
No se suelen usar.
Carga paralelo
Se puede hacer a través de las entradas síncronas (D) o asíncronas (SET, RESET)
del biestable.
Desplazamiento bidireccional:
Universales:
Lo hacen todo, tienen una serie de entradas para configurar, pueden hacer
carga paralelo y desplazamiento bidireccional.
𝑑𝑖 = ̅̅̅̅̅
𝐷/𝐼 · 𝐸𝑆𝐼 + 𝐷/𝐼 · 𝐸𝑆𝐷
Hay muchos circuitos de lógica programable. Por ello, vamos a ver su estructura por encima y ver para
qué sirven.
Distinguimos:
PAL
Su estructura es:
GAL:
Hay varias GAL que tienen la misma nomenclatura que las PAL, pero en vez de empezar
por P empiezan por G.
Las GAL (a diferencia de las PAL que se borraban con luz ultravioleta) se borran
eléctricamente, el programador la borra y la escribe otra vez.
FPGA:
Se utilizan cuando tengo que meter una escala de integración muy alta.
Tal cual
Negados
A través de biestables
Las macrocélulas presentan la siguiente estructura:
Las LCA tiene un circuito lógico y Son 18 hilos porque entran 18 bits
si quiero hacer un sumador tengo
que meter las ecuaciones lógicas
del sumador, por ellos las FCGA
son más sencillas a la hora de
implementación.
Tiene un sumador/restador.
Dependiendo de la familia hay algunas en las que podemos meter señales analógicas
en los pines.
Las muestras nos van a llegar, o las vamos a sacar, siempre por un registro entrada paralelo/salida
paralelo.
Los conversores pueden ser:
Parámetros característicos:
Tipo de código:
Resolución:
Tiempo de conversión:
Características de funcionamiento:
Offset:
Se puede corregir si
los conversores llevan
una entrada a la cual
se le pone un
potenciómetro para
regular el offset.
Error de ganancia:
También se puede
corregir con un
potenciómetro.
Linealidad:
Conversión en serie
Conversión en paralelo:
Conversión directa:
Vr=4.3 v → z=4.3 v
Vr=-3.9 v → z=-3.9
Conversión secuencial:
Frecuencia variable
A/D:
Salida temporal:
Realmente no convierten a una señal digital, sino a un único bit que cambia su
frecuencia o su anchura de pulso.
Tensión/frecuencia:
Salida paralelo:
Tipos:
Bucle abierto:
Actuación simultánea:
Bucle cerrado:
Conversión D/A:
Rampa binaria:
Si la señal de entrada es baja, el tiempo de
conversión es pequeño, y si las señales
alta (mayor amplitud), el tiempo es mayor,
es decir, en función de la magnitud de la
señal de entrada analógica que quiero
convertir, variará el tiempo que necesitó
hasta que se cruza con la rampa, cuanto
mayor es la tensión de entrada más
tiempo necesito.
Esta unidad de control resetea el contador y este empieza a contar. Lo que cuenta
se convierte a analógico y obtengo una escalera según va contando.
Por eso nos interesa que el contador sea UP/DOWN (la información de U/D me la
daría el comparador). Y de esta forma nunca reseteo el contador.
Rampa analógica sencilla:
Ya no se utiliza porque cuentan con biestables y lógica combinacional, por lo tanto, mínimo necesito
2-3 integrados.
Hoy en día se hace con un microcontrolador que cuenta con un único chip.
Estas máquinas tienen siempre una parte de memoria (biestables) y otra de lógica combinacional (hace
evolucionar los biestables).
Moore:
S=f(Qi)
S=f(Ei, Qit-1)
Entrada/Salida
Q1 Q0 E Q1 Q0 S
+
Las máquinas de estados pueden controlar:
Cuando tengo circuitos con inercia, tengo que usar circuitos asíncronos o circuitos
síncronos con una señal de reloj que va cambiando cada vez que cambian las entradas.