miércoles, 26 de junio de 2013

Tutorial de Simulación en Altera

EJERCICIO: 1  Se dispone de un circuito integrado 7400 (cuatro compuertas Nand), y se requiere implementar una compuerta XOR. ¿ Cómo se hace la implementación ?

SOLUCIÓN:  Por Algebra de Boole:   (A xor B)´ =  A´ B´  +  A B,   de donde se puede obtener:
      A  xor  B  =  (A´ B´)´. ( A B )´  ( Aplicando el Teorema de De Morgan)
Luego:  A xor  B =  ( A + B ) ( A´ +  B´) ( Producto de Sumas)

Luego:   A  xor  B = A ( A' + B' ) +  B( A' + B' ) = A (AB)' + B(AB)' 

Implementamos el circuito con compuertas NAND utilizando el Altera Max  plus II:

Vamos a    File ...New ...

Se abre una ventana con los cuatro tipos de archivo con que se puede trabajar en Altera:

Elegimos el archivo del Editor Gráfico, cuya extensión es. gdf.    Damos OK en esta ventana, maximizamos y llamamos la compuerta Nand del integrado 7400, buscando que el archivo gdf que vamos a generar se ubique y se pueda guardar después  en la carpeta apropiada:
Si damos OK aparece la Nand en el editor gráfico.Podemos copiarla y pegarla para implementar el siguiente circuito con 4 compuertas:

Luego colocamos las entradas y salidas:  Las llamamos en el Editor Gráfico como INPUT y OUTPUT respectivamente.Editamos los nombres de Pines para que las entradas sean A y B y la salida sea XOR:

Salvamos este archivo con el nombre de xor4nand.gdf en la carpeta previamente seleccionada para este proyecto.
Luego sigue algo muy importante: asociar el archivo gdf al proyecto respectivo con el mismo nombre.


Para saber si todo va bien vemos la ruta donde está el archivo gdf y el proyecto en la carpeta donde estamos trabajando:
Al estar seguros que todo está correcto, salvamos y compilamos.

Luego  vamos a proceder a efectuar la simulación.Para ello vamos a MAX PLUS II y luego a Waveform Editor.
En el editor de Formas de Onda vamos a File y End Time fijamos un tiempo de 4 segundos.Luego en Options establecemos el ancho de grilla (grid size)   de 1 segundo. Damos click en hoja completa en la barra de herramientas de dibujo (Izquierda)
Luego introducimos los Nodos (Entradas y salidas del circuito). Para ello vamos a Node y luego al formato estandarizado de nodos (Enter Nodes from SNF...).
Se abre una ventana para adicionar  los Nodos...

Se da incialmente Click en List y luego con la flecha --> se seleccionan los Nodos. Se dá OK.para que las entradas y salidas se transfieran al Editor de formas de onda:
Se pueden ordenar las ondas, colocar por ejemplo, A encima de la B,  y dibujar los "ceros" y "unos" binarios en cada entrada.


Procedemos a salvar este archivo y a efectuar la simulación:


Damos OK para guardar el archivo SCF con las formas de onda:
Se verifica que efectivamente el circuito lógico con las 4 nand del integrado 7400 cumplen con la tabla de verdad de una compuerta XOR.


Se pueden agrupar las entradas A y B, y fijar sus valores en Binario.  


Dando  Click en la pirámide amarilla podemos observar lo que se ha trabajado hasta el momento:

Si damos Click podemos ir al archivo que se desee. Por ejemplo, demos click en xorcon4nand.gdf.
Al aparecer nuevamente el circuito lógico con las 4 nand demos ahora Click en Crear símbolo por defecto y Crear archivo incluido por defecto para que Altera  realice el símbolo esquemático  para nuestro archivo gdf con las 4 nand.

Si cerramos todo, y volvemos al editor gráfico podemos ahora observar que aparece nuestro archivo gdf.
 Al dar doble click sobre el símbolo esquemático debe aparecer el circuito lógico con las cuatro nand.

EJERCICIO 2 Se dispone de 3 circuitos integrados 74LS00 y se requiere implementar un circuito que convierta de Binario a Código GRAY para 4 bits. ¿Se puede efectuar dicha implementación ?

Solución:  Elaboramos una tabla de verdad con entradas en Binario  y Salidas en Código Gray:
                       
Elaborando Mapas de Karnaugh podemos llegar a las siguientes ecuaciones booleanas:
               G3 =  B3
               G2 =  B3 xor B2
               G1 =  B2 xor B1
               G0 =  B1 xor B0

Vamos ahora a Altera y en la misma carpeta del anterior ejercicio, creamos un nuevo archivo gráfico que salvamos con el nombre de conversor.gdf.



Lo compilamos y luego procedemos a efectuar la simulación, fijando el fin de tiempo en 16 segundos, y el tamaño de grilla en 1 segundo.
Agrupamos tanto Entradas como Salidas.
Por medio del contador (izquierda) fijamos en binario en las Entradas los valores desde 0000 hasta 1111.

Procedemos finalmente a Salvar y Simular:


Podemos comprobar por la Simulación que el circuito implementado obedece fielmente la tabla de verdad.
Luego si es posible con  los tres integrados 74LS00 implementar el circuito que convierta de binario a código Gray.  ¡Esa es la importancia de la Simulación. Saber si la implementación que se pretende efectuar verdaderamente va a funcionar !

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