Introducción
En esta
práctica del tema 3 “ALU y camino de datos”, hemos aprendido a implementar una
ALU con una serie de operaciones básicas y un banco de registros básicos.
Además hemos tenido que comprobar el funcionamiento de un banco de datos que ya
se daba implementado. Para finalizar con la realización de un cronograma de
algunas operaciones elementales.
Para llevar
a cabo la realización de esta práctica hemos empleado el simulador “Logisim”,
que había sido empleado con anterioridad durante el curso. El programa nos
permite implementar diferentes circuitos electrónicos con gran facilidad.
Contiene las puertas lógicas fundamentales además de una serie de circuitos
básicos tales como multiplexores, decodificadores, sumadores, contadores…
Se nos
proporcionó un tutorial de “Logisim” para poder llevar a cabo la práctica y más tarde una serie de
video tutoriales en los que se resolvían la mayor parte de los ejercicios
propuestos paso a paso para facilitar el trabajo.
¿Qué hemos
aprendido?
Bueno pues
tras esta breve introducción, entremos en materia, la práctica se distribuye en
6 ejercicios, ordenados por orden de dificultad, siendo los dos primeros una
simple introducción al simulador, para facilitar la resolución de los
siguientes una vez comprendido el funcionamiento básico del programa.
Lo primero
que se nos pide es la implementación de un decodificador de 2 bits binarios a
base 4 y comprobar su funcionamiento.
Un
decodificador es un circuito formado por un habilitador, y n entradas (en este
caso 2) y 2n salidas de las cuales solo una, la función principal de
los decodificadores es la de direccionar
espacios de memoria.
La
implementación del circuito que se nos pide en el apartado “a” es la siguiente:
Para
continuar el guion nos pedía que implementásemos un bus bidireccional de 8
bits, y que comunicase tres registros entre sí. Además el bus debía tener
un display de dos cifras hexadecimales para visualizar los datos del bus. La
implementación del cicuito es la siguiente:
Como se
puede observar el display muestra el número 2 hexadecimal, para ello
introdujimos dicho número directamente en el bus y activamos la carga de Raux0,
que es el único que tiene almacenado un dato, una vez cargado dejamos de volcar
datos en el bus y desactivamos la carga de Raux0 y para finalizar abrimos el
buffer triestado de este mismo registro para volcar la información nuevamente
en el bus.
Los
ejercicios 3 y 4 de la práctica nos piden realizar el diseño de una ALU
sencilla de 8 bits con un registro acumulador y que realice además las
siguientes operaciones: “A+B”, “A AND B”, “NOT A” y “desplazamiento de un bit a
la izquierda” (mediante las conexiones del multiplexor).
Un multiplexor es un circuito combinacional con varias entradas y una sola salida de datos, que posee además del habilitador, un selector de entradas para elegir qué entrada de datos transmitir a la salida.
La
implementación de la ALU quedaría así:
Aquí vemos
los diferentes circuitos y operaciones que componen dicha ALU:
A
continuación, en el ejercicio 5 llevamos a cabo una serie de operaciones a
realizar con la ALU implementada, para mostrar más detenidamente el
funcionamiento de este tipo de
circuitos.
Cargar en el registro R0 el dato 1Fh:
Cargar en el registro R1 el dato 21h:
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 y
para finalizar con la práctica se nos pide la realización de un cronograma de
las 3 últimas operaciones que habíamos hecho anteriormente. Para elaborar dicho
cronograma hemos tenido en cuenta que las señales de captura se realizan en los
flancos de subida y que las señales de selección y triestados son activos altos
y cambian en los flancos de bajada.
Para
aquellos que no sepan diseñar un cronograma, hay que tener en cuenta las
siguientes cuestiones:
- Las
señales de captura se realizan en medio ciclo de reloj, siendo suficiente dicho
tiempo para capturar el dato.
- El dato
contenido en cada registro cambia inmediatamente después de la señal de
captura.
- Los
triestados están activos durante un ciclo de reloj completo y los datos
volcados en el bus solo estarán presentes mientras dicho triestado esté activo.
- NUNCA se puede activar a un tiempo una
señal de captura y triestado de un mismo elemento del circuito.
Una vez tenidas
en cuenta estas cuestiones os presento el cronograma de dichas operaciones:
Conclusión
Durante esta práctica hemos estudiado fundamentalmente el
funcionamiento de una ALU obteniendo previamente conocimientos más básicos,
como el funcionamiento de un banco de registros. Por último, habiendo adquirido
ya los conocimientos necesarios de cómo implementar una ALU y entender su
funcionamiento, hemos realizado un cronograma que nos da una vista detallada de
los que está sucediendo tanto en la ALU como en los registros.
En esta práctica al igual que en la de MIPS, hay que ser
meticuloso, ya que en todo momento debemos tener en cuenta el número de bits
que está transfiriendo y recibiendo cada dispositivo. También son necesarios
unos conocimientos básicos del funcionamiento de circuitos para no activar
cargas y descargas a un tiempo y que se produzcan errores en las
transferencias.
No hay comentarios:
Publicar un comentario