lunes, 19 de noviembre de 2007

6B: Problemas resueltos




PROBLEMA: Dado el siguiente circuito secuencial asincrono construído a base de flip-flops D:


obtener la tabla de secuencias para dicho circuito suponiendo que los flip-flops D utilizados son del tipo en los cuales los cambios de estado ocurren en la transición positiva (de "0" a "1") del pulso a la entrada de la terminal de reloj. Tras esto, supóngase que hubo una equivocación en la adquisición de los flip-flops D y que el circuito se construye con flip-flops del tipo en los cuales los cambios de estado ocurren en la transición negativa del pulso a la entrada de la terminal de reloj. ¿Qué diferencia hay entre el comportamiento de ambos?

Supondremos, como de costumbre, que el estado inicial del circuito es Q0Q1Q2=000.

Al empezar, para la primera transición, con dos ceros en el NAND, Q1Q2=00; esto pone un "1" en su salida, el cual es invertido en la burbuja inversora NOT en la terminal Clear (CLR) de los tres flip-flops D y por lo tanto no afecta a ninguno de ellos. El primer flip-flop D cambia de estado de Q0=0 a Q0=1 por estar alimentada su entrada con su salida complementaria Q0=1 (de hecho, el primer flip-flop se estará comportando todo el tiempo como un flip-flop T). Este cambio hace que Q0 caiga de "1" a "0" , sin efecto alguno en el segundo flip-flop que le sigue puesto que sólo las transiciones de "0" a "1" en la terminal C producirán un cambio. Por lo tanto, el segundo flip-flop se queda en su estado Q1=0, y lo mismo sucede con el tercer flip-flop.

Para la segunda transición de estados, el primer flip-flop, siempre alimentado en su entrada D con su salida complementaria Q0, cambia su salida de Q0=1 a Q0=0. Pero el segundo flip-flop, estando alimentado con Q0, ve cambiar esta terminal de Q0=0 a Q0=1, con lo cual se provoca un cambio de estado en el segundo flip-flop.

Manteniendo un análisis semejante, acumulamos la siguiente información.

Primera transición: El estado es Q0Q1Q2=100.

Segunda transición: El estado es Q0Q1Q2=0100.

Tercera transición: El estado es Q0Q1Q2=110.

Cuarta transición: El estado es Q0Q1Q2=001.

Quinta transición: El estado es Q0Q1Q2=101.

Al llegar a la sexta transición, tenemos la situación Q1Q2=11, lo cual hace que la salida del NAND cambie de "1" a "0", y este "0" al ser invertido por las burbujas inversoras NOT en las terminales CLR de los tres flip-flops "limpia" al circuito regresándolo al estado Q0Q1Q2=000. Esto se ve más claramente en el diagrama de tiempos para este circuito:



Todo el comportamiento del circuito se puede resumir entonces en la siguiente tabla de secuencias:


El circuito es pues un contador asíncrono módulo 6.

Ahora llevaremos a cabo el análisis sobre este mismo circuito suponiendo que fue construído con flip-flops D cuyo cambio de estado ocurre durante la transición negativa en la terminal de reloj C.

Suponiendo que el estado inicial es Q0Q1Q2=000, al llevarse a cabo la primera transición de "1" a "0" en la terminal C del primer flip-flop. Antes de que ocurra la transición, con dos ceros a la entrada del NAND por el hecho de que Q1Q2=00, hay un "1" a la salida del mismo, el cual es invertido a un "0" por la burbuja inversora NOT en la terminal CLR de los tres flip-flops D. Al ocurrir la transición, el primer flip-flop D cambia de estado de Q0=0 a Q0=0 por estar alimentada su entrada D con su salida complementaria Q0=1. Lo mismo ocurre con el segundo flip-flop por caer su entrada de reloj C de "1" a "0 al cambiar Q0 de "1" a "0". Y lo mismo ocurre en el tercer flip-flop. Pero esto hace que Q1Q2=11, lo cual a la salida del NAND produce un "0", el cual es invertido por cada burbuja inversora NOT a "1" en todas las terminales CLR, "limpiando" el circuito regresándolo al estado Q0Q1Q2=000. Este circuito jamás saldrá del estado Q0Q1Q2=000. Por el simple hecho de haberse utilizado flip-flops activados por transiciones negativas en vez de flip-flops activados por transiciones positivas, el contador modulo 6 ha quedado totalmente inutilizado.

Por regla general, cuando un circuito secuencial asíncrono ha sido diseñado para cambiar de estados con transiciones positivas en la terminal de reloj, si se utilizan flip-flops cuyo cambio de estados ocurre con transiciones negativas el comportamiento del circuito será totalmente diferente e impredecible. Y viceversa.

Es posible modificar el segundo circuito para que se comporte igual que el primero, pero ello requiere poner un inversor NOT conectado inmediatamente a la entrada de cada terminal de reloj C de todos los flip-flops. Si el circuito hubiese sido síncrono, solo se hubiera requerido poner un solo NOT inversor a la entrada de la terminal de reloj "maestra" para igualar los comportamientos de ambos circuitos.

PROBLEMA: Obtener la tabla de secuencias producida por el siguiente contador:




suponiendo que los flip-flops J-K utilizados son activados en sus cambios de estado por una transición positiva (de "0" a "1") en su terminal de "reloj", pero suponiendo también que la combinación de valores J=0 y K=0 se mantiene como la combinación que hace que el flip-flop J-K cambie de estado cada vez que hay una transición positiva en la terminal de "reloj". Supóngase que el estado inicial del contador es Q3Q2Q1=000.

Suponiendo que el estado inicial del contador es Q3Q2Q1=000, al ir la terminal de entrada de "0" a "1" el primer flip-flop cambiará de estado de Q1=0 a Q1=1. Pero como la salida del primer flip-flop está alimentando la terminal de entrada C del segundo flip-flop, al ir de "0" a "1" esto cambiará el estado del segundo flip-flop de Q2=0 a Q2=1. Y como la salida del segundo flip-flop está alimentando la terminal de entrada C del tercer flip-flop, al ir de "0" a "1" el tercer flip-flop cambiará de estado de Q3=0 a Q3=1 . Todo el contador pasará del estado Q=Q3Q2Q1=000 al estado Q3Q2Q1=111. Al siguiente pulso de "reloj" en la terminal principal de entrada C, únicamente cambiará el estado del primer flip-flop pasando de Q1=1 a Q1=0, lo cual no tendrá efecto alguno sobre el segundo flip-flop y a su vez tampoco producirá efecto alguno en el tercer flip-flop. El contador pasa pues del estado Q3Q2Q1=111 al estado Q3Q2Q1=110. Al siguiente pulso, el primer flip-flop cambia de estado de Q1=0 a Q1=1, lo cual cambiará el estado del segundo flip-flop de Q2=1 a Q2=0, lo cual no tendrá efecto alguno sobre el tercer flip-flop. Así, el contador pasará del estado Q3Q2Q1=110 al estado Q3Q2Q1=101. Repitiendo el análisis, logramos obtener la siguiente tabla de secuencias:



No nos debe llevar mucho tiempo para reconocer en base a esta tabla de secuencias que este contador es un contador binario de conteo descendente, un contador binario que va contando "hacia abajo" en lugar de ir contando "hacia arriba". Pero si repasamos los problemas anteriores, encontraremos uno en el cual estudiamos precisamente este mismo circuito, excepto que en dicho problema se comportaba como un contador binario de conteo ascendente. El giro radical en el comportamiento del circuito se dió porque en vez de utilizar flip-flops J-K en los cuales el cambio de estado ocurre cuando la transición en la terminal de reloj es una transición negativa utilizamos ahora flip-flops J-K en los cuales la transición positiva en la terminal de reloj C es la que produce el cambio de estado. Al llevar a cabo un diseño, la especificación de los flip-flops a ser utilizados, ya sea flip-flops activados por una transición negativa o flip-flops activados por una transición positiva, se vuelve tan importane como el diseño mismo, ya que cualquier ambigüedad en dejar clara esta especificación puede arruinar el propósito del diseño produciendo un circuito secuencial con un comportamiento que puede ser completamente inesperado.

PROBLEMA: El siguiente contador es capaz de comportarse de dos maneras diferentes dependiendo del valor que esté puesto en la terminal X. Obténganse las tablas de secuencias tanto para X=1 como para X=0, suponiendo que los elementos flip-flops J-K son del tipo en los cuales el cambio de estados ocurre para una transición negativa en la terminal de reloj C. Se sobreentiende que las terminales J y K están activadas todo el tiempo con los valores que deben tener, no mostrados en el diagrama esquemático, para que se produzca un cambio de estado en cada transición. ¿Qué se puede deducir de los resultados obtenidos y de la comparación de las tablas?


Obviamente, este es un contador asíncrono.

Este circuito es interesante porque los dos NANDs que alimentan a la entrada C del cuarto flip-flop J-K tienen sus salidas conectadas a directamente al mismo punto, lo cual anteriormente se ha dicho que es algo impropio en la conexión de bloques lógicos. Sin embargo, en este caso tal situación es permisible porque los flip-flops que están siendo utilizados son los conocidos comunmente como de lógica de colector abierto (open collector logic), lo cual indica que si la salida de cualquiera de los dos NANDs es "0", entonces dicha salida "jalará" toda la juntura al estado "0" sin importar el valor que esté tratando de poner a su salida el otro NAND, ejecutándose implícitamente la acciónAND por la lógica del colector abierto (repasar el texto principal del segundo capítulo, "Las tres funciones lógicas básicas").

Como el diagrama esquemático no muestra que las entradas J y K de cada flip-flop estén condicionadas de alguna manera, podemos suponer que están puestas a un valor tal que cada transición negativa en la terminal de "reloj" C hará que cada flip-flop cambie de estado, ya que de lo contrario para las otras combinaciones de valores binarios en J y K el circuito no haría absolutamente nada útil.

Empezaremos suponiendo que este contador está en el estado QAQBQCQD=0000. Si la terminal X tiene puesto un valor de "0" todo el tiempo, entonces al empezar todos los componentes lógicos utilizados en el contador tendrán los siguientes valores a sus entradas y sus salidas:


Al ocurrir la primera transición, al ir la terminal "Clock" de "1" a "0", el primer flip-flop situado en el extremo izquierdo cambiará su estado de QA=0 a QA=1. Esto hará que la salida del AND superior alimentado por QA tome un valor de "1", el cual al alimentar al primer NOR en el extremo izquierdo hará que la salida de dicho NOR tome un valor de "0". Con esto, la entrada C del segundo flip-flop caerá de "1" a "0", haciendo que el segundo flip-flop J-K también cambie de estado de Q=0 a Q=1, y a través del segundo AND alimentado por QB que toma el valor de "1" el segundo NOR también pondrá una salida de "0" haciendo que la terminal C del tercer flip-flop cambie de "1" a "0", con lo cual la salida del tercer flip-flop cambiará de QC=1 a QC=0.

En lo que respecta al cuarto flip-flop, este tiene conectadas a su entrada las salidas de dos NANDs, lo cual es posible únicamente bajo la "lógica de colector abierto" ó "lógica alambrada", con lo cual las salidas de los dos NANDs es puesta efectivamente en una función lógica AND; si cualquiera de las salidas de los dos NAND es cero dicha salida "jalará" la salida combinada de ambos NAND a "0". Al cambiar la salida del tercer flip-flop de QC=1 a QC=0, la salida del NAND superior cambiaría de "1" a "0", y por la lógica del colector abierto este "0" jalará el "1" que está poniendo a su salida el segundo NAND, con lo cual la entrada C del cuarto flip-flop cambia de "1" a "0" haciendo que el cuarto flip-flop cambie de estado de QD=0 a QD=1.

De este modo, tras la primera transición, el contador está en el estado QAQBQCQD=1111, lo cual hace que los componentes que todos los componentes lógicos utilizados en el contador tengan los siguientes valores a sus entradas y sus salidas:


Repitiendo el análisis llevado a cabo anteriormente, resulta fácil determinar que, con estos valores, el siguiente estado del contador, su tercer estado, al cambiar la entrada "Clock" al primer flip-flop de "1" a "0" cambiando su salida de QA=1 a QA=0, será QAQBQCQD=0111, por el simple hecho de que en esta ocasión la salida del primer flip-flop asciende de "0" a "1" haciendo con ello que la salida del primer NOR cambie de "0" a "1", y las transiciones positivas en la terminal C (en este caso la del segundo flip-flop) no producen cambios de estado. En pocas palabras, el cambio que experimenta el primer flip-flop no se "propaga" de izquiera a derecha a todos los flip-flops restantes como ocurrió en la situación anterior. Sin embargo, en la siguiente transición, pasando al cuarto estado, tanto el primer flip-flop como el segundo flip-flop cambiarán, pasando el contador al estado QAQBQCQD=1011. Continuando el análisis como lo hemos hecho, podemos ver que para X=0 la tabla de secuencias para el contador empezando con el estado QAQBQCQD=1111 será la siguiente:


No nos debe llevar mucho tiempo el darnos cuenta de que lo que tenemos aquí es un contador binario descendente, ejecutando un conteo binario descensivo desde "1111" hasta "0000". Esto, para X=0.

Veamos ahora lo que ocurre para X=1.

En este caso, suponiendo nuevamente que el contador está en el estado QAQBQCQD=0000, si la entrada X tiene puesto un valor de "1" todo el tiempo, entonces al empezar todos los componentes lógicos utilizados en el contador tendrán los siguientes valores a sus entradas y sus salidas:


Al ocurrir la primera transición, al ir la terminal "Clock" de "1" a "0", el primer flip-flop situado en el extremo izquierdo cambiará su estado de QA=0 a QA=1. Pero este cambio ya no se verá reflejado en los flip-flops posteriores en virtud de que una de las entradas del AND superior conectado al primer flip-flop tiene puesto un valor permanente de "0" todo el tiempo, el "0" proveniente de la entrada X, lo cual tiene el efecto de sacar a la salida QA del primer flip-flop de la acción. Será ahora la salida complementaria QA la que determine lo que ocurre. En la primera transición, esta terminal complementaria cambia de QA=1 a QA=0, haciendo que la salida del NOR cambie de "0" a "1", haciendo que la entrada a la terminal C del segundo flip-flop suba también de "0" a "1", lo cual no producirá transición en el segundo flip-flop. De este modo, tras la primera transición el contador estará en el estado QAQBQCQD=1000. Y en la segunda transición, el contador pasará al estado QAQBQCQD=0100. Continuando el análisis como lo hemos hecho, podemos ver que para X=1 la tabla de secuencias para el contador empezando con el estado QAQBQCQD=0000 será la siguiente:



De la tabla de secuencias nos debe quedar claro que lo que tenemos aquí es un contador binario ascendente, ejecutando un conteo binario ascendente desde "0000" hasta "1111". Esto, para X=0.

Las tablas de secuencias nos han revelado de inmediato que siendo el contador un contador binario de conteo ascendente para X=1, y un contador binario de conteo descendente para X=0, lo que tenemos es, en efecto, un contador dual, el equivalente de dos contadores en uno solo, y todo lo que tenemos que hacer para cambiar el comportamiento es poner un "1" o un "0" en la terminal X.

Ahora nos debe ser obvio que la terminal X, dependiendo del valor que tome, sacará de la acción a los ANDs inferiores (X=0) y meterá dentro de la acción a los ANDs superiores, o bien meterá dentro de la acción a los ANDs inferiores (X=1) y sacará de la acción a los ANDs superiores. Este es a fin de cuentas el propósito de la terminal X y el inversor lógico proporcionado por el NAND de una entrada: meter una hilera de salidas Q dentro de la acción sacando fuera cualquier efecto que pudieran tener las salidas complementarias Q, o bien meter una hilera de salidas complementarias Q dentro de la acción sacando fuera cualquier efecto que pudieran tener las salidas Q. Esta es una estrategia general de diseño válida cuando queremos tener un circuito secuencial dual que sea capaz de comportarse de dos maneras diferentes. Y de hecho, podemos extender el concepto para construír un circuito secuencial que pueda comportarse de tres maneras diferentes, o de cuatro maneras diferentes, o de más maneras diferentes. Esta es la base para un circuito secuencial generalizado cuyo comportamiento puede ser determinado por varias entradas. Este es el principio básico de un autómata determinístico implementado por completo por la vía del "hardware" mediante circuitos integrados que posean funciones lógicas básicas.

PROBLEMA: Sin hacer uso de ninguna de las fórmulas derivadas en los problemas anteriores y sin hacer uso del mapa de Karnaugh, diseñar un contador binario BCD síncrono (ascendente) utilizando para ello el flip-flop más versátil de todos, el flip-flop J-K.

En este problema, llevaremos a cabo el diseño de un circuito secuencial partiendo de cero (en los países de habla inglesa a esto se le llama trabajar from the ground up) y demostraremos con ello que con un poco de ingenio podemos prescindir de fórmulas, álgebra, mapas y demás artificios utilizados para trabajar metódicamente.

La tabla de secuencias para un contador binario BCD, síncrono o asíncrono, debe recorrer los siguientes estados desde el principio hasta el regreso a su estado original:


Obsérvese que se han listado los estados de cada flip-flop en el orden Q4Q3Q2Q1 en el cual nosotros estamos acostumbrandos a contar, con cada número sucesivo creciendo de la derecha hacia la izquierda. Pero en los diagramas esquemáticos, con la señal de entrada (los pulsos del reloj) puesta del lado izquierdo del circuito, y con el flujo de señales del circuito yendo en su mayor parte de la izquierda hacia la derecha (la manera en la cual se leen los diagramas esquemáticos de los circuitos lógicos), para el diseño que llevaremos a cabo será más apropiado utilizar la tabla de secuencias en el orden Q1Q2Q3Q4:


Viendo esta tabla, resulta obvio que el primer flip-flop J-K cuyo estado es Q1 estará alternando siempre en cada transición entre los estados "0" y "1", actuando como un flip-flop "T". El primer bloque será entonces un flip-flop J-K con sus entradas J y K puestas permanentemente en el estado "0" (estamos utilizando en nuestro diseño flip-flops activados por una transición negativa en la terminal de entrada C, de "1" a "0").

A continuación, agregamos un segundo flip-flop cuyas entradas J y K están por determinadas, cuya terminal C derivará de la misma entrada que alimenta a la terminal C del primer flip-flop para que el diseño sea síncrono. Quizás el diseño síncrono más sencillo posible de un contador binario ascendente de dos bits es el que se muestra a continuación:


La secuencia natural de este contador binario síncrono de dos bits será la siguiente:


Para que el contador sea un contador BCD (contando del 0 al 9 en el sistema binario), requerimos que el contador vuelva al estado Q1Q2Q3Q4=0000 en la transición que sigue al estado Q1Q2Q3Q4=1001. Para lograrlo, revisamos los cuatro últimos estados del contador binario BCD para ver cómo se pueden usar para condicionar los flip-flops puestos a la entrada:


Podemos ver en la secuencia que el primer flip-flop no requiere ninguna modificación. Sin embargo, después del estado Q1Q2Q3Q4=1110, el segundo flip-flop deja de contar (permanece en el estado Q2=0) hasta que empiece de nuevo la secuencia. Notamos que esto ocurre al mismo tiempo que Q4 toma el valor de "1". Esto nos sugiere que podemos usar Q4 para desactivar a Q2 en los últimos estados del contador, lo cual se logra fácilmente añadiendo un OR como se muestra a continuación (el OR se encargará de poner el "1" proveniente de Q4 en ambas entradas J y K del segundo flip-flop, con lo cual no ocurrirá nada en dicho flip-flop en cada transición):


(Para simplificar los diagramas, en este circuito y en los que siguen ya no se mostrarán las entradas J y K del primer flip-flop puestas a "0", lo cual se dará por sobreentendido, y lo cual dicho sea de paso es una práctica frecuente en diagramas complejos de circuitos lógicos en lugares en donde se supone que el flip-flop J-K tiene ambas entradas J y K puestas a un mismo valor, el valor con el cual cambiará de estado en cada pulso de reloj, ya que el otro valor no servirá de nada para hacer que cambie o que haga algo.)

Añadimos ahora a la configuración de dos bits el tercer flip-flop manteniendo por conveniencia la simetría del diseño original, con la mente abierta para modificarlo según sea necesario:


La secuencia natural de este contador síncrono de tres bits será la siguiente, en base a las propiedades del flip-flop J-K:


Con excepción de los dos primeros flip-flops, este contador no sigue una secuencia binaria. Debemos buscar ahora la manera de condicionar al tercer flip-flop con los flip-flops anteriores en la cadena para que se produzca una secuencia binaria. En particular, deseamos que el tercer flip-flop sea condicionado para una transición cuando Q1Q2=11 y desactivado para otros valores Q1Q2. Tomando en cuenta que lo más probable es que la entrada del tercer flip-flop dependa de Q1 y Q2, podemos construír una Tabla de Verdad indicando la acción deseada (¡esta no es una tabla de secuencias!):


En esta Tabla de Verdad, puesto que hay únicamente un maxterm y en cambio hay tres minterms, resulta más conveniente diseñar alrededor de los "ceros" que de los "unos". Podemos ver que la entrada al tercer flip-flop en sus terminales J y K tiene que estar dada por el maxterm Q1+Q2. Esto se logra fácilmente usando un OR y tomando la salida Q del primer flip-flop (Q2 ya estaba alimentando al tercer flip-flop). La configuración toma ahora el siguiente aspecto:


A continuación, añadimos el cuarto flip-flop a la cadena, haciendo primero una Tabla de Verdad para ver cómo deben condicionar los tres primeros flip-flops al cuarto:


Nuevemante, resalta la conveniencia de utilizar maxterms en lugar de minterms. La entrada al cuarto flip-flop en sus terminales J y K debe ser el maxterm Q1+Q2+Q3, para lo cual debemos usar un OR de tres entradas. Sin embargo, debemos tener presente que después del estado Q1Q2Q3Q4=1001, el contador debe regresar al estado Q1Q2Q3Q4=0000. La única forma en la cual se puede mandar al cuarto flip-flop al estado Q4=0 después de Q1Q2Q3Q4=1001 es haciendo J4=0 en este estado, independientemente del valor de K4. Esto sugiere que dejemos la entrada K4 como Q1+Q2+Q3 y que tratemos a la entrada J4 por separado.

Para que después del estado Q1Q2Q3Q4=1110 el cuarto flip-flop tome el estado Q4=1 se requiere que antes de la transición J4=1 ó J4=0, ya que K4=0. De cualesquier manera, hay únicamente dos cambios de estado en el cuarto flip-flop durante toda la secuencia natural de estados del contador. Notamos también que durante la mayor parte de la secuencia natural de estados se tiene Q4=0. Hay dos formas de mantener al flip-flop J-K en el estado Q4=0:

a) J4=1 y K4=10

b) J4=0 y K4=0

Todo lo anterior indica que, exceptuando al estado Q1Q2Q3Q4=1001 en el cual se requiere J4=0, podemos asignar el valor que queramos a J4. Lo más ventajoso es asignar a J4 una secuencia alternada de "unos" y "ceros", lo cual es relativamente fácil de obtener. La Tabla de Verdad para el cuarto flip-flop a través de la secuencia natural de estados del contador toma entonces el siguiente aspecto:


Estudiando la Tabla de Verdad vemos que los valores asignados a J4 y K4 están de acuerdo con el comportamiento requerido del cuarto flip-flop a través de la secuencia de estados. Notamos también que podemos obtener J4 del complemento de Q1, o sea de Q1. El diseño terminado se muestra a continuación:


Este tipo de contador binario BCD es el más rápido posible en teoría, por el hecho de ser síncrono. En la práctica, la máxima velocidad que se pueda lograr en este contador dependerá de la tecnología empleada por los elementos usados para construír el contador.

PROBLEMA: Sin consultar ninguno de los problemas anteriores, y usando flip-flops tipo D, diseñar haciendo recurso del mapa de Karnaugh un contador síncrono cuya tabla de secuencias sea la siguiente:


Si se requiere que el contador sea síncrono, entonces todas las entradas a la terminal de "reloj" C de cada uno de los tres flip-flops deben ser activadas al mismo tiempo por la misma señal. De la tabla de secuencias dada, podemos elaborar dos tablas que nos indiquen el valor previo Qn que debe tener cada flip-flop en cierto estado, y el valor Qn+1 que debe tener en el estado siguiente:


A continuación, separamos las tres columnas correspondientes a cada uno de los estados Qn+1 en preparación para la operación sutil de convertir la tabla de secuencias en Tablas de Verdad para cada uno de los flip-flops usados:


Un momento de reflexión nos dirá que precisamente aquí tenemos toda la información que requerimos para poder "condicionar" cada uno de los tres flip-flops D para el estado Qi que deberá tomar al llevarse a cabo una transición:


De este modo, si el estado actual del contador es Q0nQ1nQ2n=000, entonces para que el primer flip-flop independientemente de lo que ocurra con los otros dos flip-flops pase del estado Q0n=0 al estado Q0n+1=1 dicho flip-flop tiene que tener condicionada su entrada D1 previamente con un "1" producido por esta combinación de todos los valores que tengan los tres flip-flops antes de la transición, o sea Q0n=0, Q1n=0 y Q2n=0. Del mismo modo, si el estado actual del contador es Q0nQ1nQ2n=010, entonces para que el segundo flip-flop independientemente de lo que ocurra con los otros dos flip-flops pase del estado Q1n=1 al estado Q1n+1=1 dicho flip-flop tiene que tener condicionada su entrada D1 previamente con un "1" producido por esta combinación de todos los valores que tengan los tres flip-flops antes de la transición, o sea Q0n=0, Q1n=1 y Q2n=0. Y si el estado actual del contador es Q0nQ1nQ2n=101, entonces para que el tercer flip-flop independientemente de lo que ocurra con los otros dos flip-flops pase del estado Q2n=1 al estado Q2n+1=0 dicho flip-flop tiene que tener condicionada su entrada D2 previamente con un "0" producido por esta combinación de todos los valores que tengan los tres flip-flops antes de la transición, o sea Q0n=1, Q1n=0 y Q2n=1.

Puesto que hay tres flip-flops D, se requerirán tres mapas de Karnaugh, un mapa de Karnaugh para cada uno de ellos. La construcción de cada mapa de Karnaugh puede utilizar ventajosamente la existencia de dos estados redundantes. Estos son los estados que no aparecen en la tabla de secuencias normal del contador, y que por lo tanto son irrelevantes para los estados que deberán ir tomando cada uno de los flip-flops en cada transición; se trata de los estados Q0Q1Q2=011 y Q0Q1Q2=111. Normalmente, en una tabla de secuencias se les identifica simplemente como una "X" que significa que tanto el "0" como el "1" son valores igualmente válidos (en circuitos de lógica combinatoria también en las Tablas de Verdad se les representa a estas condiciones con el símbolo "X"). Sin embargo, aunque sean redundantes, se pueden utilizar para "agrupar" los términos dentro de expresiones más sencillas, y en base a esto tenemos la entera libertad de asignarle a cada valor redundante un "0" para no tomarlo en cuenta para nada o un "1" para utilizar la redundancia ventajosamente para la simplificación del circuito. Tomando esto como base, a continuación construímos el mapa de Karnaugh para el primer flip-flop D, diseñando alrededor de los minterms:


En este mapa se ha utilizado ventajosamente una redundancia, Q0Q1Q2=011, identificada con un "1" de color rojo, con el fin de abarcar dos celdas contiguas reduciendo el término Q0Q1Q2 a Q0Q1 Q'0Q1. Del primer mapa de Karnaugh vemos pues que el primer flip-flop debe estar condicionado por la relación:

D0 = Q0Q1 + Q0Q1

Esto se puede simplificar aún más con álgebra Boleana:

D0 = Q0(Q1 + Q1) D0 = Q0

A continuación, construímos el mapa de Karnaugh para el segundo flip-flop D:


Del segundo mapa de Karnaugh, vemos que el segundo flip-flop debe estar condicionado por la relación:

D1 = Q0Q1Q2 + Q0Q1

Por último, construímos el mapa de Karnaugh para el tercer flip-flop D:


Del tercer mapa de Karnaugh, vemos que el tercer flip-flop debe estar condicionado por la relación:

D2 = Q0Q1 + Q0Q2

En este último mapa, hemos usado las dos redundancias disponibles para llevar a cabo dos simplificaciones de modo distinto. La primera simplificación por la vía visual con la ayuda del mapa de Karnaugh, resaltada con las celdas de color ciano, consistió en "enrollar" los "unos" colocados en la última columna, obteniendo el término simplificado Q0Q1. La segunda simplificación se logró metiendo la otra redundancia, resaltada con las celdas de color verde, con el fin de lograr el objetivo de reducir el término de tres variables Q0Q1Q2 al término de dos variables Q0Q2 mediante el recurso del álgebra Boleana al hacer:

Q0Q1Q2 + Q0Q1Q2 = Q0Q2(Q1 + Q1) = Q0Q2

Podemos ver en este último ejemplo cómo ambas técnicas, el mapa de Karnaugh y el álgebra Boleana, se pueden complementar ventajosamente.

Resumiendo los resultados obtenidos, el circuito toma entonces la siguiente configuración final:



No hay comentarios: