viernes, 11 de enero de 2008

Arreglo de compuertas de campo programable FPGA's

Los dispositivos FPGA se basan en lo que se conoce como arreglos de com­puertas, los cuales consisten en la parte de la arquitectura que contiene tres elementos configurables: bloques lógicos configurables (CLB), bloques de entrada y de salida (IOB) y canales de comunicación [7]. A diferencia de los CPLD, la densidad de los FPGA se establece en cantidades equivalen­tes a cierto número de compuertas.
Por adentro, un FPGA está formado por arreglos de bloques lógicos con­figurables (CLB), que se comunican entre ellos y con las terminales de en­trada/salida (E/S) por medio de alambrados llamados canales de comunica­ción. Cada FPGA contiene una matriz de bloques lógicos idénticos, por lo general de forma cuadrada, conectados por medio de líneas metálicas que corren vertical y horizontalmente entre cada bloque



dib._201_20FPGA_27s.JPG

FPGA'sLos bloques lógicos (llamados también celdas generadoras de funciones) están configurados para procesar cualquier aplicación lógica. Estos bloques tienen la característica de ser funcionalmente completos; es decir, permiten la implementación de cualquier función booleana representada en la forma de suma de productos. El diseño lógico se implementa mediante bloques co­nocidos como generadores de funciones o LUT (Look Up Table: tabla de búsqueda), los cuales permiten almacenar la lógica requerida, ya que cuen­tan con una pequeña memoria interna —por lo general de 16 bits— [6]. Cuando se aplica alguna combinación en las entradas de la LUT, el circuito la traduce en una dirección de memoria y envía fuera del bloque el dato almacenado en esa dirección. En la figura 1.12 se observan los tres LUT que contiene esta arquitectura, los cuales se encuentran etiquetados con las letras

dib._202_20FPGA_27s.JPG

Dispositivos lógicos programables

DIPOSITIVOS LÓGICOS PROGRAMABLES.

0. Introducción.

El Incremento de popularidad y de utilización de los dispositivos lógicos programables o PLDs está siguiendo un proceso solamente comparable al que hace algunos años acompañó a los microprocesadores. Los PLDs se utilizan en casi todos los nuevos equipos electrónicos de control, industriales, de consumo, de oficina, de comunicaciones, etc.

Desde finales de la década de los sesenta, los equipos electrónicos digitales se han construido utilizando circuitos integrados de función lógica fija, realizados en pequeña o mediana escala de integración. Para las realizaciones muy complejas que exigirían un número elevado de circuitos integrados (CI) de función fija, se utilizan circuitos diseñados a medida que sólo sirven para una aplicación. Son los llamados CI específicos a una aplicación o ASIC (Application Specific Integrated Circuit). Por regla general, los ASICs los producen los fabricantes de CI con las especificaciones proporcionadas por el usuario.

Los equipos realizados con ASICs ocupan menos espacio, son más fiables, consumen menos energía y en grandes series resultan más baratos que los equipos equivalentes realizados con CI de función fija. Por otro lado, estos circuitos son muy difíciles de copiar.

Diferentes modalidades de ASICs son; los Circuitos a Medida (Full Custom), las Matrices de Puertas (Gate Arrays), las Células Normalizadas (Standard Cell) y los FPICs (Field Programmable Integrated Circuits); estos últimos son circuitos programables por el usuario final.

1. Clases de Dispositivos Lógicos Programables.

1.1. Circuitos integrados a medida.

Los Circuitos Integrados a Medida (Full Custom), se diseñan a petición de un cliente para que resuelvan una determinada aplicación. Conllevan un alto coste de desarrollo y su empleo sólo se justifica para volúmenes de producción muy elevados. El tiempo necesario para la construcción de un CI a medida es considerable ya que puede oscilar de unos meses a unos años.

1.2. Matrices de puertas.

Las Matrices de puertas (Gate Arrays) son pequeños trozos de silicio pendientes de algún proceso de metalización que defina las conexiones entre un importante número de puertas o transistores que poseen en su interior. Las matrices de puertas proporcionan densidades superiores a las 100.000 puertas, con un aprovechamiento del 80 al 90 por 100 para los dispositivos pequeños y del 40 por 100 para los grandes.

Los fabricantes de silicio ponen a disposición de sus potenciales clientes abundante documentación sobre estos Gate Arrays, con una serie de macros que pueden utilizar de forma inmediata y otras que pueden construirse ellos mismos. Los macros son agrupaciones de un número de células básicas que realizan funciones comunes como; sumadores; puertas NOT, AND, NAND, NOR XOR, etc.; latches y flip-flops S-R, J-K, D; buffer; osciladores; registros, decodificadores, multiplexores, etc.

Junto a esta documentación, los fabricantes aportan un software que contabiliza el número de células básicas utilizadas por todas las macros, sugiere el Gate Array adecuado para la aplicación, calcula la potencia disipada por el Gate Array que alojará el diseño del cliente, proporciona información sobre los tiempos de propagación de las señales y permite verificar el funcionamiento del circuito.

Una vez superadas todas las etapas previas, el cliente envía la documentación generada al fabricante para que éste ultime los procesos de metalización y fabrique un primer prototipo. El diseño con Gate Arrays puede durar semanas o meses. Requiere un volumen alto de circuitos para justificar sus costes.

1.3. Células normalizadas.

Las células normalizadas (Standard Cell) son, en cierta forma, similares a las matrices de puertas. Su principal ventaja sobre ellas es que en lugar de trabajar con simples puertas o transistores, se dispone de colecciones de diferentes partes de circuitos que han sido depurados (puertas lógicas, circuitos MSI, RAM estáticas, ficheros de registro, etcétera). El usuario tiene que ensamblar estos circuitos, verificarlos y finalmente enviar documentación al fabricante de silicio para el desarrollo del primer prototipo. A pesar del concepto de célula normalizada, los períodos y los costes de desarrollo son superiores a los de las matrices de puertas.

En las matrices de puertas sólo hay que realizar la máscara final que define las conexiones entre las puertas, mientras que en las células normalizadas, hay que realizar máscaras para todos los procesos de producción de los CI. Una vez más, el volumen de fabricación deberá ser los suficientemente alto como para amortizar la inversión económica realizada en el desarrollo.

1.4. FPICs.

Los FPICs (Field Programmable Integrated Circuits): son chips programables por el usuario mediante programadores comerciales. El término FPIC también incluye a los CI no destinados a las aplicaciones lógicas. Son las memorias, los microcontroladores, los PLD (Programmable Logic Device), las FPGA (Field Programmable Gate Array) y los ASPLD (Aplication Specific Programmable Logic Devices).

Los FPIC ofrecen soluciones de bajo coste, de tiempo de desarrollo corto y con menor riesgo que los circuitos a medida, las matrices de puertas y las células normalizadas.

1.4.1. PLDs.

Los PLDs (Programmable Logic Devices) son pequeñas ASICs configurables por el usuario capaces de realizar una determinada función lógica. La mayoría de los PLD consisten en una matriz de puertas AND seguida de otra matriz de puertas OR. Mediante esta estructura, puede realizarse cualquier función como suma de términos productos.

Aunque las memorias PROM, EPROM y EEPROM son PLDs, muchas veces se las excluye de esta denominación debido a que su contenido se define utilizando elementos de desarrollo propios de microprocesadores, tales como; ensambladores, emuladores y lenguajes de programación de alto nivel. Otras veces, cuando estas memorias se usan para realizar una función lógica y no para guardar un programa de un microprocesador, se las incluye dentro del término PLD.

1.4.2. ASPLDs.

Los ASPLDs (Application Specific Programmable Logic Devices) son PLDs diseñados para realizar funciones especificas como, decodificadores de alta velocidad, secuenciadores, interfaces para buses particulares, periféricos programables para microprocesadores, etc.

Partes del ASPLD son programables permitiendo la adaptación del circuito a una aplicación determinada, pero manteniendo su función básica; así, por ejemplo, un decodificador lo personaliza el usuario, pero sigue siendo un decodificador. Estos circuitos están muy optimizados para la función para la que han sido diseñados. Los decodificadores sólo tienen un término producto, carecen de puertas OR y resultan por consiguiente muy rápidos; por otro lado, los circuitos de interface para buses normalmente tienen un Fan-Out elevado.

1.4.3. FPGAs.

Las FPGAs (Field Programmable Gate Arrays) contienen bloques lógicos relativamente independientes entre sí, con una complejidad similar a un PLD de tamaño medio. Estos bloques lógicos pueden interconectarse, mediante conexiones programables, para formar circuitos mayores. Existen FPGAs que utilizan pocos bloques grandes (Pluslogic, Altera y AMD) y otras que utilizan muchos bloques pequeños (Xilinx, AT&T, Plessey, Actel).

A diferencia de los plds, no utilizan arquitectura de matriz de puertas AND seguida de la matriz de puertas OR y necesitan un proceso adicional de ruteado del que se encarga un software especializado.

La primera FPGA la introdujo Xilinx en el año 1985. La programación de las FPGAs de Xilinx basadas en RAM estática es diferente a la programación de los PLDs. Cada vez que se aplica la tensión de alimentación, se reprograma con la información que lee desde una PROM de configuración externa a la FPGA. Una FPGA basada en SRAM (RAM estática) admite un número ilimitado de reprogramaciones sin necesidad de borrados previos.

En general la complejidad de una FPGA es muy superior a la de un PLD. Los PLD tienen entre 100 y 2000 puertas, las FPGAs tienen desde 1200 a 20.000 puertas y la tendencia es hacia un rápido incremento en la densidad de puertas. El número de flip-flops de las FPGA generalmente supera al de los PLD. Sin embargo, la capacidad de la FPGA para realizar lógica con las entradas suele ser inferior a la de los PLD. Por ello: "los diseños que precisan lógica realizada con muchas patillas de entrada y con pocos flip-flops, pueden realizarse fácilmente en unos pocos PLDs, mientras que en los diseños en los que intervienen muchos registros y no se necesita generar combinaciones con un elevado número de entradas, las FPGAs pueden ser la solución óptima".

2. CARACTERÍSTICAS DEL DISEÑO CON PLDs

Los PLDs están situados en una zona intermedia entre los dispositivos a medida y la lógica de catálogo formada por los CI de función fija. Tienen casi todas las ventajas de los ASICs sin estar penalizados por un costo elevado para pequeñas series. Además el ciclo de diseño con PLDs es mucho más rápido que los de las matrices de puertas o las células normalizadas. En determinadas aplicaciones, un PLD puede sustituir desde unos pocos hasta unas decenas de CI de función fija, mientras que los grandes ASICs pueden sustituir a cientos e incluso miles de CI. En ocasiones, los PLD se utilizan para realizar prototipos que posteriormente se llevarán a un ASIC más complejo.

El trabajo con PLDs proporciona: facilidad de diseño, prestaciones, fiabilidad, economía y seguridad.

2.1. Facilidad de diseño

Las herramientas de soporte al diseño con PLDs facilitan enormemente este proceso. Las hojas de codificación que se utilizaban en 1975 han dejado paso a los ensambladores y compiladores de lógica programable (PALASM, AMAZE, ABEL, CUPL, OrCAD/PLD, etc.). Estas nuevas herramientas permiten expresar la lógica de los circuitos utilizando formas variadas de entrada tales como; ecuaciones, tablas de verdad, procedimientos para máquinas de estados, esquemas, etc. La simulación digital posibilita la depuración de los diseños antes de la programación de los dispositivos. Todo el equipo de diseño se reduce a un software de bajo coste que corre en un PC, y a un programador.

2.2. Prestaciones.

Los PLDs TTL que hay en el mercado tienen tiempos de conmutación tan rápidos como los circuitos integrados de función fija más veloces. Los PLDs ECL son todavía más rápidos. Sin embargo, el incremento de velocidad obtenido con los dispositivos CMOS, que ya han igualado o superado en prestaciones a los dispositivos TTL, está provocando el abandono de la tecnología bipolar por parte de los fabricantes. En cuanto al consumo de potencia, los PLDs generalmente consumen menos que el conjunto de chips a los que reemplazan.

2.3. Fiabilidad.

Cuanto más complejo es un circuito, más probabilidades hay de que alguna de sus partes falle. Puesto que los PLDs reducen el número de chips en los sistemas, la probabilidad de un fallo disminuye. Los circuitos impresos con menor densidad de CI son más fáciles de construir y más fiables. Las fuentes de ruido también se reducen.

2.4. Economía.

En este apartado, hay aspectos que resultan difíciles de cuantificar. Por ejemplo, los costes de pérdida de mercado por una introducción tardía de un producto. Otros son más claros, por ejemplo, la reducción del área de las placas de circuito impreso obtenida gracias a que cada PLD sustituye a varios circuitos integrados de función fija. Muchas veces se consigue reducir el número de placas de circuito impreso economizándose en conectores. La reducción de artículos en almacén también aporta ventajas económicas.

De la misma manera que para altos volúmenes de producción las memorias ROM resultan de menor coste que las EPROM, las HAL (Hard Array Logic) o PLDs programados por el fabricante proporcionan ahorros adicionales en grandes cantidades.

2.5. Seguridad.

Los PLDs tienen fusibles de seguridad que impiden la lectura de los dispositivos programados, protegiendo los diseños frente a copias.

Además de los puntos mencionados, podemos añadir que los PLDs facilitan el ruteado de las placas de circulo impreso debido a la libertad de asignación de patillas que proporcionan. Permiten realizar modificaciones posteriores del diseño y en ocasiones hacen posible la reutilización de circuitos impresos con algunos fallos, mediante una reasignación de los PLDs.

3. ARQUITECTURAS DE LOS DISPOSITIVOS LÓGICOS PROGRAMABLES (PLDs).

Existen en la actualidad infinidad de arquitecturas diferentes de PLDs y su número se incrementa día a día. Aunque resulta casi imposible hacer una referencia completa de todos los tipos de PLDs en el mercado, en este trabajo sólo se presentarán algunas de las más comunes y una amplia lista de las distintas PLDs que podemos encontrar en el mercado.

3.1. CLASES DE PLDs.

Ya que generalmente los PLDs disponen de muchas entradas y resultaría muy complicado mostrarlas en un dibujo, se utiliza una representación simplificada, según la cual, para las puertas AND sólo se dibuja una línea de entrada llamada línea producto. Esta línea se cruza con dos líneas por cada entrada (entrada directa y entrada invertida), pudiendo existir un fusible en cada intersección. Aunque sólo se dibuja una línea de entrada por cada puerta AND, en realidad esta puerta tiene tantas entradas como intersecciones de la línea producto. Si en una intersección hay una X, significa que el fusible está intacto; sí no hay una X, el fusible esta fundido y no existe la conexión. En ocasiones, las puertas OR también se dibujan con una sola entrada.

En el diagrama simplificado de la figura 3.1.1 aparece una matriz de puertas AND de seis entradas, cuyas salidas están conectadas a una puerta OR. La intersección de las líneas producto con las líneas de entrada forman una matriz de puertas AND programable de 6x3 fusibles. El circuito está programado para realizar la función OR -exclusiva entre las entradas A y B-. La puerta AND inferior está marcada con una X. Significa que todos sus fusibles están intactos y que su salida es 0. Cuando se funden todos los fusibles de una línea producto, la salida de la puerta AND asociada es 1.

Dispositivos lógicos programables

PAL (Programmable Array Logic). También llamados PLAs, son un tipo de PLDs en las que se pueden programar las uniones en la matriz de puertas AND, siendo fijas las uniones en la matriz de puertas OR (Figura 3.1.2). Los dispositivos con arquitectura PAL son los más populares y los más utilizados, razón ésta por la que dedicamos el siguiente capítulo, para analizarlos más a fondo.

Dispositivos lógicos programables

FPLA (Field Programmable Logic Array). Es un PLD en el que se pueden programar las uniones en ambas matrices (Figura 3.1.3). Son los dispositivos más flexibles, pero resultan penalizados en tamaño y en velocidad debido a los transistores adicionales en la matriz de puertas OR. Se utilizan fundamentalmente para construir máquinas de estados. Para otras aplicaciones, las PAL resultan más efectivas. Las PAL y las FPLA son sistemas combinacionales incompletos porque teniendo n entradas, disponen de menos de 2n términos producto.

Dispositivos lógicos programables

PROM (Programmable Read Only Memory). Es un PLD en el que las uniones en la matriz de puertas AND es fija, siendo programables las uniones en la matriz de puertas OR (véase Figura 3.1.4). Una PROM es un sistema combinacional completo que permite realizar cualquier función lógica con las n variables de entrada, ya que dispone de 2n términos productos. Están muy bien adaptadas para aplicaciones tales como: tablas, generadores de caracteres, convertidores de códigos, etc. Generalmente las PROM tienen menos entradas que las PAL y FPLA. Se pueden encontrar PROM con capacidades potencia de 2, que van desde las 32 hasta las 8192 palabras de 4, 8 o 16 bit de ancho.

Dispositivos lógicos programables

3.2. CONSUMO DE CORRIENTE EN LOS PLDs.

En la fabricación de PLDs se utiliza tecnología bipolar TTL o ECL y tecnología CMOS. Los dispositivos bipolares son más rápidos y consumen más que los dispositivos CMOS. Actualmente los PLDs bipolares presentan retardos de propagación inferiores a 7 nsg y los consumos típicos rondan los 100-200 mA para un chip con 20-24 patillas.

Mientras los PLDs bipolares sólo pueden programarse una vez, la mayoría de los PLDs CMOS son reprogramables y permiten una fácil verificación por parte del usuario. A los PLDs CMOS borrables por radiación ultravioleta se les denomina EPLD y a los borrables eléctricamente se les conoce por EEPLD. Los EEPLD con encapsulados de plástico son más baratos que los EPLD provistos de ventanas de cuarzo que obligan a utilizar encapsulados cerámicos.

También existen las PALCE16V8Q (Quarter Power Icc = 55 mA) y las PALCE16V8Z (Zero Power) con un bajísimo consumo estático de potencia.

Acostumbrados a trabajar con dispositivos CMOS con un consumo prácticamente nulo a frecuencia cero, resulta sorprendente una PAL CMOS con un consumo de 90 mA a la máxima frecuencia de operación (15 Mhz), pero que todavía tendrá un consumo apreciable a frecuencia cero. En la actualidad, solamente una pequeña fracción de los PLDs del mercado se anuncian como Zero Power.

La razón de estos consumos reside en que no existe una célula de memoria EPROM o EEPROM que sea verdaderamente CMOS. La mayoría de los PLDs CMOS se construyen con un núcleo programable de transistores N-MOS, y solamente las entradas y las salidas del PLD utilizan drivers CMOS. La matriz de transistores NMOS precisa de una alimentación continua (Figura 3.2.1), para poder responder con rapidez.

Dispositivos lógicos programables

Para rebajar los consumos de la matriz de transistores NMOS se utilizan dos técnicas.

La primera de ellas consiste en dotar al PLD de una patilla o fusible de control de consumo de potencia (patilla o fusible Power Down), que quita la alimentación a la matriz de transistores cuando el PLD se encuentra fuera de servicio, proporcionando un menor consumo de potencia. Tiene los inconvenientes de que la puesta en funcionamiento del PLD es más lenta.

La segunda técnica (Figura 3.2.2) coloca en las entradas de los PLDs unos detectores de transición de estado, que conectan la alimentación a la matriz de transistores durante un breve instante de tiempo después de que una entrada haya cambiado. Este tiempo deberá permitir el cambio de las salidas y su almacenamiento en latches, tras lo cual se puede quitar de nuevo la alimentación a la matriz de transistores.

El detector de transición de estado de las entradas se obtiene metiendo a las dos entradas de una puerta OR-exclusiva el estado de una patilla de entrada y el estado de esa misma patilla demorada un tiempo. El tiempo de demora de las patillas de entrada será igual al tiempo durante el cual se mantendrá la alimentación a la matriz de transistores. Los detectores de transición de las entradas y los latches de las salidas se mantienen constantemente alimentados. El consumo de corriente de los PLDs que utilizan esta segunda técnica aumenta lógicamente si se incrementa la frecuencia de cambio de las entradas.

Dispositivos lógicos programables

3.3. Cómo se catalogan los PLDs.

Si consultamos las hojas de datos de una PALCE16V8H-20, encontramos claves que permiten extraer valiosa información del nombre del dispositivo. La información incluida en el nombre nos indica:

PAL

Programmable Array Logic.

CE

C-MOS Electrically Erasable.

16V8

16 Entradas a la matriz de puertas AND y ocho salidas.

H

Half Power (lec = 90 mA).

20

Tiempo de propagación = 20 nsg.

4. PROGRAMABLE LOGIC ARRAYS (PLA's).

4.1. Estructura básica de un PLA.

Un PLA es un bloque funcional que se utiliza para implementar multifunciones booleanas. Existe una gran relación entre su estructura interna y el conjunto de funciones que realiza...

4.2. Descripción de su estructura.

Un PLA está constituido básicamente por dos submatrices o planos denominados plano AND y OR, respectivamente. Ambos planos están separados entre sí por una pequeña zona divisoria denominada zona de conexión. Tanto el plano AND como el plano OR disponen, a su vez, de dos zonas externas denominadas buffers o separadores de entrada y de salida. Las señales de entrada del PLA (Dispositivos lógicos programables
) llegan a los buffers de entrada del plano AND y producen las señales invertidas(Dispositivos lógicos programables
). Ambos tipos de señales (Dispositivos lógicos programables
) penetran verticalmente en el plano AND y generan los términos producto pi. Estos últimos discurren horizontalmente por ambos planos, atravesando previamente la zona de conexión, y producen finalmente las salidas del PLA mediante la realización de sumas lógicas entre los términos producto anteriores.

Además de las zonas mencionadas, existen otras dos regiones especiales. Una de ellas está situada a la izquierda del plano AND y la otra en la parte superior del plano OR. Estas regiones están constituidas por transistores del "pull-up", que actúan como resistencia de carga, a través de los cuales se alimentan las líneas de los términos producto y las líneas de salida del PLA respectivamente. En la siguiente ilustración se muestra un esquema global de su estructura:

Dispositivos lógicos programables

La realización física de un PLA se lleva a cabo mediante la conexión de cada una de las celdas que pertenecen a las regiones anteriores (buffers de entrada, plano AND, transistores de pull-up del plano AND, conexión AND-OR, plano OR, transistores de pull-up del plano OR y buffers de salida). De todas estas celdas, sólo las de los planos AND y OR están relacionadas con las funciones lógicas que definen el circuito. El resto hace referencia a otros factores externos ajenos a la lógica propiamente dicha. En algunos casos, estos factores han de ser tenidos en cuenta si se quiere hacer una estimación realista del área final ocupada por el PLA. Esto ocurre, por ejemplo, cuando se aplican técnicas de optimización en las que se modifica el número de entradas y/o salidas (técnicas de partición).

4.3. Representación matricial.

Los PLA's sirven para representar multifunciones booleanas expresadas mediante dos niveles de puertas. Sea, pues, una multifunción F formada por s funciones simples fi cada una de ellas dependiente de m variables distintas Dispositivos lógicos programables
. Supongamos también que es necesario desarrollar n productos lógicos distintos con las variables dependientes xi para expresar todas y cada una de las funciones fi mediante sumas de productos. Entonces, el PLA asociado a la multifunción F, puede representarse por una matriz, C, formada por n filas y m+s columnas. Cada una de estas filas Ci se define del modo siguiente:

"j : 1..m (plano AND).

Cij = 0 si xj está complementada en el término producto Ci.

Cij = 1 si xj no está complementada en el término producto Ci.

Cij = 2 si xj no aparece en el término producto Ci.

"j : m + 1... m + s (plano OR).

Cij = 3 si Ci no forma parte de la función Fj· m

Cij = 4 si Ci forma parte de la función Fj· m

De la definición anterior se deduce que todos los 2's de la matriz C representan elementos vacíos en las m primeras columnas pertenecientes al plano AND o submatriz de entradas. Igualmente ocurre con los 3's en las columnas restantes del plano OR o submatriz de salidas. Por elemento vacío se entiende aquella posición del PLA en la que no existen conexiones.

Así, por ejemplo la multifunción Dispositivos lógicos programables
, Dispositivos lógicos programables
, Dispositivos lógicos programables
se representa mediante la matriz de cobertura de la figura 4.3.1.

X1

X2

X3

X4

X5

X6

F1

F2

F3

2

2

0

2

2

1

4

3

3

2

0

2

1

2

2

3

4

3

1

2

2

2

2

0

4

3

3

0

2

2

2

1

2

3

4

3

1

2

2

2

2

2

3

3

4

2

2

2

2

2

1

3

4

3

Figura 4.3.1: Matriz de cobertura.

En muchos casos conviene utilizar otra representación matricial más simple del PLA denominada matriz de personalidad. Esta nueva matriz se define a partir de la matriz de cobertura del modo siguiente:

  • " J: = 1...m

  • Bij = 1 si Cij = 0 ó 1.

  • Bij = 0 si Cij = 2.

  • "j := m + 1... m + s

  • Bij = 1 si Cij = 4.

  • Bij = 0 si Cij = 3.

Es decir, un 1 en la j-ésima columna e i-ésima fila del plano AND indica que la columna j es un factor del término producto i, mientras que un 1 en la j-ésima columna e i-ésima fila del plano OR indica que el término producto i es un término de la salida j-m. La figura 4.3.2 corresponde a la matriz de personalidad asociada a la matriz de cobertura de la figura 4.3.1.

X1

X2

X3

X4

X5

X6

F1

F2

F3

0

0

1

0

0

1

1

0

0

0

1

0

1

0

0

0

1

0

1

0

0

0

0

1

1

0

0

1

0

0

0

1

0

0

1

0

1

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

1

0

Figura .4.3.2. Matriz de personalidad.

La representación de un PLA mediante su matriz de personalidad respectiva nos ayudará a resolver los problemas planteados en la optimización lógica y topológica de PLA's.

5 PLAs.

La estructura de los PLAs se muetra en la figura A.1.1, y un ejemplo específico se encuentra en la figura A.1.2, encontrandose las arquitecturas PLA listadas en la tabla A.1. La estructura de los secuenciadores se encuentran en la figura A.1.3, las arquitecturas de los secuenciadores estan listadas en la tabla A.2. .

Dispositivos lógicos programables

Dispositivos lógicos programables

Dispositivos lógicos programables

6. ESTRUCTURA DE LOS DISPOSITIVOS PAL.

6.1. General

Los dispositivos PAL son PLAs con o sin array OR, pero un conjunto de puertas OR que suman grupos de productos. La estructura de los dispositivos PALs combinacionales se muestra en la figura A.2.1.1. Los dispositivos combinacionales de 20 pins estan listados en la Tabla A.3, y los de 25 pins estan listados en la Tabla A.4.

Dispositivos lógicos programables

Los decodificadores, o los Field Programmable Gate Arrays (FPGAS) son PALs como los PLDs combinacionales, que generalmente no tienen array OR; por lo que los productos son tomados directamente hacia las salidas. Estos son particularmente útiles para la decodificacion de direcciones, cuyas arquitecturas están listadas en la Tabla A.5.

Las PALs registradas tienen registros de salida alimentados desde el array logico como el dispositivo mostrado en la Figura A.2.1.1.1 Las Tablas A.6 y A.7 listan las arquitecturas. Todos estos dispositivos tienen un reloj externo común, siendo estos apropiados para diseños síncronos.

Dispositivos lógicos programables

6.2 Células de salida programables y arquitecturas genéricas.

Para servir al mayor número posible de aplicaciones, se requiere un gran número de arquitecturas PAL. Para acabar con este problema, han sido concebidas las PALs con arquitectura genérica. Aquí hay dispositivos con células de salida, o macro células, de configuracion varible. Cada uno de los dispositivos genéricos es capaz de emular un número de dispositivos de arquitectura fija en suma para ser adaptables en una única arquitectura. El primer PAL genérico fue el 22V10. Siendo capaz de generar señales de reloj registradas que internamente incrementan la flexibilidad de un dispositivo PAL registrado, permitiendo su uso en sistemas con varios relojes, y para su uso también en circuitos sin reloj. Encontrándose este tipo de PALs en la Tabla A.8.

7 PLDs DE ARRAY MULTINIVEL

Estos son dispositivos con la estructura de la Figura 3.27. Las arquitecturas disponibles son:

PLHS501, PLHS502: `Programmable Macro Logic' que son dispositivos basados en un array NAND.

78C800: Un dispositivo borrable basado en un array NOR.

AGA-1K16, AGA-1K16P4: RAM-based `Alterable Gate Arrays' basados en una array NAND.

8. OTROS TIPOS DE PLDs.

Debido a la constante evolución de los PLDs, aunque intentemos catalogarlos, hoy en día existen una gran cantidad de PLDs con estructuras diferentes a las consideradas en este trabajo, por lo que aunque por mucho que nos esforcemos en obtener una lista más o menos reciente, siempre habrán algunos modelos que no se muestren aquí.

PLDs Microprogramados:

29CPL141, 29CPL142, 29CPL144, 29CPL151, 29CPL152, 29CPL154

14R21 'PROSE'

EPS444, EPS448 -SAM'

Bus Interface PLDS:

5CBIC, 85C960.

EPBI400'Buster'.

PLX448, PLX464.

MCA1200, EPB2001, EPB2002 (for Micro Channel).

VME3000 (for VME bus)

PLD for parallel controllers: - 7C361

PLDs with Matrix or Partitioned Arrays:

XC2064, XC2018, XC3020, XC3030, XC3042, XC3064, XC3090 (Logic Cell Arrays).

ACT1 (gate array structured with universal combinational celis).

ERA60100 (gate array structured with 2-input NAND cells) EPM5016, EPM5024, EPM5032, EPM5064, EPM5127, EPM5128 ('MAX')

PA7024, PA7028, PA7040, PA7068 ('PEEL Arrays') CAL1024 (Algatronix configurable array)

Lógica programada

Logica programada es lo contrario de la logica cableada, es decir, este tipo de diseño permite utilizar un circuito o un proyecto para muchas otras funciones con el simple cambio del software que incorpora.

La lógica programada se basa en dispositivos lógicos programables (PLD), los cuales tienen una función no establecida, al contrario que las puertas lógicas que tienen una función fíja en el momento de su fabricación. Antes de poder utilizar el PLD en un circuito, este debe ser programado.

El uso de ROMs como PLDs

Antes de que se inventasen las PLDs, los chips de memoria de solo lectura (ROM) se utilizaban para crear funciones de lógica combinacional arbitrarias con un número determinado de entradas. Considerando una ROM con m entradas, a las que se denomina líneas de dirección; y con n salidas, a las que se denomina líneas de datos. Cuando se utiliza como memoria, la ROM contiene 2m palabras de n bits. Supongamos que las entradas no son direccionadas por una dirección de m-bits, sino por m señales lógicas independientes. Teóricamente, hay 2m funciones booleanas posibles de estas m señales, pero la estructura de la ROM permite solo producir n de estas funciones en los pines de salida. Por lo tanto, en este caso, la ROM se vuelve un equivalente de n circuitos lógicos separados, cada uno generando una función elegida de las m entradas.

La ventaja de utilizar una ROM de esta forma es que cualquier función concebible de las m entradas puede ser colocada por las n salidas, haciendo este el dispositivo lógico combinacional de mayor propósito general disponible. También las PROMs (ROMs programables), EPROMs (PROMs de borrado por ultravioleta) y EEPROMs (PROMs de borrado eléctrico) disponibles pueden ser programadas de esta manera con un programador PROM hardware o software. Sin embargo, existen varias desventajas:

  • Son bastante más lentas que los circuitos lógicos dedicados.
  • No necesariamente pueden proveer de "protección" ante transiciones lógicas asíncronas.
  • Consumen mayor potencia.
  • Sólo se utiliza una pequeña fracción de su capacidad en una sola aplicación: un uso ineficiente del espacio.
  • Por si solas no pueden ser utilizadas para circuitos de lógica secuencial, puesto que no contienen biestables. Para realizar algunos circuitos secuenciales (como máquinas de estado) se utilizaba un registro TTL externo.

Las EPROMs comunes (como la 2716), se siguen utilizando a veces de esta forma por gente que tiene como hobby el diseño de circuitos, ya que a menudo tienen algunas sueltas. A las ROM utilizadas de esta manera se las conoce como la "PAL del pobre".


Lógica programable temprana

En 1970, Texas Instruments desarrolló un CI de máscara programable basado en la memoria asociativa de sólo lectura (ROAM) de IBM. Este dispositivo, el TMS2000, era programado alterando la capa metálica durante la producción del CI. El TMS2000 tenía hasta 17 entradas y 18 salidas con 8 biestables JK como memoria. Texas Instruments acuño el término Programmable logic array para este dispositivo.

En 1973 National Semiconductor introdujo un dispositivo PLA de máscara programable (DM7575) con 14 entradas y 8 salidas sin registros de memoria. Este era más popular que el de Texas Instruments, pero el coste de hacer la máscara metálica limitaba su uso. El dispositivo es significativo por ser la base de la FPGA (Field Programmable Logic Array) producido por Signetics en 1975, el 82S100.

En 1971, General Electric desarrollaba un PLD basado en la nueva tecnología PROM. Este dispositivo experimental mejoró el ROAM de IBM permitiendole realizar lógica mulinivel. Intel acababa de introducir la PROM de puerta flotante borrable por UV por lo que el desarrollador en General Electric incorporó esa tecnología. El dispositivo de General Electric era el primer PLD jamás desarrollado, antecesora del EPLD de Altera en una década. General Electric obtuvo varias patentes tempranas en PLDs.

En 1974, General Electric firmó un acuerdo con Monolithic Memories para desarrollar un PLD de máscara programable incorporando las innovaciones de General. El dispositivo se bautizó como Programmable Associative Logic Array (PALA, matríz lógica asociativa programable). El MMI 5760 fue terminado en 1976 y podía implementar circuitos multinivel o secuenciales de más de 100 puertas. El dispositivo estaba soportado por el entorno de desarrollo de General, donde las ecuaciones Booleanas podían ser convertidas a patrones de máscara para configurar el dispositivo. El integrado nunca se comercializó.

PAL

Artículo principal: Programmable array logic

MMI introdujo un dispositivo revolucionario en 1978, la Programmable Array Logic (Matriz lógica programable). La arquitectura era más sencilla que la FPLA de Signetics porque omitía la matriz OR programable. Esto hizo los dispositivos más rápidos, más pequeños y más baratos. Estaban disponibles en encapsulados de 20 pines y 300.000 DIP, mientras que las FPLAs venían en encapsulados de 28 pines y 600.000. Ciertas publicaciones sobre PALs desmitificaban el proceso de diseño. El software de diseño PALASM (PAL Assembler, ensamblador PAL) convertía las ecuaciones Booleanas de los ingenieros en el patrón de fusibles requerido para programar el dispositivo. Los PAL de MMI pronto fueron distribuidos por National Semiconductor, Texas Instruments y AMD.

Tras el éxito de MMI con los PAL de 20 pines, AMD introdujo los 22V10 de 24 pines con características adicionales. Tras After MMI succeeded with the 20-pin PAL parts, AMD introduced the 24-pin 22V10 PAL with additional features. Tras comprar a MMI (1987), AMD desarrolló una operción consolidada como Vantis, adquirida por Lattice Semiconductor en 1999.

También hay PLAs : Programmable Logic Array.

GALs


Lattice GAL 16V8 y 20V8
Lattice GAL 16V8 y 20V8

Una innovación del PAL fue la matriz lógica genérica (Generic array logic) o GAL, inventadas por Lattice Semiconductor en 1985. Este dispositivo tiene las mismas propiedades lógicas que el PAL, pero puede ser borrada y reprogramadas. La GAL es muy útil en la fase de prototipaje de un diseño, cuando un fallo en la lógica puede ser corregido por reprogramación. Las GALs se programan y reprograman utilizando un programador PAL, o utilizando la técnica de programación circuital en chips secundarios.

Un dispositivo similar llamado PEEL (programmable electrically erasable logic o lógica programable eléctricamente borrable) fue introducido por la International CMOS Technology (ITC) corporation.

CPLDs [editar]

Artículo principal: CPLD

Las PALs y GALs están disponibles sólo en tamaños pequeños, equivalentes a unos pocos cientos de puertas lógicas. Para circuitos lógicos mayores, se pueden utilizar PLDs complejos o CPLDs. Estos contienen el equivalente a varias PAL enlazadas por interconexiones programables, todo ello en el mismo circuito integrado. Las CPLDs pueden reemplazar miles, o incluso cientos de miles de puertas lógicas.

Algunas CPLDs se programan utilizando un programador PAL, pero este método no es manejable para dispositivos con cientos de pines. Un segundo método de programación es soldar el dispositivo en su circuito impreso. Las CPLDs contienen un circuito que descodifica la entrada de datos y configura la CPLD para realizar su función lógica específica.

Cada fabricante tiene un nombre propietario para este sistema de programación. Por ejemplo, Lattice Semiconductor la llama in-system programming (programación dentro del sistema). Sin embargo, estos sistemas propietarios están dejando paso al estadndar del Joint Test Action Group (JTAG).

FPGAs

Artículo principal: Field programmable gate array

Mientras el desarrollo de las PALs se enfocaba hacia las GALs y CPLDs (ver secciones superiores), apareció una corriente de desarrollo distinta. Esta corriente de desarrollo desembocó en un dispositivo basado en la tecnología de matriz de puertas y se le denominó field-programmable gate array (FPGA). Algunos ejemplos de las primeras FPGAs son la matriz 82s100 y el secuenciador 82S105 de Signetics, presentados a finales de los 70. El 82S100 era una matriz de términos AND, y también tenía funciones de biestable.

Las FPGAs utilizan una rejilla de puertas lógicas, similar a la de una matriz de puertas ordinarias, pero la programación en este caso la realiza el cliente, no el fabricante. El término field-programmable (literamente programable en el campo) se refiere a que la matriz se define fuera de la fábrica, o "en el campo".

Las FPGAs se programan normalmente tras ser soldadas en la placa, en una forma similar a los CPLDs grandes. En las FPGAs más grandes, la configuración es volátil y debe ser reescrita cada vez que se enciende o se necesita una funcionalidad diferente. La configuración se guarda normalmente en una PROM o EEPROM. Las versiones EEPROM pueden ser programadas mediante técnicas como el uso de cables JTAG.

Las FPGAs y los CPLDs son buenas opciones para una misma tarea. Algunas veces la decisión sobre una u otra es más económica que técnica, o puede depender de la preferencia personal o experiencia del ingeniero.

Otras variantes

Actualmente, existe bastante interés en sistemas reconfigurables. Estos sistemas se basan en circuitos microprocesadores y contiene algunas funciones prefijadas y otras que pueden ser alteradas por código en el procesador. Para diseñar sistemas que se auto-alteren, es necesario que los ingenieros aprendan nuevos métodos y que nuevas herramientas de software se desarrollen.

Las PLDs que se venden actualmente, contienen un microprocesador con una función prefijada (el núcleo) rodeado con dispositivos de lógica programable. Estos dispositivos permiten a los diseñadores concentrarse en añadir nuevas características a los diseños sin tener que preocuparse de hacer que funcione el microprocesador.

Almacenamiento de la configuración en las PLDs

Una PLD es una combinación de un dispositivo lógico y una memoria. La memoria se utiliza para almacenar el patrón el que se le ha dado al chip durante la programación. La mayoría de los métodos para almacenar datos en un circuito integrado han sido adaptados para el uso en PLDs. Entre estos se incluyen:

Los antifusibles de silicio son elementos de almacenamiento utilizados en las PAL, el primer tipo de PLD. Estos antifusibles se encargan de formar conexiones mediante la aplicación de voltaje en un área modificada del chip. Se le llama antifusibles porque funcionan de manera opuesta a los fusiles normales, los cuales permiten la conexión hasta que se rompen por exceso de corriente eléctrica.

Las SRAM, o RAM estáticas, son un tipo volátil de memoria, lo que quiere decir que su contenido se pierde cada vez que se desconectan. Las PLDs basadas en SRAM tíenen que ser programadas cada vez que el circuito se enciende. Generalmente esto lo hace otra parte del circuito.

Una célula EPROM es un transistor MOS (metal-óxido-semiconductor) que puede activarse atrapando una carga eléctrica permanentemente en su puerta, cosa que realiza un programador PAL. La carga permanece durante algunos años sólo puede ser eliminada exponiendo al chip a una luz ultravioleta fuerte en un dispositivo llamado borrador EPROM.

Las memorias flash son no volátiles, por lo que retienen sus contenidos incluso cuando se les corta la alimentación. Puede ser borradas y reprogramadas tanto como sea necesario, lo que las hace útiles para las memorias PLD.

A partir de 2005, la mayoría de las CPLDs son del tipo EEPROM y no volátiles. Esto se debe a que son demasiado pequeñas para justificar lo poco conveniente que es la programación interna de celdas SRAM cada vez que se inician, y lo costoso de las células EPROM debido a su encapsulado cerámico con una ventana de cuarzo.

Lenguajes de programación de PLDs

Varios dispositivos de programación de PALs admiten la entrada mediante un formato estándar de archivo, denominados comúnmente como 'archivos JEDEC'. Son análogos a los compiladores software. Los lenguajes utilizados como código fuente para compiladores lógicos se denominan lenguajes de descripción de hardware (HDLs).

PALASM y ABEL se utilizan frecuentemente para dispositivos de baja complejidad, mientras que Verilog y VHDL son lenguajes de descripción de hardware de alto nivel muy populares para dispositivos más complejos.

El más limitado ABEL se usa normalmente por razones históricas, pero para nuevos diseños es más popular VHDL, incluso para diseños de baja complejidad.

VHDL

VHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el acrónimo de Hardware Description Language.

Es un lenguaje usado por ingenieros definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) que se usa para diseñar circuitos digitales. Otros métodos para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero éstos no son prácticos en diseños complejos. Otros lenguajes para el mismo propósito son Verilog y ABEL.

Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para programar PLD (Programable Logic Device - Dispositivo Lógico Programable), FPGA (Field Programmable Gate Array), ASIC y similares.

Formas de describir un circuito

Dentro del VHDL hay varias formas con las que podemos diseñar el mismo circuito y es tarea del diseñador elegir la más apropiada.

  • Funcional: describimos la forma en que se comporta el circuito. Esta es la forma que más se parece a los lenguajes de software ya que la descripción es secuencial. Estas sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos son ejecutados en paralelo entre sí, y en paralelo con asignaciones concurrentes de señales y con las instancias a otros componentes.
  • Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.
  • Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseño de jerarquía superior, al conectar los puertos de estas instancias con las señales internas del circuito, o con puertos del circuito de jerarquía superior.
  • Mixta: combinación de todas o algunas de las anteriores.

En VHDL también existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.

Secuencia de diseño

El flujo de diseño de un sistema podría ser:

  • División del diseño principal en módulos separados. La modularidad es uno de los conceptos principales de todo diseño. Normalmente se diferencia entre dos metodologías de diseño: top-down y botton-up. La metodología top-down consiste en que un diseño complejo se divide en diseños más sencillos que se puedan diseñar (o describir) más fácilmente. La metodología botton-up consiste en construir un diseño complejo a partir de módulos, ya diseñados, más simples. En la práctica, un diseño usa generalmente ambas metodologías.
  • Entrada de diseños, pueden usarse diversos métodos tal como VHDL como se vio anteriormente.
  • Simulación funcional, es decir, comprobaremos que lo escrito en el punto anterior realmente funciona como queremos, si no lo hace tendremos que modificarlo. En este tipo de simulación se comprueba que el código VHDL o Verilog (u otro tipo de lenguaje HDL) ejecuta correctamente lo que se pretende.
  • Síntesis. En este paso se adapta el diseño anterior (que sabemos que funciona) a un hardware en concreto, ya sea una FPGA o un ASIC. Hay sentencias del lenguaje que no son sintetizables, como por ejemplo divisiones o exponenciaciones con números no constantes. El hecho de que no todas las expresiones en VHDL no sean sintetizables es que el VHDL es un lenguaje genérico para modelado de sistemas (no sólo para diseño de circuitos digitales), por lo que hay expresiones que no pueden ser transformadas a circuitos digitales. Durante la síntesis se tiene en cuenta la estructura interna del dispositivo, y se definen restricciones, como la asignación de pins. El sintetizador optimiza las expresiones lógicas con objeto de que ocupen menor área, o bien son eliminados las expresiones lógicas que no son usadas por el circuito.
  • Simulación post-síntesis. En este tipo de simulación se comprueba que el sintetizador ha realizado correctamente la síntesis del circuito, al transformar el código HDL en bloques lógicos conectados entre sí. Este paso es necesario ya que, a veces, los sintetizadores producen resultados de síntesis incorrectos, o bien realiza simplificaciones del circuito al optimizarlo.
  • Placement y routing. El proceso de placement consiste en situar los bloques digitales obtenidos en la síntesis de forma óptima, de forma que aquellos bloques que se encuentran muy interconectados entre si se sitúen próximamente. El proceso de routing consiste en rutar adecuadamente los bloques entre si, intentando minimizar retardos de propagación para maximizar la frecuencia máxima de funcionamiento del dispositivo.
  • Back-annotation. Una vez ha sido completado el placement & routing, se extraen los retardos de los bloques y sus interconexiones, con objeto de poder realizar una simulación temporal (también llamada simulación post-layout). Estos retardos son anotados en un fichero SDF (Standart Delay Format) que asocia a cada bloque o interconexción un retardo mínimo/típico/máximo.
  • Simulación temporal. A pesar de la simulación anterior puede que el diseño no funcione cuando se programa, una de las causas puede ser por los retardos internos del chip. Con esta simulación se puede comprobar, y si hay errores se tiene que volver a uno de los anteriores pasos.
  • Programación en el dispositivo. Se implementa el diseño en el dispositivo final y se comprueba el resultado.

CODIFICADORES, DECODIFICADORES MULTIPLEXORES Y DEMOTIPLEXORES

CODIFICADORES

Son sistemas combinacionales con m £ 2n entradas y n salidas que se encargan de transformar una serie de señales sin codificar en un conjunto que responda a un código.

4.1. Codificadores sin prioridad

Su cometido es la generación de un número binario sobre sus n salidas que identifique cuál de las entradas está activadas ( ver siguiente figura 7).

figura . codificador

Como no hay nada que impida el que se activen simultáneamente varias líneas de entrada de un codificador, los circuitos codificadores se diseñan normalmente para que respondan a una sola señal de entrada activa, dando lugar a los codificadores con prioridad.

El codificador de la figura 7 corresponde a un codificador de octal a binario sin prioridad , cuya tabla de verdad es la siguiente:

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1


Las funciones lógicas para las salidas, a partir de la tabla de verdad anterior y entrada ENABLE ( E ) para activar la entrada cuando vale 1 o inhibirla cuando vale 0, quedan:

A2 = ( B4 +B5 + B6 + B7 ) E

A1 = ( B2 +B3 + B6 + B7 ) E

A0 = ( B1 +B3 + B5 + B7 ) E

Siendo la función lógica : F = ( B0 + B1 + B2 +B3 + B4 + B5+ B6 + B7 ) E , una señal de salida especial que se activa cuando todas las señales de entrada son nulas y E=1.

Codificadores con prioridad

Para obtener codificadores que respondan a una sola señal de entrada activa, se le asigna valores fijos de prioridad a las líneas de entrada, de forma que en cada instante sólo se genera el código de salida de la entrada activa que tenga la máxima prioridad.

figura . símbolo de un codificador 74148 con prioridad de 8 líneas a 3 líneas

figura . TABLA DE VERDAD del codificador con prioridad

Por tanto, en la salida del codificador aparecerá el mayor número i, tal que Bi esté activada ( si hemos impuesto en el diseño el criterio de prioridad a la entrada más alta ).



La EI (negada) es la señal ENABLE, las Ii (negadas) entradas, Ai (negadas) salidas, EO (negada) señal de salida especial que se activa cuando todas las señales de entrada son nulas y GS (negada) señal de grupo que se activa cuando EI (negada ) = L y hay petición de servicio.

El codificador 74148 se trata de un codificador con prioridad cuyas entradas y salidas son activas a nivel bajo. Esto significa que las entradas se activan con ceros lógicos y las salidas aparecen complementadas. Una entrada o salida activa a nivel bajo se simboliza en los diagramas lógicos ( figura 8 ), en lógica positiva, insertando un pequeño circulo . También se suele indicar que la línea es activa a nivel bajo poniendo la correspondiente negada ( ver siguiente figura 11 ).

figura 11. Ejemplo de indicación de líneas a nivel bajo

DECODIFICADORES

Un decodificador es un circuito combinacional con n entradas y m 2n salidas. Para cada una de las 2n posibles configuraciones binarias que se pueden presentarse en su entrada, el sistema pone a 1 una y sólo una de las salidas, de acuerdo con la siguiente regla: si la configuración binaria presente en las entradas forma el número binario i, entonces se activa la salida i-ésima.

Según esto el funcionamiento de un decodificador es el opuesto al de un codificador.

Decodificadores BCD-DECIMAL y Excitador BCD-7 segmentos

En el decodificador BCD-DECIMAL, n=4 y m=10 ( ver figura 12 siguiente)

Obteniendo las expresiones lógicas de la tabla de verdad anterior, podremos realizar la síntesis del circuito combinacional mediante puertas lógicas ( ver figura 13 ):

figura . síntesis mediante puertas del decodificador BCD-DECIMAL CD4028BC

En el Excitador BCD-7 segmentos es un tipo de decodificador que me da la posibilidad de conectarlo a un display numérico digital de 7 segmentos a, b, c, d, e, f y g ( figura 14 ), y obtener la visualización del código binario BCD:

figura . display numérico digital de 7 segmentos


Todas las posibilidades de salida por el display son las siguientes :

figura . salidas posibles del display numérico digital de 7 segmentos

Si identificamos cada segmento cuando debe estar activo o no podemos obtener la tabla de verdad :

figura .tabla de verdad del Excitador BCD-7 segmentos


Nota : para interpretar la tabla anterior no tener en cuenta las entradas LE, BI y LT (negadas) cuya función es otra y no aporta nada a lo que estamos viendo ahora.

Ahora obtendría la expresiones lógicas mediante minterms/maxterms y las implementaría con puertas lógicas.

Implemetación de funciones lógicas con decodificadores

Un decodificador genera en sus salidas, todos los minterms de un número de variables igual al número de líneas de entrada. Por tanto, con un decodificador de n entradas-2n salidas y puertas OR, se pueden implementar funciones lógicas de n variables ( también podría tomar los ceros de la función y utilizaría puertas NOR ). Veamos un ejemplo :

figura . implementación de función lógica con decodificador

Si el decodificador tuviera sus salidas activas a nivel bajo, se generan los minterms negados luego en vez de puertas OR debo usar NAND.

MULTIPLEXORES Y DEMULTIPLEXORES

Multiplexores

Un multiplexor es un sistema digital que consta de varias entradas y una salida, y mediante un mecanismo de selección, una determinada entrada se transfiere a la salida.

Image57.jpg (25558 bytes)

Figura . Multiplexor y su tabla de verdad

Una definición más formal de multiplexor sería la de un circuito combinacional con n entradas de selección o control (a, b,.. ), 2n entradas de datos (K1 , K2 , ... ) y una salida Z. Los datos de la se rutan desde la entrada de datos cuyo número de orden coincide con el número binario puesto en la entrada de selección hacia la salida ( ver figura 18 )

Figura . Selección de la entrada de datos del multiplexor

La síntesis con puertas lógicas se realiza obteniendo la expresión lógica de la salida Z, obteniendo :

Image59.jpg (15454 bytes)

Es importante reseñar que algunos multiplexores presentan entradas ENABLE o STROBE para dar permiso de funcionamiento o no al multiplexor.

Demultiplexores

El funcionamiento es el contrario al del multiplexor, encauzando los datos desde una fuente común de entrada hacia uno de 2n destinos de salida.

Por tanto, un demultiplexor es un circuito combinacional con una entrada J, n entradas de selección y 2n salidas.

Es importante comentar que los demultiplexores pueden trabajar como decodificadores. Vamos a explicar como se consigue esto con un ejemplo: supongamos que tenemos un DEMUX 1:4 ( una J entrada a cuatro salidas ), si hago la entrada J=1 siempre activa, transformo el funcionamiento a un DECODIFICADOR 2:4, actuando ahora las señales de selección (a, b,... ) como entrada de código a decodificar y las salidas como salidas del código decodificado.

Figura . Demux actuando como decodificador

La síntesis con puertas sería, partiendo de su tabla de verdad :

Figura . Síntesis con puertas de un demultipexor/decodificador

Implementación de funciones lógicas con multiplexores

Viendo un ejemplo, podremos ver como se realiza la síntesis, como voy a utilizar un MUX 4:1 tengo 2 entradas de selección. Por tanto, elijo de la función lógica a implementar 2 de las variables como señales de selección y determino cual debe ser las entradas del multiplexor con la que me queda.

Figura 22 .Implementación de funciones lógicas con multiplexores

Si tuviera más de 3 variables lógicas para este caso de MUX 4:1 necesitaría usar más de un multiplexor. Es importante decir que la elección de las variables que van a actuar de señales de selección es indiferente y muchas se toman unas u otras simplemente por motivo de diseño.

jueves, 10 de enero de 2008

METODO DE QUINE-McCLUSKEY

El método de Quine-McCluskey es particularmente útil cuando se tienen funciones con un gran número de variables, no es el caso del método de Karnaugh, que se hace impracticable con más de cinco variables. En nuestro caso, como el máximo número de variables será cuatro podremos utilizar conjuntamente ambos métodos.

Una expresión booleana se compone de variables y términos. Para este método las variables sólo podrán tener un valor numérico de cero (el correspondiente al valor de verdad false) o uno (el correspondiente al valor de verdad true) y se designarán mediante una letra.

Como notación se designará x si la variable contiene el valor uno, x’ en caso de que contenga el valor cero.

Por otra parte, las variables se relacionarán entre sí únicamente mediante operaciones lógicas and para formar términos y mediante or para relacionarse con otros términos constituyendo una suma de productos. Ésta debe de ser canónica, es decir:

- Cada variable se usa una vez en cada término. A dichos términos se les llama términos canónicos.

P.ejemplo f(x,y,j) = x’y z +x y’z

x’y z se representa con 011, donde x = 0, y = 1, z = 1

x y’z se representa con 101, donde x = 1, y = 0, z = 1

MAPAS DE KARNAUGH

Mapas de Karnaugh

Podría definirlo como un método para encontrar la forma más sencilla de representar una función lógica.

Esto es... Encontrar la función que relaciona todas las variables disponibles, de tal modo que el resultado sea el que se está buscando.

Para esto vamos a aclarar tres conceptos que son fundamentales

a)- Minitérmino Es cada una de las combinaciones posibles entre todas las variables disponibles, por ejemplo con 2 variables obtienes 4 minitérminos; con 3 obtienes 8; con 4, 16 etc., como te darás cuenta se puede encontrar la cantidad de minitérminos haciendo 2n donde n es el número de variables disponibles.

b)- Numeración de un minitérmino Cada minitérmino es numerado en decimal de acuerdo a la combinación de las variables y su equivalente en binario así...

Bien... El Mapa de Karnaugh representa la misma tabla de verdad a través de una matriz, en la cual en la primer fila y la primer columna se indican las posibles combinaciones de las variables. Aquí tienes tres mapas para 2, 3 y 4 variables...

Analicemos el mapa para cuatro variables, las dos primeras columnas (columnas adyacentes) difieren sólo en la variable d, y c permanece sin cambio, en la segunda y tercer columna (columnas adyacentes) cambia c, y d permanece sin cambio, ocurre lo mismo en las filas. En general se dice que...

Dos columnas o filas adyacentes sólo pueden diferir en el estado de una de sus variables

Observa también que según lo dicho anteriormente la primer columna con la última serían adyacentes, al igual que la primer fila y la última, ya que sólo difieren en una de sus variables

c)- Valor lógico de un minitérmino (esos que estaban escritos en rojo), bien, estos deben tener un valor lógico, y es el que resulta de la operación que se realiza entre las variables. lógicamente 0 ó 1

Listo... Lo que haremos ahora será colocar el valor de cada minitérmino según la tabla de verdad que estamos buscando... diablos...!!! en este momento no se me ocurre nada, bueno si, trabajemos con esta...

El siguiente paso, es agrupar los unos adyacentes (horizontal o verticalmente) en grupos de potencias de 2, es decir, en grupos de 2, de 4, de 8 etc... y nos quedaría así...

Te preguntarás que pasó con la fila de abajo... bueno, es porque no estas atento...!!! Recuerda que la primer columna y la última son adyacentes, por lo tanto sus minitérminos también lo son.

De ahora en más a cada grupo de unos se le asigna la unión (producto lógico) de las variables que se mantienen constante (ya sea uno o cero) ignorando aquellas que cambian, tal como se puede ver en esta imagen...

Para terminar, simplemente se realiza la suma lógica entre los términos obtenidos dando como resultado la función que estamos buscando, es decir...

f = (~a . ~b) + (a . ~c)

Puedes plantear tu problema como una función de variables, en nuestro ejemplo quedaría de esta forma...

f(a, b, c) = S(0, 1, 4, 6)

F es la función buscada
(a, b, c) son las variables utilizadas
(0, 1, 4, 6) son los minitérminos que dan como resultado 1 o un nivel alto.
S La sumatoria de las funciones que producen el estado alto en dichos minitérminos.

Sólo resta convertir esa función en su circuito eléctrico correspondiente. Veamos, si la función es...

f = (~a . ~b) + (a . ~c) o sea...

(NOT a AND NOT b) OR (a AND NOT c)

El esquema eléctrico que le corresponde es el que viene a continuación...