تالار گفتمان مانشت
سخت افزار ضرب کننده - نسخه‌ی قابل چاپ

سخت افزار ضرب کننده - saria - 17 آبان ۱۳۸۹ ۱۲:۲۳ ب.ظ

میخواهیم یک سخت افزار ضرب کننده ۸ بیتی با استفاده از چندین بلوک ضرب کننده ۴ بیتی بسازیم. به چند ضرلب کننده ۴ بیتی و حداقل چند جمع کننده(تمام -نیم) نیاز میباشد؟
لطفا مفهومی توضیح بدید واسمHuh

RE: سخت افزار ضرب کننده - mahdi20 - 28 آبان ۱۳۸۹ ۰۷:۳۸ ب.ظ

سلام
منم هنوز این قسمت را نخوندم ولی استدلالم اینطوریه:

می خواهیم ۲ عدد ۸ بیتی A ,B را در هم ضرب کنیم با این تفاوت که بجای ۲ تا ضرب کننده ۸ بیتی باید از ضرب کننده های ۴ بیتی استفاده کنیم پس برای A , B هر کدام نیاز به ۲ ضرب کننده ۴ بیتی داریم‌، که می شود ۴ ضرب کننده ۴ بیتی . حالا چون اینجا مشخص نکرده که حاصل ضرب ما سرریز داره یا نه پس حداقل نیاز به ۱۶ عمل جمع یعنی ۱۶ جمع کننده داریم.

اگر استدلالم اشتباه هست دوستان تذکر بدن !!!

RE: سخت افزار ضرب کننده - ۵۴m4n3h - 28 آبان ۱۳۸۹ ۱۰:۲۴ ب.ظ

یه راهی که به ذهن من میرسه استفاده از الگوریتم ضرب اعداد بزرگ هست که توی طراحی الگوریتم‌ها داریم!


(۲۸ آبان ۱۳۸۹ ۰۷:۳۸ ب.ظ)mohanddes نوشته شده توسط:  سلام
منم هنوز این قسمت را نخوندم ولی استدلالم اینطوریه:

می خواهیم ۲ عدد ۸ بیتی A ,B را در هم ضرب کنیم با این تفاوت که بجای ۲ تا ضرب کننده ۸ بیتی باید از ضرب کننده های ۴ بیتی استفاده کنیم پس برای A , B هر کدام نیاز به ۲ ضرب کننده ۴ بیتی داریم‌، که می شود ۴ ضرب کننده ۴ بیتی . حالا چون اینجا مشخص نکرده که حاصل ضرب ما سرریز داره یا نه پس حداقل نیاز به ۱۶ عمل جمع یعنی ۱۶ جمع کننده داریم.

اگر استدلالم اشتباه هست دوستان تذکر بدن !!!

منظورتون اینه که مثل جمع اعداد رو چند بخش کنیم و بخش‌ها رو در هم ضرب کنیم و حاصل این‌ها رو با هم جمع کنیم؟! اگه این باشه که به نظرم درست نیست! اگه هم منظورتون این نیست، من متوجه منظورتون نشدم Tongue

RE: سخت افزار ضرب کننده - saria - 28 آبان ۱۳۸۹ ۱۰:۳۷ ب.ظ

خوب برای ضرب ۲تا عدد ۸بیتی چرا ۴ضرب کننده ۴بیتی میخوایم؟
به نظر من ۲تا کافیشهBig Grin
یا ۸تا نمیتونم ۴تا رو تصور کنمUndecided
ولی جوابتون درسته

RE: سخت افزار ضرب کننده - saria - 29 آبان ۱۳۸۹ ۰۲:۳۰ ب.ظ

[quote='mohanddes' pid='7650' dateline='1290193300']
خوب ۱ عدد ۸ بیتی ۴بیت اولش با ۴ بیت اول عدد دوم با یه ضرب کننده ۴بیتی انجام شه!!!
۴بیت دوم عدد اول با ۴بیت دوم عدد دوم هم با یه ضرب کننده دیگه

RE: سخت افزار ضرب کننده - ۵۴m4n3h - 29 آبان ۱۳۸۹ ۱۰:۵۵ ب.ظ

(۲۹ آبان ۱۳۸۹ ۰۲:۳۰ ب.ظ)saria نوشته شده توسط:  خوب ۱ عدد ۸ بیتی ۴بیت اولش با ۴ بیت اول عدد دوم با یه ضرب کننده ۴بیتی انجام شه!!!
۴بیت دوم عدد اول با ۴بیت دوم عدد دوم هم با یه ضرب کننده دیگه

به نظرم اینی که دارید میگید یه کم ایراد داره!
این روش که گفتید توی جمع جواب میده، ولی توی ضرب نه!
اگه بخوایم یه مثال در مقیاس کوچیک بزنیم: مثلاً ۲۳ × ۴۵ برابر نیست با ۳×۵+۲×۴ (البته اگه من منظورتون رو درست متوجه شده باشم)
من نمی دونم برای این سوال که گفتید چه راه حل روتینی وجود داره اما همچنان عقیده دارم که الگوریتم ضرب اعداد بزرگ که به صورت زیر هست در موردش جواب میده!
کد:
prod(u,v){
x=u/10^m;
y=u%10^m;
w=v/10^m;
z=v%10^m;
r=prod(x+y,w+z);
p=prod(x,w);
q=prod(y,z);
return p*10^2m+(r-p-q)*10^m+q;
}

که برای این سوالی که گفتید، x میشه ۴ بیت بالای عدد اول و y میشه ۴ بیت پایین عدد اول w هم ۴ بیت بالای عدد دوم و z هم ۴ بیت پایین عدد دوم و با به دست آوردن r, q , z مسئله حل میشه!

من فکر میکنم برای این سوالی که مطرح کردید، ۳ ضرب کننده‌ی ۴ بیتی و ۶ جمع کننده/تفریق کننده‌ی ۴ بیتی لازم باشه! (با توجه به این الگوریتم)

RE: سخت افزار ضرب کننده - ۵۴m4n3h - 01 آذر ۱۳۸۹ ۱۲:۰۴ ق.ظ

در واقع اگه بخوایم این الگوریتم رو برای سوال شما بنویسیم، این طوری میشه فکر کنم:

کد:
prod(u,v){
x=u/2^4;
y=u%2^4;
w=v/2^4;
z=v%2^4;
r=(x+y)*(w+z);  //اینا چون هر ۲شون ۴بیتی هستند،با ضرب کننده هایی که داریم، می تونیم در هم ضربشون کنیم
p=x*w;  //اینا هم ۴بیتی هستند
q=y*z;  // اینا هم همین طور
return p*2^8+(r-p-q)*2^4+q;
}