domingo, 25 de marzo de 2012

Circuito combinatorio con GAL mediante ABEL-HDL

EJERCICIO: Se requiere diseñar e implementar con una GAL22V10 un circuito lógico que detecte los números PRIMOS y los MÜLTIPLOS DE TRES para los números decimales del 0 al 15.
Las entradas D,C,B,A correspondientes a las entradas binarias, con D como el bit más significativo, deben estar respectivamente en los pines 1,2,3 y 4 de la GAL. Las salidas PR y MU deben estar respectivamente en las salidas 15 y 16 para que 2 LEDs con cátodo común, enciendan en cada caso. 

SOLUCIÓN: 
Se procede a obtener las tres ecuaciones Booleanas por medio de Mapas de Karnaugh, las cuales pueden ser verificadas con el programa LOGICAID.

Veamos inicialmente el Mapa de karnaugh para los Primos , que son los mintérminos 2,3,5,7,11,y 13.
La ecuación en ABEL es:

PR = !D & !C & B  #  !C & B & A # C & !B & A # !D & C & A 

Así mismo obtenemos la ecuación para los Múltiplos de 3, o sea los mintérminos 0,3,6,9,12 y 15.
Observamos que  no se pueden formar grupos. Para este caso podemos expresar la función Booleana como: MU = D' C'(B'A' + B A) + D C (B'A' + B A) + D' C B A' + D C' B' A = (D' C' + D C) ( B'A' + BA) + D'C B A'+DC'B'A 

En ABEL: MU = !(D $ C) & !(B $ A) # !D & C & B & !A  # D & !C & !B & A.

Luego pasamos al ispLEVER de Lattice Semiconductor, configuramos la GAL22V10 como el dispositivo a utilizar, y elaboramos en el Editor de Texto el módulo en ABEL-HDL, para introducir las 2 ecuaciones Booleanas:

Para estar seguros que el circuito funciona perfectamente elaboramos la simulación por medio del estímulo de formas de onda, tal como se muestra

Una vez que sabemos que el circuito responde a lo exigido, creamos el Mapa de Fusibles, verificando con el Chip Report que la configuración de pines también es tal como la deseábamos. Solo resta programar la Gal e implementar en la práctica el circuito con los Dip Switchs y los Leds. 













martes, 20 de marzo de 2012

Mapas de Karnaugh ¿Cómo se crearon y como se trabajan?

Maurice Karnaughingeniero de telecomunicaciones estadounidense.
Graduado en la universidad de Yale en el 1952, es actualmente gobernador emérito del ICCC (International Council for Computer Communication). Ha trabajado como investigador en los Laboratorios Bell desde 1952 a 1966 y en el centro de investigación de IBM de 1966 a 1993. Así mismo, ha impartido de informática en el Politécnico de Nueva York de 1980 a 1999, y desde 1975 es miembro del IEEE (Institute of Electrical and Electronics Engineers) por sus aportaciones sobre la utilización de métodos numéricos en las telecomunicaciones.
Es el creador del método tabular o mapa de Karnaugh que permite la minimización de funciones Booleanas.Lo más probable es que Karnaugh ideó sus Mapas a partir de los diagramas de Venn-Euler de la Teoría de Conjuntos.
Veamos dos conjuntos A y B, que son subconjuntos de un conjunto Universal U, tal como se muestra en la figura:


Asociamos el conjunto A con una variable Booleana A, y el conjunto B a otra variable Booleana B, siendo A el Bit más significativo. La intersección de A y B corresponde en el algebra de Boole a  A.B, que en sistema binario corresponde a (11) equivalente al decimal 3 (región café). Así mismo A - B, o sea la intersección de A con el complemento de B, que en el Algebra de Boole es A.B´ corresponde al binario (10), equivalente al decimal 2 (región verde); la región rosada, corresponde a A´ B, que es el binario (01), o sea el decimal 1, y la región blanca, corresponde al complemento de la unión de los conjuntos A y B, que equivale a la intersección entre A´  y  B´, lo cual confirma el Teoremia de De Morgan, y equivale al binario (00) que es el 0 decimal. Se observa en el gráfico que cada decimal, tiene dos vecinos: el 3 es vecino de 2 y 1; el 2 es vecino del 0 y el 1; el 1 es vecino del 0 y del 3,  y el 0 es vecino del 1 y del 2.  En binario los vecinos lógicos solo cambian 1 bit con respecto al número del cual son vecinos: por ejemplo, el 1, (01), y el 2 (10), solo cambian 1 bit, respecto al 3 (11) del cual son vecinos.
Lo anterior permitió a Maurice Karnaugh idear su Mapa, tal como se muestra a continuación:
Cada cuadro corresponde a un decimal: 0,1,2,3, según el binario respectivo. Vamos a suponer que tenemos una  función con mintérminos en 0,1,2 y un maxtérmino en 3.  En los Mapas de Karnaugh se pueden formar grupos entre vecinos lógicos, que correspondan a potencias de 2, o sea grupos de 1(unitario), 2 (parejas), 4 (Cuartetos),etc. 
Para el ejemplo se pueden formar dos parejas: (0,1)  y  (0,2), donde se observa que el 0 forma parte de las dos parejas. Al formarse la pareja (0,1) cambia la variable B, y por consiguiente se cancela, debido a que en Algebra de Boole ( B +  B´ = 1);  como  la variable A no cambia y está en 0, la pareja (0,1) equivale a A´. De la misma forma podemos encontrar que la pareja (0,2) equivale a B´. Por consiguiente la función Booleana minimizada es:  A´ +  B´.   Si llamamos F la función podemos decir que: F = ( A´ + B´).

De acuerdo al maxtérmino en 3 tendremos: F´ = A.B, de donde F = (A.B)´ .

Se corrobora por el Teorema de De Morgan que F = (A.B)´ = A´ +  B´,  lo cual quiere decir que la función corresponde a una compuerta NAND.

Si miramos la tabla de verdad que incluimos en el Mapa de Karnaugh vemos que es:

A B     F
0 0      1
01       1
10       1
11       0

Que evidentemente es la tabla de verdad de la compuerta NAND.

Lo que nos permite el Mapa de Karnaugh es darnos cuenta que la función F = A´B´ +  A´ B + A B´ se puede reducir a F = A´ + B´ = (A B )´ .

Lo visto anteriormente, lo podemos extrapolar a 3 variables, trabajando un M.de K. para A,B,C, siendo A la variable correspondiente al Bit más Significativo. 

F = B´ C  +  A B  ( Por mintérminos, o Suma de productos)
F´ =  B´C´  +  A´B, luego F = (B´ C´ +  A´B)' = (B + C) ( A + B' ) (Por Maxtérminos o Producto de sumas)

Con 4 variables se tienen 16  casillas, con los números decimales del 0 al 15, tal como se muestra:
Veamos la minimización de una función, cuyos 9 mintérminos están ubicados en 3,5,6,7,8,10,12,13,14 por Suma de Productos, quedando como ejercicio para el lector obtener la minimización por Producto de Sumas:

En la práctica se trabajan Mapas de Karnaugh hasta 5 variables(32 casillas).
Para mas de 5 variables se utilizan otros métodos. El programa LOGICAID es excelente en esta tarea.
















 
 


































viernes, 9 de marzo de 2012

TABLERO DIGITAL INTERACTIVO

El sábado 10 de marzo la clase de digitales 1 estuvo enfocada hacia el estudio y aplicación de los tableros digitales interactivos como aplicación pedagógica de las TICs ( Tecnología de la información y la Comunicación). 

Fueron invitados los estudiantes de Introducción a la Ingeniería tanto de Electrónica como de Biomédica junto con su profesor Gustavo Rojas Medina.

Específicamente se realizó  la exposición usando la pizarra digital Touch  Board System de la empresa EDUMEDIA, junto con su tableta inalámbrica.

Está pendiente la presentación para los estudiantes de Electrónica, por problemas técnicos presentados.

Recomendamos ver el siguiente video :http://youtu.be/tCKLbuhdUBI


viernes, 2 de marzo de 2012

Tutorial: Compuertas lógicas con ispLever de Lattice Semiconductor mediante editor esquemático

Con la Gal22V10 de Lattice Semiconductor, podemos, mediante el esquema gráfico, ecuaciones Booleanas o tabla de verdad implementar en el protoboard las diferentes compuertas lógicas: Inversor (NOT), Buffer no inversor (YES), AND, OR, XOR, NAND, NOR, XNOR. Se requiere tener instalado el sofware ispLEVER  el cual se puede descargar en:  http://jagarza.fime.uanl.mx/Ene2012/Software/classic_1_5.exe

Inicialmente vamos a trabajar esquemática o gráficamente:

2. Previamente se abre carpeta en donde queremos guardar el proyecto, y como tipo de diseño seleccionamos Esquemático/ABEL, tal como se muestra a continuación:
3. Seleccionamos la Gal22V10 de 24 pines tal como se muestra:
4.  Al  dar clik dos veces en siguiente se establece una ventana como la mostrada, y luego damos Finalizar.
5. Aparece entonces una ventana como la mostrada:

6. Luego, situándonos sobre la GAL22V10 abrimos un archivo nuevo:


7. Seleccionamos esquemático, pues vamos a dibujar las compuertas:

8.  Procedemos a dibujar las compuertas en el editor gráfico; guardamos el archivo esquemático como compuertas, sin importar que sea el mismo nombre del proyecto:

9. Para encontrar las compuertas buscamos con la barra de herramientas de dibujo, y las ampliamos con el Zoom:

10. Proceda a cablear usando add wire de la barra de herramientas de dibujo, y al salvar el archivo se rotulan automáticamente cada gráfico de cada compuerta lógica:
11. Se editan los nombres de las entradas y salidas, ubicando el cursor en cada entrada o salida, digitando el nombre respectivo, y luego haciendo click en la entrada o salida respectiva.
12. Colocamos marquillas de entrada a P y Q, y de salida al inversor,buffer, and, or, xor,  etc.
La gráfica indica como establecer las marquillas de las salidas; en forma similar se procede con las entradas:
13. Luego salvamos y compilamos el archivo esquemático:compuertas.sch , y obtenemos las ecuaciones Booleanas de acuerdo a la sintaxis del lenguaje ABEL:
14. Para efectuar ahora la simulación, nos ubicamos nuevamente sobre la GAL22V10 y abrimos um archivo nuevo de estímulo de formas de onda:

15. Indicamos que deseamos hacer la simulación del archivo esquemático compuertas asociando con este archivo las formas de onda:

16.. Salvamos el archivo compuertas.WDL   con las formas de onda donde vamos a efectuar la simulación:

17. Editamos para importar las entradas y salidas del archivo esquemático y poder trabajar las formas de onda en la simulación:

18.  Aparece una ventana como se muestra, que permite primero adicionar y luego  mostrar todas  las formas de onda:
19. Procedemos ahora a efectuar las gráficas de las ondas en las entradas P y Q, ayudándonos de una caja para editar la forma de onda en el pulso de cada bit y salvando el archivo al terminar.

20. Observamos que en la ventana principal del ispLEVER (Navegador) aparece el archivo de las formas de onda con la opción para efectuar la simulación funcional:
21. Al efectuar en forma exitosa  la simulación aparece un panel de control del simulador.
22. Damos click en el signo de admiración: ! , para visualizar las formas de onda con la simulación solicitada.

23.Una vez que estemos seguros mediante la simulación que el circuito vá a funcionar sin problema, procedemos a crear el mapa de fusibles y el archivo JEDEC para programar la GAL, al estar ubicados en el navegador sobre la GAL22V10. Previamente se efectuán los enlaces en el diseño (LINK Design ) y se verifica la capacidad de la GAL para obedecer lo requerido (FIT Design)

Link Design (enlazar el diseño):
Verifique si el o los archivos contienen un código válido. En caso de que no se acepte
aparecerá un mensaje que incluye una explicación y un código de error.

 Fit Design (tamaño del diseño):
En algunas ocasiones, los requerimientos del diseño sobrepasan la capacidad del dispositivo
seleccionado. Esta rutina verifica si el diseño cabe en el dispositivo. 

 Create Fuse Map (obtener el archivo del mapa de fusibles):
En este proceso se obtienen dos archivos:
El archivo reporte con extensión .rep contiene la información de las ecuaciones, la distribución
de terminales pin out, el porcentaje de utilización del dispositivo, etcétera.
El archivo JEDEC con extensión .jed tiene el mapa de fusibles, el cual será utilizado
para programar el dispositivo.

Si todo está bien debe salir una ventana como la mostrada;

24.En el archivo  Chip report  vemos la configuración automática que se hace de los pines en la GAL22V10;  se observa que en  este dispositivo se conecta tierra al pin 12 y Vcc de 5 voltios al pin 24. Para la OR y la AND se utiliza una salida de buffer con inversor, y por eso aparecen estas salidas como si estuviesen negadas, pero en realidad no lo están.
25. EL archivo JEDEC, acrónimo de Joint Electron Device Engineering Council  es un archivo standar, o sea universalmente aceptado, que contiene el Mapa de Fusibles que permiten que el programador Superpro Z queme los fusibles apropiados de la GAL para satisfacer lo requerido.