domingo, 30 de junio de 2013

Arquitectura de la FPGA




Básicamente  una FPGA ((Field Programmable Gate Array)  está estructurada  por un gran número de bloques lógicos configurables ( Formado por los Slices) interconectados a través de canales de enrutamiento también programables y todo el arreglo se encuentra  rodeado de bloques de entradas y salidas (I/O Pads).
  En los Slices se realiza la mayor parte dela funcionalidad de la FPGA y suelen estar agrupados de 2 en 2 o de 4 en 4 formando los  bloques lógicos configurables (CLBs). Dentro de este componente encontramos los módulos LUT, registros y multiplexores programables en un número que depende de familia de FPGA, y tal como se muestra en la siguiente figura:

Los elementos programables más importantes en el  Slice  son los generadores reprogramables de función lógica, realizadas por las denominadas LUT (Look-up Table) o tablas de búsqueda, que son celdas de memoria SRAM  volátiles  y multiplexores para seleccionar la salida.
 Veamos, por ejemplo,  una LUT para una función  F = X1' X2 + X1 X2'  =  X1 xor X2
 La LUT  se puede simplificar en su gráfica:
            
Se pueden tener LUTs de 3 o más variables.Veamos, por ejemplo una de tres variables que genera la función  F =   X3  X4    +    X3 X4' X5'

Observe que para generar la tabla en la RAM, la función simplificada debe expandirse en mintérminos.
En este caso, se hace:  X3 X4 = X3 X4 X5' + X3 X4 X5
Supongamos ahora que se desea implementar la función F = (X1 xor X2) + (  X3  X4    +    X3 X4' X5')
Expandiendo queda así:  F =  X1´ X2    +    X1 X2´  +    X3  X4 X5'     +    X3 X4' X5'   +   X3 X4 X5

Para su implementación se necesitan la LUT de 2 entradas que realiza la compuerta XOR, la LUT de 3 entradas, y otra LUT de 2 entradas para la OR requerida.


Luego :  F =  X1´ X2    +    X1 X2´  +    X3  X4 X5'     +    X3 X4' X5'   +   X3 X4 X5 se genera así:

Las LUTS  tal como se trabajan físicamente en la FPGA se muestran en la siguiente figura:
Observe que se implementan Multiplexores de 4 a 1, de 8 a 1, y de 16 a 1, utilizando sólo multiplexores 2/1.
Los bloques de Entrada/Salida de las FPGAs cumplen la misma función que las macroceldas de salida en otros dispositivos lógicos programables,  como las  CPLD o las GAL, pero con más controles lógicos, entre los que se incluyen, configuraciones de entrada y salida combinacionales o registradas, alta impedancia, elementos de retardo, controlesanalógicos y otros.
Según se dijo ya cada bloque lógico CLB en la FPGA se encuentra incrustado en la estructura de interconexión, que se componen en realidad de cables con conexiones programables para ello.

La FPGA Spartan 3E  de Xilinx   dispone además de diversos dispositivos embebidos como memorias, multiplicadores, DCMs (administradores de reloj), etc.
La programación de la FPGA se hace vía JTAG,un acrónimo para Joint Test Action Group (Grupo de acción conjunta de prueba).
La interfaz JTAG es un conector de 4 hilos:
  1. TDI (Entrada de Datos de Testeo)
  2. TDO (Salida de Datos de Testeo)
  3. TCK (Reloj de Testeo)
  4. TMS (Selector de Modo de Testeo)

  Ya que posee una sola línea de datos, el protocolo es necesariamente serial, como el Serial Peripheral Interface. La entrada de la señal de reloj es por el pin TCK. La configuración del dispositivo se realiza manipulando una máquina de estados de un bit empleando el pin TMS. Un bit de datos es cargado en TDI y otro sacado en TDO por cada pulso de reloj de la señal TCK.