Você está na página 1de 7

EXAMEN DE SEPTIEMBRE DE CIRCUITOS ELECTRÓNICOS .

CURSO 2007/08. PROBLEMA DEL PRIMER PARCIAL 3. 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
Se desea diseñar un sistema para jugar a Piedra, papel o tijera. Como se sabe, en este juego
secuencial que espera a que se produzcan las dos señales Fin, y que en ese caso
cada uno de los dos jugadores elige uno de los tres elementos, pudiéndose ganar o empatar
captura el resultado calculado en el circuito combinacional.
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
Se pide:
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:
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
EMISOR RECEPTOR COMPROBACIÓN a la tecla pulsada codificada en dos bits (A1-A0) según la tabla especificada.
Jugada Tendrá una única salida (A), que deberá realizar la transmisión según el
Piedra A1 GA
Gana A cronograma dado. Debe evitarse la retransmisión de la pulsación, por lo que
A1
TRANSMISIÓN RECEPCIÓN DEL
A0
GANADOR GB
habrá que esperar a que se desactive la tecla pulsada para volver al reposo.
A ALMAC. Gana B
Papel
DEL DATO DEL
JUGADOR A
DATO DEL
JUGADOR A
CAP
RESUL. Una vez finalizada la transmisión, la línea quedará a “0”. Se debe suponer
A0
ERR
que, durante el proceso de transmisión de la señal, no cambiarán las entradas
Tijera
FIN_A
de la máquina de estados Para ello, supóngase la frecuencia de reloj muy
FIN_B
COMP.
FIN elevada. (4 puntos=> T.T.E 1.5p, Simplificar. Y resolver: 2p, dibujar
circuito: 0.5).
Piedra
B1 ERR
RECEPCIÓN DEL
b) Diseñar el módulo de comprobación de jugadas.
B1
Papel
TRANSMISIÓN
DEL DATO DEL B DATO DEL
JUGADOR B
b.1) El sistema síncrono se diseñará como una máquina síncrona de Moore,
JUGADOR B B0
B0 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
Tijera
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á
En el cronograma adjunto se muestra el protocolo de la comunicación serie síncrona: la tomando A1, A0, B1 y B0 y generando como salidas las líneas GA y GB,
transmisión comienza con un bit de comienzo, que según el siguiente esquema: siempre que A ó B sean 00, ambas salidas estarán
siempre vale “1”, tras lo cual se transmiten los dos CLK a 0. Cuando ambas entradas valgan distintas de 00, se encenderá la línea que
bits de datos. Finalmente, se transmite un bit de corresponda a quién gana, o bien ambas en caso de empate. (3 puntos)
A
(START) A1 A0 (STOP)
parada, que siempre debe valer 0.
Notas importantes:
El sistema consta, básicamente, de tres grandes bloques: A1-A0 1. En la figura anterior no se ha dibujado, por claridad, la señal de reloj, que llega a
1. El emisor recoge la pulsación, la codifica y la 00 No hay tecla todos los subsistemas síncronos.
transmite siguiendo el protocolo comentado 01 Piedra 2. Las máquinas de estado que se realicen deberán ser síncronas y de Moore. Para
anteriormente. Se supondrá que no se pulsan nunca 10 Papel tener completo un apartado, el circuito debe ser resuelto, especificar sus
simultáneamente más de una tecla, y se codificarán 11 Tijera ecuaciones y dibujado.
según la tabla adjunta: 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,
2. El receptor espera la llegada de datos por cada una de las líneas, y cuando llegan contadores, registros, etc) habrá que diseñarlo previamente.
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
TIEMPO: 1,5h
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)
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 A1A0=00 0
de lo que valgan las entradas, paso a los estados A=0
2, 4 ó 6. En esos estados transmito el valor de A1A0? 00
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 1
(A1A0=00), momento en el que volveré al A=0
estado 0. A1A0=01
A1A0=10
A1A0=11

Es importante notar que nos dicen que las


entradas no cambian durante el proceso. Esto 2 4 6
significa que una vez estoy en el estado 2, por A=0 A=1 A=1
ejemplo, las entradas seguirán siendo 01 hasta A1A0=01 A1A0=11 A1A0=10
que valgan 00 al final del ciclo. Esto es muy
importante para tratar de simplificar el sistema, 7
3 5
que de otra forma necesitaría 4 biestables (9
estados). A=1 A=1 A=0
A1A0=01 A1A0=11

Veamos cómo queda la tabla de transición de A1A0=10

estados: 8
A=0
A1-A0 A1A0=00
A1A0?00
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 Para poder simplificar la tabla, debemos ver qué estados tienen la misma
6 -- -- -- 7 1 salida, y cuáles pueden ser pseudo-equivalentes. Para ello realizaríamos la
7 -- -- -- 8 0 tabla de inferencias, de la que se obtienen las siguientes pseudo-
8 0 (8) (8) (8) 0 equivalencias:

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 Con esta tabla simplificada, con sólo 6 estados, observo que necesitaré
Estado 00 01 11 10 A únicamente 3 biestables, lo que simplifica tremendamente el problema. Para
codificar los estados, puedo usar una codificación “estándar” (por ejemplo,
0 (0) 1 1 1 0
su número binario tal cual) o puedo ser un poco más astuto, y codificar para
1 -- 2 4 4 1
que la salida sea uno de los bits de estado. Haremos esto segundo, usando
2 -- 3 -- 8 0
como codificación de los estados la siguiente:
3 -- 8 8 -- 1
4 -- -- 3 2 1
Estado 0 1 2 3 4 8
8 0 (8) (8) (8) 0
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 Q1 Q0 A1 A0 D2 D1 D0 Una vez especificada la tabla de excitaciones, sólo queda resolver
0 0 0 0 0 0 0 0 las ecuaciones de cada bit en función de las entradas del circuito
0 0 0 0 1 0 0 1 combinacional de entrada (Q2, Q1, Q0 Q1 y A0):
0 0 0 1 1 0 0 1
0 0 0 1 0 0 0 1 Resolvemos por Karnaugh, separando en dos tablas de 4 entradas
0 0 1 0 0 -- -- -- según el valor de Q2:
0 0 1 0 1 0 1 0
0 0 1 1 1 1 0 1 Q 2=0 Q 2=1
0 0 1 1 0 1 0 1 A1-A0 A1-A0
0 1 0 0 0 -- -- -- Q1-Q0 00 01 11 10 Q1-Q0 00 01 11 10
0 1 0 0 1 0 1 1 00 0 0 0 0 00 0 1 1 1
0 1 0 1 1 -- -- --
01 -- 0 1 1 01 -- -- 0 0
0 1 0 1 0 1 0 0
0 1 1 0 0 -- -- -- 11 -- 1 1 -- 11 -- -- -- --
0 1 1 0 1 1 0 0 10 -- 0 -- 1 10 -- -- -- --
0 1 1 1 1 1 0 0
0 1 1 1 0 -- -- --
1 0 1 0 0 -- -- -- D2=Q1ꞏQ0+/Q2ꞏQ0ꞏA1+Q1ꞏA1+Q2ꞏ/Q0ꞏA1+Q2ꞏ/Q0ꞏA0
1 0 1 0 1 -- -- --
1 0 1 1 1 0 1 1 Q 2=0 Q 2=1
1 0 1 1 0 0 1 0 A1-A0 A1-A0
1 0 0 0 0 0 0 0 Q1-Q0 00 01 11 10 Q1-Q0 00 01 11 10
1 0 0 0 1 1 0 0 00 0 0 0 0 00 0 0 0 0
1 0 0 1 1 1 0 0
01 -- 1 0 0 01 -- -- 1 1
1 0 0 1 0 1 0 0
11 -- 0 0 -- 11 -- -- -- --
10 -- 1 -- 0 10 -- -- -- --

D1=Q2ꞏQ0+/Q1ꞏQ0ꞏ/A1+Q1ꞏ/Q0ꞏ/A1

Q 2=0 Q 2=1
A1-A0 A1-A0
Q1-Q0 00 01 11 10 Q1-Q0 00 01 11 10
00 0 1 1 1 00 0 0 0 0
01 -- 0 1 1 01 -- -- 1 0
11 -- 0 0 -- 11 -- -- -- --
10 -- 1 -- 0 10 -- -- -- --

D0=/Q2ꞏ/Q0ꞏA0+/Q2ꞏ/Q1ꞏA1+Q2ꞏQ0ꞏA0
Con esto quueda resueltaa la máquina de estados del
d primer appartado, 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 Stop S
Start 1 0 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) (A1-A0=1


11)
(A1-A0=01)

0.000m 2.000m 4.000m 6.000m


m 8.000m 10.000m
T
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 Q0 FA FB D1 D0 Y a partir de esta tabla, se construyen las tablas de Karnaugh para cada una de
0 0 0 0 0 0 las dos entradas de los biestables, D1 y D0, como:
0 0 0 1 0 1
0 0 1 1 1 1 D1 D0
0 0 1 0 1 0 FA-FB FA-FB
0 1 0 0 0 1 Q1-Q0 00 01 11 10 Q1-Q0 00 01 11 10
0 1 0 1 0 1 00 0 0 1 1 ... 00 0 1 1 0
0 1 1 1 1 1
01 0 0 1 1 01 1 1 1 1
0 1 1 0 1 1
1 0 0 0 1 0 11 0 0 -- 0 11 0 0 -- 0
1 0 0 1 1 1 10 1 1 1 1 10 0 1 1 0
1 0 1 1 1 1
1 0 1 0 1 0 D1= Q1ꞏ/Q0 + /Q1ꞏFIN_A D0= /Q0ꞏFIN_B + /Q1ꞏQ0
1 1 0 0 0 0
1 1 0 1 0 0
1 1 1 1 0 0
1 1 1 0 -- --

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 juugado 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 A0 B
B1 B0 GAA GB GA
0 0 0 0 0 0 Espera B1-B0
0 0 0 1 0 0 Espera A1--A0 00 01 11 10
0 0 1 1 0 0 Espera 00 0 0 0 0
0 0 1 0 0 0 Espera
01 0 1 1 0
0 1 0 0 0 0 Espera
0 1 0 1 1 1 Empate 11 0 0 1 1
0 1 1 1 1 0 Piedra > Tijeraa 10 0 1 0 1
0 1 1 0 0 1 Pieedra < Papeel GA=/A1ꞏ/A0ꞏB0 + A1ꞏA0ꞏB1
1+A1ꞏB1ꞏ/B
B0+
1 0 0 0 0 0 Espera A1ꞏ/A0ꞏꞏ/B1ꞏB0
1 0 0 1 1 0 Paapel > Piedraa
1 0 1 1 0 1 Paapel < Tijeraa
1 0 1 0 1 0 Empate GB
1 1 0 0 0 0 Espera B1-B0
1 1 0 1 0 1 Tij
ijera < Piedraa A1-A0
A 00 01 11 10
1 1 1 1 1 1 Empate 00 0 0 0 0
1 1 1 0 1 0 Tiijera > Papell 01 0 1 0 1
11 0 1 1 0
10 0 0 1 1

GB=/B1ꞏ/B
B0ꞏA0 + B11ꞏB0ꞏA1+B11ꞏA1ꞏ/A0+ B1ꞏ/B0ꞏ/A1
B ꞏA0

Se puede comprobar fáácilmente tammbién la simmetrí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.

Você também pode gostar