Posted by : Antonio Castillo jueves, 23 de mayo de 2013

ALU y Camino de datos

Esquema simplificado de una ALU y camino de datos.

Requerimientos:


Para realizar esta práctica se necesita el Simulador de circuitos electrónicos digitales LOGISIM , que es de uso libre y se puede descargar desde este enlace:
El alumnado tiene un conocimiento previo del uso de este programa, pero como referencia y establecer unas bases se puede ver un tutorial desde  este enlace:

Objetivos:

1.-Realizar el diseño de un banco de registros básico de 4 registros.
2.-Realizar el diseño de una ALU sencilla de 4 operaciones.
3.-Construir un camino de datos (compuesto por el banco de registros y la ALU antes realizadas) y  también tres registros independientes adicionales.
4.-Comprobar el funcionamiento de este banco de datos para una serie de operaciones elementales simples.
5.-Realizar el cronograma de algunas operaciones elementales.



Repaso a entorno LOGISIM

Como se indicó en el apartado requerimientos se hace necesario un repaso previo de dicho entorno, para el cual se puede utilizar o la web del desarrollador o el enlace al tutorial que se encuentra en este apartado.
En el repaso del entorno se manda;
  • a) Implementar un circuito decodificador de 2 bits binarios a base 4 (4 salidas de activación independiente).
  •  b)Implementar un bus bidireccional y compartido de 8 bits, capaz de comunicar tres registros    entre sí (Raux0, Raux1 y Raux2).Se debe 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.

        
Desglosemos los apartados con ilustraciones y el correspondiente archivo de Logisim, todo en el archivo comprimido ZIP CircuitosALULogisim, para una mayar compresión. El programa necesario para descomprimir el archivo es 7zip de distribución libre que podemos descargar desde su página oficial: http://www.7-zip.org/download.html    

CircuitosALULogisim_GA3 Descargar - Ver

a)      Implementar un circuito decodificador de 2 bits binarios a base 4 (4 salidas de activación independiente).

El circuito correspondiente a este decodificador se llama Decodificador.circ. Se recomienda comprobar su funcionamiento en LOGISIM.


El funcionamiento de este decodificador es el siguiente, por medio de las entradas de datos D1 y D0 se ingresan dos números binarios (en cada selector) este las decodifica de binario a el número de salida correspondiente en decimal, para que se active es necesario tener a 1 el Habilitador (por eso se ve azul los cables en la imagen anterior). El bit de más peso tal y como se ve en la imagen es el D1 ya que el selector de bits que divide los bits de entradas está configurado de esa forma.


Veamos su funcionamiento:




b)      Implementar un bus bidireccional y compartido de 8 bits, capaz de comunicar tres registros entre sí (Raux0, Raux1 y Raux2).Se debe 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.

El circuito correspondiente a este decodificador se llama Registro con bus bidireccional.circ. Se recomienda comprobar su funcionamiento en LOGISIM.
         


El funcionamiento de este bus bidireccional y compartido de 8 bits es el siguiente,en la entrada de 8 bits se introduce un número binario de 8 bits ,estos van por el cable hasta un búffer controlado por las señales de triestado (deja pasar la información).Hay tres registros en los que se puede intercambiar la información entre ellos  y el display hexadecimal que muestra en todo momento los datos que recorren el bus. Para que funcione el bus y no de error, al ser un bus bidireccional no se puede abrir dos búffer controlados a la vez ,pues se produciría un error.
La carga en los registros se produce poniendo a 1 la pestaña en (Enable)

Ejemplo de cómo cargar un dato a un registro:
      
Ejemplo de carga entre registros:


Inicio de la práctica

1.-Realizar el diseño de un banco de registros básico de 4 registros.
El circuito correspondiente a este decodificador se llama Registro con bus bidireccional2.circ. Se recomienda comprobar su funcionamiento en LOGISIM.

Consta del circuito del apartado b) y en la parte de arriba se le ha añadido 4 registros en los que la carga es común para todos (Carga Banco), decodificadores que actúan seleccionando los registros para habilitar o deshabilitar o transferir la información (triestado).Ambos decodificadores funciona como se expuso con anterioridad, salvo que tiene la misma entrada de selección de bits, asegurando así que los dos decodificadores trabajan a la par.


2.-Realizar el diseño de una ALU sencilla de 4 operaciones.
-SUMA                                          -AND
 



-NOT A     
-Desplazamiento de 1 bit a la izquierda (Desplazamiento Circular)
Después de realizar la ALU implementaremos todos los elementos en un camino de datos tal como dice el ejercicio 3.


3.-Construir un camino de datos (compuesto por el banco de registros y la ALU antes realizadas) y  también tres registros independientes adicionales.

El circuito correspondiente a este decodificador se ALU.circ. Se recomienda comprobar su funcionamiento en LOGISIM.
La ALU está situada en la esquina inferior derecha y contiene un multiplexor para indicar que operación ha de realizarse y un habilitador .La salida de la operación va a un registro temporal (Registro Resul.) que se cargará con el dato del resultado de la operación lógica. Este circuito contiene otro display hexadecimal para comprobar que dato hay en el bus al producirse el resultado. El registro adicional que se ha añadido es el registro del primer operando, puesto que no puede haber dos datos en el mismo bus, este se almacena en el registro del 1º operando, y el 2º operando se coge de cualquiera de los registros restantes.

4.-Comprobar el funcionamiento de este banco de datos para una serie de operaciones elementales simples.
Se puede hacer cualquier operación que queramos entre registros que la ALU pueda soportar(negación del dato A,AND de A y B ,Desplazamiento a la izquierda o suma de A y B. Como ya hemos explicado el funcionamiento de cada parte del circuito de los Banco de registros  y de la ALU, entendemos que el lector puede probar con cualquier operación en el LOGISIM.
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



5.-Realizar el cronograma de algunas operaciones elementales.
Señales utilizadas:
+Flanco de subida;                                                   +De nivel (triestado)



Apartados según siglas:

Reloj (CLK) el bus de datos (donde pones los datos que se están transfiriendo: operandos y resultados de operaciones) y Op(operaciones, que se indicará simbólicamente la que se realiza).
Banco de Registros:
SB(selección Banco) indica el registro con el que estamos trabajando
 CB(Carga Banco) es una señal de Triestado que activa los registros para su carga
TB(Triestado Banco) es de salida de datos, según los datos que quiere que salgan del banco de registro la anchura de la señal de triestado debe ser mayor, cogiendo dos pulsos de reloj para dos datos.
Registros Temporales Ri:

C antes del registro y T son las señales de Carga y Triestado(salida) respectivamente tiene señales por flancos y T señales por niveles(triestado).Ahora dependiendo de con que registro se esta trabajando se tendrá que rellenar de una forma o de otra.
Parte de la ALU:

CA (Carga del registro Acumulador) por flancos como ya se ha dicho y carga en este registro valores inmediatos o 1º operando .La ALU no puede tener en el bus más de dos datos a la vez porque se produciría un error,con lo cual se opera desde este registro , 2º operando desde otro registro temporal(Ri).Tmp es otro registro temporal para almacenar el resultado antes de cargarlo a un registro ,ya sea del Banco de registro o aun registro más frecuentemente usado (Ri).Y para cargar en Tmp hace falta activar por flanco a Ctmp (carga de Tmp).
Ci (Carga de errores) es para controlar que no se produzca ningún error, este se realiza después de toda operación aritmética o lógica. Y por último R estado es el registro que almacena si hay un error de: C-accarreo,Z-Cero(Cuando da cero el resultado de una operación) y V-Overflow(Cuando se produce un desbordamiento).

Aclarado esto se entiende que el lector  puede verificar cualquier cronograma incluso hacerlo.Aquí hay algunos ejemplos:



  • La primera operación que nos piden  es una AND entre R0 y R3 y almacenarlos en Raux1. Aquí tenemos su cronograma.


  • La siguiente operación es  un Desplazamiento de 2 bits a la izquierda de R1 y almacenarlo en Raux2. El cronograma quedaría de la siguiente manera:


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © 2025 Fec -