Une LUT à deux entrées (table de recherche) peut être représentée de manière générique comme ceci:
Une LUT est constituée d'un bloc de SRAM qui est indexé par les entrées de la LUT. La sortie de la LUT correspond à la valeur de l'emplacement indexé dans sa SRAM.
Bien que nous pensions que la RAM soit normalement organisée en mots de 8, 16, 32 ou 64 bits, la SRAM dans les FPGA a une profondeur de 1 bit. Ainsi, par exemple, une LUT à 3 entrées utilise une SRAM 8x1 (2³ = 8)
La RAM étant volatile, le contenu doit être initialisé lors de la mise sous tension de la puce. Cela se fait en transférant le contenu de la mémoire de configuration dans la SRAM.
La sortie d'une LUT est ce que vous voulez qu'elle soit. Pour une porte ET à deux entrées,
Address In ([1:0]) Output
0 0 0
0 1 0
1 0 0
1 1 1
Pour votre deuxième exemple, seule la table de vérité change:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 0
1 1 0
et enfin, A xor B:
Address In ([1:0]) Output
0 0 0
0 1 1
1 0 1
1 1 0
Ce n'est donc pas la même LUT dans chaque cas, car la LUT définit la sortie. Évidemment, le nombre d'entrées dans une LUT peut être bien plus de deux.
La LUT est en fait implémentée à l'aide d'une combinaison des bits SRAM et d'un MUX:
Ici, les bits situés en haut 0 1 0 0 0 1 1 1 représentent la sortie de la table de vérité pour cette LUT. Les trois entrées du MUX à gauche a, b et c sélectionnent la valeur de sortie appropriée.