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

BCD adder

برای یادگرفتن BCD adder ابتدا یه مرور بر اعداد BCD می کنیم. اعداد BCD اعدادی شامل عدد 0 تا 9 هستند، که به صورت زیر نمایش داده می شوند:

پس BCD adder روشی برای جمع و یا تفریق اعداد BCD است. حالا سوال اینجاست که تفاوت آن با binary adder چیست؟

در جمع باینری جمع دو عدد 0111 و 1000 که اعداد 7 و 8 در مبنای ده هستند به صورت 1111 که به معنای 15 در مبنای ده هست نمایش داده می شود.

اما در BCD adder جمع دو عدد 0111 و 1000 باید به صورت 0101 0001 نمایش داده می شود، که 4 رقم سمت راست به معنای یکان که معادل عدد 5 و 4 رقم سمت چپ برابر دهگان که معادل عدد 1 است می باشد.

به عنوان مثال جمع اعداد BCD زیر را در نظر بگیرید:

a) 0110 + 0101= 0001 0001

b)0101 + 0101= 0001 0000

جمع اول حاصل جمع اعداد 5 و 6 است که برابر عدد 11 که به صورت 0001 0001 نمایش داده شده است می باشد و جمع دوم نیز برابر جمع دو عدد 5 و 5 است که برابر 10 دهدهی و به صورت 0000 0001 نمایش داده شده است.

پس حتما تا الآن متوجه شده اید که جمع دو عدد BCD همانند جمع دهدهی انجام می شود ، منتهی هر رقم به صورت دودویی نوشته می شود.

مثلا جمع دو عدد 6 و 7 برابر عدد 13 است که نمایش عدد 3 در دودویی به صورت 0011 و نمایش عدد 1 در دودویی به صورت 0001 می باشد ، پس جمع دو عدد 6 و7 به صورت BCD برابر 0011 0001 خواهد بود.

طبق توضیحات پس BCD adder باید مداری شبیه به شکل زیر داشته باشد:


طبق شکل بالا اعداد A و B فقط مقادیر صفر تا 9 را می توانند داشته باشند ، پس حاصل یک BCD adderباید مقداری بین صفر (زمانی که تمامی ورودی ها صفر هستند) و 19( زمانی که A و B برابر 9 و cin برابر 1 باشد) باشد.

اگر کمی دقت بخرج بدیم متوجه می شویم تا زمانی که حاصل BCD adder دهگان صفر داشته باشد حاصل با جمع دودویی تفاوتی نخواهد کرد.

به عنوان مثال جمع دو عدد 0101 و 0100 را در نظر بگیرید ، در جمع دودویی حاصل برابر 1001 برابر عدد نه دهدهی و در BCD adder حاصل برابر 1001 0000 که مجدد برابر نه دهدهی است می باشد. از آنجایی که صفر پشت عدد بی اثر است پس حاصل یکسان است.

پس تا زمانی که حاصل جمع دو عدد بین صفر تا 9 باشد جمع باینری با جمع BCD هیچ تفاوتی ندارند.

اما زمانی که حاصل بین 10 تا 19 باشد حاصل جمع باینری به اندازه 0110 از حاصل جمع BCD کمتر است، یعنی اگر حاصل جمع باینری مقداری بین 10 تا 19 داشته باشد با اضافه کردن 0110 به آن به حاصل جمع BCD می رسیم.

مثال: جمع دو عدد 5 و 6 را در نظر بگیرید:

binary adder) 0110 + 0101 = 1011

BCD adder) 1011 + 0110 = 0001 0001

پس متوجه شدیم برای ساخت یک BCD adder یک باینری adder نیاز داریم ، سپس باید خروجی آن را چک کنیم اگر حاصلی بین 0 تا 9 داشته باشد ، حاصل بدون تغییر باقی می ماند ، اما اگر در بازه 10 تا 19 باشد باید با عدد 0110 جمع باینری شود تا برابر مقدار حاصل در جمع BCD گردد.

در قسمت بعدی با هم این BCD adder رو می سازیم.

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