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

BCD adder

در دو قسمت قبل با BCD adder آشنا شدیم. حالا باهم چند مثال از BCD adder حل می کنیم.

سوال: جمع دو عدد 4 رقمی 6512 و 2815 را بوسیله BCD adder انجام دهید؟!

پاسخ: جمع این دو عدد باید به صورت زیر باشد:


قبول دارید در هر ستون ما یک جمع کننده bcd احتیاج داریم، که بعد از انجام جمع یکان را به عنوان حاصل و دهگان را به عنوان رقم نقلی به ستون بعدی بفرستد؟ بنابراین برای جمع دو عدد 4 رقمی به روش bcd به 4 bcd adder احتیاج داریم ، که شکل آن به صورت زیر خواهد شد:


من اعداد رو به صورت دهدهی نوشتم که کامل متوجه منظورم بشید.

حالا اگه بخوایم تاخیر رو برای این جمع حساب کنیم آیا پاسخ 4 * 16t می شود؟ خیر!

طبق معمول لازم هست که مسیر بحرانی را پیدا کنیم، همانطور که می بینید مسیر بحرانی از bcd adder اول میگذره و از طریق دهگان آن وارد bcd adder دوم می شود سپس از طریق دهگان وارد bcd adder سوم می شود و مجدد از طریق دهگان وارد bcd adder چهارم می شود و در آخر از طریق یکان bcd adder چهارم خارج می شود. پس ما تاخیر رو برای بدست آوردن سه دهگان و یک یکان داریم که برابر :

result: 3*10 + 16 =46


در شکل بالا این بار اعداد رو به صورت bcd نوشتم که دیگه ازم اشکال نگیرید ! ;))

اگر بخوایم مطلب بالا رو به جمع دو عدد n رقمی بسط بدیم به فرمول زیر می رسیم:

delay= (n-1)tدهگان + t یکان

سوال: آیا می توان سخت افزار جمع bcd را کاهش داد؟

بله ! امیدوارم از قبل به یاد داشته باشید که FA اول در باینری adder دوم بلا استفاده بود چون عملا یک عدد را با دو صفر جمع می کرد. پس از طرفی این جمع carry نیز نخواهد داشت، بنابراین FA دوم دو عدد را جمع می کند پس نیازی به FA نیست و می توان از HA به جای آن استفاده کرد.

اما FA سوم سه عدد را جمع می کند و باید در جای خود باقی بماند ، اما FA چهارم مجدد یک عدد را با carry و صفر جمع می کند و باز می توان به جای آن از HA استفاده کرد.(می توان از xor هم استفاده کرد چون carry آن برای ما کاربردی ندارد)

مفهوم حرف خودم رو در تصویر زیر بهتر نشان خواهم داد:

در قسمت بعدی با هم تفریق bcd رو یاد میگیریم...


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