Manual+de+programa+Boole-Deusto


 * MANUAL DE USUARIO DEL BOOLE-DEUSTO**

Cuando nos decidimos a diseñar el BOOLE-DEUSTO (a partir de ahora BOOLE a secas) hace casi 10 años lo hicimos porque pensamos que los entornos profesionales de análisis y diseño no cubrían las necesidades académicas, y porque aquellos entornos más específicos para el aula no cubrían todas las expectativas. Esto no quiere decir que BOOLE venga a sustituir a por ejemplo Electronics WorkBench, ISE de Xilinx, Or-CAD, etc., simplemente busca ayudar a los profesores y alumnos de diseño digital. Con la anterior declaración nace ya la primera restricción: sistemas combinacionales a nivel de bit y autómatas, y no a nivel de palabra (sumadores, codificadores, contadores, etc), aspecto ya perfectamente cubierto por el EWB, por ejemplo. El ámbito de uso de BOOLE es el aula en el primer curso de diseño lógico, y por tanto los ejercicios han de ser pequeños. Bien es verdad que hemos usado BOOLE para sistemas combinacionales de 10 entradas y autómatas con más de 20 estados, pero no es la idea inicial, y deberíamos evitar el uso profesional del BOOLE para fabricar circuitos, a no ser que estemos muy seguros de la bondad del BOOLE, situación que deberán ir marcando los propios usuarios. En cuanto a aspectos generales, BOOLE es educativo, enfocado a la metodología, instalable en un solo .exe, fácilmente utilizable, gráfico, adaptable al nivel del usuario y en varios idiomas: español, euskara e inglés (es extenxible a otros idiomas, por si alguien se anima). Seguro que más de un usuario respirará al saber que no hay que instalar, o que el manual no tiene 400 páginas. Aunque en el manual se describen someramente las funciones, podemos enumerar algunas para ir centrando al BOOLE: tablas de verdad, diagramas de Veitch-Karnaugh, expresiones booleanas, circuitos lógicos, formas normales, circuitos NAND/NOR, simplificación de funciones, autómatas de Moore y Mealy, conversión entre autómatas, minimización de estados, circuitos con J-K y D, tablas de resultados, simulación, programas VHDL y OrCAD-PLD, ficheros JEDEC, etc.
 * CONSIDERACIONES GENERALES**

INSTALAR Y ARRANCAR BOOLE-DEUSTO
La instalación es tan sencilla como copiar los ficheros .exe en su directorio. Si se partiera de los .zip bastaría con extraer los ficheros en el directorio elegido. El CD contiene versiones en español, euskara e inglés. Los .exe son los mismos para los tres idiomas, pero para inglés hay que copiar el boole.enu y el reductio.enu, y para el euskara el boole.euq, no siendo fichero adicional ninguno para el español. En principio cada usuario copiará una sola versión, pero si quisiera tenerlas todas, deberá tener una carpeta para cada idioma. Los ficheros distribuidos son: Para arrancar la aplicación bastará con hacer doble clic sobre el BOOLE.exe.
 * BOOLE.exe.
 * REDUCTIO.exe, puede prescindirse de él en la instalación, es una aplicación externa para simplificación booleana avanzada.
 * BOOLE.euq para la traducción al euskara.
 * BOOLE.enu y REDUCTIO.enu para la traducción al inglés.

ANÁLISIS Y DISEÑO DE SISTEMAS COMBINACIONALES
Una vez que se ha arrancado el programa aparece una pantalla (ver figura 1) para elegir sistemas combinacionales o secuenciales/autómatas. Empecemos por los combinacionales.



Figura 1. Pantalla principal del BOOLE

1. En la parte superior de la imagen se debe completar obligatoriamente el nombre del sistema y el número de entradas y salidas. En el ejemplo el sistema se llama ejer y tiene 4 entradas y dos salidas (ver figura 2). El sistema por defecto asocia unos nombres a las entradas y salidas, pudiendo cambiarlas el usuario.

Figura 2. Pantalla principal de Sistemas Combinacioanles

2. Seguidamente el usuario podrá proceder en el orden que desee, pero sigamos una secuencia típica de ejercicio. En este caso activaremos la opción Tabla de Verdad Manual y con la imagen en la pantalla (ver figura 3) bastará con hacer clics de ratón para insertar los 1, 0 o X correspondientes a cada fila. Al pulsar Evaluar el sistema quedará guardado.

Figura 3. Carga de la Tabla de Verdad

3. Una vez introducido el sistema, el usuario obtendrá las formas canónicas o normales activando la opción Forma Normal Disyuntiva (ver figura ). Con la pantalla de la imagen a la vista el usuario podrá aceptar los resultados o incluso modificarlos, pero deberá tener en cuenta que este cambio se trasladará a todo el sistema, incluida la tabla de verdad. Para ver la segunda salida, el usuario deberá usar la barra de desplazamiento de la izquierda. 4. El siguiente paso será obtener las expresiones simplificadas de cada salida. Para esto bastará con activar la opción Exp. SOP Simplificada. En la pantalla de la figura 5 vemos la expresión booleana de F1.

Figura 5. Expresión booleana simplificada

En la parte inferior de la imagen podemos elegir ver las expresiones en modo NAND/NOR o ver el circuito lógico correspondiente. La figura 6 muestra el circuito lógico de la función F1.

Figura 6. Circuito lógico

5. Además de obtener el circuito podríamos haber elegido ver los diagramas V-K. La imagen muestra el diagrama de V-K con los lazos de simplificación dibujados (ver figura 7). En la pantalla el usuario puede ver el resultado completo o puede ver dibujado cada lazo por separado utilizando la parte inferior izquierda. Además el usuario puede utilizar dos tipos de V-K dibujados de dos maneras, utilizando la parte superior izquierda. La parte de los V-K es seguramente la más valorada por los usuarios, y en la que más se ha esforzado el equipo de diseño.



Figura 7. Diagrama de Veitch-Karnaugh con la función simplificada

6. Una vez que el usuario tiene el circuito puede acabar aquí el ejercicio y pasar al laboratorio para implementarlo con CI 74XX. Pero quizá el usuario quiera darle un enfoque más profesional, y aunque este no es el enfoque original del BOOLE (es didáctico), sí permite obtener el correspondiente programa en VHDL u OrCAD-PLD (estándares de lógica programable), o mejor aun, permite obtener directamente el JEDEC listo para ser grabado en una PAL 22V10. La figura 8 muestra el aspecto de parte del fichero JEDEC.

Figura 8. Fichero JEDEC generado por el BOOLE

Los seis pasos anteriores han descrito la secuencia típica del aula para resolver un ejercicio combinacional, pero el BOOLE también puede ser utilizado para resolver y practicar con ejercicios más basicos. En este caso es cuando toma relevancia el nombre de calculadora booleana. Veamos algunos ejemplos de este uso. 1. Activando la opción Expresión Booleana (ver figura 9), el usuario podrá introducir cualquier expresión booleana siguiendo una mínimas pautas de sintaxis. Seguidamente el usuario podrá proceder con el sistema como quiera, por ejemplo, podría activar la opción de Tabla de Verdad Manual, y así ver la tabla correspondiente.

Figura 9. Carga de cualquier función booleana

2. Si se activa la opción Visualizador de Circuitos, el usuario podrá escribir una expresión SOP, POS, NAND o NOR, y el BOOLE le dibujará el correspondiente circuito lógico. Lo que esta opción no hace es dibujar cualquier circuito lógico, solo los tipos de expresiones anteriores.

3. La opción más reconocida del BOOLE es la parte de simplificación. Si se activa el V-K Modo de Aprendizaje, el usuario podrá simplificar por su cuenta el sistema introducido, indicándole el BOOLE la bondad de la solución. El primer paso será cargar una función nueva utilizando la opción Diagrama de V-K (o cualquier otra opción) y luego activar el Modo de Aprendizaje. La figura 10 muestra la función introducida con un diagrama de Veitch-Karnaugh.

Figura 10. Captura de un afunción mediante su V-K

Una vez activado el Modo Aprendizaje: Dibujar Lazos es el usuario el que debe introducir los lazos que simplifican el V-K. Lo hará en modo gráfico, aunque también puede usar la expresión booleana. Un lazo se dibuja de la siguiente manera: hacer clic con el botón izquierdo sobre cada casilla y luego con el botón derecho para pintar el lazo. En un par de intentos se coge la habilidad suficiente. La figura 11 muestra la solución introducida por el usuario.

Figura 11. Solución a la simplificación

Al darle Evaluar, el sistema nos dirá si la simplificación es correcta. En este caso el sistema nos dice que la simplificación se puede hacer con menos lazos, y así deberíamos intentarlo (ver figura 12).

Figura 12. Mensaje de simplificación errónea

En la imagen de la figura 13 vemos una solución correcta. Esta tiene solamente cuatro lazos, por cinco de la anterior.

Figura 13. Ejemplo de simplificación correcta

Además de las opciones anteriores, el BOOLE puede guardar y cargar sistemas, imprimir resultados, copiar al portapapeles para luego editar un fichero .doc y editar el texto adjunto. Con esta última opción, el usuario puede ligar el sistema con un texto, por ejemplo, con el enunciado del problema resuelto.

En los párrafos anteriores se ha dado una breve e incompleta descripción del BOOLE, pero suficiente para que el usuario entienda su modo de operación y comience a usarlo en el análisis y diseño de sistemas combinacionales.

Si en la primera pantalla hubiéramos elegido la opción de Autómatas, accederíamos a lo siguiente. En este caso el BOOLE ya no se comporta tanto como un sistema abierto, tipo calculadora booleana, sino que es necesario usarlo más ordenadamente. Este uso más ordenado es consecuencia de las técnicas de análisis y diseño de autómatas. Veamos una secuencia típica de uso de esta parte. 1. En primer lugar habrá que crear un nuevo autómata, declarando si es de Moore o Mealy y su número de entradas y salidas. La imagen muestra la pantalla de la opción Archivo Nuevo. En este caso se ha optado por un autómata de Moore con 1 entrada y 1 salida (ver figura 14).
 * ANÁLISIS Y DISEÑO DE SISTEMAS SECUENCIALES, AUTÓAMATAS O FSM**

Figura 14. Creación de un nuevo autómata

2. El segundo paso es cargar gráficamente el autómata. El modo ideado es puramente gráfico y sencillo, pero el usuario deberá familiarizarse con él. En la pantalla se podrá ver una paleta con tres signos (ver figura 15): se selecciona el superior derecha para insertar estados, se selecciona el inferior derecha para dibujar transiciones y se selecciona el de la izquierda para mover y borrar estados o transiciones.

Figura 15. Paleta para dibujar el autómata

3. Una secuencia normal pasa por primero elegir el círculo y situar los estados del sistema, cuatro por ejemplo. Luego elegir la flecha y dibujar las transiciones haciendo clic con el ratón en los estados origen y el destino. Para hacer un autolazo habrá que marcar dos veces el mismo estado. Atención: a veces podrá parecer que no se ha dibujado una transición o no se verá la punta de la flecha. En el primer caso esto es porque la nueva transición ha sido dibujada sobre otra, habrá que mover una de ellas para ver la otra. En el segundo caso habrá que mover el estado destino para ver la punta de la flecha, y luego mover la propia transición para mejorar el dibujo. Como en todo sistema gráfico el usuario debe pasar un tiempo practicando hasta ser hábil (ver figura 16). Figura 16. Primeros pasos en la carga del autómata

Para mover un estado o transición bastará con seleccionar la flecha grande y luego hacer clic y arrastrar el estado o transición correspondiente: el conjunto se moverá solidariamente. Para arrastar la transición habrá que seleccionar la punta de la flecha, y no otra parte de la transición. Para borrar un estado o transición habrá que seleccionar la flecha grande, hacer clic con el botón izquierdo sobre el estado en cuestión, y luego clic con el derecho. Una incomodidad del sistema es tener que estar cambiando de selección en la paleta, pero hay un truco para pasar a coger la flecha grande: activando el botón derecho del ratón (cuidado con borrar algo). Un consejo final: es bueno tener el autómata dibujado delante para así asegurar una disposición armoniosa del autómata.

4. Una vez cargado el aspecto gráfico del autómata habrá que dotarlo de contenido en sus estados y transiciones. Seleccionando la flecha grande y haciendo doble clic sobre un estado o transición (sobre la punta de flecha), este se abrirá y podremos escribir el valor de la entrada y/o salida (sorprendentemente algunos estados se mueven; pensemos que es un detalle libertario). La figura 17 muestra el autómata ya completo, pero siempre podremos volver sobre él.

Figura 17. Autómata de Moore completo

5. El autómata de la figura 17 es un reconocedor de 3 o más 1 en la secuencia de entrada. Una primera opción que podemos activar en Resultados son las de Determinista y Correcto. En este caso BOOLE nos dice si se nos ha olvidado alguna entrada, si las hemos repetido o cualquier circunstancia extraña. Esta opción puede ser muy útil en autómatas complejos. En este momento se puede activar directamente la opción Diseño del Autómata, y aparecerá en la pantalla las tablas que configuran el diseño para flip-flop D o J-K. La figura 18 muestra las tablas de diseño del BOOLE.

Figura 18. Tablas de diseño del autómata de Moore

6. Vistas y comprobadas las tablas, el usuario podrá activar Ver Circuitos y obtener la imagen de la figura 19.

Figura 19. Circuito lógico con J-K del autómata

7. El anterior paso cierra la sesión, pero también podríamos haber seguido otros pasos. Por ejemplo podríamos haber convertido el autómata de Moore en uno de Mealy activando la opción Obtener Mealy Equivalente dentro de Resultados. La figura 20 muestra el resultado obtenido.

Figura 20. Autómata de Moore convertido en uno de Mealy

8. Seguidamente se podría activar la opción de Minimización de Estados dentro de Resultados. En este caso está implementado un algoritmo que minimiza los estados incluso cuando utilizamos algún tipo de condiciones libres, pero está claro que en este caso la bondad del algoritmo depende mucho del propio autómata, y por tanto el usuario deberá estar más atento en estos casos. Al minimizar, el BOOLE nos ofrece ver los pasos que da para llegar a ella, y además se ofrece para redibujar el autóamta en la pantalla. Al hacer esto puede que el BOOLE no acierte demasiado con el dibujo, pero siempre podremos redibujarlo nosotros. La imagen de la figura 21 nos muestra que el autómata de Mealy se podía reducir a tres estados.

Figura 21. Autómata de Mealy reducido

9. La secuencia anterior lo ha sido de diseño, pero BOOLE también permite el análisis del autómata cargado. Esta operación era espontánea en los sistemas combinacionales, ya que era el usuario el que daba sentido a la calculadora booleana. Para los autómatas, BOOLE ofrece simulación rápida o detallada, pudiendo ser cada una de estas interactiva o batch. Veamos una de ellas: opción Simulación Interactiva dentro de Resultados. En este caso el usuario va metiendo entradas en la casilla correspondiente y pulsando CK para que el autómata las procese y muestre su evolución en el propio diagrama (ver figura 22). Según hace esto, el BOOLE va creando un LOG que luego el usuario podrá ver para analizar la simulación en conjunto.

Figura 22. Simulación interactiva del autómata de Mealy

10. El anterior modo de simulación es válido para sistemas sencillos, para sistemas más complicados es mejor optar por la Simulación Batch. En este caso el usuario primero prepara toda la secuencia de entrada y luego con simples clic de ratón la va procesando. La diferencia con la simulación anterior es solamente esta. En la imagen de la figura 23 podemos ver que el autómata es correcto, ya que pone la salida a 1 cuando se han recibido 3 o más 1.

Figura 23. Resultado de la simulación batch del autómata de Mealy

En cuanto a la simulación detallada, esta es útil solo para hacer cambios en la entrada entre flancos. Esta situación tiene interés didáctico para destacar las diferencias entre Moore y Mealy, pero no tiene mucha utilidad práctica.

Además de todo lo anterior, BOOLE ofrece guardar y cargar los autómatas, imprimir resultados, copiar al portapapeles, generar código VHDL y OrCAD-PLD y generar el fichero JEDEC. Opciones todas ellas que dan vigor y utilidad al BOOLE.