بخشی از مقاله

چکیده - ضرب دسیمال را می توان بعنوان یک عملیات تکرار شونده که با پیچیدگی ذاتی در پیاده سازی همراه است مورد بررسی قرار داد. در این مقاله پس از انتخاب یکی از ضرب کننده های دسیمال موازی موجود و بررسی آن، قسمت هایی از آن را تغییر داده ایم که منجر به بهبود توان مصرفی و مساحت ضرب کننده بر روی ASIC و بهبود سرعت و مساحت آن بر روی FPGA گردیده است. در این مقاله روند طراحی، پیاده سازی و تمامی نتایج و گزارشهای حاصل از سنتز مدار بر روی FPGA و ASICبه منظور مشاهده بهبودهای حاصل گزارش شده است.

-1 مقدمه

در سالهای اخیر بدلیل پیشرفت های چشمگیر در صنعت VLSI، فهم سخت افزاری بسیاری از توابع پیچیده امکان پذیر گردیده است. همچنین بدلیل وجود تقاضاهای بسیاری برای بکارگیری محاسبات دسیمال در زمینه های گوناگونی از قبیل زمینه های علمی، تجاری و بویژه مالی[4]، طراحی و پیاده سازی الگوریتم- های محاسباتی دسیمال توجه بسیاری از دانشمندان و مهندسین را به خود جلب کرده است. یک دلیل افزایش این تقاضاها نیاز به محاسبه دقیق مقدارهای دسیمال - مانند - /2 است که نمی توان آنها را بطور دقیق در سیستمهای باینری نمایش داد.[3]

در باب اهمیت محاسبات دسیمال می توان به اضافه شدن قسمت  دسیمال  به  استاندارد    برای  محاسبات اشاره کرد.[5] ضرب دسیمال یک عملیات وقت گیر، پیچیده و با تکرار شوندگی بالا است، بنابراین در بسیاری از پردازنده های اخیر - مانند IBM POWER6[6] و - IBM z10 [7] برای پیاده سازی آن از الگوریتمهای سخت افزاری ترتیبی استفاده شده است هرچند که نقاط امیدوار کننده زیادی برای استفاده از الگوریتم های موازی برای اینگونه پیاده سازی ها وجود دارد.

ضرب دسیمال متشکل از سه بخش می باشد: تولید حاصل ضرب های جزیی - partial product generation - ، کاهش حاصل ضرب های جزیی - partial product reduction - و جمع نهایی ّ - - Final carry propagating addition که برای پیادهسازی هر بخش روشهای گوناگونی وجود دارد. مولفان [2] برای تولید حاصل ضرب های جزیی از سیستم کد- گذاری دسیمال 4221 استفاده کرده اند. در بخش نخست این ضربکننده اگر X مضروب فیه باشد، حاصل ضرب های جزیی - 2X, -X, X, 2X, 5X, 10X تولید می شوند و برای کاهش حاصل ضرب های جزیی در بخش دوم از یک جمع کننده 32:2 استفاده شده است.

در ضرب کننده ارائه شده در [3]، در بخش نخست اگر X را بعنوان مضروب فیه در نظر بگیریم، حاصل ضرب های جزیی 0, X, 2X, 5X, - 8Xl+8Xh - , - 9Xl+9Xh - مستقیماً ایجاد میشوند و برای کاهش این حاصل ضرب های جزیی، در بخش دوم از یک درخت کاهش 32:2 استفاده شده است. در این مقاله، ضرب کننده ارائه شده در [1] پس از بررسی، پیاده سازی و بر روی ASIC و FPGA سنتز شده و سپس تغییراتی درقسمتهای تولید حاصل ضرب های جزیی و کاهش حاصل ضرب های جزیی داده شده است که منجر به بهبود توان مصرفی و مساحت در سنتز ASIC و بهبود سرعت و مساحت بر روی FPGA گردیده است.

تمامی گزارشهای مربوط به سنتز، به منظور مشاهده بهبودهای حاصل و نحوه انجام کار در این مقاله آورده شده است. در ادامه این مقاله به این موضوعات خواهیم پرداخت، در قسمت 2 شرح و توضیح کار انجام شده در [1] بیان می شود، در قسمت 3، طرح پیشنهادی و تغیرات انجام شده ارائه می گردند. نحوه پیاده سازی، آزمایش ها، گزارش ها و نتایج سنتز در قسمت 4 آورده خواهند شد و در نهایت در قسمت 5 به نتیجه گیری خواهیم پرداخت.

-2  بررسی ضرب کننده موجود

پیچیدگی در تولید حاصلضرب های جزیی و عدم دقت سیستم- های باینری در نمایش اعداد دسیمال از جمله موضوعاتی است که سبب پیچیدگی ضرب دهدهی شده اند. در ادامه این بخش به توضیح مختصر هریک از قسمتهای ضرب کننده ارائه شده در [1] می پردازیم.

-1-2  تولید حاصل ضرب های جزیی

تفاوت عمده [1] در این بخش با اکثر ضرب کننده های موازی، استفاده از ماجول مکمل 9 می باشد. اگر X را بعنوان مضروب فیه در نظر بگیریم، در این بخش حاصل ضرب های جزیی -2X, -X, X, 2X, 5X, 10X ایجاد می شوند. شکل 1 نشان دهنده مدار استفاده شده در این بخش می باشد. همان طور که در شکل 1 مشاهده می شود در این بخش از ضرب کننده، انتخاب گرهایی وجود دارند که پس از تولید مضارب میانی، بر اساس سیگنالهای کنترلی خود که توسط مبدل کد تولید شده اند یکی از حاصل ضرب های جزیی را انتخاب می کنند.

خروجی این انتخاب گرها وارد یک جمع کننده دسیمال 3:2 می شوند که خروجی آن یک عدد متشکل از ارقام BCD و یک عدد متشکل از رقمهای نقلی - 0و - 1 خواهد بود. اعداد تولید شده توسط این جمع کننده بصورت خانه های یک ماتریس مربعی بعنوان خروجی این قسمت به بخش کاهش حاصل ضرب های جزیی فرستاده می شوند.

-2-2 کاهش حاصل ضرب های جزیی

ضرب کننده های دسیمال موازی برای کاهش حاصل ضرب های جزیی از یک درخت کاهش استفاده می کنند. در [1] اگر مضروب و مضروب فیه را 16 رقم BCD در نظر بگیریم، ماتریسی که از قسمت قبل بعنوان ورودی به این بخش آورده می شود یک ماتریس مربعی 32×32 خواهد بود. در این بخش برای کاهش این حاصل ضرب های جزیی از یک درخت کاهش 32:2 استفاده می شود، بدین ترتیب که در سطح یک، 8 عدد از رقم های نقلی به یک شمارش گر دسیمال داده می شوند و 24 عدد باقی مانده - 16 عدد BCD و 8 رقم نقلی - به 8 عدد جمع کننده دسیمال 3:2 داده می شوند. شکل 2 مراحل کاهش حاصل ضرب های جزیی را نشان می دهد.

-3-2 جمع نهایی

در این قسمت از یک جمع کننده سریع دسیمال استفاده شده است که دو عدد تولید شده توسط بخش قبل را با هم جمع می کند و حاصلضرب نهایی - یک عدد دسیمال - را تولید می نماید.

-3 بررسی طرح پیشنهادی و تغییرات صورت گرفته

همان طور که در بخش 1 -2 توضیح داده شد، در ضرب کننده ارائه شده در [1] پس از آنکه خروجی انتخاب کننده ها وارد یک جمع کننده 3:2 می شود، این جمع کننده یک عدد متشکل از ارقام BCD و یک عدد متشکل از رقمهای نقلی 0 - و - 1 تولید می کند. در طرح پیشنهاد شده در این مقاله، به منظور کاهش پیچیدگی بخش تولید حاصل ضرب های جزیی و کاهش طول سیم های واسط بین بلوکهای مختلف که منجر به کاهش پیچیدگی مدار ضرب کننده ارائه شده در از نظر سخت افزاری می شود، ما با حذف جمع کننده 3:2 از بخش نخست ضرب کننده - بخش تولید حاصل ضرب های جزیی - و قرار دادن آن در بخش کاهش حاصل ضرب های جزیی ، به بهبودهایی در زمینه های توان مصرفی، مساحت و سرعت ضرب کننده دست یافته ایم که جداول و شکل های نشان دهنده این بهبودها در ادامه این مقاله آورده خواهند شد.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید