Un CPLD (Complex Programmable Logic Device) es un dispositivo electrnico. Un CPLD se
forma con mltiples bloques lgicos, cada uno similar a un PLD. Los bloques lgicos se comunican entre s utilizando una matriz programable de interconexiones, lo cual hace ms eficiente el uso del silicio, conduciendo a una mejor eficiencia a menor costo. A continuacin se explican brevemente las principales caractersticas de la arquitectura de un CPLD. Una FPGA (del ingls Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lgica cuya interconexin y funcionalidad puede ser configurada 'in situ' mediante un lenguaje de descripcin especializado. La lgica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lgica o un sistema combinacional hasta complejos sistemas en un chip.
Tips CPLD Un CPLD contiene mltiples bloques lgicos, cada uno similar a una pequea PLD tipo 22V10. Componentes: Logic Block; Programmable Interconnect; I/O Conecta seales de salida de Bloques Lgicos con entradas de otros Bloques lgicos Interconexin por matriz Altamente flexible Ocupa ms rea y consume mayor potencia Interconexin con multiplexor Hay un multiplexor por cada entrada del un Bloque Lgico
FPGA Matriz de Bloques Lgicos Configurables (CLB): Cada bloque posee una complejidad similar a una PAL Bloques de entrada-salida (IOB): Conectan la patillas externas del integrado con la lgica interior Lneas de interconexin: Conectan entre s los bloques CLB FPGA implementan los diseos con estructuras multinivel Los CLB de las FPGAs se implementan con: Transistores, Puertas lgicas bsicas (NAND de dos entradas, XOR, etc), Multiplexores, Look-up tables (LUT), Estructuras AND-OR
Mega Tips Los CPLD mayor nivel de integracin ya que permite implementar sistemas ms eficaces, ya que utilizan menor espacio, mejoran la fiabilidad del diseo, y reducen costos. Un CPLD se forma con mltiples bloques lgicos, cada uno similar a un PLD. las FPGAs tienen las ventajas de ser reprogramables (lo que aade una enorme flexibilidad al flujo de diseo), sus costes de desarrollo y adquisicin son mucho menores para pequeas cantidades de dispositivos y el tiempo de desarrollo es tambin menor. Una jerarqua de interconexiones programables permite a los bloques lgicos de un FPGA ser interconectados segn la necesidad del diseador del sistema, Conclusin Una PLD utilizan estructuras de dos niveles AND-OR para implementar la lgica y una FPGA implementan los diseos con estructuras multinivel
Las CPLDs como las FPGAs contienen un gran nmero de elementos lgicos programables. Recomendacin Se puede utilizar cualquiera de estos dispositivos para cualquier desarrollo o aplicacin electrnica
FPGA (Field Programmable Gate Array)
Una Spartan de Xilinx. Una FPGA (del ingls Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lgica cuya interconexin y funcionalidad puede ser configurada 'in situ' mediante un lenguaje de descripcin especializado. La lgica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lgica o un sistema combinacional hasta complejos sistemas en un chip. Las FPGAs se utilizan en aplicaciones similares a los ASICs sin embargo son ms lentas, 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 aade una enorme flexibilidad al flujo de diseo), sus costes de desarrollo y adquisicin son mucho menores para pequeas cantidades de dispositivos y el tiempo de desarrollo es tambin menor. Ciertos fabricantes cuentan con FPGAs que slo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los ASICs y las FPGAs reprogramables. Histricamente las FPGA surgen como una evolucin de los conceptos desarrollados en las PAL y los CPLD.
Historia Las FPGA son el resultado de la convergencia de dos tecnologas diferentes, los dispositivos lgicos programables (PLDs [Programmable Logic Devices]) y los circuitos integrados de aplicacin especfica (ASIC [Application-Specific Integrated Circuit]). La historia de los PLDs comenz con los primeros dispositivos PROM (Programmable Read-Only Memory) y se les aadi versatilidad con los PAL (Programmable Array Logic) que permitieron un mayor nmero de entradas y la inclusin de registros. Esos dispositivos han continuado creciendo en tamao y potencia. Mientras, los ASIC siempre han sido potentes dispositivos, pero su uso ha requerido tradicionalmente una considerable inversin tanto de tiempo como de dinero. Intentos de reducir esta carga han provenido de la modularizacin de los elementos de los circuitos, como los ASIC basados en celdas, y de la estandarizacin de las mscaras, tal como Ferranti fue pionero con la ULA (Uncommitted Logic Array). El paso final era combinar las dos estrategias con un mecanismo de interconexin que pudiese programarse utilizando fusibles, antifusibles o celdas RAM y celdas ROM, como los innovadores dispositivos Xilinx de mediados de los 80. Los circuitos resultantes son similares en capacidad y aplicaciones a los PLDs ms grandes, aunque hay diferencias puntuales que delatan antepasados diferentes. Adems de en computacin reconfigurable, las FPGAs se utilizan en controladores, codificadores/decodificadores y en el prototipado de circuitos VLSI y microprocesadores a medida. El primer fabricante de estos dispositivos fue Xilinx [2] y los dispositivos de Xilinx se mantienen como uno de los ms populares en compaas y grupos de investigacin. Otros vendedores en este mercado son Atmel, Altera, AMD y Motorola.
Caractersticas Una jerarqua de interconexiones programables permite a los bloques lgicos de un FPGA ser interconectados segn la necesidad del diseador del sistema, algo parecido a un breadboard (es una placa de uso genrico reutilizable o semi permanente) programable. Estos bloques lgicos e interconexiones pueden ser programados despus del proceso de manufactura por el usuario/diseador, as que el FPGA puede desempear cualquier funcin lgica necesaria. Una tendencia reciente ha sido combinar los bloques lgicos e interconexiones de los FPGA con microprocesadores y perifricos relacionados para formar un Sistema programable en un chip. Ejemplo de tales tecnologas hbridas pueden ser encontradas en los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o ms procesadores PowerPC embebidos junto con la lgica del FPGA. El FPSLIC de Atmel es otro dispositivo similar, el cual usa un procesador AVR en combinacin con la arquitectura lgica programable de Atmel. Otra alternativa es hacer uso de ncleos de procesadores implementados haciendo uso de la lgica del FPGA. Esos ncleos incluyen los procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de cdigo abierto LatticeMicro32 y LatticeMicro8. Muchos FPGA modernos soportan la reconfiguracin parcial del sistema, permitiendo que una parte del diseo sea reprogramada, mientras las dems partes siguen funcionando. Este es el principio de la idea de la computacin reconfigurable, o los sistemas reconfigurables.
Programacin En la FPGA no se realiza programacin tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una funcin especfica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una funcin lgica tipo AND, OR, XOR. La labor del "programador" es describir el hardware que tendr la FPGA. Por consiguiente, la tarea del "programador" es definir la funcin lgica que realizar cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos. El diseador cuenta con la ayuda de entornos de desarrollo especializados en el diseo de sistemas a implementarse en un FPGA. Un diseo puede ser capturado ya sea como esquemtico, o haciendo uso de un lenguaje de programacin especial. Estos lenguajes de programacin especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripcin de hardware). Los HDLs ms utilizados son: VHDL Verilog ABEL En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rpido, y para validar un diseo en HDL, existen varias propuestas y niveles de abstraccin del diseo. Los niveles de abstraccin superior son los funcionales y los niveles de abstraccin inferior son los de diseo al nivel de componentes hardware bsicos. Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de programacin grfica de alto nivel.
Aplicaciones Cualquier circuito de aplicacin especfica puede ser implementado en un FPGA, siempre y cuando esta disponga de los recursos necesarios. Las aplicaciones donde ms comnmente se utilizan los FPGA incluyen a los DSP (procesamiento digital de seales), radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imgenes para medicina, sistemas de visin para computadoras, reconocimiento de voz, bioinformtica, emulacin 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. Existe cdigo fuente disponible (bajo licencia GNU GPL) 1 de sistemas como microprocesadores, microcontroladores , filtros, mdulos de comunicaciones y memorias, entre otros. Estos cdigos se llaman cores.
Tecnologa de la memoria de programacin Las FPGAs tambin se pueden diferenciar por utilizar diferentes tecnologas de memoria: Voltiles: Basadas en RAM. Su programacin se pierde al quitar la alimentacin. Requieren una memoria externa no voltil para configurarlas al arrancar (antes o durante el reset). No Voltiles: Basadas en ROM. Hay de dos tipos, las reprogramables y las no reprogramables. 1. Reprogramables: Basadas en EPROM o flash. stas se pueden borrar y volver a reprogramar aunque con un lmite de unos 10.000 ciclos. 2. No Reprogramables: Basadas en fusibles o antifusibles. Solo se pueden programar una vez, lo que las hace poco recomendables para trabajos en laboratorios. Ejemplo de tarjeta de desarrollo que incorpora una FPGA 2 :
Fabricantes Desde principios de 2007, hay dos grandes productores de FPGA de propsito general, adems de un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos con caractersticas nicas. Xilinx es uno de los dos grandes lderes en la fabricacin de FPGA. Altera es el otro gran lder. Lattice Semiconductor lanz al mercado dispositivos FPGA con tecnologa de 90nm. Adems, Lattice es un proveedor lder en tecnologa no voltil, FPGA basadas en tecnologa Flash, con productos de 90nm y 130nm. Actel tiene FPGAs basados en tecnologa Flash reprogrammable. Tambin ofrece FPGAs que incluyen mezcladores de seales 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 estos, pero no estn siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado. Achronix Semiconductor a travs de tecnologa de Intel de 22 nm, su catlogo incluye dispositivos FPGA de hasta 1.5 GHz
CPLD
Un CPLD (del acrnimo ingls Complex Programmable Logic Device) es un dispositivo electrnico. Los CPLD extienden el concepto de un PLD (del acrnimo ingls Programmable Logic Device) a un mayor nivel de integracin ya que permite implementar sistemas ms eficaces, ya que utilizan menor espacio, mejoran la fiabilidad del diseo, y reducen costos. Un CPLD se forma con mltiples bloques lgicos, cada uno similar a un PLD. Los bloques lgicos se comunican entre s utilizando una matriz programable de interconexiones, lo cual hace ms eficiente el uso del silicio, conduciendo a una mejor eficiencia a menor costo. A continuacin se explican brevemente las principales caractersticas de la arquitectura de un CPLD.
Arquitectura Matriz de Interconexiones Programables
Procesador de un CPLD de la marca Altera. La matriz de interconexiones programables (PIM) permiten unir los pines de entrada/salida a las entradas del bloque lgico, o las salidas del bloque lgico a las entradas de otro bloque lgico o inclusive a las entradas del mismo. La mayora de los CPLDs usan una de dos configuraciones para esta matriz: interconexin mediante bloques o interconexin mediante multiplexores. El primero se basa en una matriz de filas y columnas con una celda programable de conexin en cada interseccin. Al igual que en las GAL esta celda puede ser activada para conectar/desconectar la correspondiente fila y columna. Esta configuracin permite una total interconexin entre las entradas y salidas del dispositivo o bloques lgicos. Sin embargo, estas ventajas provocan que disminuya el rendimiento del dispositivo, adems de aumentar el consumo de energa y el tamao del componente. En la interconexin mediante multiplexores, existe un multiplexor por cada entrada al bloque lgico. Las vas de interconexin programables son conectadas a las entradas de un nmero de multiplexores por cada bloque lgico. Las lneas de seleccin de estos multiplexores son programadas para permitir que sea seleccionada nicamente una va de la matriz de interconexin por cada multiplexor la cual se propagara a hacia el bloque lgico. Cabe mencionar que no todas las vas son conectadas a las entradas de cada multiplexor. La rutabilidad se incrementa usando multiplexores de mayor tamao, permitiendo que cualquier combinacin de seales de la matriz de interconexin pueda ser enlazada hacia cualquier bloque lgico. Sin embargo, el uso de grandes multiplexores incrementa el tamao de dispositivo y reduce su eficiencia.
Bloques Lgicos Un bloque lgico es similar a un PLD, cada uno pose un bloque de compuertas AND y OR en forma de suma de productos, una configuracin para la distribucin de estas sumas de productos, y macroceldas. El tamao del bloque lgico es una medida de la capacidad del CPLD, ya que de esto depende el tamao de la funcin booleana que pueda ser implementada dentro del bloque. Los bloques lgicos usualmente tienen de 4 a 20 macroceldas.
Macroceldas Las macroceldas de un CPLD son similares a las de un PLD. Estas tambin estn provistas con registros, control de polaridad, y buffers para salidas en alta impedancia. Por lo general un CPLD tiene macroceldas de entrada/salida, macroceldas de entrada y macroceldas internas u ocultas (buried macrocells), en tanto que un 22V10 tiene solamente macroceldas de entrada/salida. Una macrocelda interna es similar a una macrocelda de entrada/salida, slo que esta no puede ser conectada directamente a un pin de salida. La salida de una macrocelda interna va directamente a la matriz de interconexin programable.
Celda de entrada/salida La funcin de una celda de entrada/salida es permitir el paso de una seal hacia dentro o hacia el exterior del dispositivo. Dependiendo del fabricante y de la arquitectura del CPLD estas celdas pueden o no ser consideradas parte del bloque lgico.
CPLD MAX 7000 Su Arquitectura de un CPLD es la forma en que estn organizados y a la disposicin a los elementos internos del dispositivo. Son similares al diagrama de bloque de un CPLD genrico, Teniendo la estructura clsica PAL/GAL que nos permite generar las funciones suma de producto. Su densidad vara entre dos bloques LAB y 16 bloques LAB, dependiendo del dispositivo concreto de la serie que se vaya a utilizar. 1
Un bloque LAB es similar a un SPLD y que el tamao de los encapsulados varan entre 44 y 208 pines, cabe mencionar que utilizan una tecnologa de proceso basada en EEPROM. Las versiones que se pueden programar dentro del sistema para ello se utilizan la interfaz estndar JTAG. 2
Fabricantes de CPLD Altera Atmel Cypress Semiconductor Lattice Semiconductor Xilinx