sábado, 18 de octubre de 2014

Lógica progamable (I): Que es y porque usar una FPGA no es ir contra el espítiru del retro

Voy a contar lo que es una FPGA, y espero que se entienda que usarlas no es ir contra el retro, sino que son los dispositivos que va a salvar a la larga nuestra afición.

Un transistor es como una resistencia variable que se controla por una señal. Su uso es sencillo de entender, y quiero advertir que la siguiente explicación no es técnica sino para que se entienda, si sabes como funciona un transistor sáltatelo (o ríete sin piedad).

Un transistor tiene tres patas, colector, base y emisor. En su comportamiento como amplificador, si disponemos de una fuente de alimentación que proporciona 30 voltios y la conectamos al colector, y por la base introducimos una señal cuyo voltaje varía entre 0 y 3 voltios, en el emisor aparece una señal idéntica, pero amplificada en el rango de 0 a 30 voltios.

Pero también pude funcionar de otra manera, como conmutador. Si en el colector tenemos una fuente de 5 voltios, y en la base metemos menos de 2 voltios, en el emisor no hay corriente, pero si ponemos entre 2 y 5 voltios, en el emisor aparecen los 5 voltios de la fuente. De esta manera el transistor se comporta como un interruptor controlado por una señal externa.

Los transistores pueden disponer de varias entradas de base, o combinarse varios entre entre sí, y de esta forma se forman las puertas lógicas, según la familia (TTL, CMOS, RTL, etc.) se varía su tipo y combinan de una u otra forma los transistores, para formar las puertas lógicas. Las tres puertas básicas son:
  • NOT de una entrada, un inversor, si en su entrada hay 0 voltios en su salida hay 5, y si en su entrada hay 5 voltios en su salida hay cero.
  • AND con dos entradas, si ambas son de 5 voltios hay 5 voltios en su salida, en cualquier otro caso hay 0.
  • OR con dos entradas, si en alguna de las dos o en ambas hay 5 voltios en su salida hay 5 voltios, y 0 voltios si ambas son cero.
Luego hay combinaciones, NAND y NOR añaden una puerta NOT a la salida, XOR combina AND y OR, etc.

Una puerta por tanto es una combinación de transistores, diodos, resistencias y condensadores, se puede usar directamente estos componentes como en la segunda generación de ordenadores.

Tener que usar tantos transistores era muy complejo, por lo que con el nacimiento de los circuitos integrados se introdujeron en chips, agrupando los componentes en puertas.

Aun simplificando el diseño con las puertas, hacía falta un buen puñado de ellas para formar los procesadores, y se consiguió unir un montón de puertas en un chip. Un procesador es un chip en el que hay un montón de puertas lógicas en su interior, podemos hablar de miles (hoy día de millones), que se comportan de una forma organizada para que en función de sus entradas que aparezca una salida. Por tanto los procesadores son combinaciones preestablecidas de puertas lógicas. A esto se le llama lógica cableada, ya que las puertas han sido cableadas entre sí y no se puede alterar.

Tras la memoria de vídeo debe existir algo que tome el valor de la memoria y lo convierta en una señal de vídeo que entienda un monitor, para lo que existen unos chips auxiliares que con un criterio de temporización muy estricto leen la memoria, a partir de ella generan los puntos para el barrido de la pantalla, y la envían a la salida de vídeo. En un ordenador antiguo eso se hacía con chips, entre 15 y 30 chips se dedicaba solo a esto, en un ZX80 por ejemplo hay un montón de chips para esto (en total 21 chips entre procesador, rom, memoria, etc). De aquí surgieron los chips gráficos, que simplificaban esto agrupando todos los componentes en un solo chip, por eso en un ZX81 hay muchos menos chips (4 en total), todos se agruparon en la ULA (agrupa 17 chips en su interior).

Alrededor del procesador se ubica la memoria, y para el acceso a la misma se requiere de unas puertas que habiliten los chips de memoria a usar en cada momento, en función de las señales del procesador, en un gomas son los 4 chips que están en la parte superior, entre la ULA y el procesador. Pero en los modelos posteriores se unieron estos 4 chips en uno solo, agrupando las funciones se consigue reducir el número de chips.

El problema que encontraron los diseñadores es que para estos nuevos chips que combinaban otros hacía falta hacer diseños específicos, y pronto buscaron soluciones para desarrollar un chip genérico con muchas puertas lógicas, que se pudiera configurar de forma sencilla y así en lugar de desarrollar chips a medida, lo que era caro, se diseñaron chips genéricos con las puertas sin enlazar entre sí, que se configuraban para combinarse en la forma que deseara el fabricante de ordenadores, por lo que se simplificó y abarató mucho el diseño de estos nuevos chips.

Los primeros se debían configurar en fábrica durante su producción, lo que se llama "programación con máscara" (programación como sinónimo de configuración, no hay un programa en su interior, solo puentes que conectan las puertas). La ULA del spectrum es un ejemplo de este tipo de chips configurados en fábrica.

Luego se diseñaron chips cuyas puertas podían enlazarse aplicando una señal eléctrica, por lo que los fabricantes de ordenadores compraban los chips en blanco y los configuraban con un "programador", similar a uno para las EPROM (nuevamente ni en estos ni en las EPROM hay un programa, se usa programar como sinónimo de configurar). Así nacieron las PAL (Programable Array Logic, matriz lógica programable) con un conjunto de puertas AND sin configurar y las PLA (Programable Logic Array, lógica programable en matriz), en las que había un conjunto de puertas AND y OR, ambos sistema se podían configurar solo una vez quedando fijas para siempre, y luego surgieron las GAL (Generic Array Lógic, matríz lógica genérica) que son un tipo de PLA que se pueden borrar y volver a configurar varias veces, hay GAL que añaden flip-flop a la salida para conseguir una lógica mas flexible.

En estos dispositivos las vías entre las puertas (esto nuevamente es una simplificación para que se entienda) dispone de un tipo especial de diodo, que mediante una corriente mas alta de los habitual se puede polarizar en sentido directo o inverso, una vez configurados pueden permitir o impedir el paso de la corriente a su través, por lo que se cablea el dispositivo.

Hoy día los dispositivos lógicos modernos son las FPGA y sus hermanas pequeñas las CPLD. En ambos dispositivos disponemos de una enorme matriz de puertas, que podemos unir como se desee, formando cualquier combinación de puertas lógicas, por lo que reemplazan directamente a las PAL, PLA y GAL con ventajas, ya que no hay planos AND/OR, sino puertas genéricas que podemos combinar como deseemos. Pero al ser de gran tamaño, pueden configurarse para reemplazar a cualquier chip, incluyendo los procesadores con sus miles de puertas.

En su interior no se ejecuta un programa que simule un comportamiento, sino que hay un circuito electrónico operativo, que es igual al de los chips a los que reemplaza, solo que usa otro tipo de componentes.

Tras toda esta explicación, que espero seguir ampliando, lo que deseo es que penséis que una FPGA o un CPLD no emulan nada, sino que son chips iguales a los demás, solo que se pueden configurar de millones de formas diferentes, pudiendo reemplazar a cualquier otro chip existente. Esto les hace ser el futuro de nuestra afición, si un chip deja de fabricarse se puede reemplazar por uno de estos dispositivos (eso ya pasa en muchas placas arcade), que es un reemplazo fiel del original, aunque internamente no tenga la misma estructura, el resultado es que si deseamos arreglar un Spectrum con la ULA estropeada, o si el procesador 6502 de nuestro Apple II muere, podemos reemplazarlo por algo que hará exactamente lo mismo, no emulando sino reemplazando al original.

1 comentario:

  1. Pues muchas gracias por esta entrada Javu, muy instructivo. La verdad es que no conocía tu blog pero es una pequeña joyita.
    Yo jamás había oído hablar de GALs, PALs, PLAs, CPLD o FPGA hasta que entré en los retro-foros y sinceramente no tenía nada claro. Ahora por fin, ya se de que estamos hablando y si alguien comenta podré entender al menos a qué se refiere.

    ResponderEliminar