Práctica Nº2

Con la presente práctica se busca obtener los siguiente objetivos:

  1. Repasar brevemente el uso del entorno de diseño y simulación LOGISIM
  2. Realizar el diseño de un banco de registros básico de 4 registros
  3. Realizar el diseño de una ALU sencilla de 4 operaciones
  4. Conformar un camino de datos compuesto por el banco de registros y ALU antes realidad, además de tres registros independientes adicionales
  5. Comprobar el funcionamiento de este banco de datos para una serie de operaciones elementales simples.
  6. 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.


4.- Unir todos los elementos realizados en el camino de datos indicado.




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