2
Tot aici se vede că există o matrice de rutare (switch matrix), aceasta făcând legatura între CLB-uri, dar
se pot vedea și pinii CIN și COUT, aceștia fiind pini de transport (CARRY, în engleză).
În FPGA-urile cu arhitectura mai nouă, fiecare slice are și logică de adunare (Adder, în engleză).
Partea secvențială a unui SLICEL este implementată de bistabili, iar cea combinațională de LUT-uri
(LookUp Table). Mai jos se poate vedea o schemă simplificată a unui SLICEL:
Fig. 2: Schema simplificată a unui slice
[https://www.xilinx.com/support/documentation/data_sheets/ds312.pdf]
Un bistabil de tip D poate fi definit ca o memorie ce reține un bit la fiecare front crescător (sau
descrescător, în funcție de logica implementării). Astfel de bistabili se găsesc în FPGA și programând FPGA-ul
se pot realiza conexiunile între bistabili și LUT-uri, prin matricea de rutare, în acest mod realizându-se
schema logică dorită.
Un LUT (LookUp Table) este o memorie cu 5 sau 6 intrări și o ieșire. LUT-urile nu pot fi programate
dinamic, adică nu pot fi schimbate datele din aceste memorii în timpul rulării (excepție fiind reconfigurarea
parțială), și nici nu sunt sensibile la fronturile vreunui clock. Un LUT cu 5 intrări poate să implementeze orice
funcție combinațională, orice poartă logică cu 5 intrări și o ieșire.
Exemplificarea se va face utilizând un LUT cu 2 intrări, pentru a face lucrurile mai ușor de înțeles. Acest
LUT este programat cu valoarea “0110”.
Fig. 3: LUT cu două intrări
Se observa că acest LUT implementează comportamentul unei porți logice XOR. Acest lucru este
demonstrat în tabelul de mai jos. Aici sunt intrările și ieșirile corespunzătoare LUT-ului din figura de mai sus,
iar pe ultima coloană se găsește ieșirea porții logice XOR ce are ca intrări IN0 și IN1. [lucrare disertație]
IN1 IN0 OUT XOR
0 0 0 0
0 1 1 1
1 0 1 1
1 1 0 0