[go: up one dir, main page]

0% encontró este documento útil (0 votos)
212 vistas36 páginas

Tema 5 Circuitos Secuenciales

El documento describe los circuitos secuenciales. Estos circuitos almacenan información sobre estados anteriores mediante elementos de memoria como biestables. Se clasifican en síncronos, que cambian de estado al ritmo de un reloj, y asíncronos, que cambian cuando varían las entradas. Dentro de los biestables se describen los tipos RS, JK, D y T.

Cargado por

María Vázquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
212 vistas36 páginas

Tema 5 Circuitos Secuenciales

El documento describe los circuitos secuenciales. Estos circuitos almacenan información sobre estados anteriores mediante elementos de memoria como biestables. Se clasifican en síncronos, que cambian de estado al ritmo de un reloj, y asíncronos, que cambian cuando varían las entradas. Dentro de los biestables se describen los tipos RS, JK, D y T.

Cargado por

María Vázquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 36

TEMA 5: CIRCUITOS SECUENCIALES Los circuitos están formados por Combinacional Secuencial

una combinación de una parte


F=f(a,b,c) F=f(a,b,c,Qit-1)
5.1. Introducción secuencial y otra combinacional

Todo circuito digital lo podemos clasificar como: se basan en valores anteriores del
circuito → necesita elementos para
Circuito combinacional: guardar esa info → biestables

Responden inmediatamente a un cambio de sus variables de entrada y no guardan


ningún tipo de información, por lo que una misma combinación de sus variables de
entrada responde siempre con la misma salida.

En estos sistemas no se tiene prácticamente en cuenta el tiempo, ya que la salida es


únicamente función de las variables de entrada.

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.

5.2. Clasificación de los sistemas secuenciales

Dependiendo de su forma de trabajo podemos clasificar los sistemas secuenciales como:

Sistemas asíncronos: Cambia la entrada → cambia de estado

Van evolucionando a medida que cambian las variables de entrada.


Activa por flanco
Sistemas síncronos: Solo cambian de estado al ritmo de CLK que puede ser:
Activa por nivel
Son sistemas que necesitan de una señal de sincronismo o reloj para ir evolucionando.

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 (𝑄, 𝑄̅).

Las entradas las podemos clasificar en 3 tipos:

Entradas específicas del biestable: Las que le hacen evolucionar de estado

Pueden ser una o dos, dependiendo del tipo de biestable.

Entrada de reloj (CLK):

Solo la poseen los biestables síncronos.

Esta entrada es la que provoca su conmutación si procede.

Entradas asíncronas de control: Suelen ser activas a nivel bajo

Estas entradas no necesitan de la señal de reloj (en los biestables síncronos) para
actual sobre la salida. Pueden ser:

De puesta a 1: SET o PRESET

De puesta a 0: CLEAR o RESET

Podemos encontrar 4 tipos de biestables:


Como disponen de la RS JK D T
entrada de reloj, se
trata de biestables
síncronos

Los biestables se clasifican en:

Asíncronos: podemos encontrar varios tipos:

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.

Su modo de funcionamiento queda reflejado en la siguiente tabla:

Activas a nivel alto (1)


Sí necesito el t-1 porque lo
tengo que mantener
Resetea el biestable, da
No necesito el t-1 porque
igual Qt-1, pongo Qt a 0
independientemente de
Resetea el biestable, da lo que valga, lo va a poner
igual Qt-1, pongo Qt a 1 a0oa1
RQt-1
S 00 01 10 11
0 0 1 0 0 𝑄𝑡 = 𝑆 · 𝑅̅ + 𝑅̅ · 𝑄𝑡−1
1 1 1 ? ?
De la tabla obtenemos las ecuaciones:

Estas ecuaciones se pueden implementar con puertas NOR:


̅̅̅̅̅̅̅
0 + 1 = 1̅ = 0 Al suponer que
̅̅̅̅̅̅̅
0 + 0 = 0̅ = 1 conmutan a la vez el
̅̅̅̅̅̅̅
1 + 0 = 1̅ = 0 sistema empieza a
Estado inicial ̅̅̅̅̅̅̅
1 + 1 = 1̅ = 0 oscilar (se llama carrera)
Estado 2
01
0 0 1 0
Estado 3
1 01 ¿Cuánto tiempo oscila?
A partir del estado 3
Llegará un momento en que los tiempos
suponemos que las de propagación de las puertas no sean
puertas conmutan a iguales, uno se adelanta y ya no
la vez realimentan a la vez→deja de oscilar
1 0 0 1 0 1 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.

Aplicando los teoremas de Morgan a las ecuaciones de las variables de salida,


obtenemos las siguientes ecuaciones, con las que podemos materializar el
biestable RS a partir de puertas NAND:
En este caso S y R son activas a
nivel bajo, es decir, S=0→Q=1
̅̅̅̅̅̅
1 · 1 = 1̅ = 0
̅̅̅̅̅̅
0 · 0 = 0̅ = 1
̅̅̅̅̅̅
1 · 0 = 0̅ = 1
1 0 1 0
1 1 1 1 0
1 0 0
e
w

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

Es básicamente un biestable RS al que se le han añadido algunas puertas para


evitar los estados de indeterminación. J≈S→SET

Su tabla de funcionamiento es: K≈R→RESET

Obtenemos las siguientes ecuaciones, con las que podemos materializar el


biestable JK a partir de puertas NAND: El problema surge ahí
SR

0
Su tabla de transición es:

Cuantas más X hay en la


tabla de transición, más
sencilla será la lógica de o no cambio→K=0
control de las variables o RESET→K=1
o no cambio→K=1
o SET→K=0
o no cambio→J=1
o RESET→J=0
o no cambio→J=1
o SET→J=1
Síncronos

Son todos aquellos que disponen de una entrada de sincronización o reloj.

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:

Entrada de reloj activa a nivel alto:

Son todas aquellas que permiten el cambio de estado en el biestable


cuando toman valor 1.

Si cambian las entradas cuando CLK=1→cambian las salidas.

Entrada de reloj activa a nivel bajo:

Son todas aquellas que permiten el cambio de estado en el biestable


cuando toman valor 0.

Si cambian las entradas cuando CLK=0→cambian las salidas.

Entrada activa por flanco de subida: Es la que más vamos a usar

Son las que permiten el cambio de estado en fiesta hable cuando se


produce una transición de nivel bajo a alto.

Solo permite la conmutación del biestable en un instante.

Sube la CLK y se produce la conmutación y aunque cambie, la salida no


vuelve a conmutar.

Entrada activa por flanco de bajada:

Son las que permiten el cambio de estado en el biestable cuando se


produce una transición de nivel alto a bajo.

Entradas asíncronas:

Algunos biestables síncronos disponen de una serie de entradas que


pueden actuar sobre el biestable sin la necesidad de los pulsos de reloj.

La función de estas entradas es la de poder cargar en el biestable un


cierto estado.

Pueden ser:

SET o PRESET: ponen el biestable a 1.

CLEAR o RESET: ponen el biestable a 0.


En los biestables síncronos para que no haya problema en la conmutación o validación
de los datos de entrada se tienen que mantener unos tiempos entre las señales de
entrada y la señal de reloj. Estos tiempos son:

Tiempo de establecimiento o setup (ts):


Para que conmute el biestable
Es el tiempo que deben estar estables las entradas antes de la
correctamente tengo que tener
la información en las entradas activación de la señal de reloj para que entren correctamente al
SR un tiempo ts antes de que se biestable.
produzca el flanco, y no debo
quitar el valor de SR hasta que Si no se mantiene este tiempo, es posible que el biestable no conmute
no haya pasado el th. o lo hagan incorrectamente.
Normalmente: Tiempo de mantenimiento o hold (th):
ts≈5 ns
th≈0-3 ns
Es el tiempo que se deben dejar estables las entradas después de la
activación de la señal de reloj.

Para un biestable RS que conmute por flanco de subida de la señal de reloj sería:

50% del flanco de subida 50% del flanco de subida

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

Se establece después del S=0


Sí le hace caso → → Q=0
tiempo de transición del 0 R=1
biestable

ts th ts th

En el primer flanco de subida de la señal de reloj (CK) el biestable conmuta


correctamente, ya que la señal que cambia (S), lo hace antes y después de los tiempos
ts y th. En cambio, en el segundo flanco de subida de la señal de reloj (CK) la señal R
cambia de valor y no respeta el tiempo ts, por lo que se desconoce el estado al que
conmuta el biestable.
Dentro de los biestables síncronos encontramos varios tipos:

D:

Este tipo de biestables disponen de una única entrada de datos (D), y


su funcionamiento es tal que, al activarse la señal de reloj, el valor
presente en su entrada D pasa a la salida Q. También se denominan
LATCH.

Su tabla de funcionamiento es:

No usa el valor anterior,


directamente Qt es la entrada D.

Nos da igual t-1, se almacena el


valor pero no se usa para obtener el
nuevo estado.

Podemos implementar este dispositivo a partir de un biestable RS:

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).

Su tabla de transición es:

T:

Estos biestables antes


Dispone sólo de una entrada de control además de la entrada de reloj (igual
se usaban para hacer que el S).
contadores
Su funcionamiento es tal que cuando la entrada T toma el valor 1 el biestable
conmuta de estado con cada activación de la señal de reloj, y si la entrada T
toma el valor 0 el biestable no conmuta.

Su tabla de funcionamiento es:

T=0 → Q se mantiene

T=1 → Q cambia
Su tabla de transición es:

Podemos implementar un biestable T a partir de un JK:

RS:

Es un biestable RS al que se le han puerteado las entradas S y R con la señal de


reloj. Con ello se consigue que, mientras la señal de reloj no sea válida, el
biestable no conmute.
Se trata de un biestable RS síncrono
Un posible esquema sería: con señal de reloj y entradas SET y
RESET activas a nivel alto.

Con las dos puertas adicionales se


consigue:

Validar las señales R y S


con un nivel alto de la
señal de reloj

Que las señales asíncronas


entran al biestable sin
estar puerteadas con la
señal de reloj

JK:

Este tipo de biestable presenta un inconveniente cuando se puertean sus


entradas con una señal de reloj, ya que, si el pulso de reloj es menor que el
tiempo de conmutación de las puertas de entrada, el biestable no conmutará,
pero, si el pulso del reloj es mayor que el tiempo de conmutación del biestable,
este podrá conmutar varias veces y quedará en un estado indeterminado (con
J=1, K=1). Para resolver estos inconvenientes se recurre a biestables que
conmuten por flanco y no por nivel de la señal de reloj.

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:

A través de una red R-C:

Puertas inversores en serie:

Dependiendo de la conexión de sus elementos internos podemos clasificarlos en:

Monoestables sin realimentación:

Son aquellos en los que la información se desplaza en un único sentido


sin haber memorización.

En estos monoestables la duración del estado inestable (de ahora en


adelante pulso de salida) no puede ser nunca superior a la duración de
la entrada.

Su funcionamiento se basa en el retardo de la señal entrada para


después puertearlo con la señal de entrada sin retrasar.

Su esquema es: En este caso puertear


Puerteo la señal de entrada con la
la señal consiste en
misma señal de entrada retrasada, para
invertirla
obtener un pulso.

Finalidad: convertir un flanco en un


pulso.

Si quiero un pulso más ancho lo consigo


con un Trigger Schmitt. Su diagrama de tiempos es:
Monoestables con realimentación:

Pueden ser de varios tipos: disparados por nivel, disparados por


flancos, no redisparables, redisparables…

Su estructura es muy parecida a la de un biestable en el que se ha


introducido una red R-C en una rama de realimentación.

Su esquema es: Biestable SR alimentado con


un condensador
Si S=1→Q=1→carga y descarga C→cambia P

Cuando la puerta de abajo entiende que en la


entrada P tiene un 1 conmuta y hace que la
puerta de arriba también conmute y el
biestable vuelva al estado inicial.

Su diagrama de estados es:

El estado estable en este circuito es del de (𝑄 = 0, 𝑄̅ = 1), en


este estado el condensador C permanece descargado y en el
punto P tenemos un nivel alto de tensión, por lo que el circuito
es estable. Cuando la entrada S pasa a valor alto, las salidas
pasan al estado (𝑄 = 1, 𝑄̅ = 0). Con estos niveles lógicos de
salida el condensador C, que permanecía descargado,
comienza la carga, permaneciendo el punto P (mientras la
tensión del condensador sea baja) a nivel bajo. Cuando la
tensión del condensador alcanza el nivel alto lógico, la variable
P toma el valor 1, provocando la vuelta al estado estable del
monoestable. Se deduce que el tiempo que permanece
monoestable en el estado inestable viene determinado por la
red R-C.

También podemos dividir los monoestables en:

Redisparables:

Mantienen el estado inestable un tiempo t después del último disparo.

Su diagrama de tiempos es:


Al haber un segundo flanco
se redispara (vuelve a
generar el pulso)
No redisparables:

Mantienen el estado inestable un tiempo t después del primer disparo.

Su diagrama de tiempos es: Aunque tenga otro flanco


solo hace caso al primero
y se dispara una vez

Circuitos astables:

Son circuitos generadores de impulsos u osciladores de una onda cuadrada, carecen


en general de entradas y no poseen ningún estado estable.

El circuito más simple lo podemos construir a partir de un inversor Trigger Schmitt y


una red R-C:
Tengo un lazo de
histéresis y quiero meter
También es posible
la puerta P en el lazo
construir un astable P
a base de un
biestable en el que
se introducen dos
redes R-C en las dos
realimentaciones.
P

En realidad, C se carga y se
V2 V1
descarga entre V1 y V2 C descargado C cargado

Tengo C descargado→Tengo un 0→ Salida 1→se va cargando el condensador→Va


subiendo de tensión→Conmuta en V1→La puerta vale 0→C se descarga a través
de R

Su diagrama de tiempos es:

Las tensiones que aparecen en el diagrama


de tiempos (V1 y V2) son las tensiones de
conmutación de la puerta Trigger Schmitt.

Si en lugar de emplear este tipo de puertas


hubiésemos empleado una puerta normal
el circuito no oscilaría, ya que la tensión de
salida iría aumentando o disminuyendo
hasta igualar a la tensión de entrada.
Un circuito muy utilizado para realizar las funciones de un monoestable o astable
(dependiendo de su conexión) es el LM555, que puede ser empleado con tensiones de
alimentación de 4.5 a 18 voltios, por lo que puede ser utilizado con tecnología TTL.

Conexionado para operar como monoestable:

Conexionado para operar como astable:

Como normalmente vamos a


usar circuitos síncronos activos
por flanco de subida, lo que
duran t1 y t2 me da igual, me
interesan las distancias entre
flancos→periodo de oscilación
T=t1+t2

5.5. Circuitos contadores Cuentan números en un código

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:

Mediante tabla de transición:

Para diseñar el contador debemos realizar su tabla de transición, en la que se escriben


todas las transiciones posibles del contador desde el estado (t-1) al estado (t).
Estado en el que estoy Estado en el que estoy
en el instante anterior Q1t-1 Q0t-1 Q1t Q0t
en el instante actual
Cuenta de 0 a 3
0 0 0 1
0 1 1 0
1 0 1 1
1 1 0 0

A partir de la tabla de transición podemos realizar la tabla de verdad, en la que


aparecen, de izquierda a derecha:

Qit-1: valores de salida de los biestables antes de la transición o cuenta.

Qit: valores de salida de los biestables después de la transición o cuenta.

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.

Si quiero hacerlo con el JK:

Me fijo en la tabla de transición del JK:

Y hago la tabla del contador:

Q1t-1 Q0t-1 Q1t Q0t J1 K1 J0 K0


0 0 0 1 0 X 1 X
0 1 1 0 1 X X 1
1 0 1 1 X 0 1 X
1 1 0 0 X 1 X 1

Si quiero hacerlo con el D:

Q1t-1 Q0t-1 Q1t Q0t D1 D0


0 0 0 1 0 1
0 1 1 0 1 0
1 0 1 1 1 1
1 1 0 0 0 0

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.

Aunque mediante biestables JK se pueden obtener las expresiones de los circuitos


combinacionales mucho más simples, debido a que prácticamente toda la lógica
programable implementa biestables D este método es mucho más efectivo.

Para la realización o diseño del contador es necesario realizar un cronograma en el que


aparezca la señal de reloj (o los instantes en los que los biestables realizan las
transiciones) y los diferentes bits de cada salida del contador.

Es importante a la hora de realizar el cronograma que las transiciones de las diferentes


salidas de contador se representen siempre después de los flancos de la señal de reloj,
como realmente ocurre por los tiempos de programación de la lógica utilizada.
Cada vez que hay un flanco de
subida Q0 cambia de valor (pinto
el cambio un poco después
porque el biestable conmuta
DESPUÉS de que haya un cambio
en la señal de CLK)
Valor que uso
para que Q1
conmute a 1

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:

El biestable no conmuta en las transiciones del reloj:

igualdad lógica→D=Q
El biestable siempre permanece
igualdad en programación→D:=Q
con el mismo valor.

El biestable conmuta en cada transición del CLK:

El biestable conmuta de estado


0 1
10 en cada flanco de subida de la
01
señal de reloj.
Basándonos en estas dos premisas observamos un nuevo cronograma, en el que
colocaremos círculos cuando la salida Qi del biestable no conmute (se mantiene) y un
aspa cuando conmute, siempre sobre las líneas verticales que corresponden a los
posibles instantes de conmutación.

Pongo X cuando tengo cambios en la


salida del contador Qi (cuando hay
flancos).

Pongo O cuando hay flanco y la señal se


mantiene.

Cuando no hay flancos la señal se


mantiene (eso no se indica porque es lo
normal).

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.

El primer minitérmino de la ecuación proporciona el valor necesario en las transiciones


y el segundo mini terminó el valor correspondiente en los mantenimientos.

Llegados aquí y observando nuevamente los minitérminos de la ecuación para todas


las condiciones, podemos llegar a las siguientes conclusiones:

Sólo son necesarios los minitérminos de mantenimiento para mantener una


estabilidad Qi a nivel alto.

En ocasiones el no-mantenimiento de una salida Qi conllevará un cambio de 1


a 0. Luego el cambio de 1 a cero puede ser provocado mediante un no-
mantenimiento.
Cronograma para un contador BN que realiza cuentas de 0 a 7:

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.

Para la salida Q2 comprobamos que la condición de cambio ocurre cuando Q0 y Q1


toman valor 1 a la vez. Para la condición de mantenimiento observamos que se cumple
que tanto Q0 como Q1 deben tomar valor 0.

Las ecuaciones para las entradas de los biestables D deben ser:


̅̅̅̅
𝐷0 = 𝑄0

𝐷1 = 𝑄1 · 𝑄0 + 𝑄1 · ̅̅̅̅
𝑄0
̅̅̅̅ · 𝑄0 · 𝑄1 + 𝑄2 · (𝑄0
𝐷2 = 𝑄2 ̅̅̅̅ + 𝑄1)

Al diseñar contadores mediante su cronograma podemos diseñar:

Contadores con cuenta truncada:

Se utiliza para dividir En ocasiones es necesario que el contador no alcance su cuenta


máxima y pase al estado 0 en cualquier otro valor.

A continuación, se analizan las ecuaciones de un contador truncado BN


que realiza cuentas de 0 a 5.

Q0 siempre cambia, luego D0 mantiene la ecuación lógica de los


contadores analizados anteriormente.
D0 tendrá una ecuación diferente cuando se realice un
𝐷0 = ̅̅̅̅
𝑄0 contador trucado cuyo número final sea par, en este caso
habrá que añadir una condición para que no se produzca el
paso a 1 de Q0 en el último estado.
Analizando Q1 vemos que sus secuencia se ha truncado, ya no se
produce el paso de 0 a 1 después de la cuenta 5 (aspa azul tachada).
En este instante no hay que dejar que el minitérmino que provoca la
subida a 1 aporte dicho valor. La condición de este no-cambio habrá
que buscarla ahora con las variables Q0 y Q2.
Se pone para que no
𝐷1 = ̅̅̅̅
𝑄1 · 𝑄0 · ̅̅̅̅
𝑄2 + 𝑄1 · ̅̅̅̅
𝑄0 cambie de 5 a 0
La salida Q2 también experimenta un truncamiento después de la
cuenta del número 5 (círculo azul tachado). Aunque hasta ahora el
paso de 1 a 0 lo habíamos identificado como un cambio, en realidad
en este caso es un no-mantenimiento, luego habrá que actuar sobre la
condición que habita el mantenimiento de Q2.
̅̅̅̅ · 𝑄0 · 𝑄1 + 𝑄2 · 𝑄0
𝐷2 = 𝑄2 ̅̅̅̅

A partir de estas ecuaciones podemos predecir que cuanto más difiera


el cronograma del contador respecto del binario sin truncamiento,
más modificaciones habrá que realizar las ecuaciones del contador
binario.

No olvidar que un contador no puede repetir estado o cuenta dentro


del mismo ciclo, así la cuenta 0, 1, 2, 3, 2, 4 no se puede realizar debido
a que desde el estado 2 hay dos posibles transiciones.

Para conseguir estas secuencias es necesario disponer de un elemento


de memoria (biestable) que indique si el contador se encuentra en la
primera transición del 2 o en la segunda. También se puede obtener
un circuito que realice esta secuencia realizando un contador de 0 a 5
y añadiendo posteriormente un codificador que transforme los
números 4 y 5 de salida del contador en los números 2 y 4 de la
secuencia.

Otra forma de conseguir contadores trucados se basa en resetear el


contador inmediatamente después de alcanzar el siguiente estado
después de la última cuenta. Este procedimiento no es nada
recomendable puesto que el contador alcanza un estado más, aunque
por muy poco tiempo. Para conseguir el retorno a 0 se realiza un RESET
mediante una función lógica que decodifica o se activa en el siguiente
estado de la cuenta. Este RESET produce siempre glitches y flancos de
salida no deseados.
Cuando llegue al estado 6
Si fuese de 0 a 5: obtengo un 0, lo meto al
RESET del contador, pero
Q2=1 cuando de tener 6 se quita
el RESET. Esto genera un
estado 6 Q1=1 0
pulso (GLITCH) donde no
Q0=0 debería haber pulso y Q2
se extiende más de lo que
debería.
Contadores descendentes:

Las ecuaciones de un contador descendente son algo diferentes a las


del ascendente debido a la inversión temporal del cronograma. Aun
así, para su implementación siempre es necesario disponer de 2
minitérminos, el destinado a aportar 1 para el cambio y el que
presenta valores 1 en los mantenimientos.

Contador descendente de 7 a 0:

Nuevamente observamos que Q0 siempre cambia, luego mantiene la


ecuación del contador ascendente.

𝐷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:

Para dibujar el cronograma voy


poniendo el número de cada
estado en binario, siendo Q2 el
estado más alto y Q0 más bajo.
Q0

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
̅̅̅̅

𝐷2 = ̅̅̅̅ ̅̅̅̅ + ̅̅̅̅


𝑄2 · 𝑄0 · 𝑄1 + 𝑄2 · (𝑄0 𝑄1)
̅̅̅̅ · 𝑄0 · 𝑄1 · 𝑄2 + 𝑄3 · 𝑄0
𝐷3 = 𝑄3 ̅̅̅̅
Contador BCD descendente:

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:

Entradas serie/salida serie:

También se puede hacer con


biestables D, ya que el D es un SR
con un inversor.

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

Desplazamiento hacia la derecha Desplazamiento hacia la izquierda

Con el desplazamiento en serie la última salida a la podemos volver a conectar


a la entrada, esto se denomina registro de anillo. Puede ser hacia la derecha o
hacia la izquierda.
Entrada paralelo/salida paralelo:

Sirve para almacenar información, es un elemento de memoria en paralelo.

Puedo retirar una entrada y en las Q sigo teniendo los datos.

Entrada paralelo/salida serie:

Carga asíncrona:

El problema de este tipo de registros es que, si mientras estamos


haciendo la carga, se están produciendo flancos del reloj, el registro
no hace caso a estos flancos y sigue haciendo la carga en paralelo.

Debemos asegurarnos de que la carga deshabilita el reloj para que no


vaya haciendo desplazamientos.

1 0 1 1 1 1 1 0 1 1
Activa a nivel bajo:

PR=0→1 1 · 0 = 0̅=1 1 · 1 = 1̅=0 1 · 1 = 1̅=0 1 · 0 = 0̅=1 1 · 1 = 1̅=0


CL=0→0 1 0 0 1 0

0 1 1 0 1

0 1 1 0 1

0→carga de datos 1·1=1̅=0 1·0=0̅=1 1·0=0̅=1 1·1=1̅=0 1·0=0̅=1


0 1
1→desplazamiento según vayamos 1 1 1 0 1 0 1 1 1 0
dando flancos en la señal de reloj
Carga síncrona:

Carga en paralelo y luego hace desplazamiento serie.

En la D pueden entrar tanto las entradas en paralelo (A, B, C) como la


entrada en serie.

En el multiplexor encontramos esto:


ES A
D1 D0 S=0→carga paralelo
D/C S
Z S=1→desplazamiento

Ahora las cargas paralelo y los desplazamientos serie sólo se producen


cuando tengo flancos de la señal de reloj (se tienen en cuenta los
flancos de bajada, es activa por flancos de bajada).

Entrada serie/salida paralelo:

En la figura vemos que después de 8 saltos de reloj vuelve a empezar.

Me sirve para pasar los datos en serie o en paralelo.

No se suelen usar.

Es como un demultiplexor pero con la información que he recibido hasta ese


instante almacenada.
En función de su funcionamiento:

Carga paralelo

Se puede hacer a través de las entradas síncronas (D) o asíncronas (SET, RESET)
del biestable.

Desplazamiento bidireccional:

El registro puede hacer el desplazamiento en serie de derecha a izquierda o de


izquierda a derecha.

Es mejor meter una entrada de datos


independiente para el desplazamiento
de izquierda a derecha (para que las
interconexiones sean menos complejas
en el tramo inicial)

Universales:

Lo hacen todo, tienen una serie de entradas para configurar, pueden hacer
carga paralelo y desplazamiento bidireccional.

Me da igual lo que valgan S1 y S0 si


tengo un flanco de bajada, el circuito
no hace nada porque los bits
conmutan con flanco de subida

activo CLEAR con un 0 (L),


y las salidas se ponen a 0

desplazamiento hacia dcha metiendo un 1


igual metiendo un 0
desplazamiento hacia izqda. metiendo un 1
igual metiendo un 0
no cambia (mantienen el valor)
Módulo registro universal:

𝑑𝑖 = ̅̅̅̅̅
𝐷/𝐼 · 𝐸𝑆𝐼 + 𝐷/𝐼 · 𝐸𝑆𝐷

5.7. Lógica programable

Hay muchos circuitos de lógica programable. Por ello, vamos a ver su estructura por encima y ver para
qué sirven.

Inicialmente los primeros circuitos programables eran las memorias RAM.

Distinguimos:

PAL

Se trata de un circuito no reprogramable.

Su estructura es:

Una serie de PAL estaban Cada puerta OR tiene 7


integradas por un circuito posibles conexiones a puertas
cerámico con una ventanita de
cristal encima de un dado de
AND.
silicio y al iluminar dicho cristal
Además, cada puerta OR me
con luz ultravioleta se podían
borrar (reprogramar). puede resolver cualquier
función lógica de todas las
entradas. con hasta u máximo
de 7 minitérminos (porque
puedo sumar 7 productos de
las 7 puertas AND).

También hay una puerta AND


para controlar que la puerta
OR dé o no salida.

Tiene una puerta OR a la salida con un


inversor → Me hace una función de hasta
7 minitérminos.

La salida puede ir directamente a una


puerta OR.

Tiene hasta 8 posibles entradas→se


pueden meter en un biestable D, todos con
la misma señal de reloj.
PLA:

Es igual que la PAL cambiando ligeramente la estructura.

GAL:

Es una evolución de las PAL→son reprogramables.

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.

Las puertas OR,


dependiendo del pin
(número de entrada),
suman más o menos
minitérminos.

El OLMC tiene la siguiente estructura:

Puertas AND que me


multiplican las entradas.

Puertas OR con nº de pines


variable que me permiten
sacar la variable negada o sin
negar a través de un biestable
D.

Según sale la información la


puedo volver a usar.
CPL:

Tienen mayor integración, más bloques.


LCA:

Están más orientadas a resolver ecuaciones lógicas, pero están en desuso.

Esta lógica programable se utiliza, por


ejemplo, para meter toda la lógica
combinacional que necesita un
microprocesador.

Cada Pi (pin de entrada) tiene 4 salidas.

Los puntitos sirven para hacer


interconexiones, es decir, puedo tirar
hilos por ahí (intentando buscar el
camino más corto), aunque no todos los
puntos son conectables.

Dentro de las LCA encontramos:

Circuito de entrada PAD:

Se puede configurar como


entrada o salida.

Este pin puede ser de salida


o meterse en un biestable D.
Bloque lógico:

Se trata de un circuito combinacional de 5 variables de entrada


y 2 de salida.

La salida puede salir tal cual o puedo pasarla por biestables


para sincronizarla con una señal de reloj.

FPGA:

Son una evolución de las LCA.

Se utilizan cuando tengo que meter una escala de integración muy alta.

Están más orientadas a resolver funciones.

Su flujo de diseño es:

Tiene el esquema siguiente:

Los pines de entrada pueden


llegar a las macrocélulas:

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.

5.8. Conversores D/A y A/D Va→A/D→digital→PWM

Los conversores son un mix entre circuitos digitales y analógicos.

Nos sirven para:

Pasar señales continuas a al dominio de las muestras, es decir, a señales discretas

Pasar muestras a señal digital

Las muestras nos van a llegar, o las vamos a sacar, siempre por un registro entrada paralelo/salida
paralelo.
Los conversores pueden ser:

D/A (son los más sencillos y los más caros):

Parámetros característicos:

Tipo de código:

Lo normal es usar Ca2, porque así podemos representar números


positivos y negativos.

Resolución:

El número de bits de la palabra digital.

Tiempo de conversión:

Desde que inicia la conversión hasta que se obtiene el dato, o desde


que se le da el dato hasta que da la salida analógica.

Características de funcionamiento:

Offset:

Incremento de tensión que da de error un digital analógico.

Si con un dato tiene quedar 0 v y da 0,1 v un offset de 0,1 v.

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:

Error que tiene la pendiente de conversión.


Varía la altura del
escalón → el
amplificador de salida
o de entrada tiene más
ganancia de la cuenta.

También se puede
corregir con un
potenciómetro.
Linealidad:

Como de lineal es la salida (si es proporcional a los bits de


entrada o a los bits de salida).
Al conectar los picos de los
escalones no da una línea recta.

Esto sucede porque las resistencias


internas que se emplean no son
todas iguales → entre escalón y
escalón no hay siempre la misma
diferencia de potencial
Tipos:

Conversión en serie

Conversión en paralelo:

Conversión directa:

Metemos la información (Bi) y pasa por un multiplexor


Vr analógico.
D0 Si suponemos I=0 porque la impedancia
Z de salida del multiplexor es muy alta
D1 obtenemos V.
I=0 𝑉1 + 2𝑉2 + ⋯ + 2𝑛−1 𝑉4
𝑉=
-Vr S 2𝑛
Tengo algo
En uno digital, si en Vr tengo un 1 I=0 proporcional a
lógico y S=0, sale un 1 lógico, que los pesos de la
equivale a cualquier tensión entre 2.4 señal binaria
y 5 v.

En cambio, en uno analógico nos pasa


la tensión exacta (si S=0):

Vr=4.3 v → z=4.3 v

Vr=-3.9 v → z=-3.9

Conversión secuencial:

Modulación por anchura de pulso:

Si tengo 8 bits, el contador es de 8 bits.

El valor que quiero convertir analógico lo comparo con


la salida del contador: mientras la salida del contador
sea menor que el valor de entrada da 1, si es igual o
mayor da 0.

Dependiendo de si el número de la entrada es mayor


o menor el pulso durará más o menos.

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.

No nos interesan, son muy antiguos.

Tensión/frecuencia:

Tensión/anchura del pulso:

Necesito un integrador y un comparador.

Vamos comparando la señal y en el momento en que


conseguimos el valor de entrada, temporizamos y paramos el
integrador.

Salida paralelo:

Nos dan un número, una palabra binaria.

Tipos:
Bucle abierto:
Actuación simultánea:

Comparadores que comparan la tensión analógica que


tengo de entrada Va con Vr.

Cuando la tensión de entrada supera un cierto valor


empieza a dar 1.

Si quiero 8 bits a la salida, 256 combinaciones, tendría


que tener 256 comparadores y 256 resistencias
iguales. Y si quiero 16 bits, 65536 combinaciones,
necesitaría 65536 compradores y resistencias.

Como implementan tantas resistencias y


comparadores son circuitos son muy caros.

Además, si las resistencias no son iguales tengo error


de linealidad.
Actuación simultánea con propagación en serie:

Es un poco más barato que el anterior.

Tengo 8 bits de entrada, a través de un conversor D/A


lo paso a analógico.

Con un restador resto esos 8 bits de entrada a la señal,


y con un convertidor, lo que me queda de la señal
después de restar, lo paso otra vez a 8 bits.

Con los 8 bits de entrada y los 8 que obtengo tras la


resta ya tengo 16. Para hacer esto solo necesito 512
(2·256) comparadores y 512 resistencias.

Lo bueno es que ahorro en componentes. Sin


embargo. el tiempo de propagación es mucho mayor
al tener más integrados.

Si quiero convertir a una velocidad muy alta este


conversor no es muy adecuado.

Bucle cerrado:

Por métodos de contaje:

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.

De lo que se trata es de medir dicho


tiempo y convertirlo en una señal digital.

Se puede hacer con un contador, lo pongo


a contar y cuanto más tiempo pasa hasta
que se cruzan las dos tensiones, obtenga
Tengo una unidad de control con el hilo que inicia la conversión. un valor digital más alto.

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.

Esa escalera se compara con la variable analógica de entrada y, cuando el


comparador conmuta (porque paso de estar por debajo de Va a estar por encima),
le manda un cambio a la unidad de control y el contador transfiere la información
al registro de salida.

Si iniciaremos otra conversión no empezaría a contar de 0, sino que aprovecho el


valor en el que se ha quedado el contador.

Si la salida del contador en analógico es mayor que la entrada analógica, cuento


hacia abajo (y así en menos cuentas llegó al cruce).

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:

Esta rampa se genera de forma analógica con


VR: cuando abro el interruptor analógico que
me está cortocircuitando el condensador,
empezará una rampa. Esta rampa es la que
comparó con la tensión analógica y medimos
el tiempo.

Necesito un generador de impulsos (reloj) que


va a un contador. Cuando se inicia la
conversión el contador empieza a contar, y
cuando el comparador conmuta, le dice a la
unidad de control que se ha alcanzado la
tensión de entrada. Entonces la unidad de
control detiene el contador y se transfiere la
información al registro de salida.

Si Va es alta, tendré un tiempo de conversión


mayor. Por tanto, este tiempo de conversión
no es fijo, depende de la tensión de entrada:
cuanto más alta es la tensión de la señal
analógica que quiere convertir, más tiempo
tarda en convertir.

Rampa analógica doble:

La rampa simple depende de la constante RC


del comparador.

Si C es variable (va perdiendo capacidad), la


rampa cada vez tiene menos pendiente, lo que
hace que suba el tiempo de conversión y el
contador cuente hasta un número más alto.
Por eso este tipo de conversores hay que estar
ajustándolos continuamente.

Este problema se elimina con la doble rampa.

En función de la señal integramos con más o


menos pendiente, y luego con una tensión de
referencia hacemos la integración en el
sentido contrario.

De esta forma el tiempo no depende de RC.

Al contar hacia arriba y hacia abajo el tiempo


total sigue siendo el mismo aunque cambie la
capacidad del condensador.
Aproximaciones sucesivas:

Funciona igual que el juegos de la patata caliente.

Lo ideal, en vez de dar números al azar, es decir un


Vc 1 0 número en la mitad del rango en el que me encuentro.

Si sigo la regla de decir un valor que está en la mitad


entre los dos valores entre los que sé que se encuentra
Q2 Vc 1
el número, la conversión es mucho más rápida.

Tengo una unidad de control que le dice al circuito


cuando se inicia la conversión.
Q2 Q1 Vc
Hay un registro donde almacenamos los números con
los que vamos comparando los que están en la mitad.

Ese registro se convierte en una señal analógica que va


el comprador, y el comprador le dice el circuito
combinacional qué bits tiene que ir modificando.

En función del estado en el que estoy, el circuito mete


esta información al registro.

Hace falta una lógica que me cuente los estados para


mantener los valores de los estados anteriores (este
contador es el divisor que aparece en el circuito).

5.9. Máquinas de estado

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.

Además, en el microcontrolador puedo borrar el software para cambiar su funcionamiento, mientras


que en la máquina de estados tenía que deshacerme de ella y empezar con una nueva desde cero
(hardware).

Estas máquinas tienen siempre una parte de memoria (biestables) y otra de lógica combinacional (hace
evolucionar los biestables).

Hay dos tipos de máquinas de estados:

Moore:

S=f(Qi)

Diagrama de flujo de estados:

Tienen que salir tantas flechas como


combinaciones tengo de entradas:

n entradas→ 2n flechas de salida


Mealy:

S=f(Ei, Qit-1)

Diagrama de flujo de estados:

Entrada/Salida

Para fabricar una máquina de estados:

Hacemos el diagrama de flujo

Pasamos a las tablas de transición

Y obtenemos la tabla de funcionamiento

Q1 Q0 E Q1 Q0 S

+
Las máquinas de estados pueden controlar:

Un circuito electrónico (display):

No tiene inercia: si pongo un dato en el display, el display me da ese valor, y si retiro el


valor, el display no retira.

Un circuito mecánico (motor):

Hay que tener cuidado porque sí existe inercia.

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.

También podría gustarte