۰
subtitle
ارسال: #۱
  
تاخیر جمع کننده ۸ بیتی با رقم نقلی
سلام
ما میدونم که برای جمع کننده ۴ بیتی با رقم نقلی زمان تاخیر از ۸ دلتا تی به ۶ دلتا تی میرسه و معادلات رو از c=0 تا c=3 انجام میدیم
حالا سوال من اینه جمع کننده ۸ بیتی چطوری حساب میشه ؟
از صبح روی یک مسئله تمرکز کردم ولی جوابم رو پیدا نکردم .
ممنون میشم راهنمایی بشه
ما میدونم که برای جمع کننده ۴ بیتی با رقم نقلی زمان تاخیر از ۸ دلتا تی به ۶ دلتا تی میرسه و معادلات رو از c=0 تا c=3 انجام میدیم
حالا سوال من اینه جمع کننده ۸ بیتی چطوری حساب میشه ؟
از صبح روی یک مسئله تمرکز کردم ولی جوابم رو پیدا نکردم .
ممنون میشم راهنمایی بشه
۱
ارسال: #۲
  
RE: جمع کننده ۸ بیتب با تاخیر رقم تقلی
سوال شما به صورت کامل تر:
جمع کننده ی سری معمولی (ripple) با داشتن ۸ پله گیت (هر کدوم از FA ها ۲ طبقه, ۴ تا FA هم میشه ۸) دارای تأخیر ۸t هست.
حالا CLA اومد نه تنها این تأخیر رو رسوند به ۶t (بین ۴t و ۶t طبق نلسون), بلکه حاصل جمع رو به صورت صحیح تحویل سیستم داد! چون اساسا این تأخیر گیت ها باعث میشد جواب خروجی غلط باشه. (همه این قصه ها توی مانو و پوران هست)
میخواید CLA رو که با ۴ بیت متوجه شدید؛ هشت بیتش رو پیاده کنید...
پیاده سازی جمع کننده CLA هشت بیتی (جمع کننده با انتشار رقم نقلی)
مقدمه:
قبلا در جوابم گفته بودم نمیتونید طبق فرمول Pi و Gi و Ci گیت ها رو بسط بدید و یه CLA جدید ۸ بیتی بسازید... (اینطور توجیه کردم که نقلی آخر (C8) یه گیت or با هفت تا ورودی میخواد و این نشدنیه! در حالی که کاملا شدنی هست!) چرا میشه همون رو بسط بدید اما بهتره وقتی مثلا یه IC داری که CLA 4 بیتی رو پیاده میکنه؛ از همون قطعه استفاده کنید برای ساخت جمع کننده ۸ بیت. این شاید علت منطقی تری باشه...
شروع حل:
پس تا اینجا دو عدد جمع کننده ۴ بیت با انتشار رقم نقلی نیاز داریم. CLA1 باید بیت ها قسمت کم ارزش low رو جمع کنه CLA2 هم بیت های پر ارزش رو
A: a7 a6 a5 a4 , a3 a2 a1 a0
B: b7 b6 b5 b4 , b3 b2 b1 b0
CLA1: a3 a2 a1 a0 + b3 b2 b1 b0
CLA2: a7 a6 a5 a4 + b7 b6 b5 b4
یه گریزی بزنم که CLA فلسفه اش چی بود. برای اینکه معطل نقلی نشویم؛ برای هر جفت بیتی که داریم جمع میکنیم باید نقلی حاضر و آماده باشه!
این کار با یه سری محاسبات شدنیه! کافیه نقلی هر مرحله رو مدام با محاسبات تکراری برای اون مرحله ( همون ۲ بیت در حال جمع) حساب کنیم... تعداد گیت ها میره بالا، یه کار تکراری هی کپی میشه، اما موازی کاری! افزایش پیدا میکنه! در نتیجه سرعت کار بالا میره.
میدونی که بیت های دو عملوند در حال جمع، همیشه حاضر و آماده هستن و نیازی نیست برای تولیدشون صبر کرد... پس من برای هر مرحله از جمع، نقلی اون قسمت رو بر حسب بیت های دو عملوند مینویسم. این شکلی این فرمولا در اومدن:
c1 = a0b0 + (a0+b0)c0
c2 = a1b1 + (a1+b1)(a0b0) + (a0+b0)(a1+b1)c0
...
الی آخر... فرمولاش در همه کتب هست.
این عکس طراحی اولیه و ساده هست. برداشتم دو تا جمع کننده ای که ساختم رو به هم چسبوندم: (چجوری کشیدم؟ صفحه ۲۷ معماری پوران و ۱۴۰ مانو)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
خب این طراحی یه نقص داره: جمع کننده دوم باید به اندازه تاخیر تولید رقم نقلی جمع کننده اول صبر کنه تا خروجیش رو بتونه حساب کنه!!!
یه کار خیلی قشنگ تر که پوران توضیح داده اینه که باز هم با استفاده از فلسفه! ساخت CLA؛ این دو تا جمع کننده ای که ripple شدند رو هم به یک CLA سومی تبدیل کنیم.
(یعنی چی؟) خیلی ساده مگه در هر کدوم از CLA ها رقم نقلی رو انتشار ندادیم؟ اینجا هم رقم نقلی C4 رو که نقلی ورودی برای CLA دوم هست؛ انتشار میدیم. (دقت کنید چون جمع کننده نهایی ۸ بیت هست, تنها انتشار C4 کفایت میکنه... اگه ۱۶ بیت بود برای همه نقلی ها باید این کار رو انجام میدادید... توی پوران هست)
در واقع هر دفعه که در جمع کننده دوم دو بیت رو دارم جمع میکنم، باید نقلی C4 رو از روی بیت های عملوند ها محاسبه کنم و درگیر جمعش کنم.اینجوری:
مگه C4 طبق فرمول این نبود؟
C4 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0
میدونیم که همه مینترم ها حی و حاضر هستند (چون همه از طریق بیت عملوند ها محاسبه میشوند. نقلی اولیه هم که حاضره)
پس این C4 رو داخل تمام فرمول های g4 , g5 , g6 , g7 , p4 , p6 , p7 و در نهایت C8 میذارم تا با کشیدن گیت های اضافی و محاسبات اضافی؛ هر لحظه C4 رو برای خودم موجود داشته باشم.... فایده این کار اینه که موقع محاسبه C4 گیت های پایینی بیکار نمیمونند. (حداقل بیکاری گیت ها و حداکثر موازی کاری)
پی نوشت: نه من و نه پوران اعصاب کشیدن گیت ها رو نداشتیم! شکل همون شکل بالا خواهد بود فقط توی ClA دوم بلوک وسط تغییراتی خواهد کرد که همون گیت های اضافه شده ی C4 هستند (یعنی به جای کشیدن سیم C4 کل گیت هاشو کپی میکنیم هر جا لازمش داشتیم.)
من شکل طولانی ترین مسیر محاسبه (طولانی ترین طبقات گیت) رو براتون کشیدم که مربوط به محاسبه S4 , s5 , s6 , s7 (طبقات همه شون با هم برابره)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
دید که شد فقط ۴ طبقه گیت. در حالی که اگر دو تا CLA رو پشت هم میبستیم تاخیر طولانی ترین مسیر میشد ۶ طبقه!
حالا اینجا به نظر من شکل صفحه قبل پوران معنی پیدا میکنه: ( شکل زیری طراحی کامل از جمع کننده ۸ بیت CLA هست.)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
سطح ۱ برای هر دو جمع کننده میتونه به صورت موازی محاسبه بشه... پس هر دو هم تأخیر خواهند بود برای مدار ما... (چرا میتونن موازی محاسبه شوند؟ چون فرمول Pi و Gi مستقل از رقم نقلی ورودی است...)
سطح ۲ و ۳ جمع کننده اول بعد از ۲ طبقه گیت خروجی میده اما سطح ۲ و ۳ جمع کننده دوم باید بعد از سه طبقه گیت خروجی بده (به C7 توی شکل قبلی نگاه کنید)
حالا توی سطح ۴ ها یه طبقه گیت xor داریم که با عبور از اون خروجی ها تولید میشن... دیگه همه چی واضحه سوالی بود بگین...
ممنون که سوال به این قشنگی پرسیدین
نکته خیلی مهم اینه که برای این تاخیرس ۴t شد چون من تاخیر xor رو برابر با گیت های دیگه گرفتم. اگه تاخیر xor رو بیشتر در نظر بگیرید میشه نهایت تا ۶ t.
جمع کننده ی سری معمولی (ripple) با داشتن ۸ پله گیت (هر کدوم از FA ها ۲ طبقه, ۴ تا FA هم میشه ۸) دارای تأخیر ۸t هست.
حالا CLA اومد نه تنها این تأخیر رو رسوند به ۶t (بین ۴t و ۶t طبق نلسون), بلکه حاصل جمع رو به صورت صحیح تحویل سیستم داد! چون اساسا این تأخیر گیت ها باعث میشد جواب خروجی غلط باشه. (همه این قصه ها توی مانو و پوران هست)
میخواید CLA رو که با ۴ بیت متوجه شدید؛ هشت بیتش رو پیاده کنید...
پیاده سازی جمع کننده CLA هشت بیتی (جمع کننده با انتشار رقم نقلی)
مقدمه:
قبلا در جوابم گفته بودم نمیتونید طبق فرمول Pi و Gi و Ci گیت ها رو بسط بدید و یه CLA جدید ۸ بیتی بسازید... (اینطور توجیه کردم که نقلی آخر (C8) یه گیت or با هفت تا ورودی میخواد و این نشدنیه! در حالی که کاملا شدنی هست!) چرا میشه همون رو بسط بدید اما بهتره وقتی مثلا یه IC داری که CLA 4 بیتی رو پیاده میکنه؛ از همون قطعه استفاده کنید برای ساخت جمع کننده ۸ بیت. این شاید علت منطقی تری باشه...
شروع حل:
پس تا اینجا دو عدد جمع کننده ۴ بیت با انتشار رقم نقلی نیاز داریم. CLA1 باید بیت ها قسمت کم ارزش low رو جمع کنه CLA2 هم بیت های پر ارزش رو
A: a7 a6 a5 a4 , a3 a2 a1 a0
B: b7 b6 b5 b4 , b3 b2 b1 b0
CLA1: a3 a2 a1 a0 + b3 b2 b1 b0
CLA2: a7 a6 a5 a4 + b7 b6 b5 b4
یه گریزی بزنم که CLA فلسفه اش چی بود. برای اینکه معطل نقلی نشویم؛ برای هر جفت بیتی که داریم جمع میکنیم باید نقلی حاضر و آماده باشه!
این کار با یه سری محاسبات شدنیه! کافیه نقلی هر مرحله رو مدام با محاسبات تکراری برای اون مرحله ( همون ۲ بیت در حال جمع) حساب کنیم... تعداد گیت ها میره بالا، یه کار تکراری هی کپی میشه، اما موازی کاری! افزایش پیدا میکنه! در نتیجه سرعت کار بالا میره.
میدونی که بیت های دو عملوند در حال جمع، همیشه حاضر و آماده هستن و نیازی نیست برای تولیدشون صبر کرد... پس من برای هر مرحله از جمع، نقلی اون قسمت رو بر حسب بیت های دو عملوند مینویسم. این شکلی این فرمولا در اومدن:
c1 = a0b0 + (a0+b0)c0
c2 = a1b1 + (a1+b1)(a0b0) + (a0+b0)(a1+b1)c0
...
الی آخر... فرمولاش در همه کتب هست.
این عکس طراحی اولیه و ساده هست. برداشتم دو تا جمع کننده ای که ساختم رو به هم چسبوندم: (چجوری کشیدم؟ صفحه ۲۷ معماری پوران و ۱۴۰ مانو)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
خب این طراحی یه نقص داره: جمع کننده دوم باید به اندازه تاخیر تولید رقم نقلی جمع کننده اول صبر کنه تا خروجیش رو بتونه حساب کنه!!!
یه کار خیلی قشنگ تر که پوران توضیح داده اینه که باز هم با استفاده از فلسفه! ساخت CLA؛ این دو تا جمع کننده ای که ripple شدند رو هم به یک CLA سومی تبدیل کنیم.
(یعنی چی؟) خیلی ساده مگه در هر کدوم از CLA ها رقم نقلی رو انتشار ندادیم؟ اینجا هم رقم نقلی C4 رو که نقلی ورودی برای CLA دوم هست؛ انتشار میدیم. (دقت کنید چون جمع کننده نهایی ۸ بیت هست, تنها انتشار C4 کفایت میکنه... اگه ۱۶ بیت بود برای همه نقلی ها باید این کار رو انجام میدادید... توی پوران هست)
در واقع هر دفعه که در جمع کننده دوم دو بیت رو دارم جمع میکنم، باید نقلی C4 رو از روی بیت های عملوند ها محاسبه کنم و درگیر جمعش کنم.اینجوری:
مگه C4 طبق فرمول این نبود؟
C4 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0
میدونیم که همه مینترم ها حی و حاضر هستند (چون همه از طریق بیت عملوند ها محاسبه میشوند. نقلی اولیه هم که حاضره)
پس این C4 رو داخل تمام فرمول های g4 , g5 , g6 , g7 , p4 , p6 , p7 و در نهایت C8 میذارم تا با کشیدن گیت های اضافی و محاسبات اضافی؛ هر لحظه C4 رو برای خودم موجود داشته باشم.... فایده این کار اینه که موقع محاسبه C4 گیت های پایینی بیکار نمیمونند. (حداقل بیکاری گیت ها و حداکثر موازی کاری)
پی نوشت: نه من و نه پوران اعصاب کشیدن گیت ها رو نداشتیم! شکل همون شکل بالا خواهد بود فقط توی ClA دوم بلوک وسط تغییراتی خواهد کرد که همون گیت های اضافه شده ی C4 هستند (یعنی به جای کشیدن سیم C4 کل گیت هاشو کپی میکنیم هر جا لازمش داشتیم.)
من شکل طولانی ترین مسیر محاسبه (طولانی ترین طبقات گیت) رو براتون کشیدم که مربوط به محاسبه S4 , s5 , s6 , s7 (طبقات همه شون با هم برابره)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
دید که شد فقط ۴ طبقه گیت. در حالی که اگر دو تا CLA رو پشت هم میبستیم تاخیر طولانی ترین مسیر میشد ۶ طبقه!
حالا اینجا به نظر من شکل صفحه قبل پوران معنی پیدا میکنه: ( شکل زیری طراحی کامل از جمع کننده ۸ بیت CLA هست.)
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
سطح ۱ برای هر دو جمع کننده میتونه به صورت موازی محاسبه بشه... پس هر دو هم تأخیر خواهند بود برای مدار ما... (چرا میتونن موازی محاسبه شوند؟ چون فرمول Pi و Gi مستقل از رقم نقلی ورودی است...)
سطح ۲ و ۳ جمع کننده اول بعد از ۲ طبقه گیت خروجی میده اما سطح ۲ و ۳ جمع کننده دوم باید بعد از سه طبقه گیت خروجی بده (به C7 توی شکل قبلی نگاه کنید)
حالا توی سطح ۴ ها یه طبقه گیت xor داریم که با عبور از اون خروجی ها تولید میشن... دیگه همه چی واضحه سوالی بود بگین...
ممنون که سوال به این قشنگی پرسیدین
نکته خیلی مهم اینه که برای این تاخیرس ۴t شد چون من تاخیر xor رو برابر با گیت های دیگه گرفتم. اگه تاخیر xor رو بیشتر در نظر بگیرید میشه نهایت تا ۶ t.
ارسال: #۳
  
RE: جمع کننده ۸ بیتب با تاخیر رقم تقلی
جواب قبلی من اشتباهات فجیعی داشت ! این جواب که ویرایش کردم درسته
۰
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close