lunes, 17 de junio de 2013

Evaluación final con Solución y Simulación en Altera (ALU)

SOLUCIÓN:

La implementación se hizo utilizando el Editor Esquemático del Altera como archivo GDF.
Para la simulación se usa el Editor de formas de Ondas. Se establece un Fin de tiempo de 8 segundos en File. En Options se fija un ancho de grilla de 1 segundo. Se da Pantalla Completa en el Icono respectivo a la izquierda.
La simulación para algunos valores tomados al azar es la siguiente:
Se puede verificar que se cumple con las condiciones especificadas para esta pequeña ALU.

sábado, 8 de junio de 2013

Diseño y simulación en Altera de Unidad Aritmético-Lógica (ALU)

La unidad aritmético lógica, también conocida como ALU(siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como  suma, resta,  etc.) y operaciones lógicas (OR, AND, XOR, etc), entre dos números binarios. Es parte fundamental de un microprocesador.

 Se recomienda consultar: http://es.wikipedia.org/wiki/Unidad_aritm%C3%A9tico_l%C3%B3gica

El método más simple y directo de diseñar un CIRCUITO LÖGICO de una ALU se muestra a continuación, tal como se plantea en el texto "Lógica Digital y diseño de Computadores" de Morris Mano para una etapa de 2 bits Ai y Bi.
EJERCICIO: Simular en ALTERA el Circuito Lógico indicado en la gráfica anterior.

El circuito debe repetirse n veces para un circuito lógico de n bits. Las cuatro compuertas generan las 4 operaciones lógicas OR, OR EXCLUSIVA, AND y NOT. Las 2 variables de selección en el Multiplexor seleccionan una de las 4 compuertas en la salida.

Al igual que el circuito lógico se puede diseñar un circuito  aritmético, en el cual además de las entradas Ai   y Bi debe tenerse en cuenta el acarreo de entrada Ci, y en su salida además de Fi, en este caso se agregaría  el acarreo  de salida Ci+1

Veamos la siguiente tabla de función para el circuito aritmético en una etapa:

S1       S0       Ci             Salida                              Descripción de la función realizada
0          0         0              Fi = Ai                               Transfiere Ai
0          0         1              Fi = Ai mas 1                     Incrementa Ai
0          1         0              Fi = Ai  mas Bi                   Suma Ai con Bi
0          1         1              Fi = Ai mas Bi mas 1          Suma Ai con Bi mas acarreo
1          0         0              Fi = Ai mas Bi´                   Suma Ai con el complemento de B
1          0         1              Fi = Ai mas Bi´ mas 1         Resta Ai menos Bi
1          1         0              Fi = Ai menos 1                  Decrementa Ai
1          1         1              Fi = Ai                                Transfiere Ai  

El diagrama para la unidad aritmética de una etapa es el siguiente:
El circuito lógico puede ser combinado en el circuito aritmético para producir una unidad lógica aritmética. Las variables de selección S1 y S0 pueden hacerse comunes a ambas secciones siempre y cuando se use una tercera variable de selección S2 para diferenciar entre los dos.

Las salidas de los circuitos lógicos y aritméticos de cada estado pasan por un multiplexor con la variable de
selección s2 . Cuando S2=0  se. selecciona la salida aritmética, pero cuando S2 = 1 se selecciona la salida lógica.

L
Al simular en Altera debemos obtener una sola caja tal como se muestra en la siguiente gráfica:
Luego se acoplan las 4 cajitas  para formar la ALU de 4 bits, tal como se muestra:
Se espera que el estimado lector  haya efectuado paso a paso la simulación de la ALU en Altera. Esto le permite una completa comprensión de este importante concepto de la Electrónica Digital.

En una forma similar a lo descrito, se ha diseñado una ALU comercial, el circuito integrado 74LS181, el cual estudiaremos a continuación, al simularlao en Altera. La mejor forma de estudiar un chip comercial antes de implementarlo en el protoboard es analizar su tabla de funcionamiento de acuerdo a su hoja de datos suministrada por el fabricante (Data Sheet)  y efectuar su simulación.

La ALU 74181 se puede trabajar con cualquiera de dos tablas de funcionamiento.Una tabla con los datos activos en nivel bajo y otra donde los datos son activos en nivel alto, tal como la que se muestra a continuación:



EJERCICIO: Simular en ALTERA el 74181 para verificar el comportamiento de las dos tablas.



miércoles, 5 de junio de 2013

Restador binario con sumadores simulado en Altera

Se sugiere al lector imprimir para luego estudiar el artículo que se presenta como PDF en https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r65019.PDF 

Como repaso de los circuitos estudiados hasta el momento en el curso de Digitales 1 vale la pena consultar http://lc.fie.umich.mx/~jrincon/elec3-cap7.pdf

ESTUDIO DE CASOS:

Se desea implementar un RESTADOR BINARIO A-B.  A y B son números de 4 bits cada uno, dispuestos en Dip-Switch. El resultado de la resta se viasualiza con 5 Leds, cátodo común. Cuatro Leds indican el resultado de la resta y un quinto Led,SIGNO, enciende cuando la resta es negativa. El circuito se ha compilado en Altera y su simulación indica que funciona correctamente.  Explique detalladamente su funcionamiento.

CIRCUITO LÓGICO:

SIMULACIÓN:

martes, 4 de junio de 2013

Memoria EEPROM 28C64

EEPROM o E²PROM son las siglas de Electrically Erasable Programmable Read Only Memory  (ROM programable y borrable eléctricamente). Es un tipo de memoria  que puede ser programada, borrada y reprogramada eléctricamente, a diferencia de la EPROM que ha de borrarse mediante luz ultravioleta. Son memorias no volátiles.


 Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada miles de veces.
Una memoria EEPROM muy usada es la 28C64. . ATMEL produce la AT28C64( AT quiere decir que ATMEL es el fabricante, 28 identifica el tipo de memoria, en este caso EEPROM; la C significa que la tecnología usada es C-MOS, o sea con base en transistores Mosfet canal P y canal N en modo complementario,  y el 64 es la capacidad: 64 Kilobits, o sea 8192 palabras de 8 bits cada una, lo que es lo mismo que 8 Kbytes)


Otra empresa que produce EEPROM es MICROCHIP, fabricante de la 28C64A, cuya configuración de pines es similar a la de ATMEL. La programación se realiza con el superpro Z, estableciendo las direcciones y los datos en Hexadecimal.

Internamente la memoria dispone de un DECODIFICADOR DE DIRECCIONES.
Para lograr las 8192 palabras se requiere de 13 entradas de dirección ( A0...A12: Addresses Inputs) ( 2 elevado a la 13 es igual a 8192).
El siguiente esquema muestra la arquitectura básica de una ROM con dos entradas de dirección y cuatro salidas, que nos permite comprender lo esencial en la programación:
La capacidad de esta pequeñísima memoria sería de solo 16 bits ( 4 palabras de 4 bits).
Vamos a suponer que en las 4 direcciones  deseamos programar 4 palabras así:
DIRECCION                  DATOS
A1        A0                   03 02 01 00
 0           0                     1   0   1   0
 0           1                     0   1   0   1
 1           0                     0   1   1   1
 1           1                     1   1   1   1


Al fijar A1 = 0, A0 = 0, en las salidas de las compuertas AND del decodificador se tiene:"0" = 1,
"1" = 0,   "2" = 0,   "3" = 0. 
El primer fusible, situado a a la izquierda en cada compuerta OR, se "quema" si el dato a grabar es un CERO, y "no se quema" si el dato a grabar en esa dirección es un UNO.Para nuestro caso se queman los fusibles de las OR correspondientes a las salidas O2 y O0, y no se queman en las OR de las salidas O3 y O1.

Cuando se tiene A1 =0, A0= 1:  "0" = 0, "1" = 1,   "2" = 0,   "3" = 0.  En este caso, los fusibles de O3 y O1 se queman, y los de O2 y O0 no se queman (para que pueda pasar el UNO)

Cuando se tiene A1 =1, A0= 0: "0" = 0, "1" = 0,   "2" = 1,   "3" = 0.  En este caso, solo el  fusible de O3  se quema.

Por último, para A1 =1, A0= 1: "0" = 0, "1" = 0,   "2" = 0,   "3" = 1.  En este caso, ningún fusible se debe quemar.

El programa en hexadecimal que es el exigido por el programador es:

                             Dirección     Dato
                                 0                A
                                 1                5
                                 2                7
                                 3                F  










miércoles, 3 de abril de 2013

Tutorial: Primos del 0 al 7 con VHDL en Isplever classic 1.6 utilizando GAL22V10

Ejercicio: Se introduce el número binario de 3 bits (Z,Y,X) que en decimal corresponden a los números del 0 al 7. En un display de 7 segmentos, ánodo común, se visualiza el dígito, y se enciende el punto cuando el número es primo. Se supone que el 1 es primo.

Solución:

Elaboramos la tabla de verdad respectiva en Logicaid para obtener las 8 ecuaciones Booleanas simplificadas:
Las ecuaciones Booleanas minimizadas en Suma de Productos son las siguientes:
Cerramos el proyecto que esté abierto en el navegador de Isplever classic 1.6 y creamos nuevo proyecto guardando en una carpeta apropiada y designando como VHDL el tipo de diseño de entrada:

Seleccionamos la GAL con la cual vamos a trabajar con su tipo de empaque tal como se muestra:

Para nuestro proyecto Primos07 creamos como nuevo  un módulo VHDL:


Nos ayudamos de la plantilla y sólo escribimos las ecuaciones en la arquitectura  de acuerdo a la sintaxis exigida para el lenguaje VHDL:

Guardamos y luego efectuamos el proceso de simplificación y síntesis del archivo VHDL:

Luego creamos un archivo nuevo de estímulo de formas de ondas para efectuar la simulación:

Lo asociamos con el archivo Primos07.vhd  que vamos a trabajar con la Gal22V10:



Creamos el archivo Primos07.wdl  e importamos  las ondas para poderlas editar:


Añadimos y mostramos  todas las ondas importadas indicando que son entradas y salidas:

Luego dibujamos las entradas Z,Y,X:

Se procede entonces a efectuar la simulación funcional:
Damos luego click en el signo de admiración (run) para correr la simulación:

Verificamos que las ondas en la salida corresponden a la tabla de verdad:


Después de verificar que no hay error vamos a configurar la Gal para que estructure el circuito lógico requerido:
Efectuamos los enlaces requeridos dentro de las compuertas que internamente posee la Gal (Link Design) y verificamos la capacidad de la Gal de acuerdo a su arquitectura para que puede armar el circuito solicitado (Fit Design). Luego  se crea el mapa de fusibles y el archivo JEDEC para programar la GAl, elaborando un reporte del Chip en el cual podemos observar como se autocofiguraron los pines de entrada y salida en el dispositivo lógico programable.

El archivo JEDEC que para nuestro diseño es Primos.jed es el que nos permite programar la GAL con el programador universal Superpro, vía USB:
Para saber en que forma vamos a implementar el circuito con la GAL en el protoboard recurrimos al reporte de Chip que elabora el Isplever, donde preaviamente se hace un reporte de las ecuaciones Booleanas minimizadas de acuerdo a la sintaxis de la programación en Lenguaje ABEL:
En lenguaje ABEL la negación se designa por !, la And por & y la Or por #.  Aunque ya por la simulación sabemos que nuestro diseño es correcto, por medio de las ecuaciones que reporta el Isplever también lo podemos verificar.
Veamos la configuración de pines de la GAL para nuestro ejercicio de laboratorio:

miércoles, 12 de diciembre de 2012

Descarga e instalación de IspLEVER classic 1.6 de Lattice Semiconductor

El IspLEVER classic 1.6 de Lattice Semiconductor lanzado en agosto del 2012  permite trabajar dispositivos lógicos programables PLD sencillos como la GAL22V10 en forma esquemática, o utilizando lenguajes de programación para  descripción de hardware HDL tales como ABEL (Advanced Boolean Expressions Language) o VHDL (Very high speed integrated circuits Hardware Description Language).

Para descargar e instalar el programa se recomienda seguir la secuencia siguiente:

1. Ir a la página de Lattice Semiconductor : www.latticesemi.com

    Se puede traducir al español.


2. Ir a PRODUCTOS....Diseño de Sofware....ispLEVER  Classic


3. Vienen indicados luego tres pasos a seguir para descargar e instalar el software. Veamos:

Como sólo se va a trabajar con la GAL22V10 sólo descargue el archivo ispLEVER Classic Base de Módulo en una carpeta que puede llamar ispLEVER 2013, por ejemplo.

4.Descomprima el archivo, y luego al dar doble click  sobre el ejecutable se inicia el proceso de instalación.Este es el PASO 2.

5. Luego hay que solicitar una licencia gratuita por un año.
Al dar doble click en página de licencias en el  PASO 3 se va a una nueva ventana donde se nos invita a que nos registremos:
Para crear una cuenta nueva  escribimos nuestro correo electrónico  y  elegimos una contraseña. Hay que tener paciencia porque hay que llenar un formulario con la información personal, etc.

Cuando ya tengamos guardado el formulario completo podemos entrar a nuestra cuenta WEB de Lattice para solicitar la licencia:

Para enviarle  su licencia LATTICE le solicita actualizar su cuenta y el HOST de su computador, así:
Para conocer su NIC HOST en Ejecutar en   Inicio  escriba CMD para abrir una ventana  de MS-DOS y luego escriba 
ipconfig / all.    Los doce caracteres alfanuméricos del hexadecimal  deben escribirse sin guiones.
Colóquelo el NIC HOST  en el espacio indicado y de Click en generar licencia.

Su licencia llega inmediatamente al correo electrónico registrado como un archivo  license.dat adjunto.

6. Si anteriormente  ya ha descargado o instalado  cualquier software ispLEVER de Lattice Semiconductor  debe borrar todas las carpetas y archivos relacionados para que no se genere ningún conflicto.


Luego, el archivo license.dat debe copiarse en la carpeta License del archivo descargado y descomprimido.


Debe dar ahora doble Click en la Aplicación remoted y reiniciar el computador.

Aparecerá instalado el programa:


Al abrir el navegador de proyectos debe estar listo para trabajar:


............................................................................................................