Full Adder (جمعکننده کامل) یک بلوک منطقی بنیادین و از اجزای اصلی در طراحی سیستمهای دیجیتال، به ویژه در بستر FPGA، است. این مدار ترکیبی قادر است سه بیت ورودی باینری شامل دو بیت داده (A و B) و یک بیت Carry از عملیات قبلی (Cin) را جمع کرده و دو بیت خروجی شامل بیت جمع (Sum) و بیت Carry خروجی (Cout) را تولید کند. Full Adder به دلیل نقشش در ساخت جمعکنندههای چند بیتی و سایر مدارهای محاسباتی، به عنوان سنگ بنای واحدهای محاسباتی-منطقی (ALU) در پردازندهها و کنترلکنندهها عمل میکند.
عملکرد و روابط منطقی Full Adder
Full Adder دارای سه ورودی و دو خروجی است:
- ورودیها:
A: بیت اول.B: بیت دوم.Cin(Carry In): بیت نقلی ورودی از مرحله کمتر باارزش.- خروجیها:
Sum: بیت جمع نهایی.Cout(Carry Out): بیت نقلی خروجی به مرحله باارزشتر.
پیادهسازی با زبان VHDL
VHDL (VHSIC Hardware Description Language) یک زبان توصیف سختافزار است که برای مدلسازی، شبیهسازی و سنتز مدارهای دیجیتال استفاده میشود. برای پیادهسازی Full Adder در VHDL، از ساختار ENTITY برای تعریف رابط (ورودیها و خروجیها) و از ARCHITECTURE برای توصیف رفتار و منطق داخلی مدار استفاده میکنیم.
بخش ENTITY
بخش ENTITY مانند یک “جعبه سیاه” عمل میکند که پورتهای ورودی و خروجی مدار را مشخص میکند. برای Full Adder، این پورتها شامل سه ورودی (A, B, Cin) و دو خروجی (Sum, Cout) خواهند بود که همگی از نوع STD_LOGIC (منطق استاندارد) هستند.
نگاشت به منابع FPGA
هنگامی که کد VHDL بالا توسط ابزار سنتز برای یک FPGA پردازش میشود:
- LUTs (Look-Up Tables): هر یک از عبارات منطقی برای
SumوCoutبه یک یا چند LUT نگاشت میشوند. LUTها، عناصر اصلی در Logic Cell (سلول منطقی) یا CLB (Configurable Logic Block) در FPGA هستند که میتوانند هر تابع بولی با تعداد محدودی از ورودیها را پیادهسازی کنند. Full Adder یک مدار نسبتاً کوچک است و معمولاً هر یک از خروجیهای آن (Sum و Cout) میتوانند در یک LUT مستقل پیادهسازی شوند. - مدار ترکیبی: Full Adder یک مدار کاملاً ترکیبی است؛ یعنی خروجی آن در هر لحظه فقط به مقادیر ورودیهای فعلی بستگی دارد و هیچ عنصر حافظهداری (مانند فلیپفلاپ) ندارد.
- Carry Chain (زنجیره کری): برای بهینهسازی عملکرد جمعکنندههای چند بیتی، FPGAها دارای مسیرهای Carry اختصاصی (Fast Carry Chains) هستند. ابزار سنتز به طور هوشمند Full Adders را به گونهای نگاشت میکند که از این مسیرهای سریع برای انتقال Carry بین مراحل متوالی جمع استفاده شود، که به کاهش تأخیر کلی (Propagation Delay) در عملیات جمع کمک میکند.
مثال استفاده (Instantiation)
پس از تعریف FullAdder، میتوانید آن را به عنوان یک کامپوننت در طراحیهای بزرگتر خود استفاده کنید. به عنوان مثال، برای ساخت یک جمعکننده 2 بیتی، میتوانید دو نمونه از FullAdder را به صورت آبشاری (Cascading) به یکدیگر متصل کنید.
کلیدواژه ها : Combinational Circuit-ENTITY-ARCHITECTURE-A-B-Cin-Sum-Cout-STD_LOGIC-XOR-AND-OR-Boolean Equations-معادلات بولی-Synthesis-سنتز-LUT-Look-Up Table-Logic Cell-سلول منطقی-CLB-Configurable Logic Block-Carry Chain-زنجیره کری-Propagation Delay-تأخیر انتشار-ALU-واحد محاسباتی و منطقی-Hardware Description Language-زبان توصیف سختافزار-Digital Design-طراحی دیجیتال-Cascading-آبشاری-Instantiation-نمونهسازی-Structural-ساختاری-Behavioral-رفتاری-