Una LUT a due input (tabella di ricerca) può essere rappresentata genericamente in questo modo:
Un LUT è costituito da un blocco di SRAM che è indicizzato dagli input del LUT. L'output del LUT è qualunque sia il valore nella posizione indicizzata nella sua SRAM.
Sebbene pensiamo che la RAM sia normalmente organizzata in parole di 8, 16, 32 o 64 bit, SRAM in FPGA ha una profondità di 1 bit. Quindi, ad esempio, una LUT a 3 ingressi utilizza una SRAM 8x1 (2³ = 8)
Poiché la RAM è volatile, i contenuti devono essere inizializzati all'accensione del chip. Questo viene fatto trasferendo il contenuto della memoria di configurazione nella SRAM.
L'output di un LUT è qualunque cosa tu voglia che sia. Per un gate AND a due ingressi,
Address In ([1:0]) Output
0 0 0
0 1 0
1 0 0
1 1 1
Per il tuo secondo esempio, cambia solo la tabella della verità:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 0
1 1 0
e infine, A xor B:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 1
1 1 0
Quindi non è la stessa LUT in ogni caso, poiché la LUT definisce l'output. Ovviamente, il numero di input per un LUT può essere molto più di due.
Il LUT è effettivamente implementato usando una combinazione dei bit SRAM e un MUX:
Qui i bit nella parte superiore 0 1 0 0 0 1 1 1 rappresentano l' output della tabella di verità per questo LUT. I tre ingressi per il MUX a sinistra a, b e c selezionano il valore di uscita appropriato.