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
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?
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.