سلام
اگر فرض کنیم ضرب ما (a3a2a1a0)∗(b3b2b1b0) باشه به روش قلم و کاغذ در هم ضرب کنیم حاصل ضرب های جزیی بدست می ایدمثلا اولین سطر a3b0a2b0a1b0a0b0 و همینطور سطر های بعدی ...
یکی از روش های پیاده سازی ضرب ارایه ای استفاده از جمع کننده های چند بیتی است مثلا جمع کننده ۴ بیتی به این صورت که دو حاصل ضرب جزیی(سطر) به اولین جمع کننده داده می شود و حاصل ان به همراه سطر بعدی به جمع کننده بعدی و الی اخر
در اینجا ۴bit * 4bit
۴ سطر حاصل ضرب جزیی داریم یعنی نیاز به ۳ تا جمع کننده ۴ بیتی است(اولین جمع وند نیاز به جمع ندارد مثلا a0b0 مستقیم به حاصل وارد می شود) حالا نوع جمع کننده ۴ بیتی ما بایدCLA (جمع کننده با پیش بینی رقم نقلی ) باشد
تاخیر cla برابر با 4t≤tcla≤6t است که t تاخیر گیت پایه است ۴t مربوط به زمانی است که تاخیر xor برابر با تاخیر or , and باشد وگرنه اگر تاخیرxor را دوبرابر تاخیر and , or بگیریم (پیاده سازی دوسحطی ) ۶t می شود
برای تولید جمع وند ها هم تاخیر گیت and را لحاظ می کنیم (در این تست ۱۶ گیت and همزمان تمام جمع وند ها (a0b0 ...) را تولید می کنند)
پس تاخیر کل ضرب کننده در تست در دوحالت فرض تاخیر cla با ۴t و ۶t داریم(t=1):
تاخیر and ها یک نانو و ۳ تا هم cla داریم
3∗4+1=13 گزینه ۳ ویا 3∗6+1=19 گزینه ۴
البته پیاده سازی دیگز ضرب کننده ها به صورت ارایه ای از FA ها است با این تفاوت که FA ها بجز در ردیف اخر به رقم نقلی یکدگر وابسته نیستند.البته برای کاهش سطوح از درخت والاس هم استفاده می کنند(زیاد درموردش نمی دونم)
پیاده سازی دیگر هم به صورت HA , FA ها است.