Con la presente práctica se busca obtener los siguiente 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.
1.- Para recordar el funcionamiento básico del entorno de simulación LOGISIM el alumno podrá utilizar el tutorial presente en la página del desarrollador: PULSE. Una vez revisado el tutorial, se deberán realizar estos ejemplos intermedios:
Implementación de un circuito decodificador de 2 bits binarios a base 4 (4 salidas de activación independiente). Tras montar el circuito, comprobar su funcionamiento
Implementación de un bus bidireccional y compartido de 8 bits, capaz de comunicar tres registros entre si (Raux0, Raux1 y Raux2). Se utilizará un dispositivo de entrada de 8 bits para introducir los datos y un display de 2 cifras hexadecimales para visualizar los datos que circulan por el bus.Tras montar el circuito, comprobar su funcionamiento.
2.- 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.
3.- Realizar el diseño de una ALU sencilla de 8 bits con registro acumulador, con las siguiente operaciones:
- A + B
- NOT A
- Desplazamiento de 1 bits a la izquierda (mediante la conexiones del multiplexor.
5.- Con el circuito obtenido, realizar las operaciones siguientes:
Cargar en el registro R0 el dato 1Fh
-Inicializamos el número y activamos el button.
-Activamos la carga de Banco de Registros , el cual tiene un interruptor denominado triestado.
Cargar en el registro R1 el dato 21h
-Inicializamos el número y activamos en button.
-Activamos D0
-Activamos el Banco de Registros y se guarda el valor en t1.
Cargar en el registro R2 el dato 4Ah
-Inicializamos el número y activamos el button.
-Activamos D0.
-Activamos el Banco de Registros y se guarda el valor en R2.
Cargar en el registro R3 el dato 35h
-Inicializamos el número y activamos el button.
-Activamos D0 y D1 y activamos el Banco de Registros y se guarda el valor en R3.
Sumar R1 y R2 y almacenarlo en Raux0
-Cargamos R1 en Reg.A.
-Cargamos R2 en el bus principal.
-Cargamos e R4 el valor de la suma activando el interruptor.
-Guardamos en Raux 0 el valor 4.
Hacer la operación AND entre R0 y R3 y almacenamos en Raux1
-Cargamos R0 en Reg.A.
-Cargamos R3 en el bus principal.
-Interruptor X2 lo ponemos a 01 y guardamos en R4 el resultado.
-Guardamos Raux 1.
Desplazar dos veces en registro R1 y almacenarlo en el registro Raux2.
-Cargamos R2 en Reg.A
-Inicializamos X2 en 11.
-Pasamos el valor Raux 2.
Llevar R2 al acumulador y complementar su valor. El resultado almacenarlo en R0
-Cargamos R2 en R4.
-Inicializamos en 11.
-Guardamos R0.
6.- Realizar el cronograma de las tres últimas operaciones
a) Hacer la operación AND entre R0 y R3 y almacenarlos en Raux1.
Selector Reg1 | ||||||||||||||
Selector Reg2 | ||||||||||||||
Triestado MUX | ||||||||||||||
Load Reg A | ||||||||||||||
Load Raux0 | ||||||||||||||
Load Raux1 | ||||||||||||||
Triestado Raux0 | ||||||||||||||
Operador 1 | ||||||||||||||
Operador 2 | ||||||||||||||
Load Resultado | ||||||||||||||
Triestado Result |
b) Desplazar dos veces en registro R1 y almacenarlo en el registro Raux2
Selector Reg1 | ||||||||||||||
Selector Reg2 | ||||||||||||||
Triestado MUX | ||||||||||||||
Load Reg A | ||||||||||||||
Load Raux2 | ||||||||||||||
Triestado Raux2 | ||||||||||||||
Operador 1 | ||||||||||||||
Operador 2 | ||||||||||||||
Load Resultado | ||||||||||||||
Triestado Result |
c) Llevar R2 al acumulador y complementar su valor. El resultado almacenarlo en R0
Selector Reg1 | ||||||||||||||
Selector Reg2 | ||||||||||||||
Triestado MUX | ||||||||||||||
Load Reg A | ||||||||||||||
Load Banco | ||||||||||||||
Operador 1 | ||||||||||||||
Operador 2 | ||||||||||||||
Load Resultado | ||||||||||||||
Triestado Result |