Regístrate | Conectar
El Tamiz Libros Recursos Series Únete 9 Users Online
Skip to content

Computador mágico XVI – El biestable síncrono




La serie “El computador mágico” está disponible también en forma de libro.

En el último capítulo de la serie vimos el biestable RS como celda básica de memoria. Vimos que tenía un comportamiento interesante: podíamos poner un 0, un 1, o pedirle que simplemente no modificara el valor que tenía almacenado. Esto era algo que, hasta ahora, no habíamos podido hacer con nuestras puertas lógicas: su salida siempre dependía exclusivamente de la entrada. En cambio, ahora tenemos un componente, el biestable, cuya salida no solo depende de la entrada, sino también de su estado anterior (es decir, de entradas anteriores).

Pero nos encontrábamos con un problema: el mundo no es ideal. En el mundo ideal, poner 0s y 1s es fácil, y podemos decidir poner un 1 aquí y un 0 allá y otro 0 acullá. Pero en el mundo real hacer eso, todo a la vez, es imposible. Las señales tardan un cierto tiempo (muy pequeño, pero no nulo) en propagarse por los cables. Los transistores tardan un cierto tiempo (pequeño, pero no nulo) en pasar de saturación a corte o viceversa. Es decir, que no todos los 1s y 0s se ponen a la vez en los circuitos combinacionales.

Así que lo que hacemos es introducir el concepto de entrada de sincronismo.

 

 

De momento vamos a intentar hacer lo siguiente: si la señal de sincronismo es un 0, simplemente el biestable ignora todo lo que venga en los bits R y S. Simplemente, sigue manteniendo el valor que había. Si la señal de sincronismo es un 1, entonces sí, hace lo que digan los bits R y S. Esto es lo que se llama un biestable RS síncrono o biestable RS con cerrojo o biestable RS temporizado. Su esquema es el siguiente:

 

Piénsalo un poco y verás que es sencillo: mientras C es cero, a las entradas R y a S del biestable RS les llega siempre un 0. Solamente cuando C es 1 los valores de R y S de la entrada son llevados hasta al biestable RS (me vas a perdonar que utilice el nombre R y S dos veces; todas las fuentes que conozco lo hacen así, de modo que he preferido mantenerlo por si luego tratas de profundizar). La forma de saber si el biestable RS que estamos dibujando es síncrono o asíncrono es mirando la entrada C: si tiene entrada C es un biestable RS con cerrojo; si no la tiene, pues no.

¿Qué es lo que nos permite hacer esto? Lo que nos permite es lo siguiente: cuando C es 0, vamos poniendo 0s y 1s en todas las entradas R y S de todos los biestables que tengamos en nuestro ordenador. Es posible que esto no ocurra a la vez,[1] pero no nos importa, porque como C es 0, todos esos “estados temporales intermedios” serán ignorados. Luego ponemos C=1, y todos los biestables se cargan con el valor que queríamos.

Podemos definir ahora un biestable un poco más sencillo conceptualmente (aunque requiere meter algo más alrededor del biestable RS): el biestable D. Su esquema es el siguiente:

No te confundas con el biestable RS: aunque el dibujo es el mismo, las entradas no son R y S, sino D y C. El funcionamiento es el siguiente: cuando C es 0, se mantiene lo que hay dentro. Hasta aquí, todo igual. Pero cuando C es 1, lo que hay en D se almacena dentro del biestable, y ahí se queda. Fíjate en la ventaja adicional de que la combinación R=1, S=1 (que decíamos que estaba prohibida) ya no puede producirse.

Entonces, ya tenemos un biestable que almacena las cosas solo cuando una señal de sincronismo C se lo dice. Solo nos falta un paso más para llegar a los biestables que realmente se utilizan en nuestros computadores: el sincronismo por flanco. Existen dos formas: por flanco de subida o por flanco de bajada. En ambos casos, tanto cuando C es 0 como cuando C es 1 no cambia nada: la memoria sigue manteniendo el valor. El único momento en que se introduce la entrada en el interior del biestable es cuando hay un cambio en la señal C. En el caso del biestable por flanco de subida, D se almacena en el biestable cuando C pasa de 0 a 1. En el caso del biestable por flanco de bajada, ocurre cuando pasa de 1 a 0.

Estos biestables se representan de la siguiente manera:

El triangulito de la señal C indica que es “por flanco” y el hecho de que sea “por flanco de subida” o “por flanco de bajada” se indica con el círculo: si tiene círculo, es “por flanco de bajada”; y si no, es “por flanco de subida”. A menudo se añaden un par de entradas más, PRE (de preset, algo así como “preponer”) y CLR (de clear, limpiar). Esas entradas son asíncronas, y funcionan de la siguiente manera: si están desactivadas, el biestable se comporta como siempre. Si están activadas, independientemente del valor de C se almacena en el biestable un 1 (si lo que se activa es el PRE) o un 0 (si lo que se activa es el CLR). Te puedes imaginar que estas entradas se utilizan para hacer la inicialización del biestable.

No vamos a ver en detalle cómo funciona. A continuación tienes el esquema lógico de un biestable D comercial, por si quieres echarle un vistazo:

Diagrama lógico del biestable D por flanco de subida de Texas Instruments (sn7474). Aquí, CLK representa la señal de sincronismo C.

Vamos a dejarlo aquí, porque este capítulo, a pesar de no haber sido muy largo, probablemente ha sido duro. Hemos dejado fuera, además, algunos tipos biestables que se usan mucho, como por ejemplo el biestable JK, pero que no nos van a hacer falta para seguir avanzando. En el próximo capítulo veremos cómo combinar estos biestables para hacer circuitos secuenciales.

  1. Mejor dicho: sabemos que es seguro que ocurrirá eso. []

Sobre el autor:

J ( )

 

{ 7 } Comentarios

  1. Gravatar Inquieto | 15/05/2013 at 08:51 | Permalink

    Muchas gracias J. Tan sólo una dudilla. Lanzas al final el biestable D, pero no me queda claro en qué mejora este al RS con cerrojo, parecía que con el RS con cerrojo ya teníamos solucionado el problema de la sincronía, porqué se usa el D entonces?

  2. Gravatar J | 15/05/2013 at 12:44 | Permalink

    Inquieto: el D es más sencillo de usar. Para empezar, cuando quiero meter un 1 dentro, no tengo que andar poniendo 2 entradas, como en el RS (para meter un 1 en el RS tengo que poner un 01 es sus entradas, ¿no?). Y lo equivalente para el 0. Pero es que además en el RS puedo poner (incluso por error) un 11, que no se sabe muy bien lo que almacena dentro. Eso en el D está resuelto, no hay ninguna entrada que sea incorrecta.

    Hasta tal punto es así que creo que a partir de ahora en la serie que solo usaremos biestables D.

  3. Gravatar Inquieto | 16/05/2013 at 08:41 | Permalink

    Gracias :)

  4. Gravatar Inquieto | 16/05/2013 at 08:43 | Permalink

    Ups, perdón, que se me olvidó en el otro post. Y el de flanco? La única diferencia es que se setea o resetea al cambio de C en lugar de al estado de C, porqué es eso útil?

  5. Gravatar J | 16/05/2013 at 01:04 | Permalink

    Inquieto: el resumen es que no sé por qué, pero los de flanco son los que más se usan. Pero déjame especular un poco.

    El problema es que los de “no-flanco” (lo que tú has llamado “al estado de C”) no existen… ¿no te lo crees?

    Imagina que tengo un único biestable, pero que no sea de flanco. Pongo C=0 y meto cosas en la entrada. Lógicamente, se ignoran. Luego pongo C=1 y pongo un 1 en la entrada, pongo C=0 y, ¿qué hay dentro del biestable? Un 1, lógicamente. Hasta aquí, nada que no haya contado ya.

    Pero ahora imagina la siguiente situación: pongo C=1, pongo un 1 en la entrada, luego u 0 en la entrada, luego un 1, luego un 0, luego un 1… y ahora pongo C=0. ¿Qué hay en el biestable? Un 1. Fíjate en que no importa lo que pongo en la entrada cuando C=1, sino lo que hay en la entrada justo en el ultimísimo instante justo antes de pasar de C=1 a C=0. ¿Estás de acuerdo conmigo?

    Pero un momento… ¿eso no es precisamente que el biestable es “por flanco de bajada”? En efecto.

    Y ahora ten en cuenta que en realidad estos diseños son muy académicos, pero no son los que se usan en realidad. En la industria se diseñan directamente los transistores para que tengan ese efecto.

    Así que la explicación que se me ocurre, que no tiene por qué ser la correcta, es que da igual, pero es más sencillo verlo conceptualmente como “de flanco”.

  6. Gravatar yomismo | 16/05/2013 at 04:53 | Permalink

    Yo no estoy de acuerdo contigo. Ese no es de flanco. Cuando tienes c a uno la salida cambia todo el rato hasta que sueltes C. Uno de flanco de bajada solo cambiaria la salida una vez justo en el momento de apagarse. Uno de subida solo cambiaria la salida en el momento de encenderse.

    Otra cosa ¿El biestable D no esta del reves? ¿La negacion no tendria que estar en el reset?

    Mis disculpas si he dicho tonterias.

  7. Gravatar J | 16/05/2013 at 06:22 | Permalink

    No, que va, el que está equivocado soy yo. Estaba pensando únicamente en el estado final, y no en los intermedios. Pues entonces, quizá ese es un bueno motivo: en el de “no-flanco” esos estados intermedios te los comes; en el de flanco, esos estados intermedios quedan filtrados automáticamente.

Escribe un comentario

Tu dirección de correo no es mostrada. Los campos requeridos están marcados *

Al escribir un comentario aquí nos otorgas el permiso irrevocable de reproducir tus palabras y tu nombre/sitio web como atribución.