• Documentación

Lab 4: Logisim

Objetivos

  • Aprender a usar Logisim y simular circuitos en dicho programa.
  • Aprender las herramientas básicas y el funcionamiento de Logisim.

Preparación

Para este laboratorio, que descarguen la aplicación Logisim. El archivo lo pueden descargar en el siguiente link.

También tienen que tener todos los archivos base, estos se encuentran aquí. Recuerden que deben aceptar la asignación de GitHub Classroom y se les creará automáticamente un repositorio con una extensión que termina con su usuario de GitHub. Cuando ya se haya creado el repositorio, pueden ejecutar los siguientes comandos abriendo una terminal (Ctrl+Alt+T):

git clone <link del repositorio>

Vista General

Logisim es una aplicación que permite simular el comportamiento de circuitos lógicos.

Al abrir la aplicación de Logisim, la interfaz gráfica está dividida en tres partes fundamentales:

  • Área de Trabajo.
  • Sección de Componentes.
  • Sección de Herramientas de acceso directo.

La sección de área de trabajo está compuesta por todo el espacio en blanco con puntos negros. Aquí se pueden colocar componentes, conectarlos entre sí utilizando cables.

La sección de componentes está ubicada en el lado izquierdo de la interfaz. Es una ventanilla que contiene numerosas carpetas que contienen los componentes.

La sección de herramientas de acceso directo está ubicada en el lado superior izquierdo. Este posee íconos para la realización de distintas tareas. Entre dichos íconos se encuentran:

Permite interactuar con el circuito, cambiando valores. Es llamado “Poke” en inglés.

Permite editar un componente al seleccionarlo y permite crear o editar cables. Es llamado “Select Tool” en inglés.

Permite crear texto en el área de trabajo.

Este es un acceso directo al componente llamado “Input Pin”. Permite crear entradas al circuito.

Este es un acceso directo al componente llamado “Output Pin”. Permite crear salidas de los circuitos.

Este es un acceso directo a la compuerta lógica “Not”.

Permite crear compuertas lógicas de tipo “And”.

Generacompuertas lógicas de tipo “Or”.

Por el momento, estas son las herramientas que se van a necesitar para este laboratorio.

Ejercicio 0: Las Bases

Este ejercicio consiste en crear su primer circuito. Empecemos con un circuito simple.

  • En el área de herramientas o acceso directo, hacer click en el ícono de la compuerta “And”. Esto creará una sombra de dicha compuerta que seguirá el cursor en el área de trabajo.
  • Colocar la compuerta en el área de trabajo. Basta con hacer click otra vez para colocar dicho componente. También, se pueden rotar los componentes presionando las teclas de flechas del teclado. Se pueden colocar en la orientación deseada, pero para este laboratorio, colocar la compuerta en orientación “Este”. La orientación de un componente puede ser alterado al seleccionarlo y buscar la opción “Orientación” u “Orientation”.(Asegurándose de que el ícono de esté activo).
  • Los pines de entrada y salida ya han sido colocados, ustedes no tienen que modificar/reemplazar/alterar/cambiar estos pines sino el autograder no les va a funcionar y tendrán que volver a descargar los archivos base nuevamente para que les funcione, en otras palabras empezar de nuevo de lo contrario tendrán una nota de 0. Hasta este punto su circuito debe verse así:
  • Luego, hacer click en “Select Tool”, y conectar los Input Pins y el Output Pin con la compuerta And creando cables entre ellos (Al mantener presionado el botón izquierdo del mouse, se puede crear un cable del largo deseado y, al soltarlo, dicho botón el cable se creará. ¡Ojo! Sólo se pueden crear cables horizontales y verticales.)

El circuito debe lucir algo parecido a esto:

  • Y por último, hacer click en “Poke” y presionar los Input Pins para interactuar con ellos. Observar que el Output Pin cambia en función de los valores de los Input Pins.

¡Y listo! El primer circuito está listo.

Ejercicio 1: NAND, NOR, XOR y Multiplexores

Ahora es momento para crear circuitos más complejos, van a trabajar en el archivo ex1.circ. Se darán cuenta que en la parte izquierda aparecen 5 subcircuitos que tienen que completar (NAND, NOR, XOR, 2-1 MUX, 4-1 MUX). En los proyectos de Logisim se pueden crear subcircuitos para mantener organizados los circuitos, ayudando a la estética del proyecto. Para crear un nuevo subcircuito tienen que ir a (Proyecto -> Añadir Circuito) y escribir el nombre del subcircuito, pero esto lo tendrán que hacer más adelante en el proyecto 2, por ahora ya están creados por ustedes. Si quieren tener más información o están interesados lean la siguiente documentación de logisim link.

Su tarea es implementar las compuertas NAND, NOR, XOR y multiplexores 2 a 1 y 4 a 1 utilizando únicamente compuertas AND, NOT y OR. Todos los circuitos tienen ya colocados los pines de entrada y salida, nuevamente no los pueden cambiar o no funcionará el autograder.

Cuando hayan completado un subcircuito pueden re-utilizarlo en los demás subcircuitos si creen que es necesario o simplifica el circuito. Para esto tienen que estar en otro subcircuito y hacer click en el subcircuito que ya han terminado y lo pueden utilizar como cualquier otro componente. Por ejemplo en la imagen que se muestra a continuación se utiliza en el subcircuito NOR, el subcircuito NAND.

Nota: Para los circuitos que simulan los respectivos multiplexores. Se deben seguir las siguientes normas:

  • Para el Multiplexor 2 a 1 de 1 bit:
  • Para el Multiplexor 4 a 1 de 1 bit:

Recueden no utilizar las compuertas lógicas NOR, XOR ni los multiplexores que vienen por defecto.

Ejercicio 2: Contador

Ya sabiendo sobre circuitos y subcircuitos, ahora se hará un circuito más complejo aplicando todo lo aprendido en el lab hasta el momento. Sino, cuando llegue el momento de realizar un proyecto al respecto, este no tendrá piedad de ustedes. Para este ejercicio van a estar trabajando en el archivo ex2.circ.

El ejercicio consiste en realizar un contador utilizando un registro y un sumador. Lo especial de este circuito es que se empezará a utilizar un reloj y a utilizar más bits.

El circuito a diseñar es el siguiente:

Los componentes a emplear se encuentran en:

Los componentes utilizados son los siguientes:

  • Sumador: Ubicado en la librería “Aritmética”.
  • Registro: Ubicado en la librería “Memoria”.
  • Constante Numérica: Ubicado en la librería “Wiring”.
  • Reloj: Ubicado en la librería “Wiring”.

Cabe mencionar que ahora se utilizan Output Pins de más de un bit, se puede aumentar el número de bits en la configuración de los componentes. Seleccionar un componente y, en el lado izquierdo, se puede encontrar el mismo menú que se usa para darle orientación a los componentes y asignarles una etiqueta, en donde se está la opción de “Bits De Datos”. Para este ejercicio ya está hecho esto para los Output pins, pero si tienen que hacerlo para el registro, para la constante numérica y el sumador.

Una vez se termine de construir el circuito… ¡es hora de simularlo!

Seleccionar la opción “Simular” (ubicado en la parte superior de la pantalla) y presionar la opción de “activar reloj”. Se podrá notar que el circuito funciona por sí solo y que, efectivamente, cumple con su objetivo: ¡contar! (si se hizo correctamente).

Es posible alterar la frecuencia del reloj seleccionando otra vez “Simular” y, luego, “Seleccionar frecuencia del reloj”. Con esto se puede controlar qué tan rápido se contará. Otra función útil es la de “Resetear Simulación” ubicado, también, en “Simular”.

NOTA: En lo que se simula el circuito, es posible revisar los estados de los subcircuitos. Para ello, se debe seleccionar la herramienta “Poke”, hacer click sobre un subcircuito en el área de trabajo y presionar en la lupa que aparece sobre el subcircuito. Para regresar al circuito principal, hay que hacer click en el módulo del circuito principal, ubicado en la sección de componentes. Esto no lo van a necesitar en este ejercicio, pero será muy útil para el proyecto nuevamente.

Ejercicio 3: AFD a Lógica Digital

Es momento de hacer algo mucho más interesante: ¡traducir un Autómata Finito Determinístico a un circuito digital!

En el curso de Informática 3 se aprende qué es un AFD (o Finite State Machine en inglés). Un AFD posee estados finitos y transición entre estados.

El AFD de este laboratorio es una variación del AFD que se ha visto en clase. Este AFD posee estados y transición de estados, pero, además de eso, necesita inputs para cambiar de estado y al cambiar de estado regresa un output.

El AFD es el siguiente:

La tabla de verdad de dicho autómata puede ser útil para visualizar lo que está pasando:

¿Cómo se lee? La primera fila de la tabla se entiende de esta manera: “Dado el estado 00, si el input es 0, entonces se hace una transición al estado 01 y devuelve un output de 1”.

Para este ejercicio se les provee el circuito ex3.circ. El trabajo a realizar es completar el circuito y lograr que se comporte como el AFD mostrado anteriormente. Para esto ustedes solo van a modificar 2 subcircuitos: StateBitOne y StateBitZero.

Se tienen dos opciones para completar el circuito: 1) fuerza bruta o 2) imaginación. Con la imaginación es posible completar el circuito utilizando un total de 3 componentes, pero, si se resuelve con la fuerza bruta, el número será mucho mayor. Se tiene todas las herramientas y las pistas necesarias para terminar el ejercicio con 3 componentes. ¡Éxitos! :D

Autograder

Cuando crean que tiene ejercicios completos pueden hacer la prueba localmente escribiendo en la terminal:

./check

Si todo esta correcto les saldrá algo como esto:

   ___       __                        __
  / _ |__ __/ /____  ___  _______ ____/ /__ ____
 / __ / // / __/ _ \/ _ \/ __/ _ \/ _  / -_) __/
/_/ |_\_,_/\__/\___/\_, /_/  \_,_/\_,_/\__/_/
                   /___/

             Machine Structures
     Great Ideas in Computer Architecture
               Logisim Intro


 0. The basics (Warm-Up): passed [ 25 ]
         1. Sub-Circuits: passed [ 25 ]
        2. Storing State: passed [ 25 ]
3. FSMs to Digital Logic: passed [ 25 ]

=> Score: 100/100

Entrega y calificación

Por favor subir el link de su repositorio al GES. Siempre es necesario que suban su repositorio al GES, incluso si no completaron todos los ejercicios, de lo contrario la nota será de 0 puntos automáticamente.

Tienen más de una semana para completar el laboratorio, es decir, el link para subir el link al GES estará habilitado hasta el 24 de Mayo del 2024 a las 11:55 PM.

La calificación de este laboratorio será de 0 a 100 puntos, donde 100 puntos es la calificación máxima. La calificación se basará en la cantidad de ejercicios completados. Si tienen alguna duda sobre la calificación, por favor envíen un correo a los auxiliares o por medio de los canales correspondientes.