یکی از اجزای کلیدی در ساختار داخلی FPGA، جدول LUT یا Look-Up Table است. این جدول در واقع یک حافظه کوچک با دسترسی سریع است که برای پیادهسازی توابع منطقی ترکیبی استفاده میشود.
نحوه عملکرد LUT با مثال
فرض کنید بخواهیم تابع منطقی زیر را در یک LUT پیادهسازی کنیم:
F = A AND B
اگر LUT دارای ۲ ورودی (A و B) باشد، ۴ حالت مختلف برای ورودیها داریم و خروجی هر حالت بهصورت زیر در جدول LUT ذخیره میشود:
A | B | F = A AND B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
FPGA در زمان اجرا با توجه به ورودیهای A و B، خروجی مناسب را از LUT بازیابی میکند.
انواع LUT از نظر تعداد ورودی
LUTها میتوانند از نظر تعداد ورودی متفاوت باشند که در جدول زیر مشاهده میکنید:
نوع LUT | تعداد ورودیها | تعداد حالتها | تعداد بیت ذخیرهسازی |
---|---|---|---|
LUT1 | 1 | 2 | 2 بیت |
LUT2 | 2 | 4 | 4 بیت |
LUT3 | 3 | 8 | 8 بیت |
LUT4 | 4 | 16 | 16 بیت |
LUT5 | 5 | 32 | 32 بیت |
LUT6 | 6 | 64 | 64 بیت |
ساختار LUT6 در FPGAهای Xilinx
در FPGAهای سری 7 به بعد از شرکت Xilinx، معمولاً از LUT6 استفاده میشود. این LUTها میتوانند:
- یک تابع 6 ورودی ترکیبی را پیادهسازی کنند
- یا به صورت دو تابع 5 ورودی مستقل با یک مالتیپلکسر داخلی عمل کنند
نکته مهم در طراحی
اگر تابع شما بیش از 6 ورودی داشته باشد، ابزار سنتز مانند Vivado آن را به چندین LUT تقسیم میکند. این کار باعث افزایش منابع مصرفی و تأخیر مدار میشود. بنابراین، سادهسازی و بهینهسازی توابع منطقی در طراحی اهمیت زیادی دارد.