تالار گفتمان مانشت

نسخه‌ی کامل: تاخیر BCD Adder
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
تاخیر جمع کننده چطور حساب میشه؟
سلام.
برای حل این سوال باید نکته های ریزی رو بدونیم.
از جمله اینکه، تاخیر جمع کننده بعدی یا i+1 ، برابر هست با تاخیر زمانی که carry از جمع کننده قبلی ش خارج میشه و به جمع کننده بعدی وارد میشه. نکته دیگه این هست که برای دو رقم ابتدای یک عدد نیازی به تاخیر نیست(منظورم اولین carry که به اولین جمع کننده BCD وارد می شه). نکته دیگه اینه که در این سوال محاسبه تاخیر کل زمان جمع کردن لازم هست، و باید تاخیر تمام جمع کننده ها رو بدست بیاریم.
-------------------------------------------
مثلا بخوایم جمع دو عدد زیر رو انجام بدیم.
x = 5362147526
y = 3562177153
برای x1 و y1 نیاز به یک جمع کننده BCD هست.
برای x2 و y2 نیاز به یک جمع کننده BCD هست.
...
...
برای x10 و y10 نیاز به یک جمع کننده BCD هست.
---------------------------------------------
نکته اول: تاخیر جمع هر BCD برابر هست با 16t یعنی اگه دو عدد x1وy1 رو بخوایم با هم جمع کنیم که S1 بدست بیاد تاخیرش برابر هست با 16 زمان. چرا ؟ چون 16 خط کنترولی به جمع کننده ها وصل هست، 8تا به جمع کننده بالایی و 8تا به جمع کننده پایینی(برای کنترل اینکه جمع از 9 فراتر نره).
---------------------------------------------
دقت: به x1,y1 کاری نداریم چون هیچ محاسبه caryy برای اونا وجود نداره، میمونه 9 عدد دیگه که برای هر کدوم از اونا برای زمانی که caryy می خواد خارج بشه باید 10ns زمان سپری بشه. (دقت کن شکل جمع کننده BCD از and و or استفاده می کنه) تاخیر andها بصورت موازی حساب میشه، یعنی تاخیر اونا 10 میشه و نه 20. در هر صورت وقتی caryy از یک طبقه خارج میشه به 10ns نیاز داره که این caryy رو به طبقه بعدی بفرسته.
--------------------------------------------
پس برای فرستادن caryy تا طبقه اخر، نیاز به 9 * 10 زمان هست (9، بخاطر اینکه از عدد 10 رقمی تاخیر caryy اول رو حساب نمی کنیم چون بدون عبور از گیت یا گیتهایی به x1,y1 وارد می شه. 10 بخاطر اینکه برای فرستادن caryy از یک طبقه به یک طبقه دیگه نیاز به 10ns هست). خب تا به اینجا فقط تاخیر caryy رو محاسبه کردیم که میشه 90 .
تاخیر جمع ها یا s0 , s1, s2, ...., s10 هم که 16 هست(با توجه به نکته اول). در نتیجه تاخیر برای "یک" جمع کننده برابر هست با زمان تاخیر جمع به اضافه زمان تاخیر فرستادن caryy به طبقه بعد. که برابر هست با 90+16 میشه 106.
حالا اگه برای 10 طبقه این کار رو انجام بدیم باید 10 رو در 106 ضرب کنیم که برابر هست با 1060. گزینه 2 جواب هست.

موفق باشید.
خیلی ممنون
این تست ارشد ۸۳ هست که توی فصل اول کتاب پوران پژوهش حل شده.اما نه به این خوبی که azad_ahmadi توضیح دادن.
==
توی خود کتاب پوران هم درس داده شده.
سه روش برای جمع دو عدد چندرقمی دهدهی(یعنی هر رقم از 0 تا 9 است و نمی تواند شامل A تا F باشد.) رو معمولا بکار می برند :
1)روش رقم سری_بیت موازی
2)روش جمع کننده ی کاملا سری(seial)
3)روش موازی
==
توی این مثال از روش موازی استفاده کرده .
روش موازی : در این روش برای جمع دو عدد n رقمی دهدهی ، به n جمع کننده BCD نیاز داریم.
تاخیر این جمع کننده از فرمول زیر استفاده می کنیم:
10n+6 ضربدر time
------------------------------------
n تعداد ارقام دو عددی هست که میخوایم در هم ضرب کنیم.چون گفته دو عدد 10 رقمی پس n میشه 10
time هم تاخیر گیت هست که گفته 10 نانو ثانیه
پس :
[tex](10*10 6)=106\Rightarrow 106*10_{nanoSeconds}=1060_{nanoSeconds}[/tex]
---------------------------------
ضمنا اگه توی سوال اضافه کنه چند حالت مجاز داریم باید اینطوری ج داد ادامشو :
ما کلا 1برای هر عدد 11 رقم داریم که 10 رقم خود عدد هست و 1 رقم میشه carry input
دقت کنید هر رقم میتونه شامل ارقام 0 تا 9 باشه یعنی 10 حالت و رقم نقلی هم میتونه شامل دو حالت باشه : یا صفر یا 1
پس کل حالات مجاز میشه 10*10*10*10*10*10*10*10*10*10*2=20 میلیارد حالت مجاز
(28 آذر 1391 01:23 ب.ظ)azad_ahmadi نوشته شده توسط: [ -> ]---------------------------------------------
نکته اول: تاخیر جمع هر BCD برابر هست با ۱۶t یعنی اگه دو عدد x1وy1 رو بخوایم با هم جمع کنیم که S1 بدست بیاد تاخیرش برابر هست با ۱۶ زمان. چرا ؟ چون ۱۶ خط کنترولی به جمع کننده ها وصل هست، ۸تا به جمع کننده بالایی و ۸تا به جمع کننده پایینی(برای کنترل اینکه جمع از ۹ فراتر نره).
---------------------------------------------

سلام
تو جمع کننده پایین که برای تصحیح خطا استفاده میشه، 8 ورودی داره که یک ورودی که عدد 6 میتونه باشه باید به اندازه تاخیر Carry جمع کننده بالا بعلاوه gate or صبر کنه تا آماده بشه، خود جمع کننده پایین هم 8T تاخیر داره، تاخیر carry هم که 10T هست میشه 18T؟
(01 دى 1391 01:27 ب.ظ)Shiny_Star نوشته شده توسط: [ -> ]
(28 آذر 1391 01:23 ب.ظ)azad_ahmadi نوشته شده توسط: [ -> ]---------------------------------------------
نکته اول: تاخیر جمع هر BCD برابر هست با ۱۶t یعنی اگه دو عدد x1وy1 رو بخوایم با هم جمع کنیم که S1 بدست بیاد تاخیرش برابر هست با ۱۶ زمان. چرا ؟ چون ۱۶ خط کنترولی به جمع کننده ها وصل هست، ۸تا به جمع کننده بالایی و ۸تا به جمع کننده پایینی(برای کنترل اینکه جمع از ۹ فراتر نره).
---------------------------------------------

سلام
تو جمع کننده پایین که برای تصحیح خطا استفاده میشه، ۸ ورودی داره که یک ورودی که عدد ۶ میتونه باشه باید به اندازه تاخیر Carry جمع کننده بالا بعلاوه gate or صبر کنه تا آماده بشه، خود جمع کننده پایین هم ۸T تاخیر داره، تاخیر carry هم که ۱۰T هست میشه ۱۸T؟

سلام.
فکر میکنم هزینه تاخیر جمع کننده BCD دوم (پایین) با تولید کری برای طبقه بعد overlap میشه و تنها همون جمع دو رقم (8t) حساب میشه، در این صورت هست که تنها برای جمع 16t هزینه انجام میشه.
من یه سوال بپرسم Sad شاید خیلی پیش پا افتادست
میگم..
مگه به ازای هر رقم BCD یدونه ازین بلوک ها نمیذاریم؟؟؟ خب تاخیر هربلوک باشه ۱۶ میشه ۱۶۰... با ۹تا کری ۱۰نانوثانیه که ۹۰ میشه... جمع میشه.... ۹۰+۱۶۰ میشه ۲۵۰ کلا
واسه هر بلوک که کری ۹۰ نمیشششه Sad
این چه تصوریه من دارم ؟؟؟؟
منو توجیح کنین لطفااااااااااااا Sad Sad
(02 دى 1391 01:49 ب.ظ)sufia_lido نوشته شده توسط: [ -> ]من یه سوال بپرسم Sad شاید خیلی پیش پا افتادست
میگم..
مگه به ازای هر رقم BCD یدونه ازین بلوک ها نمیذاریم؟؟؟ خب تاخیر هربلوک باشه ۱۶ میشه ۱۶۰... با ۹تا کری ۱۰نانوثانیه که ۹۰ میشه... جمع میشه.... ۹۰+۱۶۰ میشه ۲۵۰ کلا
واسه هر بلوک که کری ۹۰ نمیشششه Sad
این چه تصوریه من دارم ؟؟؟؟
منو توجیح کنین لطفااااااااااااا Sad Sad

برای هر دو رقم یک جمع کننده، یعنی مثلا برای جمع x1 و y1 یک جمع کننده BCD لازم هست.
در کل تعداد جمع کننده ها برابر هست با 10 تا. چرا که x1,y1 - x2,y2 - ... x10,y10 باهم جمع میشن و به 10 تا جمع کننده نیاز داریم.
تاخیر کری ورودی رو برای جمع x1,y1 حساب نمی کنیم چون از هیچ مدار یا گیتی عبور نمی کنند(فقط یک خط مستقیم به کری اونا وصله).
برای بقیه جمع کننده ها هم بالا توضیح دادم.
(02 دى 1391 03:57 ب.ظ)azad_ahmadi نوشته شده توسط: [ -> ]
(02 دى 1391 01:49 ب.ظ)sufia_lido نوشته شده توسط: [ -> ]من یه سوال بپرسم Sad شاید خیلی پیش پا افتادست
میگم..
مگه به ازای هر رقم BCD یدونه ازین بلوک ها نمیذاریم؟؟؟ خب تاخیر هربلوک باشه ۱۶ میشه ۱۶۰... با ۹تا کری ۱۰نانوثانیه که ۹۰ میشه... جمع میشه.... ۹۰+۱۶۰ میشه ۲۵۰ کلا
واسه هر بلوک که کری ۹۰ نمیشششه Sad
این چه تصوریه من دارم ؟؟؟؟
منو توجیح کنین لطفااااااااااااا Sad Sad

برای هر دو رقم یک جمع کننده، یعنی مثلا برای جمع x1 و y1 یک جمع کننده BCD لازم هست.
در کل تعداد جمع کننده ها برابر هست با ۱۰ تا. چرا که x1,y1 - x2,y2 - ... x10,y10 باهم جمع میشن و به ۱۰ تا جمع کننده نیاز داریم.
تاخیر کری ورودی رو برای جمع x1,y1 حساب نمی کنیم چون از هیچ مدار یا گیتی عبور نمی کنند(فقط یک خط مستقیم به کری اونا وصله).
برای بقیه جمع کننده ها هم بالا توضیح دادم.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

ببخشید من سوال رو خوب مطرح نکردم... اینو که دیگه میدونم که که هر بلوک ۲ رقم رو جمع میکنه برادر
اما اگه تاخیر هر بلوک بدون احتساب کری باشه ۱۶ پس برای ۱۰ تا میشه ۱۶۰
کری هم ۹ تا ۱۰ میشه ۹۰
اینا جمع بشه میشن ۲۵۰ Smile
خیلی من باحالم نه؟؟؟ Smile فقط عصبانی نشین Smile

بیخیال
حفظ میکنم
10nt+6t
مررسسسسی Sad
لینک مرجع