jueves, 6 de diciembre de 2007

FPGA

FPGA

Las FPGA conforman actualmente la máxima evolución de los PLDs (Programmable Logic Device), definidos éstos como circuitos integrados en los que se pueden programar ecuaciones lógicas booleanas, tanto combinatorias como secuenciales. Existen actualmente una gran variedad de estos chips, y algunos de ellos pueden contener hasta 10,000 compuertas lógicas.
Así mismo, las FPGA (Field Programmable Gate Array) son circuitos lógicos programables directamente por el usuario, lo cual requiere de herramientas de costo relativamente bajo, como lo son el software de desarrollo y el dispositivo grabador. La grabación o programación de uno de estos dispositivos se puede llevar a cabo en milisegundos.
Básicamente, es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad se puede programar. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una compuerta lógica o un sistema combinacional hasta complejos sistemas en un chip. Históricamente las FPGAs surgen como una evolución de los conceptos desarrollados en las PLAs (Programmable Logic Array ) y los CPLDs (Complex Programmable Logic Device).
Una jerarquía de interconexiones programables permite a los bloques lógicos de una FPGA ser interconectados según la necesidad del diseñador del sistema. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que la FPGA puede desempeñar cualquier función lógica necesaria.
Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de las FPGA con microprocesadores y periféricos relacionados, para formar un sistema programable en un chip. Además, muchas FPGA modernas soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la computación reconfigurable, o los sistemas reconfigurables.

1. FPGA versus otras tecnologías


• FPGA versus CPLD
Ambos son chips de lógica digital pero ellos tienen diferentes características. Las FPGAs contienen hasta 100 mil bloques lógicos, mientras que los CPLD contienen a lo sumo 100 bloques lógicos, ambos con flip-flops. Además, las FPGAs pueden contener funciones aritméticas como sumadores, comparadores y memoria RAM; lo que conlleva a contener diseños digitales grandes. Sin embargo, los CPLDs poseen tiempos de entrada/salida más rápidos que las FPGA.

• FPGA versus Microcontrolador
Los microcontroladores están basados en una arquitectura CPU y ejecutan las instrucciones de una manera secuencial. En contra parte, las FPGAs son dispositivos de lógica programable y el algoritmo se ejecuta de una manera paralela.

• FPGA versus ASIC
Los FPGA son muy utilizados por fabricantes que producen tecnología a baja escala, los cuales no pueden justificar la producción de ASICs (Circuito Integrado de Aplicación Específica) por los bajos volúmenes de dispositivos que venden. Los FPGAs tienen una funcionalidad similar, a costos menores y con una velocidad ligeramente menor, sin embargo tienen un mayor consumo de potencia y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGAs tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisisión son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor. También los FPGAs se utilizan como prototipos, los cuales se pueden depurar y permiten refinar el diseño. Con el software de diseño se puede simular en hardware antes de mandar a fabricar el ASIC correspondiente.

2. Evolución de los CPLDs hacia las FPGAs

Las FPGAs son inventadas en el año 1984 por Ross Freeman, co-fundador de Xilinx, y surgen como una evolución de los CPLDs.
Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si se mide la densidad de los elementos lógicos programables en compuertas lógicas equivalentes, se puede decir que en un CPLD se encuentran por el orden de decenas de miles de compuertas lógicas y en una FPGA por el orden de cientos de miles hasta millones de ellas.
Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van hacia un número reducido de biestables síncronos (también denominados flip-flops). Sin embargo, la arquitectura de las FPGAs, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad.
Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de alto nivel, como sumadores, multiplicadores e incluso hasta DSP (Digital Signal Processor), embebidas en la propia matriz de interconexiones, así como bloques de memoria.

3. Arquitectura General de las FPGAs

Una FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí y con celdas de entrada/salida mediante canales de conexión verticales y horizontales, tal como muestra la figura 1. En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de rutado varía de un fabricante a otro.




Figura 1: Arquitectura básica de un FPGA

La estructura de una FPGA, comparada con la de un CPLD, es mucho más regular, y se encuentra más orientada a diseños que manejan mayores transferencias de datos y registros, en tanto que los CPLD implementan más eficientemente diseños con una parte combinacional más intensa. La figura 2 muestra a primera vista la estructura correspondiente de cada dispositivo.



Figura 2: Esquema de bloques de la arquitectura interna de una CPLD y una FPGA

Cada bloque lógico de un CPLD tiene su propia parte combinacional que permite realizar un gran número de funciones lógicas programables, más un biestable asociado al pin de entrada/salida. Por su parte, la arquitectura de la FPGA cuenta también con un bloque lógico con una parte combinacional y una parte secuencial. La parte combinacional es mucho más simple que la existente en una CPLD, mientras que la parte secuencial posee uno o dos biestables, que no están generalmente asociados a un pin de entrada/salida, pues los bloques lógicos se distribuyen regularmente en todo el dispositivo.

3.1 Bloques Lógicos Configurables (CLB)

El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una señal de reloj externa e implementar registros.
La parte combinacional varía de un fabricante a otro. A continuación, explicaremos dos de ellas, representativas porque poseen prestaciones opuestas.
· Bloque lógico basado en LUT (look-up table): Una LUT es un componente de células de memoria SRAM que almacena una tabla de verdad, como el de la figura 3. Las direcciones de las células son las entradas de la función lógica que se quiere implementar, y en cada celda de memoria se guarda el resultado para cada una de las combinaciones de las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas.


Figura 3: Bloque lógico basado en LUT


· Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, como el de la figura 4, se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o, para el mismo número de bloques disponer de más espacio para incrementar los recursos de rutado. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos.




Figura 4: Bloque lógico basado en multiplexores


Como se dijo anteriormente, la estructura de los bloques lógicos y las formas en que éstos pueden ser interconectados, tanto salidas como entradas de los bloques, varía de acuerdo al fabricante. En general un bloque lógico tiene menos funcionalidad que la combinación de sumas de productos y macroceldas de un CPLD, pero como cada FPGA tienen una gran cantidad de bloques lógicos, es posible implementar grandes funciones utilizando varios de ellos en cascada.

3.2 Interconexión entre bloques lógicos

Además de los bloques lógicos, también es importante la tecnología utilizada para crear las conexiones entre los canales, tecnología de programación. Las más importantes son las siguientes:
· Antifusible (Antifuse): Una FPGA que utiliza este tipo de tecnología sólo se puede programar una sola vez, y utilizan algo similar a un fusible para las conexiones. La diferencia entre un fusible y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el segundo se produce una conexión cuando son programados, por lo que normalmente se encuentran abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos.
· SRAM (StaticRAM): Estas guardan la configuración del circuito, es decir, que las SRAM son utilizadas como generadores de funciones y además son usadas para controlar multiplexores, que están incluidos en las FPGAs, y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de configuración en el momento de encendido del circuito que contiene la FPGA, ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las celdas SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria es transferida a los bloques e interconexiones de la FPGA mediante el proceso de configuración el cual es generalmente automático, dado que la propia FPGA contiene un circuito interno que se encarga de hacer toda la programación.
· Flash: Las FPGAs basadas en celdas flash recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables, no obstante la velocidad de programación es más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan dispositivos auxiliares para guardar la configuración interna, como en el caso de la SRAM .

Una FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas entradas y salidas en comparación con el número de compuertas que contiene el bloque. Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores. Este tipo de FPGA generalmente utiliza tecnología antifusible.
Por otra parte, una FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas, en comparación con el número de compuertas que existe en el bloque. Este es el caso del bloque lógico basado en LUTs, que permiten implementar cualquier función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM.
Con respecto a las FPGAs basadas en celdas Flash, éstas suelen emplear un bloque lógico sencillo para incrementar los recursos de rutado, como ocurre con las FPGAs de antifusibles.
Finalmente, una arquitectura con bloques pequeños permite utilizar todos los recursos del dispositivo, sin embargo se tiene que utilizar un gran número de éstos para poder implementar funciones lógicas de varios términos, lo cual genera un tiempo de retardo por cada bloque implementado. Cuando el tamaño del bloque es grande sucede lo contrario, en este tipo de bloques es posible utilizar un gran número de compuertas lo que permite implementar funciones lógicas de varios términos con pocos bloques. El hecho de que el tamaño del bloque sea grande no afecta la frecuencia máxima de trabajo, ya que existe una gran cantidad de compuertas que pueden ser utilizadas en la función en forma paralela, siendo el mismo tiempo de retardo para todas. Sin embargo, cuando las funciones son pequeñas en comparación con el tamaño del bloque, no es necesario utilizar todas las compuertas que soporta el bloque, por lo que este tipo de bloques no son precisamente las más indicadas para desempeñar pequeñas funciones.

3.3 Bloques entrada/salida (IOB)

Al igual que en los CPLDs, la función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como:
• Salidas configurables como TRI-STATE u open-collector.
• Entradas con posibilidad de pull-up o pull-down programables.
• Registros de salida.
• Registros de entrada.





Figura 5: Bloque entrada/salida (IOB) de XC4000


En la Figura 5 tenemos como ejemplo un diagrama en bloques simplificado de un bloque de entrada/salida de la familia 4000 de las FPGA de Xilinx.


3.4 Tiempos de propagación

El cálculo de los retardos incluidos en un diseño basado en FPGAs no es tan fácil de predecir como en el caso de un CPLD. La propia estructura matricial de estos circuitos hace difícil saber cuantas celdas básicas, interconexiones programables o bloques de entradas/salida se utilizan para cada señal. Esto hace necesario conocer cómo se ha realizado la interconexión entre los bloques en el dispositivo para tener un conocimiento exacto de los retardos de propagación debidos a cada uno.
Debido a este factor, las herramientas de desarrollo para FPGAs suelen incluir un analizador de tiempos, que sirve para calcular tiempos de set-up, de clock-to-output, y sobre todo dar una estimación de la frecuencia máxima de operación.

4. Programación

La tarea del programador es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.
El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una FPGA. Un diseño se puede llevar a cabo, ya sea como un diagrama esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especializados son conocidos como HDL (Hardware Description Language), siendo los más utilizados:
VHDL
Verilog
ABEL

4.1 VHDL
Es el acrónimo que representa la combinación de VHSIC (Very High Speed Integrated Circuit) y HDL. Es un lenguaje textual de alto nivel, definido por el IEEE (ANSI/IEEE 1076-1993), utilizado para la descripción del hardware de los sistemas digitales. Entre sus principales características se pueden mencionar:
• Lenguaje estándar.
• Soporte de las principales compañías proveedoras de herramientas CAD (Diseño Asistido por Computadora).
• Existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.
• Flexibilidad de implementación en circuitos integrados, el código VHDL es portable entre herramientas, aunque normalmente es necesario hacer ajustes según el dispositivo o la tecnología.
• Es un lenguaje popular cuyo número de usuarios sigue aumentando.

4.2 Verilog
Algunas veces llamado Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción.
• Más compacto que el lenguaje VHDL, menos detallado.
• Semejante al lenguaje C.
• No tiene estructuras, apuntadores o funciones recursivas.
• El concepto de tiempo, muy importante en un HDL, no se encuentra definido.
• Difiere de los lenguajes de programación convencionales, en que la ejecución de las sentencias no es estrictamente lineal. Un diseño en Verilog consiste de una jerarquía de módulos. Los módulos son definidos con conjuntos de puertos de entrada, salida y bidireccionales. Internamente un módulo contiene una lista de cables y registros. Las sentencias concurrentes y secuenciales definen el comportamiento del módulo, describiendo las relaciones entre los puertos, cables y registros. Las sentencias secuenciales son colocadas dentro de un bloque begin/end y ejecutadas en orden secuencial, pero todas las sentencias concurrentes y todos los bloques begin/end son ejecutadas en paralelo en el diseño. Un módulo puede contener una o más instancias de otro módulo para definir un sub-comportamiento.

4.3 ABEL:
Es el acrónimo de Advanced Boolean Expression Language. Es un lenguaje de descripción de hardware y un conjunto de herramientas de diseño para programar dispositivos lógicos programables (PLDs). Entre sus principales características se cuentan:
• Permite describir un diseño concurrentemente mediante tablas de verdad o ecuaciones lógicas.
• Permite la programación secuencial con máquinas de estados.
• Permite definir vectores de prueba, patrones de entradas y salidas, que pueden ser programados en el hardware. La estructura de los vectores de prueba es similar a la de las tablas de verdad.

Tradicionalmente, los PLDs eran programados sólo utilizando lenguajes de programación especializados, sin embargo en fechas recientes han surgido herramientas que ofrecen métodos adicionales de programación, como por ejemplo, la plataforma de programación gráfica LabVIEW integra también un módulo para desarrollo de proyectos en FPGAs.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.

5. Aplicaciones

Cualquier circuito de aplicación específica puede ser implementado en una FPGA, siempre y cuando ésta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan las FPGA incluyen a los DSP, radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.

6. Fabricantes

A principios del año 2007, el mercado de las FPGA se ha colocado en un estado donde hay dos productores de FPGA de propósito general que están a la cabeza del mismo, y un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos de capacidades únicas.
Xilinx es uno de los dos grandes líderes en la fabricación de FPGA.
Altera es el otro gran líder.
Lattice Semiconductor lanzó al mercado dispositivos FPGA con tecnología de 90nm. En adición, Lattice es un proveedor líder en tecnología no volátil, FPGA basadas en tecnología Flash, con productos de 90nm y 130nm.
Actel tiene FPGAs basados en tecnología Flash reprogrammable. También ofrece FPGAs que incluyen mezcladores de señales basados en Flash.
QuickLogic tiene productos basados en antifusibles (programables una sola vez).
Atmel es uno de los fabricantes cuyos productos son reconfigurables (el Xilinx XC62xx fue uno de éstos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado.
Achronix Semiconductor tienen en desarrollo FPGAs muy veloces
MathStar, Inc. ofrecen FPGA que ellos llaman FPOA (Arreglo de objetos de matriz programable).

6.1 Xilinx:
Entre las principales series de FPGA de Xilinx tenemos:


+ Series Virtex: Se pueden emplear los dispositivos de esta serie para reemplazar ASICs en muchas aplicaciones, incluyendo redes alámbricas e inalámbricas, telecomunicaciones, almacenamiento, servidores, computación, video, imagen, médico, industrial y de defensa. Dentro de esta serie tenemos las familias de FPGA Virtex-5, Virtex-4, Virtex-II Pro, Virtex-II, and Virtex-E

+ Series Spartan: Hasta 5 millones de compuertas y hasta 784 puertos de entrada/salida y 344 pares de entrada/salida diferencial. Tecnología de impedancia controlada digitalmente XCITE. La tecnología de 90 nm reduce el tamaño y el costo, incrementando la eficiencia de manufactura. Ideales para diseños que requieren FPGA de bajo costo para aplicaciones de procesamiento digital de señales tales como radio militar, cámaras de supervisión o vigilancia, imágenes médicas. Muy útil para aplicaciones donde se requiere de una alta densidad lógica. Dentro de esta serie tenemos las familias de FPGA Spartan-3A DSP, Spartan-3AN, Spartan-3A, Spartan-3E, Spartan-3, Spartan-IIE, Spartan-II, Spartan/XL. Cada familia tiene un área de aplicación específica como procesamiento digital de señales, memoria no volátil, entre otros.


6.2 Altera





+ Serie Cyclone: Poseen hasta 120 mil elementos lógicos y hasta 535 pines de entrada/salida. Dentro de esta serie tenemos las familias de FPGA Cyclone III, Cyclone II y Cyclone. El dispositivo Cyclone III posee 4Mbits de memoria embebida dedicada a circuitería de interfaz de memoria externa, PLLs y capacidades de entrada/salida diferencial de alta velocidad. Los dispositivos de esta serie son de baja potencia, alta funcionalidad y bajo costo, y además se pueden utilizar en aplicaciones tales como: automotriz, despliegue y procesamiento de imágenes, militares, video, e inalámbrico.

+ Serie Stratix: Poseen hasta 79 mil compuertas, 1200 pines de entrada/salida, 7 Mbits de memoria RAM, 22 bloques de DSP, 176 multiplexores embebidos, optimizados para aplicaciones complejas que requieren alto flujo de datos, interfaces de comunicaciones de alta velocidad incluyendo los estándares 10G Ethernet XSBI, SFI-4, POS-PHY Level 4 (SPI-4 Phase 2), HyperTransport, RapidIO™ y UTOPIA IV. Ofrece una solución de administración de reloj completa con una estructura de reloj jerárquica y hasta 18 PLLs. Los dispositivos de esta serie ofrecen funcionalidad dedicada para administración del reloj y para aplicaciones con DSP, además de soportar estándares de entrada/salida en modo single-ended y diferencial, permite actualizaciones remotas vía una comunicación de red, utiliza la tecnología on-chip-termination que mejora la calidad de la señal de salida Son ampliamente utilizadas en aplicaciones aeroespaciales y militares donde se requiere un amplio rango de temperatura de operación. Dentro de esta serie tenemos las familias de FPGA Stratix III, Stratix II GX y Stratix II.

6.3 Lattice
Entre las priciplaes series de este fabricante se encuentran:
+ Serie SC: Ofrece las mejores soluciones en la clase de alto rendimiento como las normas de Ethernet, PCI Express, SPI4.2 y controladores de memoria de alta velocidad. Está equipada con la memoria embebida. Tiene hasta 12 bloques ASIC embebidos por dispositivo con una variedad de bloques IP antes de la ingeniería.

+ Serie XP2: Tiene dispositivos que combinan un Look up Table (LUT), basado en la fabricación de FPGA con celdas de Flash no volátil en una arquitectura denominada flexiFLASH. El flexiFLASH ofrece ventajas tales como el encendido instantáneo, el almacenamiento sobre el chip con bloques de memoria FlashBAK embebidos y memoria serial TAG y el diseño de seguridad.

+ Serie XP: Tiene dispositivos que utilizan una combinación de celdas FLASH no volátiles y la tecnología SRAM para ofrecer una solución de un solo chip de apoyo de "encendido instantáneo" puesta en marcha y reconfigurable infinitamente. No volátil, reprogrammable FPGAs son muy adecuadas para la aplicación de la lógica del sistema en una amplia variedad de mercados tales como las comunicaciones, los consumidores, la industria, la informática, militar y de automoción. Estos son especialmente adecuados cuando existe un requisito de encendido instantáneo, la reducción de partes de conteo, de alta seguridad o de programación en tiempo real.
+ Serie ECP2: Redefine a las familias de bajo costo de la categoría FPGA, con las mejores características. Mediante la integración de características y capacidades que anteriormente sólo disponían las de mayor costo (FPGAs de alto rendimiento), ahora las FPGA amplían la gama de aplicaciones que también se pueden aprovechar en la de los bajos costos (FPGAs).



6.4 Actel

+ Serie Fusion: poseen una circuitería de señal mixta con hasta 1.5 millones de compuertas. Ofrecen una serie de características que permiten implementar funciones atractivas como manejo de potencia, generadores de reloj, controladores de motores y cargadores de batería inteligentes, además de las aplicaciones típicas de las FPGAs. Estos dispositivos integran un convertidor analógico-digital de aproximaciones sucesivas de 12 bits, con velocidades de muestreo de hasta 600,000 muestras por segundo, así como memoria flash embebida (hasta 1Mbyte), entre otras funciones

+ Serie ACT 1: poseen hasta 2000 arreglos de compuertas con 69 puertos de entrada/salida, hasta 273 flip-flops, velocidades de datos de hasta 75 MHz, la tecnología de programación que emplean es antifusible, ofrece un sistema de diseño que da capacidades de prueba y diagnóstico sobre el chip, provee de una distribución eficiente del reloj. Los puertos de entrada/salida son programables por el usuario y son capaces de maneja niveles TTL y CMOS.

+ Serie ACT 2: poseen hasta 8000 arreglos de compuertas con 69 puertos de entrada/salida, hasta 998 flip-flops con 1232 módulos lógicos programables, velocidades de datos de hasta 75 MHz,

+ Serie Accelerator: posee hasta 10 mil arreglos de compuertas con 228 pines de entrada/salida programables, hasta 1153 flip-flops dedicados. Los dispositivos contienen cuatro redes de distribución de reloj, incluyendo un arreglo dedicado y relojes entrada/salida, soportando diseños asíncronos y síncronos. Dentro de esta serie tenemos la familia ACT 3.

+ Serie Integrator: poseen hasta 40 mil compuertas lógicas con 288 pines de entrada/salida programables por el usuario. El amplio número de elementos de almacenamiento puede direccionar eficientemente aplicaciones con requerimientos de manipulación de amplias trayectorias de datos, tales como telecomunicaciones, redes y DSP.

6.5 QuickLogic

El PolarPro tecnología FPGA se ha diseñado con el propósito de satisfacer la lógica del sistema de interconexión y las aplicaciones portátiles. A través de una nueva e innovadora arquitectura lógica de celdas, con memoria embebida y control de la lógica avanzada del reloj de control de la gestión de unidades, el PolarPro posee una arquitectura de síntesis fácil, de modo que el costo es ultra efectivo para los nuevos diseños.


7. Metodología de diseño

El proceso de diseño lógico con PLDs, en este caso empleando una FPGA, se resume en tres grandes etapas:
• Diseño lógico
• Implementación del diseño
• Verificación del diseño.
Dentro del diseño lógico, los pasos involucrados son los mismos que en cualquier diseño digital, combinatorio o secuencial, y se pueden subdividir en los siguientes:
• Definir el problema.
• Generar un diagrama a bloques.
• Obtener la tabla de la verdad.
• Derivar las ecuaciones lógicas que describen la operación del diseño.
Por su parte, la implementación del diseño consiste en seleccionar y usar las herramientas, tanto de hardware y software, necesarias para la traducción de los resultados a un mapa de fusibles para la programación del chip. Esta fase consiste en:
• Selección de la FPGA.
• Crear el archivo de ecuaciones.
• Correr el software para generar el archivo mapa de fusibles.
• Configurar el programador universal.
• Programar el chip
La etapa final consiste en la verificación del diseño en donde la correcta programación de la FPGA es comprobada, por medio de técnicas de simulación. Los pasos de la verificación son:
• Generación de vectores de prueba.
• Simulación del funcionamiento de la FPGA en la computadora.
• Prueba funcional del dispositivo.
• Documentación del diseño.

8. Conclusiones

La importancia de los dispositivos lógicos programables radica en el hecho de que la mayoría de los equipos electrónicos modernos incluyen en su diseño PLDs, por lo que todo profesional relacionado con el mantenimiento o fabricación de equipo electrónico deberá dominar dicha metodología.
Los PLDs combinan muchos de los beneficios de la lógica discreta, utilización de circuitos integrados comerciales TTL o CMOS, con la gran ventaja de implementar circuitos a la medida del cliente. Entre otras ventajas de esta tecnología son:
• Diseño sencillo
• Alto rendimiento
• Fiabilidad
• Ahorro en costo
• Reprogramación
• Seguridad
En consecuencia, los circuitos lógicos programables tienen un gran campo de aplicación en la implementación de circuitos lógicos de todo tipo.
Entre la amplia gama de PLDs tenemos a laa FPGAs, que son utilizadas para diseños que manejan una mayor transferencia de datos y registros; además permiten implementar dentro de ellas memorias del tipo RAM, ROM, FIFO, etc, a través de sus bloques de memoria.
La elección de la familia de FPGA a utilizar dependerá de la cantidad de lógica combinacional (compuertas), la cantidad de lógica secuencial (flip-flops) y por supuesto la cantidad de memoria a implementar. También un factor a tener en cuenta son los tiempos de propagación internos, asimismo la cantidad de pines del dispositivo.