Práctica 3

ARITMÉTICA BOOLEANA Y LÓGICA SECUENCIAL

Introducción y objetivo de la práctica

De manera general, el objetivo de esta práctica es conocer más a fondo el funcionamiento de algunas arquitecturas computacionales, para esto se realizaron dos proyectos provenientes de Nand2Tetris, en donde, en el proyecto dos (2) se busca el poder construir una unidad aritmética lógica; lo que principalmente se hace es crear las bases operacionales de un equipo, esto se denota en que creamos los sumadores, los incrementadores y finalmente la ALU. Por otro lado, en un nivel más alto de complejidad, nos situamos en el proyecto 3, en este lo que se planea es construir la memoria de un equipo, la cual nos permitirá realizar operaciones lógico-secuenciales, en este caso, se empieza con la construcción de un Flip Flop, seguido de un Bit que hace uso del elemento anterior, en ese mismo sentido, se procede a elaborar un Register el cual funciona con solo Bits; con todo lo previo, pasamos a la construcción de la RAM, que usa los Registers. Es decir, que partimos desde las arquitecturas más “simples” hasta llegar a la RAM, la cual es una de las partes más relevantes e importantes a la hora de definir o crear una arquitectura.

Desarrollo

Proyecto 2


HalfAdder

Diagrama
Descripción
Esta compuerta permite realizar la suma de dos bits sin haber realizado una suma anteriormente y entrega el resultado de la suma y un bit de acarreo.
Código fuente

FullAdder

Diagrama
Descripción

El FullAdder complementa al HalfAdder ya que también representa la suma de dos bits con la característica de aceptar un bit de acarreo como valor de entrada, retornando la suma y el nuevo bit de acarreo obtenido.

Código fuente

Add16

Descripción

Esta compuerta realiza la adición binaria entre dos cadenas de 16 bits (suma bit a bit) despreciando el ultimo acarreo.

Código fuente

Inc16

Diagrama
Descripción

Incrementa en 1 una cadena de 16 bits. Se desprecia el acarreo.

Código fuente

ALU (Complete)

Diagrama
Descripción

Una unidad lógica aritmética es un circuito electrónico digital combinacional que realiza operaciones aritméticas y bitwise (operación bit a bit) en números binarios enteros . Esta se implementa utilizando un conjunto de puertas lógicas básicas, así como sus variaciones multibit y multivía.

Código fuente

Proyecto 3

BIT

Diagrama
Descripción

Un registro de un solo bit, al que llamamos Bit, o celda binaria, está diseñado para almacenar un solo bit de información (0 o 1). La interfaz del chip consta de: un pin de entrada que lleva un bit de datos; un pin de carga que habilita la celda para escrituras; un pin de salida que emite el estado actual de la celda.

Para leer el contenido de un registro, simplemente sondeamos su salida. En cuanto a la escritura, este hace uso de flip flop, que ya nos proporciona el proyecto de base.

Código fuente

Register

Descripción

Nuestro objetivo es construir una RAM, la cuál está compuesta por Register de 16 bits. Se usa el BIT creado anteriormente para que permita 16 entradas y nos retorne 16 salidas.

Código fuente

RAM8

Diagrama
Descripción

En la RAM8 tenemos 8 registros, cada uno de 16 bits. Si se quiere escribir en la RAM, entonces se inserta el bit load, pero si se quiere leer de la RAM, se introduce 0 en el bit load. El address tiene 3 bits con 8 direcciones diferentes para leer o escribir.

Código fuente

RAM64

Diagrama
Descripción

La RAM64 consta de 8x RAM8. Tiene 64 direcciones de memoria disponibles con 16 bits de largo.

Código fuente

RAM512

Diagrama
Descripción

La RAM 512 es una estructura similar a la anterior solo que esta vez se aumentando la escala de la RAM.

Esta emplea una dirección de 9 bits para acceder en cada registro.

Código fuente

RAM4k

Diagrama
Descripción

La RAM 4K se construye con una estructura semejante a la del chip anterior a diferencia que esta vez se aumenta la RAM en escala.

Ahora emplea una dirección de 12 bits para acceder en cada registro.

Código fuente

RAM16k

Diagrama
Descripción

La RAM 16K es una memoria con 16384 registros, cada uno de ellos de 16 bits cuenta con bus de direcciones de 14 bits.

Para implementar el chip se utiliza un DMux4Way, 4 ram4k y un Mux4Way16.

Código fuente

PC (Program Counter)

Descripción

Es un contador que consta de 16 bits, en este contador se utilizan buses de 16 bits, posee 2 bits de control, uno de ellos se encarga de definir la lectura de datos, y por su parte, el otro es uno de reinicio.

Código fuente