Escolar Documentos
Profissional Documentos
Cultura Documentos
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:
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:
Con estas pseudo-equivalencias se pueden eliminar en total 3 estados. Elegiremos de entre ellas las siguientes:
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)
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
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:
GB=/B1ꞏ/B
B0ꞏA0 + B11ꞏB0ꞏA1+B11ꞏA1ꞏ/A0+ B1ꞏ/B0ꞏ/A1
B ꞏA0