Práctica 2

Práctica 2: ALU y camino de datos

En esta práctica vamos a tratar de cumplir los siguientes objetivos:
• Repasar brevemente el uso del entorno de diseño y simulación Logisim.
• Realizar el diseño de un banco de registros básico de 4 registros.
• Realizar el diseño de una ALU sencilla de 4 operaciones.
• Conformar un camino de datos compuesto por el banco de registros y ALU antes realidad, además de tres registros independientes adicionales.
• Comprobar el funcionamiento de este banco de datos para una serie de operaciones elementales simples.
• Realizar el cronograma de algunas operaciones elementales.

Para recordar el funcionamiento de Logisim se nos pide realizar unos ejercicios bastante simples, pasamos a describirlos brevemente: 

1. Implementación de un circuito decodificador de 2 bits binarios a base 4.

2. Implementación de un bus bidireccional y compartido de 8 bits, capaz de comunicar tres registros entre si.





Se nos pide realizar el diseño e implementación del banco de 4 registros de 8 bits cada uno. Deberá disponer de entradas de selección de registro, de carga de datos y de control de triestado OE. 

Para realizar este ejercicio y los siguientes utilizaremos los circuitos implementados en la introducción.
      1. Comenzamos por montar el circuito del banco de registros de 8 bits cada uno.
 

      2. Seguimos por el controlador de las entradas y un controlador para el triestado, los cuales lo       realizaremos con decodificadores.



       3. Completamos el circuito uniendo con el circuito de la introducción.



Ahora la práctica nos pide realizar el diseño de una ALU sencilla de 8 bits con registro acumulador, con las siguiente operaciones: A+B, A AND B, NOT A y Desplazamiento 1 bit a la izquierda.
         1. Creamos el sumador.



         2. Creamos la puerta AND de dos entradas.




         3. Puerta NOT.





         4. Desplazamiento de 1 bit a la izquierda.



         
         5. Por último unimos todo y diseñamos la ALU.



 El siguiente ejercicio nos pide unir todos los circuitos realizados en el camino de datos indicado, para ello agregaremos tambien un display de 2 cifras y el registro de la ALU.
 


Seguimos con el circuito obtenido y realizamos las operaciones siguientes del ejercicio 5:
Cargar en el registro R0 el dato 1Fh
Cargar en el registro R1 el dato 21h
Cargar en el registro R2 el dato 4Ah
Cargar en el registro R3 el dato 35h





Sumar R1 y R2 y almacenarlo en Raux0
Hacer la operación AND entre R0 y R3 y almacenarlos en Raux1
Desplazar dos veces en registro R1 y almacenarlo en el registro Raux2








Llevar R2 al acumulador y complementar su valor. El resultado almacenarlo en R0



Por último nos pide realizar el cronograma de las tres últimas operaciones:

Hacer la operación AND entre R0 y R3 y almacenarlo en Raux1

Desplazar dos veces el registro R1 y almacenarlo en el registro Raux2


Llevar R2 al acumulador y complementar su valor. El resultado almacenarlo en R0


  
FAQs DE LA PRÁCTICA Nº2

1º) ¿Qué es Logisim y de dónde puedo descargarlo? 

Logisim es una herramienta de libre distribución bajo licencia GNU GPL, de diseño y simulación de circuitos lógicos digitales. Su intuitiva interfaz y su sencillo simulador permiten aprender con facilidad los conceptos básicos relacionados con la lógica de los circuitos digitales. Con la capacidad de construir grandes circuitos a partir de otros más simples, Logisim puede ser utilizado para el diseño de CPUs al completo con propósitos educativos. 

Puedes descargarlo y obtener más información desde su página oficial en http://sourceforge.net/projects/circuit/ 
 
2º) Mi circuito no funciona… aparecen cables azules. ¿A qué se debe y como se puede solucionar? 

Esto es debido a que dichos cables que aparecen azules no están conectados correctamente a la entrada o salida de algún componente en concreto. Asegúrate de que dicho cable, cuando toca con el componente termina en un punto. Si esto no es así, coloca nuevamente el cable para que este quede correctamente conectado y cuando esto ocurra, este aparecerá en color verde y estará correctamente conectado. 

3º) Tengo cables de color naranja y me aparece un mensaje de “Anchos incompatibles”. ¿Cómo puedo arreglar esto? 

Cada componente tiene varias opciones de configuración y entre ellas está el poder configurar el número de bits de la entrada o de la salida del componente. Si dos componentes que conectamos mediante un cable tienen distintos bits en sus respectivas entradas o salidas, este nos dará un error. Siempre deben coincidir estos valores. Para cambiarlos basta con seleccionar el componente y cambiar el atributo de “bits de datos” para que ambos coincidan.
 
4) Ya tengo el circuito completo y sin errores. ¿Cómo puedo probar que todo funciona correctamente? 

Tendremos que ir introduciendo los valores a las entradas de datos del circuito y luego, según lo que queramos hacer, ir dirigiendo esos datos por los buses a los componentes, apagando y encendiendo los triestados. Muchos componentes pueden compartir cableado y no pueden estar enviando datos a la vez al circuito, por lo que tendremos que controlar los distintos triestados para que esto no ocurra. Además una vez que tenemos un dato en el bus, para cargarlo por ejemplo en un registro, deberemos activar la señal de “Load” del mismo, para que el dato se cargue. 

5) Mi circuito solo tiene una salida, pero tengo varias operaciones que implementar. ¿Cómo puedo hacer que todas las operaciones usen esa misma salida? 

La respuesta es con un “Multiplexor”. Con él podremos seleccionar qué operación está usando la única salida en cada momento. Recuerda configurar el multiplexor editando sus atributos para cambiar el número de opciones u operaciones posibles.