Dispositivos logicos

download Dispositivos logicos

of 36

description

Dispositivos lógicos programables

Transcript of Dispositivos logicos

  • 1

    ESCUELA SUPERIOR POLITECNICA DEL LITORAL FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACIN

    LABORATORIO DE SISTEMAS DIGITALES

    Ing. Ludmila Gorenkova Labicova

    Fundamentos de CPLDs y FPGAs

    Manual de Laboratorio de Sistemas Digitales,

    Publicacin interna ESPOL.

    Versin original:

    Ing. Ludmila Gorenkova, Ing. Ronald Ponguillo

    Reimpresin y actualizacin:

    Ing. Ronald Ponguillo Intriago

    Octubre de 2014

  • 2

    Introduccin.

    Una variedad de dispositivos esta disponible para la implementacin de diseos de

    lgica digital. La Fig. 1.1 muestra la clasificacin general de tecnologas de Lgica

    Digital.

    Fig. 1.1. Clasificacin de las tecnologas de Lgica Digital.

    Los circuitos integrados (chips) estndar tales como SSI y MSI TTL y CMOS realizan

    funciones fijas (registro, decodificador, multiplexor, etc.) definidas por el fabricante.

    Pero se puede construir chips que tienen una circuitera que puede ser configurada por

    el usuario para implementar un amplio rango de circuitos lgicos diferentes.

    Lgica Programable y Circuitos Integrados de Aplicacin Especfica (ASICs) son

    circuitos integrados cuya funcin interna es definida por el usuario. Los PLDs (SPLDs),

    FPGAs y CPLDs requieren la configuracin o programacin por parte del usuario para

    realizar la operacin deseada. Los ASICs son configurados por los fabricantes pero

    con las funciones definidas por el usuario.

    La Fig. 1.2 muestra la relacin entre costo y tiempo de desarrollo de un nuevo

    producto y su velocidad, densidad y volumen de produccin.

    El desarrollo de un diseo como producto Full Custom VLSI puede requerir algunos

    aos de esfuerzo para disear y probar el dispositivo. Un trabajo tan caro solo se

    justifica para un volumen muy grande de dispositivos.

    Los circuitos integrados de los microprocesadores y las memorias RAM usadas en

    computadoras personales son ejemplos de dispositivos Full Custom.

  • 3

    Fig. 1.2. Relaciones de tecnologa de lgica digital.

    Los dispositivos ASICs requieren algunos meses para su desarrollo y demandan

    esfuerzo adicional por parte de usuario para su prueba. Cualquier error en el diseo

    del chip va a conducir a una demora y costo adicional.

    Pero para los productos con largo tiempo de uso y grandes volmenes de produccin

    este mtodo tiene un costo por unidad mas bajo que CPLDs o FPGAs.

    Aunque ltimamente ms altas densidades, ms altas velocidades y ventajas de costo

    han permitido el uso de CPLDs y FPGAs en una amplia variedad de diseos.

    Los diseos con CPLDs y FPGAs requieren tpicamente algunas semanas de trabajo

    de los ingenieros en vez de meses o aos.

    Los diseos ASICs y Full Custom aceptan frecuencias de Clock ms rpidas y usan

    menores reas del chip que CPLDs y FPGAs ya que ellos son hardwired y, por lo

    tanto, los retardos de propagacin en las interconexiones son optimizados. Por otro

    lado para muchos diseos sobre todo de tipo acadmico las frecuencias de Clock del

    rango de 50 400 MHz que usan CPLDs y FPGAs de las series ms bsicas son

    suficiente.

    Los CI de Lgica Programable pueden ser clasificados de la siguiente manera:

    - PLDs (Dispositivos Lgicos Programables Simples):

    ROM (AND fijo, OR programable) PAL (AND programable, OR fijo) PLA (AND programable, OR programable)

    - CPLD (Dispositivos Lgicos Programables Complejos)

    - FPGA (Arreglos de Puertas Programables por Campos).

  • 4

    Los PLDs son un conjunto de puertas AND cuyas salidas son conectados a un

    conjunto de puertas OR.

    El tamao de CPLDs y FPGAs se describe tpicamente en funcin de mximo nmero

    de puertas NAND de dos entradas. Puerta NAND de dos entradas se utiliza como

    unidad de tamao estimada.

    Los CPLDs y FPGAs comerciales estn disponibles en varios tipos de

    empaquetamientos.

    a. b. c.

    Fig. 1.3. Ejemplos de tipos de empaquetamiento de los CPLD y FPGA. a. Altera MAX CPLD esta empaquetado como PLCC (plastic-leaded chip carrier).

    b. Altera FLEX FPGA esta empaquetado como PQFP (plastic quad flat pack).

    Existe una variacin de este tipo de empaquetamiento TQFP (thin quad flat pack).

  • 5

    c. Xilinx FPGA esta en paquete PGA (pin grid array) que puede tener mas de cien

    pines.

    Y hay un nuevo tipo de empaquetamiento conocido como BGA (ball grid array).

    BGA es similar a PGA pero los pines largos son remplazados por pequeas bolitas.

    Este tipo de empaquetamiento puede tener aun mas entradas.

    1. CPLD (Complex Programmable Logic Device).

    CPLD es una coleccin de los PLDs individuales dentro de un chip, acompaada por

    una estructura programable de interconexin que permite a los PLDs estar

    conectados entre si dentro del chip de la misma manera que un diseador puede hacer

    con los PLDs discretos.

    Diferentes fabricantes tienen diferentes maneras de implementar la estructura general.

    La gran cantidad de formas en que se puede elevar la complejidad de los CPLDs da

    lugar a arquitecturas diferentes, orientadas a un cierto campo de aplicaciones cada

    una.

    En los CPLDs usualmente se utiliza el termino macrocelda para referirse a la puerta

    OR combinada con la circuiteria adicional (FFs, Mux, buffers de tres estados).

  • 6

    Fig. 1.4. Arquitectura general de un CPLD.

    Pueden ser implementados de diferente manera tanto los Bloques Lgicos, como los

    Bloques de Entrada/Salida e Interconexiones Programables (CPLDs con

    macroceldas complejas, CPLDs con bloques lgicos complejos, CPLDs con recursos

    lgicos adicionales, CPLDs con recursos de interconexin distribuidos, etc.).

    1.1. Bloques de Arreglos Lgicos (LAB) / Bloques Funcionales (FB).

    La Fig. 1.5 muestra un CPLD formado por cuatro LAB (Altera) / FB (Xilinx) tipo PAL

    (PLA) que son conectados por un conjunto de interconectores.

    Fig. 1.5. Estructura de un CPLD. Cada Bloque Lgico PAL (PLA) es tambin conectado a un subcircuito llamado

    Bloque de Entrada/Salida (I/O Block).

  • 7

    La cantidad de bloques lgicos que puede tener un CPLD depende de la familia y

    fabricante del dispositivo.

    Un CPLD comercial puede tener ms de 100 bloques LAB / FB.

    La Fig. 1.6 presenta la estructura y conexiones de un bloque tipo PAL en un CPLD.

    Fig. 1.6. Un LAB / FB del CPLD.

    Este LAB / FB incluye 3 macroceldas (un CPLD real XC95288 de fabricante Xilinx

    tiene 288 macroceldas en 16 bloque). Cada macrocelda tiene una puerta OR de

    cuatro entradas (un CPLD real puede tener las puertas OR con hasta 20 entradas).

    Las salidas de las puertas OR estn conectadas a las entradas de las puertas XOR.

    Una de las entradas de los XOR puede ser programada para ser conectada a 0 o 1.

    De esta manera en la salida XOR se obtiene la seal igual o inversa que en la salida

    OR.

    Las macroceldas tambin incluyen los FFs, multiplexores y buffers de tres estados. Los

    FFs son usados para almacenar los valores producidos por las puertas OR. Los buffers

    de tres estados actan como interruptores que permiten que cada terminal pueda ser

    usado tanto como salida o como entrada. Para usar el terminal como la salida, el buffer

    debe ser habilitado. Para usar el terminal como la entrada, el buffer de tres estados se

  • 8

    deshabilita. Entonces una seal externa puede ser aplicada al terminal y mandada a

    otras macroceldas, ya que en este caso la macrocelda correspondiente a este terminal

    no puede ser usada.

    Por lo general un CPLD tiene macroceldas de entrada / salida y macroceldas de

    entrada. Tambin puede tener macroceldas cuyas salidas son usadas solo

    internamente llamadas macroceldas ocultas (buried macrocells).

    Ejemplo:

    La Fig. 1.7 presenta un Diagrama Esquemtico implementado con tres tipos de

    elementos de almacenamiento.

    Fig. 1.7. Ejemplo de segmento de un Diagrama Esquemtico.

    Un latch es un flip-flop tipo D con disparo por nivel.

    Un latch puede ser implementado de la manera indicada en la Fig. 1.8a.

    a. b.

    Fig. 1.8. Ejemplos de implementacin de un latch.

  • 9

    Pero tambin puede ser implementado como suma de productos que tiene

    realimentacin Fig. 1.8b.

    Todo circuito de la Fig. 1.7 puede ser implementado en un CPLD de la manera

    indicada en la Fig. 1.9.

    Fig. 1.9. Implementacin del circuito de la Fig. 1.7 en un CPLD.

    1.2. Matriz de Interconexiones Programables.

    La Matriz de Interconexiones Programables (Programmable Interconect Matrix / PIM o

    Programmable Interconect Array / PIA) permite unir los terminales de entrada/salida a

    las entradas del bloque lgico, o las salidas de un bloque lgico a las entradas de otro

    bloque lgico, o inclusive a las entradas del mismo bloque.

  • 10

    El elemento bsico de la PIM / PIA es un switch programable y borrable

    elctricamente basado en el comportamiento del transistor EEPROM.

    La Fig. 1.10a. presenta configuracin de un switch programable y la Fig.1.10b muestra

    la estructura de un transistor EEPROM.

    a. b.

    Fig. 1.10. Un switch programable y un transistor EEPROM.

    El transistor EEPROM tiene dos puertas (Gate): el Gate normal y otro llamado floating

    Gate. Se llama flotante porque esta rodeado por vidrio aislante y no esta conectado a

    ninguna parte del transistor.

    Cuando el transistor no esta programado la puerta flotante no tiene ningn efecto y el

    transistor funciona como un transistor normal.

    Durante de programacin se aplica a la puerta normal del transistor EEPROM un

    voltaje bastante elevado (tpicamente Ve =12v). Esto causa la circulacin de una gran

    corriente por el transistor. Una corriente tan alta hace que algunos electrones penetren

    a travs del aislante y se queden atrapados bajo la puerta flotante.

    Despus de la programacin los electrones atrapados repelen a los electrones que

    tratan de pasar por el canal y mantiene el transistor abierto.

    Para revertir el proceso (borrar), se aplica el voltaje del mismo valor que se usa en la

    programacin pero de polaridad opuesta. Los electrones atrapados bajo al puerta

    flotante regresan al canal por efecto tnel.

    La mayora de los CPLDs usan dos configuraciones de PIM / PIA:

    Interconexiones mediante arreglo

    interconexiones mediante multiplexores.

  • 11

    La primera se basa en una matriz de filas y columnas con un switch programable en

    cada interseccin. Este switch puede ser activado para conectar o desconectar la

    correspondiente fila y columna. Esta configuracin permite una total interconexin

    entre las entradas y salidas de los bloques lgicos.

    En la interconexin mediante multiplexores existe un multiplexor por cada entrada al

    bloque lgico. Las vas de interconexin programable son conectadas a las entradas

    de un nmero fijo de multiplexores por cada bloque lgico. Las entradas de seleccin

    de estos Mux son programadas para permitir que sea seleccionada nicamente una

    va de la matriz de interconexiones por cada Mux.

    Una tpica PIM / PIA es un compromiso entre las dos configuraciones. De su diseo

    depende la velocidad, rea y costo de un CPLD. La solucin de este problema es

    top secret y generalmente no es revelado por los fabricantes de los CPLDs.

    1.3. Bloques de Entrada/Salida (IOB).

    Bloque de I/O podra considerarse parte del bloque lgico, pero no necesariamente

    tiene que estar en la salida de un bloque lgico. La funcin de un IOB es permitir el

    paso de una seal hacia dentro o hacia el exterior del dispositivo. Por lo tanto IOB

    deben ser bidireccionales y deben poder manejar corrientes importantes.

    Existen bsicamente dos tipos de IOB:

    IOB elementales

    IOB complejos

    IOB elementales slo permiten definir si el pin ser de entrada, salida o bidireccional,

    y cada IOB est asociado a un Bloque Lgico determinado.

    IOB complejos cuentan con muchas opciones de configuracin y realizan algunas

    tareas de sincronizacin de datos externos. Ellos no tienen una relacin

    predeterminada con los Bloques Lgicos. Para vincularlos se usan los recursos de la

    PIM.

  • 12

    Pero los IOB tambin contribuyen fuertemente a crear ciertos problemas de diseo

    como retardos adicionales y picos de corriente de consumo y consiguiente ruido de la

    fuente.

    1.4. Anlisis de un CPLD de Altera.

    Altera MAX 7000.

    Matriz de Arreglo Mltiple (Multiple Array MatriX) es una familia de CPLDs con 600 a

    20 000 puertas. Estos dispositivos se configuran programando una memoria EEPROM

    interna.

    Existen las familias MAX 5000, MAX 7000, MAX 3000 y MAX 9000.

    Fig. 1.11. Una macrocelda de la familia MAX 7000.

    La familia MAX 7000 contiene de 600 a 5000 puertas equivalentes arreglados en 32 a

    512 macroceldas del tipo mostrado en la Fig. 1.6.

    Un MAX EPM7128SLC84-7 tiene 128 celdas. Si hay letra S presente en el nombre del

    chip esto significa que es programable in-system. Las subfamilias MAX 7000S y MAX

    7000E tienen posibilidad de control de la pendiente de seales de salida. La subfamilia

    MAX 7000S tambin tiene opcin de salida en colector abierto.

    Q D PRN

    CLRN ENA

    LAB Local Array

    Global Clear

    Global Clock

    Shared Logic Expanders

    Clock

    Clear Select

    Parallel Expanders

    to PIA and I/O Contol Block

    Product-Term Select Matrix

    From I/O Pin (E and S versions only)

    From PIA

  • 13

    Tienen diferentes tipos de empaquetamiento: PLCC, PGA, PQFP y TQFP.

    Tambin tienen un bit programable de seguridad que impide la lectura de la

    configuracin del PLD y as permite proteger la propiedad intelectual.

    Hay cinco trminos de productos (puertas AND) que pueden ser conectados mediante

    Product Term Select Matrix (matriz de seleccin de trminos de producto) a la puerta

    OR. Esta OR puede ser configurada para usar solo los productos necesarios para

    implementar la funcin deseada.

    Cuando se requiere ms de cinco productos pueden ser utilizados productos

    adicionales de otras macroceldas.

    La puerta OR es conectada a travs de una XOR a un flip-flop programable.

    El flip-flop tiene bypass, Enable, Clear y Preset y puede ser programado para

    funcionar como flip-flop tipo D, tipo T, tipo JK o como SR latch.

    La Fig. 1.12 muestra como trminos de productos pueden ser compartidas entre las

    celdas.

    Fig. 1.12. Interconexin entre macroceldas.

    La puerta OR de una macrocelda incluye una entrada extra que puede ser conectada a

    la salida de la puerta OR de la macrocelda que esta arriba. Esta caracterstica se llama

  • 14

    parallel expanders y es usada para funciones lgicas con hasta 20 trminos de

    productos.

    Si se requiere aun ms de trminos de productos, entonces se usa una caracterstica

    llamada shared expanders.

    Como muestra la Fig. 1.11, uno de los trminos de productos se invierte y se

    realimenta a la matriz de trminos de productos.

    Entonces usando el teorema de DeMorgan se produce una suma de trminos. Un

    shared expander puede ser usado por cualquier macrocelda en el mismo LAB.

    La arquitectura total de una MAX 7000 se presenta en la Fig.1.13.

    Fig. 1.13. Arquitectura de CPLD MAX 7000.

    Hay cuatro pines de entrada para propsitos especiales.

    Dos de ellos pueden ser usados como entradas del Clock global (GCLK).

    Otro pin puede ser usado como un Clear global (GCLRn) para todos los flip-flops.

    Tambin hay una entrada de habilitacin de salidas OE.

    Las macroceldas estn agrupadas en grupos de 16 para formar LABs. Cada LAB esta

    conectado al PIA. El PIA es usado para conducir datos hacia o desde otros LABs o

  • 15

    desde los pines externos del dispositivo. Todas las conexiones entre macroceldas se

    realizan a travs de PIA.

    Cada LAB tambin esta conectado a un IOB.

    Cada pin de I/O tiene un buffer de tres estados programable. Un pin del CPLD puede

    ser programado para funcionar como entrada, salida con tri-state driver o como pin

    bidireccional de tres estados.

    La Fig. 1.14 presenta un IOB elemental de la familia MAX 7000.

    Fig. 1.14. IOB elemental de la familia MAX 7000.

    Cada IOB esta asociada a una macrocelda determinada.

    Por medio del Mux se puede seleccionar una de las seales de control para que el pin

    de I/O funcione solo como salida cuando buffer esta habilitado, solo como entrada

    cuando buffer esta deshabilitado o como I/O bidireccional controlado por las entradas

    externas OE.

    Cada dispositivo MAX 7000 especifico esta disponible en un rango de velocidades.

    Estas velocidades indican el retardo de propagacin desde un pin de entrada a travs

    del PIA y una macrocelda a un pin de salida.

    Por ejemplo, un chip EPM 7128S-7 tiene retardo de propagacin de 7.5 ns.

    Si la funcin lgica implementada usa parallel o shared expanders, el retardo de

    propagacin se incrementa.

  • 16

    1. 5. Anlisis de un CPLD de Xilinx.

    Xilinx XC9500.

    Los CPLDs de la familia XC9500 tienen similar arquitectura pero diferente numero de

    terminales de entrada / salida externos y diferente cantidad de PLDs internos, que

    Xilinx llama FB (Funcional Block). Por ejemplo, XC9536 tiene 2 FB y 36

    macroceldas. Pero XC95288 tiene 16 FB y 288 macroceldas.

    Otra importante caracterstica de esta familia es que cualquier dispositivo, por ejemplo,

    XC95108 esta disponible en varios tipos de empaquetamientos. Esto es importante, ya

    que en la mayora de las aplicaciones no es necesario que todas seales internas de

    una mquina de estados o un subsistema sean visibles para ser usadas por el resto

    del sistema. As que XC95108 tiene 69 pines I/O en empaquetamiento PLCC y 81

    pines en empaquetamiento PQFP.

    La Fig.1.15 presenta la configuracin de una macrocelda del XC9500. Igual como la

    macrocelda de Altera tiene cinco trminos de producto (puertas AND) que pueden ser

    conectados mediante Product Term Allocators que es una estructura equivalente a

    Product Term Select Matrix de Altera y que permite que un termino de producto no

    usado de una macrocelda puede ser usado por otra macrocelda del mismo FB.

    Fig. 1.15. Una macrocelda del XC9500.

  • 17

    Los bloques rectangulares (S1-S8) son elementos de direccionamiento que conectan el

    trmino de producto (AND) a una de sus dos o tres salidas. M1-M5 son multiplexores

    programables para seleccionar una de sus entradas y pasar a la salida.

    La salida superior de los elementos de direccionamiento S1-S5 esta conectada a la

    puerta OR principal G4. Pero esto no significa que solo estn disponibles cinco

    trminos de producto por macrocelda.

    La entrada superior de OR G4 se conecta a otro OR G3 que recibe trminos de

    producto desde macroceldas superior e inferior.

    Cualquier trmino de producto no usado puede ser direccionado por medio de S1-S5

    hacia la puerta OR G1 cuya salida puede ser direccionada hacia macroceldas superior

    o inferior por medio de S8. Antes de esto, este trmino de producto puede combinarse

    con trminos de productos superiores o inferiores por medio de S6, S7 y G2.

    La puerta XOR G5 recibe suma de productos de OR G4 y su otra entrada puede recibir

    0, 1 o un trmino de producto por medio de Mux M1. De esta manera la macrocelda

    puede ser configurada para tener cualquier polaridad para fines de minimizacin de las

    ecuaciones lgicas.

    El flip-flop de cada macrocelda puede ser programado para funcionar como tipo D o

    tipo T que se usa para implementar contadores.

    Mux M4 selecciona una entrada de Clock entre cuatro fuentes:

    tres entradas de Clock global o un trmino de producto. La eleccin de un trmino de

    producto como Clock no es recomendable en los diseos sincrnicos con excepcin

    de las aplicaciones de sincronizacin bien definidas.

    El ltimo Mux M3 selecciona la salida de flip-flop o su dato de entrada para mandarlo a

    la salida OUT. Esta seal es mandada a PIM o a IOB junto con un trmino de producto

    seleccionado por S5 que puede ser usado como PTOE

    (Product Term Output Enable) si es necesario.

    La Fig. 1.16 muestra la estructura bsica de un FB del XC9500.

    Fig.1.16. Arquitectura de un FB XC9500.

  • 18

    Cada FB de cualquier dispositivo de la familia XC9500 tiene 36 entradas que recibe de

    PIM y 18 macroceldas y, por lo tanto, 18 salidas.

    Las entradas a PIM son las 18 salidas de las macroceldas de cada FB y las mismas 18

    salidas son mandadas al IOB.

    La Fig. 1.17 muestra la arquitectura interna tpica de los CPLDs de la familia XC9500.

    Fig. 1.17. Arquitectura de la familia XC9500.

    Cada terminal externo I/O puede ser como una entrada, una salida o un pin

    bidireccional.

    Tambin hay pines de propsitos especiales.

    Tres pines de Clock global (GCK).

    Cada macrocelda puede ser programada para usar un Clock seleccionado.

    Un pin puede ser usado como Set / Reset global (GSR) y cada macrocelda puede ser

    programada para usar esta seal como un Preset o Clear asincrnico.

    Finalmente, dos o cuatro pines pueden ser usados como Global three-state control

    (GTS).

  • 19

    La arquitectura de IOB del XC9500 esta mostrada en la Fig. 1.18.

    Fig.1.18. IOB de XC9500.

    Por medio de Mux M0 se puede elegir una de las siete seales para habilitar el output

    driver que es un buffer de tres estados.

    Por lo tanto, output driver puede ser on si se desea utilizar el pin I/O como salida

    como, puede ser off si el pin I/O se usa como entrada, puede ser controlado por el

    PTOE de la macrocelda correspondiente o controlado por cualquiera de los cuatro

    GTS.

    Adems, hay tres controles ms:

    Slew-rate control permite control de tiempo de subida y bajada de las seales de

    salida. El tiempo ms rpido proporciona menores retardos de propagacin, mientras

  • 20

    el tiempo ms lento ayuda eliminar zumbido de lnea de transmisin y ruido de sistema

    aadiendo un pequeo retardo adicional.

    Pull-up resistor previene que los pines estn en el estado flotante en el momento de

    prender la fuente de poder. Esto es muy til en casos cuando las salidas son usadas

    para habilitar las entradas verdaderas bajas de otros circuitos lgicos que no deben

    ser activados durante el encendido de la fuente.

    User-programmable groud reasigna a un I/O pin para ser un pin de tierra. Esto es til

    en aplicaciones de altas velocidades. Pines extra de tierra son necesarios para

    manejar las altas corrientes dinmicas que circulan cuando mltiples salidas son

    conmutadas simultneamente.

    La familia XC9500 es compatible con dispositivos externos alimentados tanto con 5v

    como con 3.3v. El buffer de entrada y la circuiteria interna funciona con 5v de

    alimentacin (VCCINT). Dependiendo del voltaje de operacin de los dispositivos

    externos output driver usa alimentacin de 5v o 3.3v (VCCIO).

    La tabla presentada indica los nombres de los principales fabricantes de los CPLDs.

    2. FPGA (Field-Programmable Gate Array).

    Una macrocelda representa como 20 puertas equivalentes y as que un CPLD grande

    con 1000 macroceldas representa 20 000 puertas equivalentes.

    Para estndares modernos un circuito lgico con 20 000 puertas no es muy grande.

    Para implementar circuitos ms grandes es conveniente usar un dispositivo diferente.

    Un FPGA es un dispositivo lgico configurable que puede implementar los circuitos

    lgicos relativamente grandes.

  • 21

    Fig. 2.1. Arquitectura general de un FPGA.

    Los FPGAs estn formados por tres elementos principales:

    Bloques lgicos configurables / Bloques de Arreglo Lgico

    Bloques de entrada/salida

    Interconexiones programables

    La mayor o menor concentracin de Bloques Lgicos se denomina granularidad. La

    granularidad de un FPGA es elevada (fine grain) si posee un gran nmero de

    Bloques Lgicos de reducida complejidad cada uno, y es baja en caso contrario.

    2.1. Bloques Lgicos Configurables (CLB) / (LAB).

    Se distinguen tres grandes organizaciones de los bloques lgicos internos de los

    FPGAs:

    FPGA de organizacin tipo terraza, donde los bloques lgicos estn

    dispuestos en filas separadas por los canales en los que se ubican los recursos

    de interconexin horizontal.

    La conexin entre los bloques lgicos y entre ellos y los bloque I/O se realiza

    principalmente mediante recursos de interconexin horizontal. Existen tambien

    recursos de interconexin vertical que facilitan la comunicacin entre los canales

    horizontales y transmiten seales globales como Clock, etc. Los recursos de

  • 22

    interconexin vertical no se agrupan formando canales, sino que se distribuyen por

    todo el circuito y se solapan con el resto de los elementos que lo forman.

    FPGA de organizacin tipo cuadricula (Manhattan), donde los bloques

    lgicos estn dispuestos en forma de filas y columnas delimitadas por los

    recursos de interconexin que se extiende de forma vertical y horizontal entre

    los bloques.

    En este tipo de organizacin los recursos de interconexin vertical no se solapan

    con los bloques lgicos sino que se distribuyen entre ellos.

  • 23

    FPGA de organizacin tipo mar de puertas, donde los bloques lgicos

    tambien estn dispuestos en filas y columnas como en la cuadricula, pero los

    recursos de interconexin se solapan con los bloques lgicos. Para ello los

    recursos de interconexin se sitan en capas diferentes de las de los bloques

    lgicos.

    Este tipo de organizacin de los FPGAs tiene una gran densidad de los bloques

    lgicos configurables porque la ausencia de los recursos de interconexin en la capa

    de los bloques lgicos permite un mejor aprovechamiento del rea.

    En el mercado existen muchos FPGAs que pueden utilizar diferentes tipos de

    CLB (Xilinx) / LAB (Altera).

    Ms comnmente se utilizan los que estn basados en LUT (lookup table) o tabla de

    bsqueda que contiene celdas de almacenamiento.

    Fig. 2.2. Una LUT de dos entradas.

  • 24

    Es fcil entender que es una LUT si imaginamos una tabla de verdad almacenada en

    una memoria. Usualmente los LUT tienen cuatro o cinco entradas, por lo tanto 16 o 32

    celdas de almacenamiento.

    Las celdas de almacenamiento son celdas tipo SRAM. Cada celda puede almacenar

    un 0 o un 1 lgico.

    En las salidas de los LUT se conecta la circuiteria adicional. La Fig. 2.3 muestra como

    un flip-flop puede ser incluido en un bloque lgico.

    Fig. 2.3. Inclusin de un flip-flop en un bloque lgico.

    El flip-flop es usado para almacenar en el la salida de LUT bajo control de Clock.

    Como las celdas de almacenamiento son de tipo SRAM, la informacin se pierde

    cuando se apaga la fuente de alimentacin. A menudo una pequea memoria PROM

    que mantiene los datos se incluye en la misma tarjeta donde esta el FPGA. Cuando se

    enciende la fuente de poder los datos se cargan automticamente desde PROM a las

    celdas de almacenamiento de los LUT.

    2.2. Bloque de Entrada / Salida.

    Los FPGAs solo utilizan los IOB / IOE (Elementos de I/O) tipo complejos.

    Muy a menudo son aun ms complejos que los IOB de los CPLDs XC9500 de Xilinx.

    Es decir, no hay una relacin predeterminada entre los bloques de I/O y las salidas de

    los CLB / LAB.

    Para vincularlas se usan los recursos de interconexin.

    Se delegan a los bloques de I/O ciertas tareas de sincronizacin de datos externos.

    Se cuenta con muchas opciones de configuracin, como control de slew rate, de

    pullups o pulldowns, agregado de retardos, etctera.

  • 25

    2.3. Interconexiones programables.

    Las FPGAs no utilizan tecnologa EEPROM para implementar los switch

    programables. En su lugar utilizan tambin las celdas SRAM para configurar los

    alambres de interconexin. La Fig. 2.4 muestra una pequea seccin del FPGA.

    Fig. 2.4. Switches de transistores de paso en una FPGA.

    Una LUT genera en el alambre horizontal la seal f1. Para conectar esta seal con

    algn alambre vertical se usa el switch programable. Cada switch es implementado

    usando un transistor NMOS cuyo terminal Gate es controlado por una celda SRAM. Un

    switch implementado de esta manera se conoce como un pass-transistor switch. Si

    un 0 es almacenado en una celda SRAM, entonces el transistor NMOS

    correspondiente a esta celda no esta conduciendo. Pero si en la celda SRAM se

    almacena un 1, entonces transistor conduce y de esta manera se forma la conexin

    entre los dos alambres conectados a los terminales Drain y Source del transistor.

    2.4. Anlisis de un FPGA de Altera.

    Altera FLEX 10K.

    Matriz de Elemento Lgico Flexible (Flexible Logic Element MatriX) es una familia de

    dispositivos FPGA con 10 000 a 250 000 puertas lgicas equivalentes.

    La Fig. 2.5 presenta un Elemento Lgico (LE) basado en LUT de un FPGA FLEX 10K.

    Un LE tiene una LUT de cuatro entradas y un flip-flop que puede ser bypasseado.

    Para la implementacin de sumadores aritmticos una LUT de cuatro entradas puede

  • 26

    ser usada para la implementacin de dos funciones de tres entradas que son

    funciones de suma y transporte (carry) en un sumador completo.

    Fig. 2.5. Arquitectura de un Elemento Lgico (LE) de un FLEX 10K.

    Clock, Clear y Preset pueden ser configurados por la lgica interna o por un pin I/O

    externo. El flip-flop puede ser configurado como flip-flop D, flip-flop T, flip-flop JK o

    como SR latch (celda binaria).

    Fig. 2.6. Un LAB de FLEX 10K.

  • 27

    La Fig. 2.6 muestra como los LE estn configuradas en un LAB.

    Un LAB esta compuesta de ocho LE y puede recibir las seales provenientes tanto de

    la fila adyacente de interconexiones (Row Interconnect) como de un conjunto de

    interconexiones locales (LAB Local Interconnect).

    Las seales de entradas de los LE provienen desde el conjunto de interconexiones

    locales, que tambin recibe seales de salidas de los LE.

    A su vez las salidas de los LE tambin se conectan a la columna y fila adyacente de

    interconexiones

    La Fig. 2.7 muestra la arquitectura total de un FLEX 10K que contiene un conjunto de

    LABs, que a su vez contienen ocho LE basados en LUTs.

    Adems, podemos observar la presencia de bloques adicionales EABs que son

    Bloques de Arreglo Incrustado (embedded array block).

    EAB es un bloque de SRAM que puede ser configurada para proporcionar una

    memoria SRAM de varias dimensiones.

    Los LABs y los EABs pueden ser interconectados usando las filas y columnas de

    interconexiones.

    Las filas y columnas de interconexiones tambin se utilizan para proporcionar

    conexiones con terminales de entrada y salida del chip.

    Fig. 2.7. Arquitectura de un FPGA FLEX 10K.

  • 28

    La Fig. 2.8 muestra la estructura de un EAB.

    Fig. 2.8. Un EAB de FLEX 10K.

    EAB contiene 2048 celdas de SRAM que pueden ser organizadas para proporcionar

    un bloque de memoria de diferentes dimensiones: 256 x 8, 512 x 4, 1024 x 2 o

    2048 x 1 bits.

    Las entradas de direcciones (Address) y las entradas de datos (Data) para bloque de

    memoria provienen de un conjunto de interconexiones locales (EAB Local

    Interconnect).

    Estas entradas y tambin la seal de habilitacin de escritura (WE) pueden

    opcionalmente ser almacenadas en flip-flops. Las salidas de datos tambin pueden

    opcionalmente ser almacenadas en flip-flop. En FPGAs muy grandes es posible

    implementar un bloque de memoria grande combinando multiple EABs.

    Los chips de FLEX 10K estn disponibles en el rango de tamaos de 10K 10 a

    10K 250, es decir, de 10 000 a 250 000 puertas lgicas equivalentes.

  • 29

    Los FPGAs tambin estn disponibles en varias velocidades cuyos valores se indican

    por medio de letra del sufijo, por ejemplo, FLEX 10K 10A. El nmero que va despus

    de letra de sufijo indica grado de velocidad, por ejemplo, FLEX10K 10A-1.

    A diferencia de los CPLDs el grado de velocidad para un FPGA no especifica un

    retardo real de propagacin en nanosegundos. El grado de velocidad representa una

    relativa velocidad dentro la familia de los FPGAs. Por ejemplo, el FLEX10K 10-1 es

    mas rpido que FLEX10K 10-2. El retardo de propagacin real depende de la

    complejidad del circuito que se desea implementar.

    2.5. Anlisis de un FPGA de Xilinx.

    Xilinx XC4000.

    La familia Xilinx XC4000 es una familia de los FPGAs con de 2 000 a 180 000 puertas

    lgicas equivalentes.

    La Fig. 2.9 presenta la estructura de bloque lgico configurable (CLB) del XC4000.

    Fig. 2.9. CLB del XC4000 de Xilinx.

  • 30

    Cada CLB tiene tres LUT (lookup table) basadas en la memoria SRAM.

    Las salidas de LUT G y F son funciones lgicas combinatoriales de cuatro variables.

    Por medio de los mux programables M1 M3 las salidas G y F as como las entradas

    adicionales C son direccionadas a las entradas de LUT H. La salida de LUT H es

    entonces la funcin de tres variables.

    Con apropiada programacin de los mux M7 M8 y M12 M13 las salidas de estas

    tres LUTs pueden ser dirigidas a las salidas del CLB X e Y o pueden ser almacenadas

    en flip-flops tipo D de disparo por flanco FF1 y FF2. Los flip-flops pueden usar el flanco

    de subida o de bajada del CLK comn K que se seleccionan por medio de los mux M9

    y M14. Los flip-flops tambin pueden usar la seal de habilitacin EN que se

    selecciona por los mux M10 y M15.

    Las salidas XQ e YQ son salidas de los flip-flops. Si un flip-flop no es usado en esta

    CLB los mux M11 y M16 pueden seleccionar las salidas XQ YQ para las seales C

    seleccionadas por medio de los mux M4 y M6.

    Un FPGA de la familia XC4000 puede tener desde 64 hasta 3 136 CLB.

    Naturalmente, la configuracin del dispositivo no se realiza manualmente, sino por

    medio de herramientas CAD.

    La Fig. 2.10 muestra la estructura de un bloque de entrada/salida.

    Fig. 2.10. Un bloque de I/O de un XC4000.

  • 31

    Un bloque de I/O puede ser usado para entrada, para la salida o para ambos.

    IOB de XC4000 tiene ms lgica de control que IOB de XC9500.

    Sus lneas de entrada y salida tienen flip-flops tipo D de disparo por flanco

    seleccionables por los mux M5 M7. Esto resulto muy til.

    Por ejemplo, en la salida, el retardo relativamente grande de un flip-flop interno de un

    CLB al IOB puede crear la dificultad para conexin con un sistema sincrnico externo

    que trabaja con un Clock muy rpido.

    En la entrada, el retardo grande desde los pines I/O hasta la entrada del flip-flop de un

    CLB puede crear problema si las seales de entrada externas no son guardadas

    primero por un flip-flop del IOB.

    Otro control del IOB selecciona la polaridad de las entradas provenientes desde CLB

    usando los mux M1 M4. Estas entradas son: OUT (output bit), T (three-state enable),

    OCLK (output clock) e ICLKEN (input clock enable).

    Como XC9500 IOB, XC4000 IOB tiene programacin de flancos de subida y de bajada

    de seales de salida y las resistencias pull-up y pull-down.

    Cada CLB en un FPGA esta incrustado en una estructura de interconexiones los

    cuales son unos alambres con conexiones programables entre ellos.

    La Fig. 2.11 muestra un CLB y los alambres de interconexin.

    Los cuatro alambres en el grupo Global son para usarlos como entradas de Clock

    hacia CLBs con un retardo muy corto.

    Los dos grupos Single son para conexin flexible entre bloque adyacentes.

    Los dos grupos Direct Connect son de dos alambres nicamente y tienen limitaciones

    a causa de que son unidireccionales.

    Es posible conectar un CLB con otro que no es CLB adyacente usando los alambres

    Single, pero ellos tienen que conectarse por medio de los switch programables, lo que

    agrega retardo adicional. Los alambres de grupos Double estn interconectados

    pasando dos CLBs lo que proporciona menores retardos para conexiones ms largas.

    Para conexiones realmente largas los grupos Long son ms apropiados ya que ellos

    se conectan tanto con filas como con columnas de alambres y son manejadas por los

    drivers de tres estados cercanos al CLB.

  • 32

    El rea sombreada es un PSM (programmable switch matrix). Cada pequeo diamante

    es un PSE (programmable switch element) que puede conectar cualquier lnea con

    cualquier otra horizontal o vertical.

    Fig. 2.11. Detalles de conexiones en un XC4000.

    La tabla presentada indica los nombres de los principales fabricantes de los FPGAs.

  • 33

    Productos recientes.

    Altera.

    APEX 20K

    La familia APEX 20K es la siguiente generacin de los FPGAs despus de FLEX 10K.

    Su Elemento Lgico (LE) es una versin optimizada del mostrado en la Fig. 2.5

    y contiene un LUT de cuatro entradas y un flip-flop. Estn disponibles en tamao de

    1 200 a 51 840 LE. Lo nuevo en este FPGA es el hecho que los Bloques Lgicos

    Configurables estn agrupados en MegaLABs con hasta ms de 24 LABs en una

    MegaLAB. Y contiene tambin un bloque de memoria llamado Embedded System

    Block (ESB) que es similar a EAB de la Fig. 2.8 pero es mucho mas grande.

    Stratix

    Stratix es el FPGA que sustituye la familia APEX. Cada chip contiene columnas de

    recursos de varios tipos. Las columnas de LABs tienen LAB con 10 LE en cada LAB.

    Cada LE tiene LUT de cuatro entradas y un registro y puede ser configurado en una

    variedad de modos. Hay tambin varios tipos de recursos de alambrado. Las

    conexiones dentro de un LAB estn hechas usando recursos locales rpidos. Para la

    conexin de una LAB a otra existen conexiones vecinales cercanas, alambres que

    cruzan cuatro columnas o filas y alambres largos. Adems, Stratix tiene tres otros

    tipos de columnas. Las columnas M512 son los bloques de memoria con 512 bits cada

    uno. Y las columnas M4K tienen grandes bloques de memoria con 4K bits por bloque.

    Tambin hay bloques de memoria muy grandes llamados MegaRAMs con 512K bits

    cada uno. Finalmente hay columnas con bloques DSP (Digital Signal Processing).

    Cada uno de estos bloques incluye circuitos multiplicadores y sumadores para permitir

    rpida multiplicacin y suma (acumulacin) de datos. Chips Stratix estn disponibles

    en tamao de 10 570 a 79 040 LE.

    Cyclone

    Los FPGAs Cyclone estn basados en la arquitectura Stratix pero pensada para las

    aplicaciones de bajo costo. Un chip Cyclone tiene la misma estructura bsica con la

    excepcin que no tiene las columnas DSP y tiene solo los bloques de memoria M4K.

    Los FPGAs Cyclone estn disponibles en tamaos de 2 920 a 20 060 LE y 288K bits

    de memoria.

  • 34

    Xilinx.

    Virtex

    Los FPGAs Virtex son la siguiente generacin de las familias despus de XC4000.

    Cada chip Virtex tiene recursos lgicos llamados CLBs y recursos de memoria

    llamados BRAMs (Block RAMs). El CLB es una versin mejorada del de la Fig. 2.9.

    Pero los CLB de Virtex estn divididos en dos partes. Cada parte es llamada slice.

    Cada slice tiene dos LUT de cuatro entradas, dos registros y lgica aritmtica. El

    bloque BRAM tiene 4K bits de memoria que puede ser configurada de 4096 x 1 hasta

    256 x 16. Los FPGAs Virtex estn disponibles en tamaos de 256 a 46 592 CLB

    slices.

    Virtex II y Virtex II Pro

    Los FPGAs Virtex II y Virtex II Pro son sucesores de la familia Virtex. Ellos

    ofrecen tamaos de 3 168 hasta 99 216 LE y mas que 8M bits de memoria. Los LE

    estn arreglados en slices similares al FPGA de Virtex pero con cuatro slices en un

    CLB. El chip de Virtex II Pro incluye uno o ms ncleos de microprocesadores

    dentro del chip y tiene avanzadas caractersticas adicionales que no estn presentes

    en Virtex II.

    Spartan 3

    Los FPGAs Spartan 3 son la versin de bajo costo de la arquitectura del Virtex II.

    Similar a Virtex II los LE estn arreglados dentro de CLBs en cuatro slices, pero no

    todos los slices tienen el mismo conjunto de caractersticas que como en Virtex II.

    Los chips Spartan 3 estn disponibles en tamaos de 1728 hasta 74 880 LE y mas

    1.8M bits de memoria.

    Aplicaciones de los CPLD y FPGA.

    Actualmente la alta densidad, alta velocidad y ventajas de costo han impulsado el uso

    de los FPLDs (as se llaman los CPLD y FPGA juntos) en una amplia variedad de los

    diseos.

    La nueva generacin de FPLDs puede tener cerca de 10 millones de puertas y la

    frecuencia del Clock de 1 GHz.

  • 35

    Un FPLD puede reemplazar el diseo con los mltiples chips de la vieja tecnologa.

    Adems, los FPLDs se utilizan en reas de procesamiento digital de seal (DSP),

    procesamiento de imagen, aplicaciones de multimedia, comunicaciones de alta

    velocidad y en equipos de red como routers y switches, en implementacin de

    protocolos de bus tales como interconexin de componentes perifricos (PCI), en

    circuitos de interfase de procesadores (llamados glue lgic), coprocesadores y

    microcontroladores perifricos.

    Algunos grandes FPLDs con una red de interconexin adicional son usados para

    construir Emuladores de Hardware. Emuladores de Hardware son dispositivos

    comerciales diseados especialmente para probar complejos diseos de hardware que

    luego sern implementados como dispositivos Full Custom tales como

    microprocesadores, por ejemplo.

    Algunos de los recientes microprocesadores de Intel y AMD fueron probados en

    Emuladores de Hardware antes de iniciar su produccin.

    La ms nueva rea de aplicacin de los FPLDs es clculo reconfigurable. En clculo

    reconfigurable los FPLDs son rpidamente reprogramados o reconfigurados mltiples

    veces durante la operacin para habilitarlos a realizar diferentes clculos en diferentes

    momentos para una aplicacin particular.

    Criterios de seleccin del FPLD.

    Hemos analizado dos tipos de PLDs complejos que son apropiados para la

    implementacin de circuitos lgicos grandes, con mas de 20 000 puertas.

    Muchas de estas aplicaciones pueden ser realizadas tanto con CPLDs como con

    FPGAs.

    La eleccin de un FPLD no es tarea fcil porque en la misma influyen gran cantidad de

    parmetros cuya importancia depende de las caractersticas que debe poseer el

    Sistema Digital que se quiere implementar.

    Por ejemplo, hay sistemas en los que la frecuencia de trabajo es un parmetro crtico,

    mientras que en otros lo es el costo.

    Inicialmente para algunos diseos los CPLDs proporcionaban las velocidades

    ligeramente ms grandes que los FPGAs. Pero actualmente las velocidades de los

    FPGAs son cada vez mayores, adems, pueden soportar circuitos ms grandes.

  • 36

    El conjunto de los parmetros que pueden ser analizados para la eleccin de un FPLD

    adecuado pueden ser clasificados en tres categoras:

    1. Parmetros tcnicos, que incluyen

    Arquitectura interna

    Frecuencia mxima de operacin

    Tecnologa del PLD

    Verificabilidad

    Fiabilidad

    Proteccin de la propiedad intelectual

    Encapsulado

    2. Parmetros de diseo, que incluyen

    Herramientas de CAD

    Servicio tcnico del fabricante

    3. Parmetros comerciales, que incluyen

    Costos

    Disponibilidad

    Estabilidad en el mercado

    Varios fabricantes han introducido diferentes arquitecturas CPLD y FPGA casi al

    mismo tiempo. Mientras Xilinx es el lder en los FPGAs, el campo de los CPLDs es

    dominado por varios fabricantes. Altera es el fabricante mas importante de los CPLDs.

    Lattice y Cypress son otros importantes fabricantes de los CPLDs.

    Bibliografa.

    1. S. Brown, Z. Vranesic. Fundamentals of Digital Logic with VHDL design.

    McGraw Hill. 2000.

    2. J. F. Wakerly. Digital Design, Principles & practices.

    Prentice Hall. 2001.

    3. J.O.Hamblen, M.D. Furman. Rapid prototyping of Digital Systems.

    Kluwer Academic Publishers. 2001.

    4. E. Mandado, L.J. Alvarez, M.D. Valdes. Dispositivos Lgicos Programables.

    Thomson. 2002.

    5. G. Jaquenod. Tcnicas de diseo lgico.

    Intectra Inc. 1999.