¿Para qué se utilizan los CI lógicos programables de diferente complejidad?

10

La lógica programable se puede implementar en su widget en muchos espectros diferentes, desde quemar algunas puertas o usar un MUX hasta el último FPGA con microcontrolador incorporado y periféricos IO, sin mencionar el GPIO PrimeCell de ARM u otros ejemplos más específicos . ¿Para qué aplicaciones se utilizan los diversos niveles de complejidad de dispositivos lógicos programables? Aunque la agrupación parece combinarse cerca de los extremos de sus definiciones , creo que esta es una lista aceptable:

  1. PAL / PLA / GAL : matriz lógica programable; parece estar listado como'Embebido - PLD'en Digikey, cubriendo E / S asíncrona 10/8 (ATF16V8C) a 50MHz, 192 macroceldas (CY7C341B), y son en su mayoría reprogramables.
  2. CPLD : Dispositivo lógico programable complejo; Digikey los enumera como tales, disponibles en 7.5ns 10 E / S (ATF750C) a 233 MHz, 428 E / S "CPLD en densidades FPGA" (CY39100V484B).
  3. FPGA : matriz de puerta programable en campo; disponible en 58 E / S (XC2064) a 1023 E / S BGA bestias (EP1S80F1508C7N).
  4. FPGA con MCU duro : esto es cuando una MCU se presenta físicamente en el FPGA IC, no se emula.

Cita de Wikipedia:

La diferencia entre los FPGA y los CPLD es que los FPGA se basan internamente en tablas de búsqueda (LUT), mientras que los CPLD forman las funciones lógicas con puertas de mar (por ejemplo, la suma de productos). Los CPLD están diseñados para diseños más simples, mientras que los FPGA están diseñados para diseños más complejos. En general, los CPLD son una buena opción para aplicaciones lógicas combinacionales amplias, mientras que los FPGA son más adecuados para máquinas de estado grandes (es decir, microprocesadores).

Esto no explica la diferencia entre usar un CPLD de 233 MHz, 400 E / S y un FPGA comparable ; o entre un 192 macrocell PLD y un CPLD comparable . No puedo obtener pautas confiables para limitar las opciones de diseño. Tenga en cuenta que actualmente no tengo una aplicación específica en mente, pero a menudo me he preguntado, "¿qué usaría para hacer eso?"

He recibido excelentes consejos fuera del sitio con respecto a requisitos específicos, pero sigo pensando que esta pregunta podría beneficiarse de algunos ejemplos que muestran preferencia sobre una familia de PLD cuando otra puede parecer igual o más adecuada.

tyblu
fuente
El XC2064 es una parte antigua. No sé si CY7C341B y CY39100V484B todavía están hechos. Debe considerar eso al hacer cualquier comparación / decisión.
Brian Carlton
2
Para su información, con cualquiera de estas partes, hay una gran diferencia entre la variedad de ofertas que los fabricantes ponen en su literatura, y la variedad mucho más pequeña de combinaciones de conteo de puerta / paquete / velocidad y temperatura que realmente puede esperar tener en sus manos. pequeñas cantidades en menos de medio año de tiempo de entrega. Entonces, al diseñar con ellos, primero verifique la disponibilidad real. Incluso si sé que la compra quiere obtenerlos de la distribución, prefiero elegir dispositivos en los que sé que un proveedor más orientado a los prototipos realmente los tiene a mano para pasar la noche si es necesario.
Chris Stratton
Buen consejo, @ChrisStratton. Esto suele ser lo primero que verifico con la mayoría de las partes, pero aún así es bueno saber que es especialmente problemático con los PLD.
tyblu

Respuestas:

7

Hay dos criterios que puede usar para evaluar un proyecto digital que lo ayudan a decidir qué parte se ajusta mejor a sus criterios. El primero es el tamaño / complejidad del diseño: cuánta lógica está involucrada. El segundo es los requisitos de entrada y salida en términos de recuento de pines. La velocidad puede tenerse en cuenta si puede estimar cuál sería su función más lenta. Las herramientas del proveedor (Altera Quartus II, Xilinx ISE, etc.) lo ayudarán una vez que llegue al estadio correcto.

  • PAL / PLA / GAL: están destinados a reemplazar circuitos de tamaño pequeño a mediano que normalmente podría implementar como chips lógicos LSI (series 7400, 4000). Estos pueden ofrecer mejores diseños de placa debido a la reasignación de E / S y muchas funciones lógicas simples. Estos chips contienen memoria no volátil (o fusibles programables únicos) y no requieren tiempo de configuración de encendido. Es posible que no contengan elementos de almacenamiento de datos.

  • CPLD: Estos son primos más grandes del PLA. Los diseños pueden ser máquinas de estado pequeñas, o incluso un núcleo de microprocesador muy simple. La mayoría de los chips CPLD que he visto no tienen ninguna SRAM en chip, aunque el gran Cypress CPLD que vinculó sí. Es más probable que los CPLD sean reprogramables con memoria flash, y tampoco requieren tiempo de configuración en el encendido.

  • FPGA: a diferencia del CPLD, los bloques lógicos se basan en SRAM en lugar de memoria flash, lo que resulta en operaciones lógicas más rápidas. El principal inconveniente de los FPGA es que, dado que la configuración se almacena en SRAM, cada vez que se enciende el dispositivo, el FPGA debe cargar su programación en este SRAM. Dependiendo del tamaño de su diseño y la velocidad de su almacenamiento no volátil, esto puede causar un retraso notable desde el encendido hasta su pleno funcionamiento. Algunos FPGA tienen flash en chip para almacenar sus datos, pero la mayoría usa chips de memoria separados. Los FPGA a menudo tendrán multiplicadores cableados, PLL y otras funciones lógicas para mejorar la velocidad informática. También hay disponibles grandes bloques de RAM en chip. También podrá usar especificaciones de E / S de alto rendimiento como LVDS, PCI y PCI-Express.

  • FPGA con microprocesador Hard Core: no estoy familiarizado con estos, pero me imagino que su diseño se centraría en la programación del microcontrolador, y el FPGA aumentaría el microcontrolador. Las partes que identificó hacen que parezca que comenzaría su diseño con un microcontrolador y un FPGA, y luego combinaría los dos en un chip / paquete.

Cómo decidir cuál es el adecuado para usted:

La mejor manera es tener su código (Verilog / VHDL) terminado, y luego usar las herramientas del proveedor para tratar de encajarlo en la parte más pequeña posible. Sé que la herramienta de Altera le permite cambiar los objetivos de programación con bastante facilidad, para que pueda seguir eligiendo FPGA más pequeños y luego CPLD más pequeños hasta que su uso de diseño se acerque a aproximadamente el 75%. Si necesita rendimiento, intente elegir dispositivos que tengan características (multiplicadores rápidos) que disminuyan los requisitos de velocidad de la lógica. Una vez más, las herramientas del proveedor lo ayudarán a identificar si necesita actualizar o si puede degradar.

Otro factor de qué parte usar es la facilidad de uso. Usar la lógica PAL / PLA / GAL es probablemente más esfuerzo que construir la función usando puertas lógicas discretas (74HC *, 4000, etc.). Los CPLD generalmente requieren solo un voltaje de suministro único y no requieren circuitos adicionales. Son efectivamente independientes. Los FPGA comienzan a usar múltiples fuentes de alimentación para E / S y el núcleo lógico, estándares complejos de E / S, memoria de programa separada, PCB de varias capas (> 2) y paquetes BGA.

Los pasos para reducir sus requisitos de diseño incluirían:

  1. Identifique todas las entradas y salidas para su FPGA / CPLD. Esto suele ser una parte fácil de la etapa de diseño. De esta manera, sabrá qué paquete está mirando y qué tan cerca puede cortarlo a ese margen.

  2. Dibuja un diagrama de bloques de la lógica interna. Si sus bloques parecen simples (cada bloque tendría un puñado de puertas lógicas y registros), entonces probablemente pueda usar un CPLD. Sin embargo, si sus bloques tienen etiquetas como "Transceptor Ethernet", "Interfaz PCI-Express x16", "Controlador DDR2" o "Codificación / Decodificación h264", entonces seguramente está viendo un FPGA y utilizando HDL.

  3. Mire y vea si sus interfaces tienen requisitos especiales de E / S, como voltajes especiales, LVDS, DDR o SERDES de alta velocidad. Es más fácil obtener un chip que lo admita que obtener un chip traductor adicional.

Ejemplos de aplicaciones CPLD:

  • PWM multicanal con interfaz SPI
  • Expansor de E / S
  • Decodificación de espacio de direcciones de CPU
  • Relojes (cronometraje)
  • Multiplexores de pantalla
  • DSP simple
  • Algunos programas simples se pueden convertir en un diseño CPLD

Ejemplos de aplicaciones de FPGA para aficionados:

  • Pequeños diseños de sistema en chip (SoC)
  • Vídeo
  • Puentes de protocolo complejo
  • Procesamiento de la señal
  • Cifrado / descifrado
  • Emulación de sistema heredado
  • Analizador lógico / generador de patrones

Para la mayoría de los trabajos de aficionado, estará limitado a FPGA relativamente pequeños, a menos que desee soldar paquetes BGA. Elegiría entre un CPLD grande o un FPGA barato, y los requisitos de tamaño / velocidad determinarían cuál necesitaba.

W5VO
fuente
Extendiendo un poco su respuesta, me inclinaría a agrupar PAL / PLA / GAL en la misma canasta que PLD / CPLD por el inicio instantáneo sin tiempo de configuración, y que los proveedores están comenzando a impulsar los CPLD por delante de PAL / PLA / Dispositivos GAL. Por ejemplo, estoy trabajando con algunos dispositivos de red y su familia IC de CPLD es significativamente más barata y ofrece más puertas que los primos PAL / GAL / PLA. El costo de este último es prohibitivo para lo que ofrecen en comparación con el primero.
smashtastic
La línea definitivamente se está borrando un poco. No pensé que PAL / PLA / GAL tenían elementos de almacenamiento, o CLPD tenían SRAM hasta que busqué las partes tyblu enumeradas. Parece que los PAL / PLA / GAL son más como cinta de pato en un diseño que como una parte central.
W5VO
3

Una buena lista de "regla general" sería algo como esto:

  • PAL / PLA / GAL: utilizado en lugar de puertas lógicas de IC discretas en una PCB
  • CPLD: se utiliza donde se requieren tareas complejas, que no sean DSP y posiblemente críticas (cargar código de arranque en un FPGA desde la memoria, generador de onda sinusoidal LUT para DAC, etc.)
  • FPGA: se utiliza cuando se requiere capacidad de tiempo crítico, multiplicación o DSP (filtros FIR, FFT, etc.)
  • FPGA con MCU duro: se usa cuando se requiere la funcionalidad FPGA y se debe acceder a los periféricos en el FPGA (sensores temporales) o para permitir que una tarea menos sensible al tiempo se implique en C en lugar de VHDL por simplicidad (funcionalidad de puerto serie / UART, Limpieza de PCB, etc.)
Joel B
fuente
Con un CPLD barato por poco dinero, PAL / PLA / GAL están prácticamente muertos, excepto por las aplicaciones heredadas.
Chris Stratton
No discutiré eso. Solo pude imaginar que posiblemente donde la baja potencia (batería) / tamaño pequeño es una restricción, aún podrían usarse, ya que podrían ser más ventajosos que un CPDL, pero aún usaría el CPLD más pequeño / eficiente en energía si fuera mi diseño.
Joel B
2

Una respuesta simple podría ser que hay dos formas:

1. Primero diseñas tu sistema en un alto nivel de abstracción (por ejemplo, HDL o esquemas). Luego intenta ajustarlo en PAL / CPLD / FPGA y elige los que satisfagan sus requisitos (número de compuertas / elementos lógicos, rendimiento, etc.) y luego elige el más barato de estos dependiendo de lo que defina más barato (costo de desarrollo vs Costo de producción, etc.

2. Pero, por lo general, antes de comenzar cualquier codificación HDL o desarrollo esquemático, ya puede estimar la complejidad del sistema (cuántas compuertas necesita, si parece que necesita MCU de 8 bits o MCU de 32 bits, o ningún microcontrolador en todos). En base a eso, también puede elegir su dispositivo programable. Esto sería menos preciso, pero permitirá diseñar su hardware analógico y digital no programable en paralelo con el hardware y software programable (si corresponde).

Halst
fuente
2

Se utiliza el FPGA con núcleo duro ya que es menos área que un microcontrolador separado y más rápido que un microprocesador de núcleo blando. Sin embargo, el precio suele ser peor que un FPGA y un microcontrolador separado. En general, el software y, por lo tanto, un microcontrolador es mejor para casos (relativamente) lentos y raros, como la configuración de parámetros y el manejo de errores; La lógica es mejor para procesos continuos. Por ejemplo, en el procesamiento de paquetes, la escritura en una memoria debe ser lógica; El manejo del tiempo de vida debe permanecer en el software.

Dentro del espacio FPGA hay piezas baratas / de baja potencia y piezas caras / rápidas. En general, el microcontrolador solo está en el costoso; Esto hace que el comercio de costos versus un MCU discreto sea aún peor para la solución en FPGA.

Nadie usa PAL en nuevos diseños, al menos por más de 10 años. Los CPLD se han apoderado de ese nicho.

En los últimos 5? años, los CPLD son como FPGA en su interior, pero con memoria para mantener la configuración en el chip. Dado que los FPGA ahora son de 100 MHz, la velocidad es una razón mucho menor para poner lógica en un CPLD que hace 10-15 años. Sin embargo, los FPGA todavía tienen otras características como multiplicadores, serializadores y muchos recuerdos que pueden forzar un diseño en uno, incluso si no tiene tanta lógica.

Brian Carlton
fuente
1
Una razón para mantener un CPLD es que los CPLD actuales de bajo costo todavía se fabrican en tecnologías de voltaje de suministro único, mientras que la mayoría de los FPGA actuales requieren varios voltajes de suministro. Entonces, si no necesita hacer mucho, es más barato poner un cpld en el tablero, pero si está hablando de un CPLD grande, un fpga de gama baja puede ser más barato y darle más espacio para mejoras futuras, especialmente si ya tiene los suministros de voltaje de núcleo disponibles por alguna otra razón.
Chris Stratton
Gracias por responder, @BrianCarlton, y los comentarios, @ChrisStratton. Los ejemplos dados y la opinión actual son una gran información.
tyblu