Exponsor

CURSO TÉCNICO INSTALADOR DE ENERGÍA SOLAR TÉRMICA

Visita el siguiente enlace: http://enersolartermica.blogspot.com.es/ ¡No pierdas esta magnifica oportunidad de poder formarte en esta profesión con gran demanda de empleo! Ahora por oferta de lanzamiento y por tiempo limitado puedes adquirir este curso por solo 9,95€, cuando su valor de mercado es de 49€.

lunes, 30 de marzo de 2009

Sin Palabras: Estación Espacial Internacional vs La Tierra

PROBLEMAS RESUELTOS SOBRE CONTADORES , FLIP-FLOP (J-K): PARTE 5ª

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: