Una LUT de dos entradas (tabla de búsqueda) se puede representar genéricamente de esta manera:
Una LUT consiste en un bloque de SRAM que está indexado por las entradas de la LUT. La salida de la LUT es cualquier valor que esté en la ubicación indexada en su SRAM.
Aunque pensamos que RAM normalmente se organiza en palabras de 8, 16, 32 o 64 bits, SRAM en FPGA tiene 1 bit de profundidad. Entonces, por ejemplo, una LUT de 3 entradas usa una SRAM 8x1 (2³ = 8)
Como la RAM es volátil, el contenido debe inicializarse cuando se enciende el chip. Esto se realiza transfiriendo el contenido de la memoria de configuración a la SRAM.
La salida de un LUT es lo que quieras que sea. Para una puerta AND de dos entradas,
Address In ([1:0]) Output
0 0 0
0 1 0
1 0 0
1 1 1
Para su segundo ejemplo, solo cambia la tabla de verdad:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 0
1 1 0
y finalmente, A xor B:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 1
1 1 0
Por lo tanto, no es la misma LUT en cada caso, ya que la LUT define la salida. Obviamente, el número de entradas a una LUT puede ser mucho más de dos.
La LUT se implementa realmente usando una combinación de los bits SRAM y un MUX:
Aquí los bits en la parte superior 0 1 0 0 0 1 1 1 representan la salida de la tabla de verdad para este LUT. Las tres entradas al MUX a la izquierda a, byc seleccionan el valor de salida apropiado.