Así son los CPLD, la alternativa de menor coste a los FPGA

Los FPGA se han hecho famosos en los últimos años ya que tienen multitud de aplicaciones distintas y son la lógica programable por excelencia. Pero estos tienen una contrapartida en los CPLD, los cuales son mucho mejores para ciertas tareas y a la vez mucho más baratos. ¿Qué son los CPLD y en qué se diferencian de los FPGA?

Para entender lo que son los CPLD antes de nada hemos de entender la evolución que ha tenido el hardware y en concreto la integración del mismo en el tiempo. Debemos entender la integración como la unión progresiva de varios dispositivos en uno solo aprovechando el crecimiento en el número de dispositivos o transistores por área.

Integración de la circuitería a través del tiempo

Chips TTL

Los primeros ordenadores eran inmensos, realmente ocupaban más de una habitación en muchos casos. ¿El motivo de ello? Las arquitecturas se construían con multitudes de chips llamados TTL o chips 7400 en honor a la serie de Texas Instruments que era la más utilizada. ¿En qué consistían? Pues en elementos básicos para la construcción de circuitos, los cuales podían ir desde simples puertas lógicas a sistemas secuenciales como un contador binario. Los diseños se hacían conectando varios de estos elementos hasta obtener una arquitectura concreta.

Pero el avance de lo que llamamos la Ley de Moore trajo consigo mayores densidades en cuanto a transistores y la capacidad de integrar circuiterías enteras de varios chips TTL en un solo chip. A finales de los 60 se empezó a hablar de la integración a gran escala, LSI, que consistía en poder integrar en un solo chip diseños de 1000 a 10000 transistores. Este nivel de escala permitió que lo que antes era una CPU compuesta por varios chips distintos se unificará en una sola. De ahí salieron las primeras CPUs para ordenadores domésticos como los Intel 8080 y su clon de Zilog el Z80, el MOS 6502 y el Motorola 6800.

Pero al igual que los «mini» ordenadores, tan grandes como una nevera o incluso como un armario, las nuevas CPU requerían el uso de circuitería adicional para acelerar ciertas tareas. Los primeros modelos empezaron a utilizar chips TTL para ciertas funciones, pero con el tiempo se adoptó también la integración de circuiterías enteras en un solo chip como había pasado con las CPUs. Esto llevó a la creación de la lógica programable, con la que las empresas aceleraban la construcción de la circuitería que acompañaba al procesador.

Al principio no había lógica programable, sino ROMS

Técnicamente una ROM solo sirve para almacenar datos que solo se pueden leer, pero se pueden crear chips de función fija haciendo uso de ROMS. Un chip de función fija es aquel que realiza siempre la misma tarea sobre unos datos de entrada que sí que pueden variar.

¿Cómo se implementa una función fija en una ROM? Sencillo, al igual que en la memoria RAM esta tiene un descodificador que selecciona un dato de salida. Realmente no está calculando nada, pero por ejemplo a partir de conocer cuál es el resultado de ciertas operaciones aritméticas o de ciertas funciones estos se pueden codificar como salidas en una ROM y acelerar ciertos cálculos.

¿El problema? En una ROM no podemos codificar el funcionamiento de la lógica combinacional y tampoco la secuencial, por lo que pronto se hizo necesario la creación de un tipo lógica más compleja para integración de la circuitería y con ello la reducción de costes.

PLA y PAL, los antecesores de los CPLD

PLA antecesor CPLD

La evolución al uso de las ROMS para la integración de función fija fue la creación de los Programmable Logic Arrays o PLA,  Se trata de un dispositivo compuesto por una serie de puerta lógicas AND que se encuentran enlazadas a una serie de puertas OR y teniendo cada una de ellas una complementaria NOT para invertir el resultado. Con ello se pueden crear funciones de lógica combinacional que empiezan con el uso de una puerta AND o NAND y para terminar con una puerta OR. Los circuitos PLA tienen N entradas que corresponden a N puertas lógicas AND y M salidas que corresponden a las puerta lógicas OR.

PLA antecesor CPLD

Otro tipo de lógica programable eran los llamados PAL, Programmable Array Logic, donde pese a la similitud del nombre no funcionaban igual ya que las puertas OR eran fijas y no programables y por tanto eran menos versátiles, pero mucho más baratos.

ZX80 vs ZX81

¿El impacto tanto del uso de las PAL como de las PLA? Fue bastante importante, ya que permitió la implementación de circuitos combinacionales y secuenciales en un solo chip. Por ejemplo los sistemas de vídeo que se basaban en multitud de chips TTL pasaron a integrarse en un solo procesador. Dos ejemplos claros del uso de los chips PAL y PLA se encuentra por un lado en el Sinclair ZX81 respecto al ZX80 y en el sistema de vídeo del Apple Macintosh, donde consiguieron integrar toda la circuitería de vídeo en un solo chip, reduciendo los costes frente al Apple Lisa creado por la propia Apple.

Pero los PAL y los PLA pronto se quedaron desfasados y con el tiempo fueron apareciendo nuevos tipos de lógica programable. A día de hoy los que más destacan son los FPGA, pero no son los más utilizados, sino los CPLD.

¿Qué es un CPLD y cómo se compara con un FPGA?

CPLD FPGA comparados

Un CPLD, cuyas siglas significan Complex Programmable Logic Device, al igual que un FPGA es un tipo de lógica programable, pero cuyo funcionamiento deriva de las ROMS, los PLA y los PAL. Por lo que su arquitectura y funcionamiento es totalmente distinto al de los FPGA.

A través de las diferencias con un FPGA entenderéis que son los CPLD y donde y como se utilizan.

  • Los FPGA están mejor preparados para simular hardware que depende del tiempo, ciclos de reloj, mientras que un CPLD está más pensado para lo que con circuitos combinacionales y que por tanto no dependen de una secuencia de pasos por ciclo.
  • En un CPLD el tiempo que tarda una función sintetizada en el mismo será siempre el mismo, en un FPGA no. De ahí a que se utilicen los CPLD para diseñar circuitería combinacional.
  • Los FPGA están pensados como productos de muy alta gama y por tanto con un alto coste. Los CPLD al contrario.
  • Los FPGA pueden funcionar a velocidades de reloj mucho más altas que un CPLD.
  • Un FPGA necesita ser reprogramado cada vez que es encendido, ya que se desprograma al apagarse, un CPLD funciona como una ROM y no va a perder su configuración al apagarse el dispositivo. Esto significa que los FPGA se basan en memoria RAM en su arquitectura y los CPLD en memoria ROM.

Por lo que nunca vamos a ver algo complejo como una CPU implementado en un CPLD, dado que no están pensados para ello. A día de hoy los CPLD se suelen integrar dentro de placas de desarrollo FPGA, por lo que es común combinar ambos tipos de circuitería programable.

¿Cómo funciona un CPLD?

Un CPLD en el fondo no es más que una versión mejorada y por tanto más compleja de un dispositivo PLD. ¿Qué son los dispositivos PLD? Los hemos dicho antes y son los que en su día eran conocidos como PLA.

Un CPLD no es más que una serie de PLA como función de entrada, pero sus puertas OR no generan una salida, sino que su salida es distribuida a través de una matriz que conecta con otra serie de funciones PLA, las cuales pueden dar un resultado de salida o retroalimentar en dirección contraría.

En un CPLD por tanto, todas las funciones lógicas posibles se encuentran codificadas en los diferentes PLA que se van combinando para conseguir así la función final que se quiere obtener. En general en diseño de nuevos procesadores los CPLD se utilizan tanto para simular la lógica combinacional como la función fija, mientras que los FPGA se utilizan para la lógica secuencial y elementos más complejos como son por ejemplo las ALUs.  Como curiosidad, las unidades de descodificación instrucciones de CPUs y GPU se suelen implementar primero en CPLD, dado que en el fondo no son más que circuitos combinacionales.

¡Sé el primero en comentar!