EXAMEN DE SEPTIEMBRE DE CIRCUITOS ELECTRÓNICOS. CURSO 2007/08. PROBLEMA DEL PRIMER PARCIAL 3. Se desea diseñar un sistema para jugar a Piedra, papel o tijera. Como se sabe, en este juego cada uno de los dos jugadores elige uno de los tres elementos, pudiéndose ganar o empatar la partida, según la secuencia: Piedra gana a tijera (la rompe); tijera gana a papel (lo corta); papel gana a piedra (la envuelve). Para ello, las elecciones de los jugadores A y B viajan a través de un sistema serie síncrona, tras lo que llegan a un receptor que descodifica los datos, calcula el ganador y lo muestra. En la figura se esquematiza todo el proceso: EMISOR Piedra GA A1 A1 A0 TRANSMISIÓN DEL DATO DEL JUGADOR A Papel A Se pide: COMPROBACIÓN Jugada RECEPTOR GANADOR RECEPCIÓN DEL DATO DEL JUGADOR A GB Gana A ALMAC. RESUL. CAP A0 ERR FIN_A Tijera FIN_B COMP. FIN El módulo de comprobación de jugada espera a que ambas jugadas se hayan producido, y tras esto comprueba quién ha ganado. Estará compuesto por un sistema combinacional, que calcula el ganador constantemente, y un circuito secuencial que espera a que se produzcan las dos señales Fin, y que en ese caso captura el resultado calculado en el circuito combinacional. Gana B a) Diseñar el emisor para el jugador A. Para ello, se debe realizar una única máquina de estados síncrona de MOORE, cuyas entradas corresponderán a la tecla pulsada codificada en dos bits (A1-A0) según la tabla especificada. Tendrá una única salida (A), que deberá realizar la transmisión según el cronograma dado. Debe evitarse la retransmisión de la pulsación, por lo que habrá que esperar a que se desactive la tecla pulsada para volver al reposo. Una vez finalizada la transmisión, la línea quedará a “0”. Se debe suponer que, durante el proceso de transmisión de la señal, no cambiarán las entradas de la máquina de estados Para ello, supóngase la frecuencia de reloj muy elevada. (4 puntos=> T.T.E 1.5p, Simplificar. Y resolver: 2p, dibujar circuito: 0.5). Piedra B1 ERR TRANSMISIÓN DEL DATO DEL JUGADOR B Papel B RECEPCIÓN DEL DATO DEL JUGADOR B B1 B0 B0 Tijera En el cronograma adjunto se muestra el protocolo de la comunicación serie síncrona: la transmisión comienza con un bit de comienzo, que siempre vale “1”, tras lo cual se transmiten los dos CLK bits de datos. Finalmente, se transmite un bit de (START) (STOP) A1 A0 A parada, que siempre debe valer 0. El sistema consta, básicamente, de tres grandes bloques: 1. El emisor recoge la pulsación, la codifica y la transmite siguiendo el protocolo comentado anteriormente. Se supondrá que no se pulsan nunca simultáneamente más de una tecla, y se codificarán según la tabla adjunta: 2. A1-A0 00 01 10 11 No hay tecla Piedra Papel Tijera El receptor espera la llegada de datos por cada una de las líneas, y cuando llegan almacena el último valor que ha llegado. Si se produce un error en la transmisión (si el bit de parada no vale 0), entonces borra las salidas, enciende la señal Error durante un ciclo y vuelve al comienzo. Si la transmisión es correcta, pone la señal FIN a 1 durante un ciclo y vuelve al comienzo. (ESTE BLOQUE NO HABRÁ QUE DISEÑARLO) b) Diseñar el módulo de comprobación de jugadas. b.1) El sistema síncrono se diseñará como una máquina síncrona de Moore, cuyas entradas serán FIN_A y FIN_B, y cuya salida será la señal CAP, más un sistema de almacenamiento síncrono que recoja el resultado de la comprobación en dos bits (GANA_A, GANA_B). Considérense todos los casos posibles. (3 puntos) b.2) El circuito combinacional de comprobación de jugadas siempre estará tomando A1, A0, B1 y B0 y generando como salidas las líneas GA y GB, según el siguiente esquema: siempre que A ó B sean 00, ambas salidas estarán a 0. Cuando ambas entradas valgan distintas de 00, se encenderá la línea que corresponda a quién gana, o bien ambas en caso de empate. (3 puntos) Notas importantes: 1. En la figura anterior no se ha dibujado, por claridad, la señal de reloj, que llega a todos los subsistemas síncronos. 2. Las máquinas de estado que se realicen deberán ser síncronas y de Moore. Para tener completo un apartado, el circuito debe ser resuelto, especificar sus ecuaciones y dibujado. 3. Sólo se podrán usar para el diseño puertas lógicas estándar, multiplexores 2:1 y biestables tipo D estándar. Cualquier otro circuito que se use (por ejemplo, contadores, registros, etc) habrá que diseñarlo previamente. TIEMPO: 1,5h EXAMEN DE SEPTIEMBRE DE CIRCUITOS ELECTRÓNICOS. CURSO 2007/08. SOLUCIÓN AL PROBLEMA DEL PRIMER PARCIAL Para resolver el primer apartado, nos exigen que se realice una máquina de estados síncrona de Moore. Realmente, no es la solución más sencilla, pero es la que nos piden. Para ello, lo primero es tener claro los diferentes estados posibles. Necesitamos que la salida, una vez se activen las entradas (o sea cuando valgan cualquier cosa distinta de 00) valga 1 durante un ciclo de reloj (bit de Start), tras lo cual valdrá A1 y A0. Finalmente, debe quedarse a 0 hasta que vuelva al reposo (entradas en 00). Un primer esquema de los estados, transiciones y valor de la salida sería el siguiente: En el esquema se representa que, una vez que A1A0 es distinto de 00, paso al estado 1, en el que la salida valdrá 1. Desde ahí, dependiendo de lo que valgan las entradas, paso a los estados 2, 4 ó 6. En esos estados transmito el valor de A1, tras lo cual transmito A0 en los estados 3, 5 y 7. Finalmente, llego al estado 8, en el que esperaré a que se acabe la pulsación (A1A0=00), momento en el que volveré al estado 0. 0 A=0 A1A0=00 A1A0? 00 1 A=0 A1A0=10 A1A0=01 A1A0=11 Es importante notar que nos dicen que las entradas no cambian durante el proceso. Esto significa que una vez estoy en el estado 2, por ejemplo, las entradas seguirán siendo 01 hasta que valgan 00 al final del ciclo. Esto es muy importante para tratar de simplificar el sistema, que de otra forma necesitaría 4 biestables (9 estados). 2 A=0 A1A0=11 A1A0=01 3 A=1 Veamos cómo queda la tabla de transición de estados: A1A0=10 7 A=0 5 A=1 A1A0=01 A1-A0 Estado 00 01 11 10 A 0 (0) 1 1 1 0 1 -2 4 6 1 2 -3 -- -- 0 3 -8 -- -- 1 4 -- -5 -- 1 5 -- -8 -- 1 6 -- -- -7 1 7 -- -- -8 0 8 0 (8) (8) (8) 0 6 A=1 4 A=1 A1A0=11 A1A0=10 8 A=0 A1A0=00 A1A0?00 Para poder simplificar la tabla, debemos ver qué estados tienen la misma salida, y cuáles pueden ser pseudo-equivalentes. Para ello realizaríamos la tabla de inferencias, de la que se obtienen las siguientes pseudoequivalencias: 7-8, 7-2, 6-5, 6-4, 6-3, 5-3, 4-3 Con estas pseudo-equivalencias se pueden eliminar en total 3 estados. Elegiremos de entre ellas las siguientes: 2-7, 3-5, 4-6 Una vez elegidas tres de ellas, se ve que las demás no se pueden usar (por ejemplo, 7-8 ya no es compatible con 2-7, porque 2 y 8 no son pseudoequivalentes, o 4-3 tampoco porque no es compatible con 3-5). Con esta simplificación, la tabla de transición simplificada queda como: A1-A0 Estado 00 01 11 10 A 0 (0) 1 1 1 0 1 -2 4 4 1 2 -3 -8 0 3 -8 8 -- 1 4 -- -3 2 1 8 0 (8) (8) (8) 0 Con esta tabla simplificada, con sólo 6 estados, observo que necesitaré únicamente 3 biestables, lo que simplifica tremendamente el problema. Para codificar los estados, puedo usar una codificación “estándar” (por ejemplo, su número binario tal cual) o puedo ser un poco más astuto, y codificar para que la salida sea uno de los bits de estado. Haremos esto segundo, usando como codificación de los estados la siguiente: Estado 0 1 2 3 4 8 Q2-Q1-Q0 0-0-0 0-0-1 0-1-0 0-1-1 1-0-1 1-0-0 De esta manera, conseguimos que la salida A sea igual a Q0, evitando el diseño del circuito combinacional de salida. Una vez hecha la asignación de estados en la tabla simplificada, se procede a realizar la Tabla de Excitación de los biestables, esto es la tabla de verdad del circuito combinacional de entrada, que calcula las entradas de los biestables en función del estado (sus salidas) y de las entradas del circuito: Q2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Q1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 Q0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 A1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 A0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 D2 0 0 0 0 -0 1 1 -0 -1 -1 1 ---0 0 0 1 1 1 D1 0 0 0 0 -1 0 0 -1 -0 -0 0 ---1 1 0 0 0 0 D0 0 1 1 1 -0 1 1 -1 -0 -0 0 ---1 0 0 0 0 0 Una vez especificada la tabla de excitaciones, sólo queda resolver las ecuaciones de cada bit en función de las entradas del circuito combinacional de entrada (Q2, Q1, Q0 Q1 y A0): Resolvemos por Karnaugh, separando en dos tablas de 4 entradas según el valor de Q2: Q2=0 A1-A0 00 01 11 10 Q1-Q0 00 0 0 0 0 01 -- 0 1 1 11 -- 1 1 -10 -- 0 -- 1 01 11 10 1 1 1 -- 0 0 -- -- --- -- -- D2=Q1·Q0+/Q2·Q0·A1+Q1·A1+Q2·/Q0·A1+Q2·/Q0·A0 Q2=0 A1-A0 00 01 11 10 Q1-Q0 00 0 0 0 0 01 -- 1 0 0 11 -- 0 0 -10 -- 1 -- 0 D1=Q2·Q0+/Q1·Q0·/A1+Q1·/Q0·/A1 Q2=0 A1-A0 Q1-Q0 00 01 11 10 00 0 1 1 1 01 -- 0 1 1 11 -- 0 0 -10 -- 1 -- 0 Q2=1 A1-A0 Q1-Q0 00 00 0 01 -11 -10 -- Q2=1 A1-A0 Q1-Q0 00 00 0 01 -11 -10 -- 01 11 10 0 0 0 -- 1 0 -- -- --- -- -- D0=/Q2·/Q0·A0+/Q2·/Q1·A1+Q2·Q0·A0 Q2=1 A1-A0 Q1-Q0 00 00 0 01 -11 -10 -- 01 11 10 0 0 0 -- 1 1 -- -- --- -- -- Con esto quueda resueltaa la máquina de estados del d primer ap partado, dadoo que el circuuito combinaacional de sallida es simplemeente la expreesión: A=Q0. En la imageen adjunta see muestra el circuito. En la siguieente imagen se s observa unna simulacióón del circuitto en el que se s envían succesivamente 01, 10 y 11. SEPT0 08.CIR d(CLK) Sta art 0 1 S Start 1 0 Stop Stop Start 1 1 Stop d(A) hex(q2, q1, q Q0) 0 1 2 3 4 0 1 5 2 4 0 1 5 3 4 0 d(A1) d(A0) (A1-A0=10) 11) (A1-A0=1 (A1-A0=01) 0.000m 2.000m 4.000m 6.000m m T 8.000m 10.000m Para el segundo apartado del problema, necesitamos realizar dos sistemas. Un primer sistema síncrono, que almacene el resultado una vez se produzca, y otro sistema combinacional que calcule cuál de los dos ha ganado o si ha habido empate. El sistema secuencial estará formado por una pequeña máquina de estados que controlará la llegada de las dos jugadas, y un registro de captura que almacenará la salida del circuito combinacional. La máquina de estados tendrá como entradas las señales FIN_A y FIN_B, y como salida la señal FIN. Es necesaria esta máquina porque las señales duran un solo ciclo de reloj y tengo que saber que han llegado las dos. La tabla de transición de estados en este caso será: FIN_A-FIN_B Estado 00 01 11 10 FIN 0 (0) 1 2 3 0 1 (1) (1) 3 3 0 2 (2) 3 (2) 3 0 3 0 0 0 -1 A la hora de realizar la tabla, se han tenido en cuenta los siguientes supuestos: • puede ser (aunque es poco probable, no es imposible), que lleguen a la vez las dos señales de fin, si ambos jugadores pulsan en el mismo ciclo de reloj. • Una vez que estoy en el estado 1 (llegó fin_a), al siguiente ciclo de reloj seguro que está desactivado, por lo que probablemente el siguiente valor de entradas será el 00, en cuyo caso permanezco en 1 hasta que llegue 10. Pero si mientras espero llega un nuevo FIN_A (el jugador A cambia la jugada), permanezco en 1. Esto hace que tampoco sea imposible la combinación 01 en el estado 1. • Análogamente, en el estado 2 tampoco resulta imposible la combinación 10, aunque lo más normal será esperar en 2 hasta que se produzca un 01. De la misma forma, también es posible (aunque altamente improbable, pero no imposible) que lleguen ahora dos señales de FIN a la vez. • Una vez estoy en el estado 3 (ya han llegado las dos señales), de lo único que estoy seguro es que las entradas no pueden valer 11, ya que una de ellas acaba de ser 1 (si no, no habría llegado a 3). En cualquier otro caso, iré al estado 0. Una vez realizada la tabla de estados, y codificando cada estado con su valor binario, la tabla de excitaciones queda: Q1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Q0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 FA 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 FB D1 D0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 --- Y a partir de esta tabla, se construyen las tablas de Karnaugh para cada una de las dos entradas de los biestables, D1 y D0, como: D1 FA-FB 00 01 11 10 Q1-Q0 00 0 0 1 1 01 0 0 1 1 11 0 0 -- 0 10 1 1 1 1 D1= Q1·/Q0 + /Q1·FIN_A D0 FA-FB Q1-Q0 00 01 11 10 ... 00 0 1 1 0 01 1 1 1 1 11 0 0 -- 0 10 0 1 1 0 D0= /Q0·FIN_B + /Q1·Q0 Como cabía esperar, la solución es “simétrica”, pudiendo reemplazarse FIN_A por FIN_B cambiando Q1 por Q0. Finalmente, el circuito combinacional de salida queda reducido al producto de los dos bits de estado, FIN= Q1·Q0, por lo que el circuito completo queda como: Para redonddear este apaartado, solo nos n queda reaalizar el circu uito que capttura y almacena el resultado. Éste esttará formado por dos biestabbles que almaacenarán el resultado r del circuito com mbinacional: Mien ntras la señall FIN valga 00, cada biestaable mantenddrá el vaalor anterior, que corresponderá a la jugada anteriior. Cuan ndo FIN sea 1, los valorees de GA y GB G se almaacenan en el registro corrrespondiente. Por último, queda realizzar un circuitto combinaciional que resuelva el ganaador de la juugada. Para ello, las entraadas serán A1, A0, A B1 y B0, representanddo la eleccióón de cada jugador. Se pidde que GA y GB representen cuál de los dos ha ganaado, siendo 00 0 si cualquieer entrada ess 00 (no ha ju ugado todavíía uno de loss dos jugadorres) y siendoo 11 cuando se produzca p un empate. e Con esto, y aplicando laas reglas del juego j piedraa-papel-tijeraa, se obtiene la l tabla de veerdad: Tras lo cuall, realizamoss las tablas dee Karnaugh para p las salid das del circuiito combinaccional, GA y GB: A1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 A0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B1 B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B0 GA A GB 0 0 0 Espera 1 0 0 Espera Espera 1 0 0 Espera 0 0 0 Espera 0 0 0 1 1 1 Empate 1 1 0 Piedra > Tijeraa 0 0 1 Pieedra < Papeel 0 0 0 Espera 1 1 0 Paapel > Piedraa 1 0 1 Paapel < Tijeraa 0 1 0 Empate Espera 0 0 0 1 0 1 Tij ijera < Piedraa 1 1 1 Empate 0 1 0 Tiijera > Papell GA B1-B0 A1--A0 00 00 0 01 0 11 0 10 0 01 11 10 0 0 0 1 1 0 0 1 1 1 0 1 GA=/A1·/A0·B0 A1·/A0··/B1·B0 GB B1-B0 00 A1-A0 A 00 0 01 0 11 0 10 0 + A1·A0·B1 1+A1·B1·/B B0+ 01 11 10 0 0 0 1 0 1 1 1 0 0 1 1 ·A0 GB=/B1·/B B0·A0 + B11·B0·A1+B11·A1·/A0+ B1·/B0·/A1 B Se puede comprobar fáácilmente tam mbién la sim metría de la solución, enn la que cam mbiando los A por los B, la salida GA y GB son inteercambiabless, como es lóógico. El circcuito quedaráá: Con lo que acaba el probblema.