¿Qué es una LUT en FPGA?

He pasado por varias fuentes ... Pero no estoy muy seguro de qué es. Quiero una puerta y el equivalente lógico es dos entradas que se alimentan a una puerta y para Y = AB 'el equivalente lógico se alimenta a una puerta no y uno y puerta. Pero es la misma LUT para AND e Y=AB'. Creo que almacenamos los valores como se desee en la LUT. Alguien elabora sobre esto

¿Alguna razón por la que no has aceptado una respuesta?

Respuestas (2)

Una LUT , que significa LookUp Table , en términos generales es básicamente una tabla que determina cuál es la salida para cualquier entrada dada. En el contexto de la lógica combinacional, es la tabla de verdad . Esta tabla de verdad define efectivamente cómo se comporta su lógica combinatoria.

En otras palabras, cualquier comportamiento que obtenga al interconectar cualquier cantidad de puertas (como AND, NOR, etc.), sin rutas de retroalimentación (para garantizar que no tenga estado), puede implementarse mediante una LUT.

La forma en que las FPGA implementan típicamente la lógica combinatoria es con LUT, y cuando la FPGA se configura, solo completa los valores de salida de la tabla, que se denominan "LUT-Mask", y se componen físicamente de bits SRAM. Entonces, la misma LUT física puede implementar Y=AB e Y=AB', pero la LUT-Mask es diferente, ya que la tabla de verdad es diferente.

También puede crear sus propias tablas de búsqueda. Por ejemplo, podría crear una tabla para una función matemática compleja, que funcionaría mucho más rápido que calcular el valor siguiendo un algoritmo. Esta tabla se almacenaría en RAM o ROM.

Esto nos lleva a ver las LUT simplemente como memoria, donde las entradas son la dirección y las salidas correspondientes son los datos almacenados en la dirección dada.

Aquí hay una instantánea de FPGA Architecture de Altera:

ingrese la descripción de la imagen aquí

Una LUT (tabla de búsqueda) de dos entradas se puede representar genéricamente así:

ingrese la descripción de la imagen aquí

Una LUT consta de un bloque de SRAM 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 la RAM normalmente se organiza en palabras de 8, 16, 32 o 64 bits, la SRAM en FPGA tiene 1 bit de profundidad. Entonces, por ejemplo, una LUT de 3 entradas usa una SRAM 8x1 (2³ = 8)

Debido a que la RAM es volátil, los contenidos deben inicializarse cuando se enciende el chip. Esto se hace transfiriendo el contenido de la memoria de configuración a la SRAM.

La salida de una 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 x o B:

Address In ([1:0])      Output

     0  0                 0
     0  1                 1
     1  0                 1
     1  1                 0

Entonces 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.

El LUT en realidad se implementa usando una combinación de 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 esta LUT. Las tres entradas al MUX a la izquierda a, b y c seleccionan el valor de salida apropiado.

ingrese la descripción de la imagen aquí

Gracias por eso... Pero estoy recibiendo preguntas muy básicas aquí. bits de sram? Conozco SRAM... pero ¿bits de SRAM? ¿Memoria de configuración? y ¿podría explicar cómo se implementarán Y=AB,Y=AB' e Y=A xor B con una LUT de 2 entradas? ¿Sería útil si explica con un diagrama de nivel MUX? Estoy muy agradecido por su ayuda en la estructura de LUT. ¿Qué es esa R en el diagrama>
@MuthuSubramanian He actualizado mi respuesta que debería abordar todas sus preguntas.