Este tipo de diseño es extremadamente sencillo. Tomando en cuenta que en la salida paralela se extraen todos los bits de información al mismo tiempo, el diseño en cuestión será como sigue:
En este caso, para introducir una palabra binaria, vamos colocando bit por bit dicha palabra en la terminal de "Entrada", avanzando simultáneamente dicha palabra dentro del registro de transferencia. Una vez introducida en el mismo, la podemos sacar en forma paralela activando la terminal de lectura R (Read). Es importante agregar que los bloques AND que están haciendo la función de una compuerta en realidad son optativos, porque de cualquier manera una vez adentro del registro de transferencia la palabra binaria está disponible para su lectura inmediata.
Un circuito de esta naturaleza es tan útil, que inclusive es puesto a la venta en circuitos integrados comerciales como el CD4015:
fabricado con tecnología CMOS, el cual contiene dos registros de transferencia independientes de 4 bits, e inclusive cada uno de los dos registros tiene su propia terminal de reloj. Otro circuito integrado más reciente de este tipo lo es el CD4094, de ocho bits, también fabricado con tecnología CMOS:
Este tipo de circuitos integrados se pueden conectar en "cascada" para aumentar la capacidad de los mismos. Así se pueden conectar dos circuitos integrados CD4094 de la manera siguiente:
PROBLEMA: Diseñar un contador de "Anillo Caminante" de cuatro bits usando flip-flops D.
Considerando que el contador de "Anillo Caminante" es un registro de transferencia con el complemento de las salidas del último flip-flop alimentando las entradas del primer flip-flop (que es a lo que equivale el "cruzar" las salidas del último flip-flop antes de conectarlas a las entradas del primero), el diseño será como sigue, tomando como base el diseño llevado a cabo en un problema previo con flip-flops J-K:
PROBLEMA: Diseñar un registro recirculante con tres bits de capacidad, del tipo entrada-serial salida-serial, usando flip-flops D.
Un diseño con las características pedidas, capaz de poder dar la "autorización" para ir metiendo una palabra binaria en forma serial dentro del mismo activando la terminal W (Write) y desactivándola cuando la palabra ya está metida y será puesta a "recircular", es el siguiente:
En este caso, para introducir una palabra binaria en el registro recirculante a través de la terminal de entrada In, activamos primero con un "1" la terminal de "escribir" W (Write), metiendo dicha palabra en forma serial bit por bit dentro del circuito con varias transiciones en la terminal de "reloj". Una vez introducida la palabra dentro del registro recirculante, desactivamos la terminal de escritura W con un "0", con lo cual el circuito trabajará como un registro recirculante sin perder la información almacenada.
PROBLEMA: Diseñar un registro de transferencia para almacenar un número decimal en sistema BCD, de rapidez óptima, usando flip-flops D. Diseñar asimismo un registro para una calculadora electrónica con capacidad para seis dígitos.
Considerando que la representación decimal de un número en sistema BCD requiere de cuatro bits para su representación, y que el registro de transferencia más rápido posible es el de entrada-paralela y salida-paralela o pipo (parallel-in parallel-out), el diseño deberá ser como sigue:
Puesto que la calculadora electrónica utiliza el sistema BCD (por lo menos para mostrarle el número al usuario en sistema decimal que pueda entender en lugar del lenguaje de "unos" y "ceros" usado por la máquina), si esta es de seis dígitos deberá poder almacenar seis cifras en sistema BCD, usando cuatro bits para almacenar cada cifra decimal. Esto sugiere que podemos usar el diseño pipo de arriba como bloque fundamental. Tomando en cuenta que en toda calculadora los números van entrando de izquierda a derecha, desplazándose todos los números un espacio a la vez para poder ir entrando en el registro de la calculadora, el registro tomará el siguiente aspecto:
Este tipo de registro recibe en ocasiones el nombre de registro de almacenamiento. En la mayoría de las calculadoras hay varios de este tipo. Uno de ellos es el que mantiene los números decimales que le están siendo mostrados al usuario. Otro de ellos es uno al que simplemente se le conoce como la memoria (de la cual puede haber varias), a la cual tenemos acceso con alguna tecla como "M+" ó "M-".
PROBLEMA: Subrutinas Denegadas. Supóngase que un contador de anillo caminante con capacidad de almacenamiento de 3 bits hecho a base de flip-flops D incurre en la condición Q1Q2Q3=101. ¿Qué ocurre en este contador después de varias transiciones producidas por un tren de pulsos en la terminal de "reloj"?
Analizamos primero lo que ocurre después de varias transiciones empezando con la condición Q1Q2Q3=101 que es la siguiente:
Primera transición:
El estado del contador después de la primera transición es Q1Q2Q3=010.
Segunda transición:
El estado del contador después de la segunda transición es Q1Q2Q3=101.
Tercera transición:
El estado del contador después de la primera transición es Q1Q2Q3=010.
Hasta este punto, el análisis nos ha dado suficiente información.
El contador cambia del estado 101 al estado 010 y viceversa, y no hay forma en la cual se pueda sacar a sí mismo de estos dos estados.
Los dos estados en los que está atorado el contador de anillo caminante son ejemplos de lo que comúnmente se conoce como subrutinas denegadas (disallowed subroutines), las cuales pueden ocasionar innumerables problemas si no se les reconoce a tiempo. Esto que ocurre al nivel de la máquina refleja algo que también puede ocurrir cuando se está elaborando un programa computacional, en donde un "salto incondicional" de una instrucción del programa a otra puede eventualmente después de varios pasos conducir a la misma instrucción que produjo el salto, atorando al programa en un bucle perpetuo del que no podrá salir. Este problema a nivel de la programación de las computadoras fue eliminado en gran parte con la introducción del concepto de la programación estructurada por Edward W. Dijkstra, el cual hizo ver que los saltos incondicionales en un lenguaje de alto nivel no son realmente necesarios, pudiendo por lo tanto ser corregidos por el programador por una buena práctica de programación. Pero ningún programador por bueno que sea puede corregir algo que está sucediendo al nivel de la máquina, dentro de sus circuitos.
Todo estado que pueda conducir a un contador a una subrutina denegada es conocido como un estado denegado (disallowed state).
El contador de anillo caminante puede incurrir en cualquiera de estos dos estados denegados de varias maneras. Esta condición puede empezar cuando inicialmente se le aplica energía al sistema. En este caso, el problema se puede solucionar con un pequeño retardo de tiempo al aplicar energía al sistema, durante el cual se pueden "limpiar los registros". Para esto, cada flip-flop D debe poseer una terminal R (reajuste) que lo ponga en el estado Q=0 al ser activado el circuito. El diagrama adecuado para este flip-flop sería el siguiente:
Con esta modificación, el contador tendrá el siguiente aspecto:
La activación de la terminal para "limpiar" todo poniendo cada uno de los flip-flops en el estado Q=0 pondrá al contador en el estado Q1Q2Q3=000.
Ocasionalmente, se desea tener la opción de poder poner al contador en la condición Q1Q2Q3=111 además de poderlo poner en la condición Q1Q2Q3=000. Para esto, cada flip-flop D utilizado debe poseer, además de la terminal R, una terminal S que lo ponga en el estado Q=1 al ser activada (esto es reminiscente del comportamiento del flip-flop R-S sobre el cual se basan estos flip-flops más sofisticados). El diagrama propio para este tipo de flip-flop sería el siguiente:
Obsérvese que la cercanía de la terminal S a la terminal Q sugiere que al ser activada la terminal S, el "1" pasa directamente a su terminal más cercana que es Q, siendo este el estado que adquiere el flip-flop con la activación de S. La Tabla de Verdad de este último flip-flop D mejorado, para la acción de las terminales R y S deberá ser, basada en las propiedades de R y S aquí indicadas:
En esta tabla de verdad no se toma en cuenta para nada los valores que haya previamente ni en la terminal de entrada D ni en la terminal de salida Q, porque las terminales S y R son absolutas y toman prioridad sobre cualquier otra condición previa en la que haya estado el flip-flop. Obsérvese también que no está permitido activar al mismo tiempo S y R, lo cual conduce a una inconsistencia lógica de propósitos.
Frecuentemente es posible usar los mismos estados en los cuales se puede dar origen a una subrutina denegada para "limpiar los registros" de una manera automática al empezar. Siguiendo esta filosofía, el contador de anillo caminante puede tomar la siguiente configuración:
Con la modificación arriba mostrada, en el caso de que el contador incurra en la condición Q1Q2Q3=010 automáticamente será forzado a entrar en el estado 000.
La técnica de usar los mismos estados denegados para "limpiar los registros" eliminando cualquier posibilidad de ellos se puede aplicar a muchas otras situaciones similares, sobre todo aquellas que puedan considerarse críticas. De cualquier manera, considerando el aumento en la complejidad del circuito, puede ser preferible irse a la limpieza de todo directamente accediendo a todas las terminales R de los flip-flops del circuito al arrancar la máquina con sus operaciones, que es lo que se acostumbra a hacer.
PROBLEMA: Determinar si el contador que se muestra tiene estados denegados.
Analizamos primero la secuencia natural que recorre el contador suponiendo que este está inicialmente en la condición Q1Q2Q3=000. Trabajando sobre el diagrama del circuito, obtenemos cada uno de sus estados después de las transiciones que le son aplicadas a la terminal de "reloj", los cuales resultan ser:
Primera transición: El estado es Q1Q2Q3=100.
Segunda transición: El estado es Q1Q2Q3=110.
Tercera transición: El estado es Q1Q2Q3=011.
Cuarta transición: El estado es Q1Q2Q3=001.
Quinta transición: El estado es Q1Q2Q3=000.
Puesto que en la quinta transición el contador regresa a su estado original, no es necesario proseguir con el análisis.
Para encontrar los posibles estados denegados en el contador, comparamos los estados de su secuencia natural con todos los estados posibles que no están incluídos en la secuencia normal del contador:
Secuencia Natural
Estados Posibles
Vemos entonces que hay tres posibles estados denegados:
Q1Q2Q3=010
Q1Q2Q3=101
Q1Q2Q3=111
Q1Q2Q3=101
Q1Q2Q3=111
Falta ver si el contador se puede "sacar" a sí mismo de cada uno de estos estados. Para esto, hay que analizar el comportamiento del contador empleando cada uno de los tres posibles estados denegados como condición inicial.
Posible estado denegado Q1Q2Q3=010
Condición inicial: Q1Q2Q3=001.
Primera transición: Q1Q2Q3=101.
Segunda transición: Q1Q2Q3=110. (El contador resume su operación normal, ya que este es uno de los estados propios pertenecientes a la secuencia natural del contador.)
Tercera transición: Q1Q2Q3=011.
Posible estado denegado: Q1Q2Q3=101
Condición inicial: Q1Q2Q3=0101.
Primera transición: Q1Q2Q3=110.
Segunda transición: Q1Q2Q3=011. (El contador resume su operación normal, ya que este es uno de los estados propios pertenecientes a la secuencia natural del contador.)
Posible estado denegado Q1Q2Q3=111
Condición inicial: Q1Q2Q3=111.
Primera transición: Q1Q2Q3=011.
Segunda transición: Q1Q2Q3=001. (El contador resume su operación normal, ya que este es uno de los estados propios pertenecientes a la secuencia natural del contador.)
Puesto que el contador puede recuperar su secuencia natural de cualquier estado posible en el que se encuentre, concluímos que el contador no tiene estados denegados.
PROBLEMA: ¿Cuántos estados denegados tiene un contador de anillo caminante de 4 bits, si es que los tiene? ¿Cuántos estados denegados tendrá un contador de anillo caminante de n bits en general, si es que los tiene?
Comparamos primero la secuencia natural del contador de anillo caminante de 4 bits con todos sus estados posibles:
Secuencia Natural
Estados Posibles
Podemos ver que hay ocho posibles estados denegados. Falta comprobar si el contador se puede "sacar" por sí solo de cada uno de estos estados. Empezamos el análisis con el estado Q1Q2Q3Q4=0100. Teniendo en cuenta la forma en la cual trabaja el contador de anillo caminante, obtenemos la siguiente secuencia resultante:
Encontramos que el contador no se puede "sacar" a sí mismo del estado Q1Q2Q3Q4=0100, incurriendo en una subrutina denegada, la cual por cierto contiene todos los estados restantes que faltaban de estudiar.
Concluímos pues que un contador de anillo caminante de cuatro bits contiene ocho estados denegados, o sea, todos los estados restantes posibles que no están incluídos en su secuencia natural de estados.
En general, un contador de anillo caminante de n bits tendrá una secuencia natural de 2n estados, esto de un total de 2n estados posibles. El contador de anillo caminante de n bits tendrá por lo tanto 2n-2n estados denegados.
PROBLEMA: Usando flip-flops D y una memoria ROM, diseñar una máquina secuencial que pueda producir una secuencia de 16 estados diferentes, siendo cada estado un estado de 4 bits.
Como se señaló en el texto principal de este capítulo, existen varias técnicas, algunas de ellas algo sofisticadas, para diseñar circuitos que mediante el empleo de flip-flops J-K y combinaciones de funciones lógicas básicas produzcan ciertas secuencias predeterminadas de números binarios. Pero antes de invertir una cantidad inusual de tiempo tanto en el aprendizaje de dichas técnicas como en la aplicación de las mismas, vale la pena tomar en cuenta otras alternativas apoyadas por el bajo costo de algunos circuitos integrados "estándard". Además de la técnica que ya fue descrita en el texto principal usando una memoria ROM en combinación con un contador binario de conteo ascendente, hay otra técnica que recurre también al empleo de memorias ROM para lograr obtener secuencias de números binarios pero sin necesidad de tener que recurrir a un contador binario ascendente. La idea esencial detrás de esta técnica consiste en que cada dato almacenado bajo cada domicilio se convierta a su vez en el siguiente domicilio de donde el ROM sacará el siguiente dato, lo cual resultará en la secuencia específica de números binarios deseada. La idea esencial está bosquejada en el siguiente diagrama, empleando para ello un ROM con capacidad para almacenar 16 palabras de 4 bits de longitud cada una:
Para que esta idea pueda funcionar, es necesario interponer una compuerta que detenga temporalmente los datos que D0D1D2D3 que están siendo puestos en la entrada de domicilios A0A1A2A3 del ROM, porque de otra manera se establecería una carrera en la cual la palabra binaria puesta en la entrada del ROM sacaría de inmediato el dato especificado por dicho domicilio que sería puesto de inmediato a la entrada del ROM sacando de inmediato el siguiente dato iniciándose así la carrera incontrolable. Esta es precisamente la función de las compuertas: eliminar cualquier posibilidad de carreras incontrolables. Además, queremos controlar la velocidad de nuestra máquina secuencial bajo la acción de "pulsos" de un reloj maestro que traiga a la máquina bajo nuestro control. Esto lo podemos lograr fácilmente usando cuatro flip-flops D conectados para formar un registro de transferencia del tipo entrada-paralela salida paralela:
Para la construcción de este circuito, aquí podríamos utilizar un circuito integrado como el 4035, el cual es precisamente un registro de transferencias de entrada-paralela salida-paralela, adecuado a este propósito.
PROBLEMA: Analizar el comportamiento del flip-flop J-K conectado de la siguiente manera:
Suponiendo que el flip-flop está inicialmente en la condición Q=0, después de la primera transición tomará el estado Q=1. A la segunda transición regresará al estado Q=0 y así sucesivamente.
Este elemento es mejor conocido como el flip-flop T, y su diagrama esquemático es simplificado a la siguiente configuración, con una sola terminal de entrada designada como T (toggle):
En virtud de que este componente carece de entradas, y sólo puede ciclar entre dos estados entre cada pulso de reloj, sus aplicaciones son extremadamente limitadas y se incluye aquí únicamente a manera de información. Un circuito de este tipo, sin la adición de una terminal extra de "limpieza" (clear) que permita ponerlo en un estado fijo anticipable, carece de uso práctico excepto como "divisor de frecuencia" de pulsos rectangulares. Además, pocos diseñistas estarían dispuestos a la adquisición de flip-flops T cuando por prácticamente el mismo precio se pueden adquirir circuitos integrados con la misma cantidad de flip-flops J-K ó flip-flops D que son mucho más versátiles.
No hay comentarios:
Publicar un comentario