GAL, Memoria ROM, CPU PDF

Title GAL, Memoria ROM, CPU
Course Electrónica digital II
Institution Centro de Enseñanza Técnica y Superior
Pages 24
File Size 1.2 MB
File Type PDF
Total Downloads 77
Total Views 148

Summary

Investigación sobre GAL , la memoria ROM y el CPU...


Description

CENTRO DE ENSEÑANZA TÉCNICA Y SUPERIOR

Escuela de Ingeniería

Electrónica Digital 2

Reporte de Investigación

Mexicali, B.C., 3 de noviembre de 2017.

GAL Generic Array Logic es un tipo de circuito integrado, de marca registrada por Lattice Semiconductor, que fue diseñado con el propósito de sustituir a la mayoría de las PAL, manteniendo la compatibilidad de sus terminales. El GAL utiliza una matriz de memoria EEPROM por lo que se puede programar varias veces. Un GAL en su forma básica es un PLD con una matriz AND reprogramable, una matriz OR fija y una lógica de salida programable mediante una macrocelda. Esta estructura permite implementar cualquier función lógica como suma de productos con un número de términos definido. En los PLDs no reprogramables la síntesis de las ecuaciones lógicas se realiza mediante quema de fusibles en cada punto de intersección de los pines de entrada con las compuertas. En el caso de un GAL es básicamente la misma idea pero en vez de estar formada por una red de conductores ordenados en filas y columnas en las que en cada punto de intersección hay un fusible, el fusible se reemplaza por una celda CMOS eléctricamente borrable. Mediante la programación se activa o desactiva cada celda EECMOS y se puede aplicar cualquier combinación de variables de entrada, o sus complementos, a una compuerta AND para generar cualquier operación producto que se desee. Una celda activada conecta su correspondiente intersección de fila y columna, y una celda desactivada desconecta la intersección. Las celdas se pueden borrar y reprogramar eléctricamente. El GAL básicamente está formado por una matriz AND reprogramable y una matriz OR fija con configuración programable de salidas y/o entradas. Las estructuras GAL son estructuras PAL construidas con tecnología CMOS, y fueron comercializadas por primera vez en 1984 por Lattice Semiconductor. Como se ha mencionado, son programables y borrables eléctricamente. Son reprogramables y más flexibles, a la salida de la matriz AND/OR hay un circuito más complejo con selectores y flip-flops que permiten implementar ecuaciones más complejas. Hay distintas arquitecturas según la versión del fabricante. El circuito a la salida de la matriz se denomina macrocelda. Tienen integración baja/media. El Terminal puede funcionar como entrada o salida según la programación. Los términos productos se dibujan todos sobre una sola línea para simplificar el diagrama. Un terminal en modo salida puede reflejar la salida Q y Q negada del flip-flop para circuitos secuenciales o la entrada D y negada para circuitos combinacionales. De modo similar puede realimentar el terminal de salida o la salida Q negada del flip-flop hacia otros términos. Las GAL se usan para circuitos lógicos sencillos y de complejidad media.

De manera comercial las GALs están identificadas por un estándar que permite conocer sus características rápidamente. Lo que se mostrará a continuación será un ejemplo, lo cual será el dispositivo GAL16V8

Basada en la estructura básica mostrada anteriormente, la construcción de los dispositivos GALs se diferencian por sus características de entradas, salidas y configuración interna de las macroceldas empleadas, por ejemplo el GAL 16V8, ciertos detalles en el arreglo de memoria son diseñadas para controlar las conexiones programables a la matriz de los términos de entrada, cada bit en esta matriz representa una conexión programable entre un renglón y una columna. Afortunadamente, no es necesario buscar dentro de las direcciones de cada localidad de bit en la matriz. El software de programación cuida de estos detalles en una manera amigable. La mayoría de los componentes de las GALs son; la matriz de los términos de entrada, las compuertas AND las cuales generan los términos producto de entrada , y las macroceldas lógicas de salida. Las 8 terminales de entrada son conectados directamente a una columna de la matriz de términos de entrada, y así cada complemento de entrada es conectado a está. Estas terminales siempre serán especificadas como entradas cuando se programa el dispositivo. Un nivel lógico y su complemento son siempre retroalimentados de cada macro a una columna de la matriz de entrada. La fuente de estos niveles lógicos es determinada por la configuración de cada macro. Con esto, da un total de 32 variables de entrada columnas en la matriz de entrada que pueden ser programadas como conexiones a las 64 compuertas AND de entradas múltiples. En la matriz de entrada, cualquier columna puede ser conectada a un renglón de entrada durante el proceso de programación. Otros tipos de GAL son el GAL20V8 de 24-terminales que contiene doce entradas dedicadas y ocho que pueden ser usados como entrada-salida. El GAL16V8 y el GAL20V8 proporcionan la más alta velocidad de los PLDs actualmente existente 3.5 y 5.0 ns respectivamente. Los productos Lattice GAL tienen el mejor rendimiento con características muy buenas las cuales son: baja potencia y alta calidad para cumplir con las necesidades de los diseños de sistema más exigentes.

Una GAL permite implementar cualquier expresión en suma de productos con un número de variables definidas, por ejemplo este diagrama muestra la estructura básica de una GAL para dos variables de entrada y una salida.

El proceso de programación consiste en activar o desactivar cada celda E2CMOS con el objetivo de aplicar la combinación adecuada de variables a cada compuerta AND y obtener la suma de productos. Las celdas E2CMOS activadas conectan las variables deseadas o sus complementos con las apropiadas entradas de las puertas AND. Las celdas E2CMOS están desactivadas cuando una variable o su complemento no se utiliza en un determinado producto. La salida final de la puerta OR es una suma de productos. Cada fila está conectada a la entrada de una puerta AND, y cada columna a una variable de entrada o a su complemento. Mediante la programación se activa o desactiva cada celda E2CMOS, y se puede aplicar cualquier combinación de variables de entrada, o sus complementos, a una puerta AND para generar cualquier operación producto que se desee. Una celda activada conecta de forma efectiva su correspondiente fila y columna, y una celda desactivada desconecta la fila y la columna. Las celdas se pueden borrar y reprogramar eléctricamente. Una celda E2CMOS típica puede mantener el estado en que se ha programado durante 20 años o más. La arquitectura del GAL es muy compleja como resultado de la diversidad de PALs a los que puede reemplazar, cada terminal de entrada-salida dispone de una Macrocelda, en donde los fusibles de las Macrocelda permiten configurar al GAL de 3 siguientes tres modos: • SIMPLE El modo simple proporciona ocho compuertas AND para cada salida que no tienen la condición tri-state, este modo está pensado para emular a los PALs sencillos como el PAL14H4, ideal en la implementación de sistemas combinacionales.

• COMPLEJO El modo Complejo se usa para lógica combinacional como la que realiza la PAL16L8; siete compuertas AND por salida y una compuerta AND para habilitación del tri-state, las terminales reloj y enable están disponibles como entradas normales. • REGISTRO El modo Registro se utiliza para reemplazar a las PAL16R8, PAL16R6, y PAL16R4 que poseen registros en donde su reloj es activado por transición positiva, común a todos los registros y cuyas salidas están controladas por medio de un manejador tri-state activado con otra terminal llamada enable que tiene en común a todas las salidas de los registros, el cual es ideal en el diseño de sistemas secuenciales. El GAL16V8 de 20 pines y el GAL20V8 24 pins proporcionan el rendimiento de velocidad más alta disponible en el PLD mercado en 3.5 ns y 5.0 ns respectivamente. El circuito CMOS permite que los dispositivos de baja potencia GAL16V8 y GAL20V8 consume solo 75mA Icc típico, lo que representa un 50% ahorro de poder en comparación con las contrapartes bipolares. Las versiones de potencia cuarta ahorran aún más a 45 Ma Icc. El GAL16V8 es un dispositivo de 20 pins que contiene ocho pines de entrada dedicados y ocho pines de E / S. El GAL20V8 es una versión de 24 pines del dispositivo 16V8 con 12 dedicados pines de entrada y ocho pines de E / S. Su arquitectura genérica proporciona la máxima flexibilidad de diseño al permitir la salida Logic Macrocell para ser configurado por el usuario. Un subconjunto importante de las muchas configuraciones de arquitectura posible con el GAL16V8 y GAL20V8 son las arquitecturas PAL estándar. Se tienen que proporcionar ocho OLMC con ocho términos de producto cada uno, GAL16V8 y GAL20V8 estos dispositivos son capaces de emular virtualmente todas las arquitecturas PAL con función completa / mapa de fusibles / compatibilidad paramétrica. El GAL16V8 es un dispositivo de la familia de los Dispositivos Lógicos Programables PLD’S, contiene importantes mejoras sobre sus antecesores, que lo hacen versátil y funcional, la principal ventaja es su reprogramabilidad, es decir, el GAL16V8 ofrece la opción de borrar las ecuaciones grabadas en él mediante pulsos eléctricos, su celda básica es una EECMOS, que le proporciona la característica de borrable, además ofrece un bajo consumo de corriente.

     

El microcircuito consta de 20 terminales. La fuente de alimentación es; Vcc = 5 Volts ± 5% Consumo de corriente 90 mA. Frecuencia máxima del reloj para los FF, 41.6M Hertz Vih, voltaje de entrada en nivel alto = 2 Volts. Voh, voltaje de salida en nivel alto = 2.4 Volts.

     

ViL, voltaje de entrada en nivel bajo = 0.8 Volts. VoL, voltaje de salida en nivel bajo 0.5 Volts. Temperatura de operación de 0 a 75 ° C. Admite 16 variables de entradas diferentes y salidas. 3.5 ns máximo tiempo de propagación. 2.5 ns máximo tiempo de propagación de la entrada de reloj a el dato de salida.

Las terminales de la 12 a 19 correspondientes al OLMC (Output Logic Macrocell) pueden programarse para trabajar como entradas y/o salidas, y en el caso de ser usadas como salidas estas pueden ser combinacionales o registradas (Flip Flops), lo cual le da la versatilidad de ser programado de diferentes formas y para diferentes requerimientos.

La forma de trabajo de la GAL es manejada por el software de programación en función de cómo configuremos nuestras salidas y las funciones que realicemos. La programación de los PLDs en general se lleva a cabo por medio de programas de aplicación especializados siendo las dos estrategias de programación más utilizadas la captura esquemática y la de lenguaje de descripción de hardware (HDL). La gran ventaja de estas herramientas es el de hacer los diseños en la computadora, donde los errores son fácilmente detectables y corregibles. Al trabajar con ellos también se recomienda que se usen las mismas precauciones que con cualquier TTL. La GAL16V8 posee resistencia de pull-up en sus pins; soporta hasta 7 V, posee un retardo de 3.5 ns lo que le permite trabajar a frecuencias de hasta 250 MHz. Estos dispositivos al igual que las computadoras permiten que se trabaje programando en alto nivel, luego utilizar un compilador que traduzca todas nuestras instrucciones en lenguaje máquina que pueda entender el dispositivo. Existen varios lenguajes, entre ellos: CUPL (utilizado por WinCUPL, Protel), PALASM (Siglas de assembler para PAL) y ABEL. En general se dispone de un archivo de código fuente de tipo .PDS que es el que podemos escribir en el editor del PALASM y luego compilar para poder obtener el lenguaje tipo código máquina que en este caso es el diagrama de fusibles, este archivo contiene información de las conexiones que deben abrirse para que el dispositivo realice la función 7 .JED .PDS deseada, el mismo es de tipo .JED y ese archivo debe ser entregado al grabador de GAL para la programación del mismo, notemos que independientemente de con que programa se realice el código fuente (PALASM o WinCUPL) el archivo .JED que le entregamos al programador debe ser idéntico.

Los principales de productores de GALs son:  Altera  Cypress  Lattice  Philips  Texas Instruments  Xilinx El GAL20RA10 OLMC consiste en diez flip-flop D con reajuste programable asincrónico individual, preestablecido, y reloj los términos del producto. Los cuatro términos del producto y un Exclusive-OR gate proporciona una Dinput programable para cada flip-flop. Un término de habilitación de salida, combinado con un pin de habilitación de salida dedicado, proporcionar tri-estado control de cada salida. Cada OLMC tiene un puente de flip-flop, permitiendo cualquier combinación de registrado o salidas combinacionales. Se proporciona un término de producto de control de reloj independiente para cada macrocelda GAL20RA10. Los datos se sincronizan en el

flip-flop en el borde activo del término del producto del reloj, el uso de términos de productos de control de reloj individuales permite hasta diez relojes separados. Estos relojes pueden derivarse de cualquier pin o combinación de pines y / o comentarios de otras flipflops. Múltiples fuentes de reloj permiten un número de funciones de registro asíncronas para combinar en un solo GAL20RA10. Esto le permite al diseñador combinar funciones lógicas discretas en un solo dispositivo. La polaridad de la entrada D para cada flip-flop de macrocélula es programable individualmente para estar activo alto o bajo. Esto se logra con un exclusivo-OR programable con puerta en la entrada D de cada flip-flop. Si bien cualquiera de los cuatro términos de producto de función lógica están activos, la entrada D al flip-flop será bajo si el bit OR exclusivo está configurado para cero y alto si el bit OR exclusivo se establece en uno. Eso debe tenerse en cuenta que solo la polaridad programable afecta los datos enclavados en el flip-flop en el activo límite del tiempo del producto del reloj. El restablecimiento, preestablecido y la precarga alterará el estado del flip-flop independientemente de el estado del bit de polaridad programable. La habilidad para programar la polaridad activa de las entradas D se puede usar para reducir la cantidad total de términos de productos usados, al permitir la desorganización de las funciones lógicas. Esta lógica, la reducción se logra mediante el compilador lógico, y no requiere que el diseñador defina la polaridad.

Memorias: Una memoria es un dispositivo de almacenamiento de datos binarios. Generalmente almacenan bloques de un byte. Las memorias están formadas por matrices de celdas, cada celda puede almacenar un 1 o un 0, a la posición de estas celdas se le llama dirección de memoria. La capacidad de una memoria corresponde al número total de bytes que esta pueda almacenar. La operación de escritura en una memoria coloca datos en una dirección específica y la lectura de datos toma los datos de una dirección. Bus de datos: El bus de datos es una memoria bidireccional, por lo cual los datos pueden entrar o salir de la memoria. En el caso de la memoria organizada en bytes, el bus tiene 8 líneas que corresponden a 8 bits. Bus de direcciones: Para las operaciones de lectura y escritura se debe asignar una posición de memoria mediante una dirección que se debe colocar en un dato binario. Esta dirección se ubica en un conjunto de líneas seleccionadas llamadas bus de direcciones. Escritura: Para la operación de escritura se introduce en el bus de direcciones un código correspondiente a la dirección de memoria en la que se quiere almacenar. Por último se debe de dar una orden de escritura para que el dato quede guardado en la memoria. Cuando se escribe un nuevo dato en una memoria se sobre escribe por el dato anterior por lo que este queda destruido. Lectura: Se introduce en el bus de direcciones un código que corresponde a la dirección en la que se quiere leer el dato. El decodificador de direcciones decodifica el valor colocado en el bus de direcciones seleccionando el registro del cual se toma el dato. Posteriormente se debe de dar una orden para que se coloque en el bus de datos. Ya que se encuentra en el bus de datos se puede hacer uso de esta información.

Expansión de memorias:

Se pueden expandir las memorias con las que se cuentan para incrementar el número de bits de los datos o también para incrementar el número de direcciones de la memoria.

Expansión de tamaño de palabra: Se expande la longitud de la palabra para ampliar el bus de datos, es decir el sistema digital que transfiere datos entre los componentes de una computadora o entre varias computadoras. Puede estar formado por cables o pistas en un circuito impreso, dispositivos como resistores y condensadores además de circuitos integrados. Para aumentar el tamaño de palabra de recomienda usar dos memorias RAM o ROM idénticas.

ROM: Tomando como ejemplo una memoria PROM 32x8, utilizando dos circuitos integrados de esta memoria, se puede ampliar el bus de datos al doble obteniendo una memoria PROM de 32x8 como se muestra en la siguiente implementación en la que se coloca el bus de direcciones en común para las dos memorias y la salida de datos se amplia al doble para ambas memorias.

RAM:

De la misma forma se implementa para una memoria RAM de 1kb x 8. En el ejemplo que se mostrara a continuación las entradas del bus de direcciones van en común, y por ende el bus de datos se expande. Tomando en cuenta que el bus de datos es bidireccional cuando se conecta la línea WE a 0 la memoria pasara a estar en modo de escritura, y cuando la línea WE se conecta uno la memoria pasa a estar en modo de lectura. Esto significa que el bus de datos cuando WE es 0 será de entrada y cuando WE sea 1 será de salida. La ilustración conecta LEDS a las salidas y dipswitches en las entradas.

Expansión de capacidad de almacenamiento:

Al expandir la capacidad de almacenamiento se aumenta el bus de direcciones en un bit, logrando con ello expandir la capacidad de almacenamiento al doble.

ROM: Utilizando como ejemplo la memoria PROM de 32 x 8, se puede expandir su capacidad de memoria al doble utilizando dos memorias idénticas, como resultado se obtiene una memoria expandida de 64 x 8. En el siguiente ejemplo se coloca el bus de direcciones en común para las dos memorias, también se convierte la entrada CS en el bit de mayor peso para el bus de direcciones de esta forma cuando es 0 de habilita la memoria inferior y cuando es 1 se habilita la memoria superior y las salidas se conectan en común.

RAM: Tomando como ejemplo una memoria RAM de 1kb x 8 se debe de colocar el bus de direcciones en común para ambas memorias (idénticas), además la entrada CS se convierte en el bit de mayor peso de tal manera que cuando es 0 se habilita la memoria inferior y cuando es 1 se habilita la memoria superior, igual que en el ejemplo anterior. Además cuando al colocar la línea WE a 0 la memoria se encuentra en estado de escritura y al conectar la línea WE a 1 la memoria se encuentra en estado de lectura, por esto la ilustración conecta las salidas a leds y las entradas a dipswitches.

Funciones especiales de memoria: ROM Básica: Es una memoria programada permanentemente durante el proceso de fabricacion para proporcionar funciones estandar. La mayotia de los circuitos integrados ROM usan la presencia o ausencia de una conexión de transistor en una union fila-columna para representar un 1 o 0. Las celdas de una memoria pueden ser bipolares, es decir, que estan construidas a base de transistores BJT o pueden ser construidas a base de transistores MOSFET. BJT (Bipolar Junctrion Transistor) MOSFET (Metal-Oxide Semiconductor Field Efect Transistor) La representacion de una memoria ROM chica, por ejemplo una memoria de 256x4, que indica que tiene 256 posiciones de memoria y cada posicion es de 4 bits, se realiza mediante una matris de celdas de 256 filas por 4 columnas. Esta memoria tiene entonces 8 bits en el bus de direcciones y 4 bits en el bus de datos.

PROM: Son memoras que se encuentran disponibles en tecnologia bipolar y en tecnologia MOS. Generalmente estas memorias tienen buses de datos de 4 u 8 bits y capacidades de alrededor de 250,000 posiciones de memoria. Las PROM utilizan mecanismos de fundicion pa...


Similar Free PDFs