zerotwo
zerotwo
خواندن ۳ دقیقه·۴ سال پیش

ripple carry adder!

در روش های جمع کننده و تفریق کننده چند بیتی ، حتما اسم ripple carry adder به گوشتون خورده!

حالا بیاین با هم بررسی کنیم درواقع این ripple carry adder چجوری دو عدد چند بیتی رو باهم جمع می کنه!


جمع دو عدد 4 بیتی باینری 1011 و 0010 که در تصویر بالا هست رو در نظر بگیرید:

با فرض اینکه با شروع هر جمع یک carry0 از جمع های پیشین که انجام شده داریم ، پس با این حساب برای جمع دو عدد چند بیتی به اضافه carry ها داریم در هر ستون سه عدد رو با هم جمع می کنیم.( ai و bi و ci)

آیا FA رو از مباحث قبلی یادتون هست؟

بیاین با هم یه نگاهی به FA بیاندازیم:

ساختار FA که در شکل بالا می بینید ، به گونه ای بود که سه عدد Aو B و Cin رو باهم جمع می کرد و دو عدد با عنوان sum و carry به ما تحویل می داد.

حالا دوباره یه نگاه به جمع قبلی بندازید تا متوجه بشید FA چرا به کار ما میاد!

درسته!!! می تونیم برای بدست آوردن جمع هر ستون از FA استفاده کنیم و حاصل SUM رو به عنوان Si در نظر بگیریم و carry رو هم به ستون بعدی بفرستیم.

پس در واقع برای مثال خودمون که جمع دو عدد 4 بیتی بود ما به 4 FA احتیاج داریم چون 4 تا ستون داریم.

در واقع به این روش جمع ripple carry adder میگن، به همین راحتی!

بچه ها اگر یه سری مباحث از مدار منطقی رو یادتون باشه میتونید به یاد بیارید که ساختار داخلی FA به صورت زیر بود:

از شکل بالا می تونیم متوجه بشیم که :

حالا اگر مدارهای sum و carry رو رسم کنیم به شکل زیر می رسیم:

با فرض بر اینکه گیت های موجود در هر قسمتی که با خط فاصل نارنجی متمایز کردم به صورت موازی کار کنند و تاخیر هر قسمت را برابر t قرار دهیم پس تاخیر هر FA برابر 2t خواهد بود.

با توجه به شکلی که در بالا برای aipple carry adder برای جمع دو عدد 4 بیتی قرار دادم ، مسیر بحرانی برای آن شکل زمانی ست که با جمع a0وb0وc0 شروع شده و به c4 ختم می شود:

پس مسیر بحرانی ما برای ripple carry adder 4 بیتی شامل گذر کردن از 4 FA می شود ، تاخیر هر FA طبق محاسبات قبلی ما برابر 2t بود ، پس تاخیر برای ripple carry adder چهاربیتی برابر 8t می باشد.

می توان محاسبات انجام شده را تعمیم داد و اینگوه بیان کرد ، که تاخیر برای هر ripple carry adder n بیتی برابر 2nt می باشد.(زیرا مسیر بحرانی شامل n عدد FA و تاخیر برای هر FA برابر 2t است)

*تاخیر: یعنی حداکثر زمان برای تولید خروجی!

ممکن است در سوال به ما بگویند فرض را بر این بگذارید که تاخیر بدست آوردن carry در FA برابر 2t و تاخیر بدست آوردن sum در FA برابر 3t باشد آنگاه تاخیر n bit ripple carry adder چقدر است؟

اگر به مسیر بحرانی ای که برای 4bit ripple carry adder بدست آوردیم نگاه بیاندازید می بینید که شامل بدست آوردن 3 carry و یک sum است .

حال اگر این موضوع را تعمیم بدهیم به n bit ripple carry adder متوجه می شویم که مسیر بحرانی آن شامل n-1 carry و یک sum خواهد بود ، پس تاخیر برابر :

(n-1)2t + 3t

همانطور که در صحبت های قبلی پیداست ، هر FA در واقع carry خود را از FA قبلی می گیرد.

به نوعی می توان گفت اشکال بزرگ روش ripple carry adder در همین موضوع است که هر FA باید منتظر آمدن carry از سمت FA قبلی خود باشد تا محاسباتش را انجام دهد.

برای حل این مشکل در ripple carry adder چه روشی رو پیشنهاد می کنید؟

آیا میشود carry ها را بدون هر گونه وابستگی محاسبه کرد؟

در قسمت بعدی با روش carry look ahead آشنا می شویم.

ripple carry adderجمع کننده چند بیتیمعماریمعماری کامپیوترمدار منطقی
می نویسم تا خودم یادبگیرم ; )
شاید از این پست‌ها خوشتان بیاید