You are on page 1of 28

UNIVERSIDAD MAYOR DE SAN ANDRES FACULTAD DE INGENIERIA CARRERA INGENIERIA ELECTRONICA

JUEGO TRES EN RAYA CON MICROPROGRAMACION MATERIA : SISTEMAS DIGITALES 2

DOCENTE: ING. JORGE LEON

INTEGRANTES: Amrico lvarez Surci Cesar Manuel Martinez Callisaya

GESTION 2011 LA PAZ - BOLIVIA

Resumen
Tres en raya es un juego sencillo e intuitivo, que muchos jugamos en nuestra infancia y aun ahora lo seguimos haciendo, por que tan solo necesitamos un papel y un bolgrafo para tener retos de estrategia, en un tablero simple de 3x3. Tenemos un pequeo inconveniente que se tratara en el siguiente trabajo, el juego clsico es de 2 jugadores, pero Si queremos jugar solos? EL tres en raya pertenece a los juegos de solucin Finita, esto indica que se pueden contar todas las jugadas posibles. Aun as, el juego es sencillo, sus jugadas son finitas, pero esto no indica una solucin sencilla para implementarlo digitalmente, ya que presenta varios problemas en la implementacin y en la inteligencia artificial que deber presentar el jugador automatizado Trataremos el mtodo de la microprogramacin para reducir el nmero de compuertas utilizadas, adems de reducir el tamao del circuito y los costos.

Abstract
"Tic Tac Toe is a simple and intuitive game that many play in our childhood and even now I still do, that we just need a paper and pen to take strategic challenges in a simple 3x3 board. We have a small problem that they were in the following work, the classic game is 2 players, but what if we wanted to play alone? Tic Tac Toe game belongs to the finite resolution, this means that you can count all the possible moves. Still, the game is simple, his moves are finite, but this is not a simple solution to implement digitally, it presents several problems in the implementation and artificial intelligence to be provided by the automated player Try the method of the firmware to reduce the number of gates used, while reducing the circuit size and cost.

II

LISTA DE FIGURAS Figura 1: Juego de tres en Raya Figura 2: Ruina de tablero Terni Lapilli Figura 3: Ejemplos de diferentes tableros, usados para el tres en raya. Figura 4: Modos de Apertura Figura 5: Posibles primeras jugadas de humano Figura 6: Tablero Codificado Figura 7: Bloque Del juego Figura 8: Diagrama de Bloques interno Figura 9: Flujograma Nivel 2 Figura 10: Flujograma Nivel 1 Figura 11: Esquema circuito de control Figura 12: Esquema de entrada de datos de una casilla. Figura 13: Codificador 8 a 3 bits, Variables de control Figura 14: Elemento de Salida por cada casilla Figura 15: Diagrama de bloques del 74c922 Figura 16: Layout Circuito de Control Figura 17: Layout del tablero

LISTA DE TABLAS Tabla 1: Respuestas de PC a jugadas de Humano NIVEL 2 Tabla 2: Respuestas de PC a jugadas de Humano NIVEL 1 Tabla 3: Programa AHPL Tabla 4: Datos guardados para la Microprogramacin. Tabla 5: Diagrama de tiempos

III

INDICE GENERAL
Capitulo 1: ANTECEDENTES Y PROPOSITOS 1.1 Introduccin 1.2. Objetivos 1.2.1 Objetivo General 1.2.2 Objetivos Especficos Capitulo 2: ANALISIS TEORICO 2.1. Descripcin del material de juego 2.2 Reglas Bsicas del Juego 2.3 Apertura y Posibles Respuestas 2.3.1 Casillas Simtricas 2.4 Respuestas a Posibles jugadas de Humano 2.5 Diagramas de Bloques Capitulo 3: DESARROLLO DEL PROYECTO 3.1 Flujo grama 3.2 Programa AHPL 3.3 Circuito de Control y Datos 3.3.1 Circuito de Control 3.3.2 Circuito de Datos 3.3.3 Teclado Matricial y el CI 74c922 3.4 Diagramas de tiempos 3.5 Layout del Circuito Capitulo 4: CONCLUSIONES Y MEJORAS 4.1 Conclusiones 4. 2 Mejoras 5. BIBLIOGRAFA 6. ANEXOS

Pag.

1 2 2 2

3 3 4 5 5 7

8 9 11 11 14 15 16 18

20 20 20 21

IV

Capitulo 1

1.1 INTRODUCCION: Origen e Historia del tres en raya


Los orgenes del Tres en Raya se remontan a hace mucho tiempo en un pas del lejano Oriente. Muchos autores piensan que el Tres en Raya (el llamado Tic Tac Toe en ingls) se origin en China, como muchos otros juegos de mesa, surgiendo despus del juego conocido como Go, que es considerado el ms antiguo del mundo, nacido en China hace miles de aos.

Figura 1: Juego de tres en Raya Existe otra tendencia se cree que pudo tener su origen en el Imperio Romano con el nombre de Terni Lapilli, puesto que se han encontrado tableros con forma de matriz de 33 en varias de sus ruinas.

Figura 2: Ruina de tablero Terni Lapilli Existen otros puntos de vista e investigaciones que indican diferentes lugares geogrficos y puntos temporales de la creacin del juego de las Tres en Raya y existen tambin muchos juegos que podran ser los precursores o sucesores, por la similitud del tablero y/o reglas.

1.2. OBJETIVOS
Con el presente trabajo se trata de enfocar los siguientes objetivos: 1.3.1 Objetivo General Realizar mediante descripcin hardware y posterior implementacin el juego de Tres en Raya.

1.3.2 Objetivos Especificos Utilizar la tcnica de la microprogramacin, para el diseo de la unidad de control del sistema digital Implementar un interfas a usuario (tablero), mas intuitivo. Reducir y mejorar la eficiencia del diseo del tres en raya.

Capitulo 2 ANALISIS TEORICO

2.1 DESCRIPCION DEL MATERIAL


Para poder jugar al Tres en Raya, son necesarios nicamente dos cosas: un tablero y 6 fichas (tres para cada jugador). Tablero: Tiene que ser una cuadrcula de 3x3 y puede ser trazada rpidamente, o realizar un tablero mas elaborado de cualquier material como cermica, madera, o a base de leds para un tratamiento electrnico como es nuestro caso. El tablero tambin puede tener forma de cuadrado, dividido en cuatro cuadrados iguales con unas lneas que pasen por el centro del cuadrado, aadiendo dos diagonales que tambin pasen por el centro (en este formato de tablero, las fichas se colocan en los puntos de unin de las lneas).

Figura 3: Ejemplos de diferentes tableros, usados para el tres en raya. Fichas: cada juego de las Tres en Raya, tiene 6 fichas, tres para cada jugador, normalmente tres fichas tienen forma de X y otras tres fichas forma de O. Pero en realidad basta con que tres fichas tengan una forma o color y las otras tres fichas otra forma u otro color.

2.2 REGLAS BSICAS DEL JUEGO


Objetivo del Juego: Conseguir colocar sus tres fichas formando una lnea antes de que lo consiga el adversario y de esta manera ganar la partida. Reglas: El juego de tres en raya se juega con dos participantes y un tablero con celdas de 3x3 que se encuentran inicialmente vacias. Un jugador es X y el otro es O. Los jugadores se alternan para colocar sus marcas en una celda vacia; X empieza primero. Los jugadores tienen que ir colocando sus fichas siguiendo algn tipo de estrategia, la cual le lleve a colocar sus tres fichas formando una lnea antes que su adversario, ganando de esta manera la partida. Aunque el primero en jugar tiene una ligera ventaja, se puede demostrar que un juego entre dos contendientes inteligentes siempre terminara en un empate.

2.3 APERTURA Y POSIBLE RESPUESTA


Pese a que slo se juega con 9 casillas, hay 15120 combinaciones diferentes para los cinco movimientos del juego. Sin embargo, en la prctica ste se reduce a unas cuantas combinaciones bsicas. La nica oportunidad de ganar es que nuestro incauto adversario caiga en la trampa que se le tiende. Aunque no existe ninguna frmula infalible para ganar en este juego, si se sabe cmo responder correctamente a los movimientos de apertura, resultar virtualmente imposible perder.

Figura 4: Modos de Apertura En el sistema descrito para este proyecto se tendr a dos jugadores, uno denominado PC y otro denominado humano; el jugador PC (jugador automatizado) tendr una respuesta optima en el nivel alto de dificultad, dependiendo de la jugada realizada por el humano. Se asigno al jugador PC como jugador X esto implica que es el primero que en jugar. Estado inicial: Tablero vacio, nicamente la casilla central marcada con la primera jugada del jugador PC (apertura central). El siguiente en jugar es el humano que tendr 8 casillas vacias en las que puede colocar, en una, su marca. Existe 2 posibles opciones a las que puede optar el humano, colocar su jugada en un angulo o en una casilla lateral. Si se juega en una casilla lateral, el jugador PC realizara su estrategia y posterior victoria, ya que esta jugada no es una jugada de bloqueo a la apertura central. En otro caso si se juega en una casilla angular, tendramos la mejor jugada del humano para responder la apertura central. En la siguiente jugada, el pc buscara la victoria tratando de completar lineas para la victoria, en todo caso el jugador humano podr perder, ganar (nivel bajo de dificultad), o empatar con la pc.

Figura 5: Posibles primeras jugadas de humano 4

2.3.1 Casillas Simtricas


Definimos anteriormente 2 posibles jugadas inciales del jugador Humano (angular y lateral) en respuestas a la apertura central del PC.

Figura 6: Tablero Codificado Casillas Angulares: Por similitud de posibles respuestas de computadora a jugadas de humano, las casillas simtricas son O(0) con O(7) y O(2) con O(5). Casillas Laterales: Por similitud de posibles respuestas de computadora a jugadas de humano, las casillas simtricas son O(1) con O(6) y O(3) con O(4). Estas casillas simtricas nos servirn para reducir el nmero de pasos del control del circuito, adems har reducir la cantidad de memoria utilizada (posiciones en memoria) lo que conducir a una mejor eficiencia del circuito.

2.4 RESPUESTAS A POSIBLES JUGADAS DE HUMANO


Una vez visto las primeras jugadas que definen el transcurrir posterior del juego, y adems de haber observado las simetras del tablero, solo nos queda mostrar la respuesta de PC a jugadas de humano (variable de control). Las jugadas de Humano y las jugadas de Computadora, de aqu en adelante se representaran por los vectores O[8] y X[8] respectivamente. El nivel mximo de juego es el NIVEL 2 que significa que pc nunca pierde, siempre gana o mnimo empata.

1er. Jugada Humano

2da. Jugada PC

2da. Jugada Humano

3ra. Jugada PC

3ra. Jugada Humano

4ta. Jugada PC

4ta. Jugada Humano

5ta. Jugada PC

Final del Juego


Win-PC Win-PC Win-PC

* Simetria Laterales * Jugada no bloquea apertura

1v6 1v6 1v6

7 7 7

1v2v3v 4v5v6 0 0

0 2 2

--------1v3v4v 6 5

--------5 4

-------------------------

-------------------------

* Simetria Laterales * Jugada no bloquea apertura * Simetria Angulares * Jugada bloquea apertura * Simetria Angulares * Jugada bloquea apertura

3v4 3v4 3v4 0v7 0v7 0v7 2v5 2v5 2v5 2v5

2 2 2 3 3 3 3 6 6 6 6

0v1v3v 4v6v7 5 5 0v1v2v 5v6v7 4 4 4 0v2v3v 4v5v7 1 1 1

5 0 0 4 2 2 2 1 0 0 0

--------1v3v4v 6 7 --------0v1v6v 7 5 5 --------2v3v4v 5 7 7

--------7 4 --------5 6 6 --------7 4 4

----------------------------------------0v7 1 ----------------2v5 3

-----------------

Win-PC Win-PC Win-PC

----------------1 X ----------------3 X

Win-PC Win-PC Win-PC Empate Win-PC Win-PC Win-PC Empate

Tabla 1: Respuestas de PC a jugadas de Humano NIVEL 2 Ahora prosigamos con las jugadas de NIVEL 1, nivel fcil cuando el humano tiene la oportunidad de ganar (Win-H.) Incluimos errores en jugada de Maquina
1er. Jugada Humano 2da. Jugada PC 2da. Jugada Humano 3ra. Jugada PC 3ra. Jugada Humano 4ta. Jugada PC 4ta. Jugada Humano 5ta. Jugada PC

Final del Juego


Win-PC Win-PC Empate Win-H. Win-PC Win-H. Empate Win-H Win-H Empate Empate Win-H

2 2 2 2 3 3 3 3 3 3 3 3

1 1 1 1 1 1 1 1 1 1 1 1

*Jugadas a nivel 1 * Nivel Facil Humano puede Ganar

0v3v4v 5v7 6 6 6 0v2v5v 7v4 6 6 6 6 6 6 6

6 0 0 0 6 4 4 4 4 4 4 4

--------3v4v5 7 7 --------0 0 5 5 2 7 7

--------7 5 5 --------7 7 2 2 5 0 0

----------------3 4 --------5 2 0 7 --------2 5

-------------------------------------------------------------------------------------------------

Tabla 2: Respuestas de PC a jugadas de Humano NIVEL 1 Observando la tabla 1 y 2 se puede observar que las columnas sombreadas pertenecen a la variable de control (jugadas humano). Enumerando Las respuestas iguales a diferentes condicionales distinguimos 17 pasos para el nivel-2 y 11 pasos del nivel-1, en total 28 pasos para el sistema de control de nuestro Diseo de tres en raya. Pasos de control que obtenemos enumerando las respuestas a condicionales distintas en la tabla1 y tabla2. Si fuera lgica cableada, necesitaramos 28 FFD, adems de varios integrados para cada condicional.

Cabe mencionar adems que se incluye un paso adicional (paso-1), que ser el reset de nuestro circuito, para volver a iniciar el juego nuevamente.

2.5 DIAGRAMA GENERAL DE BLOQUES


En nuestro sistema tendremos 8 entradas como 8 salidas.

Figura 7: Bloque Del juego Las entradas sern definidas por 8 pulsadores que enviaran un pulso para ser codificado a binario de 3 bits (Vector O[8]), teniendo el binario este actuara como variable de control observado en la tabla1. En la salida tendremos 8 bits de posicin en tablero, 3 bits que anuncian Win-PC, Win-H y Empate, y 2 bits que auncian el nivel, entonces tendramos 13 bits de salida, as que utilizaremos 2 memorias eeprom 2864 que tienen longitud de palabra de 8bits.

Figura 8: Diagrama de Bloques interno

Capitulo 3 DESARROLLO DEL PROYECTO

3.1 FLUJOGRAMA
17 PASOS NIVEL 2 (NIVEL EXPERTO) + 1 PASO DE INICIO PARA LAS CONDICIONALES INCIALES

B C

A B C

N A B C A B C

B C

A B C

N A B C A B C

X2 1

A C B C
A B
X4 1 WinPC 1

B C A B
A
C

B C A B A C

B A
X0 1 WinPC 1
A

C C B

A B C

ABC

ABC

A B C

X2 1

X0 1

X2 1

X0 1

A B A B
X5 1 WinPC 1
A B C

A B A B
X7 1 WinPC 1
A B C

A C A C

A C A C

A B C

A B C

B C A B C

A
X
7

B C


X3 1 WinPC 1

1 1

A B C

WinPC

A BC

A B C

Empate 1

Figura 9: Flujograma Nivel 2

11 PASOS NIVEL 1 (NIVEL FACIL)

N A B C

N A B C

19

27

X1 1
A C A B
A
C

X1 1
B
20
C C C

X6 1 WinPC 1

B A
1

20

A B C
21

A B C
28

X4 1

X0 1

WinH 1
23
ABC

22

B C

A B

11

A B C
8

A B C

24
X5 1 Empate 1

A B C

29

1 23 8

X5 1

A B C

25

X 2 1

ABC
23 8 23

A B C

A B C

26

X0 1

A B C

23

Figura 10: Flujograma Nivel 1

3.2 PROGRAMA AHPL


Son 29 lneas de comando para nuestro programa ahpl, que definen el circuito de control bsico, en los circuitos adems se incluye aspectos visuales, como ser: a la salida adems se muestra 2 lneas para observar el nivel, la entrada no es de 3bits (ABC) sino que de 8 bits que sern decodificados a 3 bits.

MODULE: TresEnRaya MEMORY: INPUT: N;A;B;C OUPUT: X[8];WinPC;WinH;Empate 1.- A B C A B C , N A B C A B C , A B C A B C ,

N A B C A B C, N A B C, N A B C 2,9,14,17,19,27
2.X3 1 A C B C A B , A B C , A B C

3,4,2

3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.-

X 4 1;WinPC 1 1 X2 1

A B A B , A B C , A B C A B X 5 1;WinPC 1 1 X6 1

5,6,4

A B C A B C , A B C , A B A B A C X 1 1;WinPC 1 1 Empate 1 1 X6 1 B C A B A C , A B C , A B C X0 1

7,8,6

7,10,9 11,12,10

A B A B , A B C , A B C A B X 7 1;WinPC 1 1 X4 1

A B C A B C , A B C , A B A C A B X 3 1;WinPC 1 1 X7 1 B C A B A C , A B C , A B C 15,16,14 X 0 1,WinPC 1 1 X2 1 A C A C , A B C , A B C A C X2 1 B C A C A B , A B C , A B C X0 1

13,8,12

5,3,16

5,18,17 11,7,18

A C A C , A B C , A B C A C X1 1 A C A B A C , A B C , A B C

20,21,19

10

20.21.22.-

X 6 1,WinPC 1 1 X4 1

A B C , A B C , A B C , A B C 22,24,25,26 X7 1

A B C , A B C 23.- WinH 1 1 24.- X 5 1, Empate 1 1 25.- X 2 1

23,8

26.27.28.29.-

A BC , A B C X0 1 A B C , A B C X1 1

23,23
20,28,27 11,29,28

8,23

B C B C A C , A B C , A B C X0 1

A B C A B , A B C , A B B C X5 1
A B C , A B C

8,23
Tabla 3: Programa AHPL

3.3 CIRCUITO: CONTROL Y DATOS 3.3.1 Circuito de Control


Realizamos la microprogramacin para realizar el control del circuito. Son 17 pasos para el nivel experto (mximo nivel), 11 pasos para el nivel bajo y adems un paso del reset. 29 pasos de control: los codificamos con 5 bits. 4 variables de control: 3 bits para codificar posicin de tablero (8 posiciones), y una variable de nivel de juego Longitud de palabra utilizada 8 bits, se aadi una memoria en paralelo, para obtener 8 bits ms de palabra para indicar fin de juego Win-Pc, Win-H, Empate.

Tabla de datos guardados en las memorias EEPROM, para la microprogramacin, para ambos niveles.

11

DIRECCION
NIVEL

PALABRA1
Empate Win H. WinPC X7 X6

PALABRA2
X5 X4 X3 X2 X1
D1

A B C
A 7 A 6 A 5 A 4

Paso Actual
A 3 A 2 A 1 A 0

Paso siguiente
D 7 D 6 D 5 D 4 D 3

A8

D2

D1

D0

D7

D6

D5

D4

D3

D2

1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1

1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0

0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1

1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 12

0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0

1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

X0
D0

0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1

1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0

1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1

1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0

1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0

0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 Tabla 4: Datos guardados para la Microprogramacin.

Las direcciones de datos que no figuran no se utilizaron, asi que no se los grabo

13

A8: Define el nivel del juego: 0 define NIVEL 1; 1 define NIVEL 2. A7, A6, A5: Define las variables de control, numero binario que representa cada casilla ver figura6. A4,A3,A2,A1,A0: Representa el paso anterior codificado en 5 bits por ser 29 pasos. D7,D6,D0 (Palabra 0): Representa la salida de 8 bits, ver figura 11. D7,D6,D5,D4,D3 (Palabra 1): Representa el paso siguiente codificado en 5 bits por ser 29 pasos. D2,D1,D0 (Palabra 1): Representa Win-H, Empate, Win-PC.

Figura 11: Esquema circuito de control

3.3.2 Circuito de Datos


No hay circuito que manipule datos, ya que el juego tan solamente es variable de: control respuesta, la misma que incluimos al momento de grabar la EEPROM (observar la tabla3). Lo que si describiremos son los circuitos del tablero. Circuitos de seales de entrada: Por cada casilla tenemos lo siguiente

Figura 12: Esquema de entrada de datos de una casilla.

14

Cuando apretamos un pulsador O de alguna casilla enviamos un 0 lgico habilitando la preseteada del Flip-flopD, teniendo un uno lgico permanente que se enviara al led de la misma casilla. Adems que el mismo pulsador enviara un pulso (va el monoestable), que luego ser codificado de 8 bits a tres bits y este dato durara un periodo de clock. Que lo denominamos O(0), i O(1) , O(2), ...,etc, segn sea la casilla. Cabe Resaltar que los O(0), O(1), O(2), O(7) sern tomados como clock(observe figura9).

Figura 13: Codificador 8 a 3 bits, Variables de control Circuitos de seales de Salida: Por cada lnea dato de la EEPROM tenemos para cada una, lo siguiente

Figura 14: Elemento de Salida por cada casilla

3.3.3 Teclado Matricial y el CI 74c922


Otra opcin para disminuir la cantidad de circuito integrado a utilizar en el desarrollo del proyecto es utilizar un teclado matricial, este nos reducir toda la parte del tablero que se indica en la figura 12, en total nos disminuira 8 multivibradores monoestables y 8 FFD. Ademas de disminuirnos el codificador 8 a 3, que se utiliza para obtener los bits ABC. El integrado 74c922 nos codifica los 8 bits de entrada a 4 bits que podemos fcilmente reducir a 3, adems que nos da un clock cada vez que se presione una tecla esto tambin nos disminuira la parte del clock al registro de la figura 11 ya que utilizamos un or de 8 entradas. Por cuestiones de prerrequisitos dadas por el docente, al momento de implementar nuestro juego se prosedio con la manera mas larga la de utilizar monoestables, ffd, y codificador. Nuestro tablero fue ensamblado incluyendo botones por cada casilla. Si se incluira un teclado matricial este seria externo al tablero de juego, aunque nos ahorraramos cantidad de CI a utilizar.

15

Figura 15: Diagrama de bloques del 74c922

3.4 DIAGRAMA DE TIEMPOS


Se utilizo para realizar el diagrama de tiempos el paquete de software QuartusII, que nos permite realizar waveforms. Definimos 3 bloques de seales divididos con un espacio: SEALES DE ENTRADA.- Reset:para resetear el circuito. ABC: seal de control (jugada humano codificado a 3bits). Nivel: un pulsador que si esta en 0 nos definir el nivel 2 de juego (nivel experto), y si esta en 1 nivel 1 de juego (nivel facil) SEAL INTERNA.- clock: Cada que el humano presiona una casilla, aparte de encender el led de dicha casilla, enva un pulso que ser utilizado como clock para realizar la transicin de pasos. SEALES DE SALIDA.- Casilla: esta es la respuesta de maquina a jugadas humano, son las salidas X(0), X(1), X(7) vistos en la figura 11. nivel_out: es un indicador a que nivel estamos jugando si es a nivel 1 o a nivel 2. WinPC: indica que gana PC y finaliza el juego. Empate: indica tablas en juego. WinH: Indica que el ganador es el humano. PASOS DE CONTROL.- pasos: indica en que paso estamos, segn nuestro diagrama de flujo y/o nuestro programa AHPL segn se observe. NOTA: Cabe adems de recalcar en las jugadas codificadas a 3 bits (ABC), que estas dependen de humano (jugadas completamente aleatorias en cualquier tiempo), estas se producen cuando al jugador humano le plazca, as que, por tal motivo se simulo diferentes jugadas humano en diferentes tiempos, y cuando el jugador no aprieta nada el quatus define esto como alta impedancia X osea que no se establece ningn estado, algo asi como esperar a otra jugada humano.

16

NIVEL-2: Nivel Experto, Ejemplo de algunas jugadas

Tabla 5: Diagrama de tiempos


NIVEL-1: Nivel Fcil, Ejemplo de algunas jugadas

17

3.5 LAYOUT DEL CIRCUITO


Circuito de Control

Figura 16: Layout Circuito de Control

18

Tablero

Figura 17: Layout del tablero

19

Capitulo 4 CONCLUSIONES Y MEJORAS

4.1 CONCLUSIONES
Se logro implementar de manera satisfactoria el juego Tres en Raya. Y se reducieron en lo mas posible a los pasos de control teniendo como resultado 29 pasos de control. Se logro grabar en la memoria 2864 EEPROM una gran cantidad de direcciones con las respectivas bifurcaciones de pasos. Se concluye que la microprogramacin es una herramienta potencial para realizar las unidades de control en sistemas Digitales grandes que incluyen demasiados pasos. Adems de usar una memoria para la unidad de control, se uso una segunda memoria donde estaban grabadas todas las respuestas de la maquina. Se mejora e implemento el juego de tres en raya con 2 niveles, para poder optar a ganar a la maquina. Se Implemento satisfactoriamente el tablero, haciendo de esta manera el juego mas intuitivo.

4.1 MEJORAS
Se grabaron solo las posiciones de memoria necesarias para el juego, por tal motivo aun quedaron muchas direcciones libres en ambas memorias, que podran ser utilizadas para diversos fines, como por ejemplo una demostracin encendiendo leds y dando jugadas. Esto cuando no se este jugando. El diagrama de flujo presento mucha mejora en la cantidad de numero de pasos y esto lo demuestra el programa ahpl. Por tal razn se podra en un futuro encarar otro juego como lo es el GO, proyecto con las mismas bases del tres en raya 5. BIBLIOGRAFIA http://www.museodeljuego.org/ http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/florencia_y_an/capitulo4.pdf http://www.codeproject.com/KB/cs/tictactoewin32.aspx http://reocities.com/RainForest/6896/magia.htm#tres%20en%20raya

20

5 ANEXOS Tres en raya en ASM. Para microcontrolador 16f628


Pic 16f628 Flash Program RAM Data EEPROM Data ALU lgicas W direccionable. 2048x14 224x8 128x8 8BITS : con capacidad de adicion, sustranccion, cambio y operaciones Registro de Trabajo para la ALU, segundo operando. No es registro

Clocking Scheme/Instruction Cycle La entrada de reloj (OSC1/CLKIN/RA7) es internamente dividido a Q1, Q2, Q3 y Q4. Ademas Internamente, el contador de programa (PC) incrementa todos los Q (ver figura). Se obtiene la instruccion a realizar cada blanco de Q1, pero recin esta instruccin se realiza despus de Q4. La instruccin se decodifica y se ejecuta durante el Q1 a Q4.

Program Memory Organization El PIC16F628 tiene un contador de 13 bits capaz de hacer frente a un espacio de 8K x 14 de programa en memoria. Acceso a una ubicacin por encima de estos lmites provocar una error. El vector de RESET est en 0000h y el vector de la interrupcin es 0004h

21

BLOCK DIAGRAM

22

LAYOUT

Cdigo en ASM junto al proyecto mplab que incluye el .HEX se lo presenta en el CDROM

23

24

You might also like