3-2- پیاده سازی جمع کننده CARRY_LOOK_AHEAD به صورت N بیتی20
3-3- پیاده سازی ضرب کننده به صورت N بیتی24
3-3-1 ضرب کننده برای دو عدد قدر مطلق علامت24
3-3-2 ضرب دو عددمتمم 2 یا 2’S25
3-4- پیاده سازی تقسیم کننده به صورت N بیتی26
3-5- طراحی سخت افزار و ALU برای پیاده سازی کدها با قابلیت پیکر بندی مجدد28
3-5-1 طراحی واحد کنترل28
3-5-2 به کارگیری کنترل های FPGA در طراحی سخت افزاری با سرعت بالا31
فصل چهارم: نتایج شیبه سازی
4-1- نتایج شیبه سازی در نرم افزار MODELSIM37
4-2- نتایج شیبه سازی در نرم افزار ISE39
4-3- مقایسه با مراجع51
فصل پنجم: نتیجه گیری
5-1- نتیجه گیری54
فصل ششم: کارهای آینده
6-1- کارهای آینده56
منابع و مآخذ57
فهرست منابع انگلیسی57
پیوست: کدهای نوشته شده VHDL59
چکیده انگلیسی 68
فهرست جداول
عنوان شماره صفحه
جدول 1-1. روند کلی تکامل سیستم‌های قابل پیکربندی مجدد6
جدول 3-1. 4 حالت ممکن برای جمع کننده ADDER_CARRY_LOOK_AHEAD21
فهرست شکل ها
عنوان شماره صفحه
شکل 2-1. پیکر بندی مجدد جزئی پویا10
شکل 2-2. پیکر بندی دوباره جزئی ایستا11
شکل 2-3. سیستم پیشنهادی مرجع 1 در پیکر بندی مجدد FPGA11
شکل 2-4. فلو چارت مربوط به مرجع ا12
شکل 2-5. طراحی در سطح RTL در برد FPGA13
شکل 2-6. نمونه هایی از پیاده سازی در نرم افزار MODELSIM13
شکل 2-7. جریان طراحی سنتی برای مفهوم سیستم پیکر بندی مجدد به صورت پویا14
شکل 2-8. الگوریتم پیکر بندی مجدد جزئی پویا مرجع 415
شکل 2-9. بلوک DCM16
شکل 2-10. طراحی در سطح RTL بلوک DCM16
شکل 2-11. طراحی سلسله مراتبی مرجع پنجم17
شکل 2-12. نتایج شبیه سازی DRP بلوک های منطقی17
شکل 3-1. جمع کننده کامل یا FULL ADDER21
شکل 3-2. شکل مداری الگوریتم جمع کننده ADDER_CARRY_LOOK_AHEAD23
شکل 3-3. مدار ضرب کننده برای ضرب دو عدد قدر مطلق علامت24
شکل 3-4. مراحل ضرب دو عدد 3- و 4- را بیتی به روش قدر مطلق علامت25
شکل 3-5. عمل تقسیم به روش مقایسه ای26
شکل 3-6. مثالی از مراحل تقسیم27

شکل 3-7. واحد کنترل28
شکل 3-8. نشان دهنده مفهوم روش ریزبرنامه سازی29
شکل 3-9. فعال شدن هر دستور بر اساس ورودی متناظر در روش سیم بندی شده30
شکل 3-10. فعال شدن هر دستور بر اساس ورودی متناظر در روش ریز برنامه سازی30
شکل 3-11. دیاگرام یک بلوک عمومی برای یک سیستم کامل کنترل سرعت بالا31
شکل 3-12. نمودار بلوکی واحد پردازشی کنترلر طراحی شده بر مبنای FPGA33
شکل 3-13. نحوه پیاده سازی طرح پیشنهادی در FPGA34
شکل 4-1. شبیه سازی جمع کننده در نرم افزار MODELSIM37
شکل 4-2. شبیه سازی ضرب کننده در نرم افزار MODELSIM38
شکل 4-3. شبیه سازی تقسیم کننده در نرم افزار MODELSIM38
شکل 4-4. شبیه سازی ALU در نرم افزار MODELSIM39
شکل 4-5. بلوگ دیاگرام یا شماتیک RTL جمع کننده41
شکل 4-6. مدار داخلی یا پیکر بندی داخلی مربوط به جمع کننده41
شکل 4-7. بلوگ دیاگرام یا شماتیک RTL ضرب کننده43
شکل 4-8. مدار داخلی یا پیکر بندی داخلی مربوط به ضرب کننده44
شکل 4-9. مدار داخلی یا پیکر بندی داخلی مربوط به ضرب کننده47
شکل 4-10. بلوگ دیاگرام یا شماتیک RTL تقسیم کننده48
شکل 4-11. بلوگ دیاگرام یا شماتیک RTL مربوط به ALU50
شکل 4-12. نمای کلی مدار داخلی یا پیکر بندی داخلی مربوط به ALU50
شکل 4-13. مدار داخلی یا پیکر بندی داخلی مربوط به ALU51
شکل 4-14. فلوچارت سیستم پیشنهادی52
چکیده
دو روش کلی در محاسبات برای اجرای الگوریتمهای مختلف وجود دارد. روش اول، استفاده از ASIC ها می‌باشد تا بتوانیم الگوریتم مورد نظر را در سخت‌افزار اجرا و پیاده‌سازی کنیم. چون این تجهیزات برای هر الگوریتم خاص ساخته می‌شوند، سریع و کارا می‌باشند. اما مدارات آن‌ها پس از ساخته شدن، تغییر نمی‌کنند. راه دوم، استفاده از ریزپردازنده‌ها است که بسیار انعطاف‌ پذیرتر میباشند. آنها مجموعه‌ای از دستورات را اجرا می‌کنند و کارایی سیستم را بدون تغییر سخت‌افزار، تغییر میدهند. اما، همانند یک ASIC به این دلیل که برای یک کاربرد خاص طراحی نشدهاند، دارای قابلیت انعطاف نمی‌باشد. سیستمهای با قابلیت پیکربندی مجدد به گونهای توسعه یافته‌ است تا فاصله میان سخت‌افزار و نرم‌افزار را کم کند و همچنین، به یک کارایی بسیار بالاتر از نرم‌افزار و قابلیت انعطاف بیشتر سخت‌افزار برسد. به همین منظور، در این پایان نامه ابتدا تاریخچه‌ای مختصر از توسعه‌ سیستمهای با قابلیت پیکربندی مجدد بیان شده است. پس از آن، مفهوم قابلیت پیکربندی مجدد و انواع طراحی آن ارائه شده است. روند طراحی سیستم با قابلیت پیکربندی مجدد بر روی تراشه FPGA آورده شده است. ویژگی‌های طراحی سیستم با یک زبان برنامه نویسی بر مبنای VHDL بیان شده است. در نهایت سیستمی به صورت سخت افزاری و نرم افزاری ارائه شده است که قابلیت پیکر بندی مجدد را دارد و با استفاده از پردازش موازی سرعت پیکر بندی مجدد سیستم را افزایش میدهد. در ضمن، ایده کار به این صورت است که باسهای حجیم از سیستم حذف شده و جای خود را به بلوکهای منطقی دهد. در نهایت، تمامی قسمتهای پویا و ایستا با هم به طور موازی کار میکنند که باعث افزایش سرعت مدار میشود.
کلمات کلیدی: پیاده سازی، پیکربندی مجدد جزئی پویا، پیکربندی مجدد جزئی ایستا
فصل اول:
تاریخچه محاسبات با قابلیت پیکربندی مجدد
1-1- مقدمه
مفهوم محاسبات با قابلیت پیکربندی مجدد از اوایل دهه 60 میلادی پدیدار شد. موقعی که مقاله جرالد استرین مفهوم یک کامپیوتر ساخته شده از یک پردازنده استاندارد و آرایهای از سخت افزار قابل پیکربندی مجدد را پیشنهاد کرد. پردازنده اصلی، عملکرد سخت افزار قابل پیکربندی مجدد را کنترل میکند. در نتیجه، این سخت افزار با قابلیت پیکربندی مجدد، برای انجام هر کاری مناسب خواهد بود. برای مثال میتوان کارهایی نظیر پردازش تصویر، الگوریتم عصبی و تطبیق الگو را با سرعت بالایی انجام داد. به محض اتمام یک کار، سخت افزار1 میتواند برای انجام کار جدید پیکربندی مجدد2 شود. چنین خاصیتی با ترکیب انعطاف پذیری یک نرم افزار3 و سرعت یک سخت افزار، در یک ساختار ترکیبی امکان پذیر شده است. در ضمن، چنین ایدهای در زمان پیدایش، بسیار جلوتر از تکنولوژی ساخت سخت افزار مورد نیازش بود.
در دهه اخیر، تحقیقات زیادی درباره معماریهای با قابلیت پیکربندی مجدد بوجود آمده است. این معماریها هم در دانشگاهها و هم در صنعت توسعه یافتهاند. این معماریها در دستههای زیر قرار میگیرند:
* Matrix
* Gorp
* Elixent
* XPP
* Silicon Hive
* Montium
* Pleiades Morphosys
* PiCOGA
علت عملی بودن چنین طرحهایی، پیشرفت مداوم فنآوری سیلیکونی بوده که پیاده سازی4 طرحهای پیچیده را روی یک تراشه امکان پذیر ساخته است.
اولین مدل تجاری کامپیوتر با قابلیت پیکربندی مجدد در جهان به نام Algotronix CHS 2*4 در سال 1991 ارائه شد. این طرح به هیچ عنوان موفقیت تجاری نداشت، اما آنقدر امیدبخش بود که شرکت Xilinx (مخترع FPGA) تکنولوژی را خرید و محققان Algotronix را به خدمت گرفت.
هم اکنون تعدادی شرکت فروشنده کامپیوترهای با قابلیت پیکربندی مجدد وجود دارند که بازار کامپیوترهای با کارایی بالا را در بر گرفتهاند. مهمترین این شرکتهاSRC Computers ، SGL و Cray میباشند. شرکت ابر رایانهای Cray بستر محاسبات قابل پیکربندی مجدد SRC را به دست آورد و آن را به عنوان XD1 به فروش میرساند. SGI رایانه RASC را همراه با سری ابر رایانههای Altix به فروش میرساند. شرکتSRC Computers یک خانواده از رایانههای قابل پیکربندی مجدد را توسعه داده است. این خانواده بر اساس معماری ضمنی و پردازنده MAP میباشد.
تمام آنچه که گفته شد رایانههای هیبریدی هستند، که این رایانهها با ریزپردازندههای FPGA همراه شدهاند و با آن ساخته میشوند. FPGA ها توسط کاربر برنامهریزی میشوند. این سیستمها میتوانند به عنوان ابر رایانههایی با سرعت بالا با استفاده از FPGA ها به کاربرده شوند. (در حقیقت FPGA ها گزینه ای در XD1 و SGIRASC هستند). پیکربندی XD1 و SGIFPGA از طریق زبانهای توصیف سخت افزار (HDL) صورت میگیرد. با به کارگیری زبانهای سطح بالایی نظیر ابزار گرافیکی Star Bridge Viva یا زبانهایی مانند C مثل Handel-C از Celoxica و Lmpulse-C از Impulse Accelerated technologies یاMitrpn-C از Mitrionics و همچنین VHDL و Verilog نیز میتوان پیکربندی را انجام داد. توسعه کد نویسی منطقی یک FPGA خام، یک فرآیند پیچیده است که نیازمند دانش و ابزار تخصصی است.
SRC کامپایلری را ساخته است که زبان سطح بالایی مثل C یا Fortran را به عنوان ورودی میگیرد و با تغییراتی اندک، آنها را برای اجرا و پیادهسازی روی 5FPGA در ریزپردازنده، کامپایل میکند. بعضی از الگوریتمهای کاربردی با زبانهای سطح بالا همانند C و Fortran نوشته میشوند. کامپایلر (Carte)، حداکثر موازی سازی را در کد انجام میدهد و منطق سخت افزار خط لولهای را تولید میکند که در MAP ها مقداردهی شدهاند. همچنین این کامپایلر تمام کدهای واسطی که برای مدیریت انتقال داده در داخل و خارج MAP نیاز است را تولید میکنند. این کدهای واسط، وظیفه هماهنگ سازی ریزپردازنده با منطق در حال اجرا در MAP را دارند.
XD1 بین ریزپردازنده و FPGA به وسیله شبکه اتصال داخلی Rapid Array اش ارتباط برقرار میکند. سیستمهای SRC از طریق حافظه واسط SNAP و یا سویچ اختیاری Hi-Bear ارتباط برقرار میکنند. دستهبندی معماریهای با قابلیت پیکربندی مجدد روز به روز بیشتر توسعه مییابند. این به دلیل عرضه شدن معماریهای جدید و به روز میباشد (Azambuja 2011, 161-166).
FPGA ها آیسیهایی هستند که شکل سخت‌افزاری آنها میتواند به راحتی، به شکل جدیدی تعریف شود. یعنی با بارگذاری یک پیکربندی جدید درست همانند نرم‌افزار جدیدی که میتواند بر روی یک ریزپردازنده یا DSP بارگذاری شود، نگاشت داده میشود. پردازش و الگوریتمهای فشرده FPGA ها میتواند آیسیهای متمایز شده به وسیله کاربرد ASIC را حاصل سازد. محققان در سراسر دنیا، به دنبال داشتن ابر رایانه و آی سیهایی با بازدهی بالا و انعطاف پذیر هستند، که از اجزا سخت افزاری قابل برنامهریزی مجدد برای هر کاربرد تشکیل میشوند. در نتیجه، چندین برابر، کارآیی را در پردازندههایی که با طول دستور ثابت کار میکنند، افزایش میدهد (Boyer and strother moore 2012, 181-189).
دو نسخه آرایه انقباضی Spalsh در SRC ساخته شدند. مدار اصلی Spalsh در سال 1989 با قیمت 13000 دلار ساخته شد که میتوانست از ابر رایانه موجود در آن زمان به نامCray 2 برای کاربردهای تطبیق الگوی بیتی پیشی بگیرد. این سیستم حاوی 32 عدد FPGA از سری 3090 شرکت Xilinx بود که به صورت یک آرایه خطی متصل شده بودند. FPGA های مجاور از یک بافر حافظهای اشتراکی استفاده میکردند.
بعد از آن، Splash 1 معرفی شد که میتوانست مقایسه یک رشته ی DNA را 45 برابر سرعت یک ایستگاه کاری با کارآیی بالا را در دهه 1990 انجام دهد. سه سال بعد Splash 2 ساخته شد که تعداد FPGA های خود را به 16 عدد کاهش داده بود. با این وجود به خاطر رشد سریع تراکم در FPGA، Splash 2 با 16 عدد FPGA مدل 4010 از شرکت Xilinx، دو برابر عملیات منطقی بیشتر از Splash 1 داشت. برای بهبود انعطاف ارتباطات داخلی Splash 2، ارتباط داخلی خطی را به وسیله یک میله عرضی تقویت کردند که اجازه میداد که هر FPGA با FPGA دیگری ارتباط برقرار کند.
در سالهای بین 1987 تا 1990 رایانه قابل پیکربندی مجدد Splash توسط مرکز تحقیقات ابر رایانهای SRC توسعه یافت. این رایانه در طرح شماتیکی برنامهنویسی شده بود. سخت افزار فوقالعاده و سرعت بالایی داشت. اما با وجود تمام این مزایا برنامه نویسی آن بسیار مشکل بود. در نتیجه، تعداد برنامههای کاربردی آن محدود بود.
Splash 2 دارای زبان شبیه سازی VHDL بود و همانند مدل پیشین دارای سخت افزار بسیار خوبی بود، برنامهریزی آن غیر استاندارد بود اما دارای قابلیت برنامه نویسی خوبی بود. از 1986 تا 1995 حافظه‌های فعال قابل برنامه ریزی (PAMETTe , PAM) توسط شرکت فرانسوی DEC Paris معرفی شدند. برنامه نویسی این نوع حافظه ها در زبان C++ بود اما همان عیب Splash را داشتند یعنی سخت افزار خوبی داشتند اما برنامههای کاربردی پشتیبانی شده توسط آنان محدود بود. در شکل 1-1 روند کلی تکامل سیستم‌های قابل پیکربندی مجدد را مشاهده میکنید.
جدول 1-1. روند کلی تکامل سیستم‌های قابل پیکربندی مجدد
PAM و X30xx1989 تا 1991SPLASH و X40xx1991 تا 1993PRISM و DISC1993 تا 1995MATRIX و X62001995 تا 1997CVH، RAW و FPGA1997 تا 2014
فصل دوم:
مفهوم، معماری‌ها و روش‌های طراحی
سیستم‌های قابل‌ پیکربندی مجدد
2-1- محاسبات و سخت افزار با قابلیت پیکربندی مجدد
در این فصل، به بررسی مفهوم پیکر بندی مجدد میپردازیم و چندین مرجع مهم در این زمینه را مورد بررسی قرار میدهیم.
محاسبات با قابلیت پیکربندی مجدد، به سیستمهایی اشاره میکند که شکلی از قابلیت برنامهریزی سخت افزار را به وسیله کاربرد نقاط کنترلی، پیاده سازی میکنند (Wang and Feng-yan 2009, 445-449). این نقاط کنترلی می‌توانند به طور متناوب برای اجرای کاربردهای متفاوت در سخت افزار تغییر ‌کنند. سخت‌افزار با قابلیت پیکربندی مجدد تعادل خوبی میان کارآیی پیاده سازی و انعطاف پذیری ایجاد می‌کند. این به دلیل این است که سختافزار با قابلیت پیکربندی مجدد، قابلیت برنامهریزی پس از طراحی را با نوع محاسبات موازی ترکیب کرده است، که در مقایسه با نوع محاسبات زمانی ترتیبی پردازندههای دیگر، کارآیی بالاتری دارد (Trailokya Nath Sasamal and Mohan 2011, 244-253; gaspar 2012, 1-13 ).
سرعت تثبیت کردن در محاسبات با قابلیت پیکربندی مجدد، به عنوان یکی از زمینههای اصلی که موضوعات مختلفی از علوم کامپیوتر و مهندسی الکترونیک را پوشش میدهد، میباشد. محاسبات با قابلیت پیکربندی مجدد را با تجهیزات با قابلیت پیکربندی مجدد مانند FPGA برای اهداف پردازشی استفاده میکنند. محاسبات قابل پیکربندی مجدد همچنین به نام محاسبات قابل پیکربندی یا محاسبات سفارشی (Custom) شناخته شده است. به طوری که بسیاری از روشهای طراحی میتوانند برای سفارشی کردن یک محصول محاسباتی برای کاربردهای خاص استفاده شوند (Touiza and Ochoa-Ruiz 2012, 1-15).
به خاطر نیازهای فزاینده قابلیت انعطاف که به وسیله کاربردهایی با محاسبات فراوان مانند ارتباطات بیسیم مطرح میشوند، دستگاههایی که نیازمند سازگاری بالا با کاربردهای در حال اجرا هستند، برای این منظور تحلیل میشوند. از سوی دیگر، درکی خوب از چنین کاربردهایی مورد نیاز است، خصوصأ در مورد منابعی که از آنها در خلال پیاده سازی استفاده میشود و جایی که مصرف توان بایستی در مقابل کیفیت و کاربرد، موازنه شود. نیازهای چالش برانگیز برای قابلیت انعطاف و کارآیی پیاده سازی نمیتوانند به وسیله پردازندههای ASIC برآورده شوند. سخت افزار قابل پیکربندی مجدد یک پیاده سازی مطلوب را در چنین مواردی شکل میدهد (Llamocca 2013, 488-502).
دلایل دیگری نیز برای استفاده از تجهیزات قابل پیکربندی مجدد در طراحی سیستم بر روی تراشه نیز وجود دارد. هزینههای در حال افزایش مهندسی غیربرگشتی طراحان را به سمت استفاده از سیستم بر روی تراشه یکسان در چندین کاربرد و محصول برای دستیابی به قیمت تمام شده پایینتر به ازای هر تراشه سوق میدهد. تجهیزات قابل پیکربندی مجدد، یک تنظیم مناسب تراشه را برای محصولات یا تغییرات محصولات را ممکن میسازد. همچنین برای پیچیدگیهای بیشتر طرحهای آینده، امکان اضافه کردن طرحهای وفق پذیرتر را افزایش میدهد.
یک سیستم محاسباتی با قابلیت پیکربندی مجدد، شامل یک یا تعداد بیشتری از پردازندهها و یک ساختار با قابلیت پیکربندی مجدد میباشد که واحدهای عملیاتی سفارشی میتوانند به وسیله این ساختار ساخته شوند. پردازنده یا پردازندهها، دستورات ترتیبی را اجرا میکنند. در حالی که دستورات میتوانند به طور موثری به سخت افزار نگاشته شوند و بعد از آن میتوانند به وسیله واحدهای پردازشی که به ساختار قابل پیکربندی مجدد نگاشت یافتهاند، اجرا شوند. همانند یک مدار مجتمع سفارشی، توابعی که به ساختار قابل پیکربندی مجدد نگاشت یافتهاند، میتوانند از موازی سازی در یک پیاده‌سازی سخت افزاری بهره برند. همچنین، همانند یک ASIC، طراح سیستم تعبیه شده میتواند ترکیب صحیحی از واحدهای ذخیره و عملیاتی را در ساختار قابل پیکربندی مجدد تولید کند، که ساختار محاسبهای ارائه میشود تا با کاربردهای خاص هماهنگ میباشد(Yang 2013, 508-537).
برخلاف ASIC لازم نیست برای هر کاربردی یک ساختار جدید طراحی شود. یک ساختار داده شده میتواند تعداد زیادی از واحدهای عملیاتی را پیاده سازی کند. این بدان معناست که یک سیستم محاسباتی قابل پیکربندی مجدد میتواند به صورت تولید انبوه ساخته شود که زمان طراحی طولانی که ASIC برای ساخته شدن نیاز داشت را کاهش میدهد. همچنین، بر خلاف یک ASIC واحدهای عملیاتی که در ساختار قابل پیکربندی مجدد پیاده سازی شده‌اند میتوانند در طول زمان تغییر کنند. یعنی اینکه همگام با تغییر محیط یا استفاده از سیستم تعبیه شده، واحدهای عملیاتی میتوانند برای بهتر هماهنگ شدن با محیط جدید تغییر یابند. ساختار قابل پیکربندی مجدد برای مثال ممکن است در عملیات ضرب ماتریسهای بزرگ در یک حالت خاص پیاده سازی شود و در حالت دیگری توابع پردازش سیگنال بزرگی را استفاده کند.
به طور معمول، تمامی کاراییهای یک سیستم تعبیه شده لازم نیست که به وسیله ساختار قابل پیکربندی مجدد، پیاده سازی شود. فقط آن قسمتهایی از محاسبات که از لحاظ زمانی، بحرانی هستند و حاوی درجات بالایی از موازی سازی می‌باشند، لازم است که به ساختار قابل پیکربندی مجدد نگاشت یابند. در حالی که باقیمانده محاسبات میتوانند به وسیله یک پردازنده با دستورات استاندارد پیاده سازی شوند. واسط میان ساختار و پردازنده، همانند واسط میان حافظه و ساختار دارای حداکثر اهمیت میباشد. قطعات قابل پیکربندی مجدد مدرن به اندازه کافی وسیع هستند که پردازندههای دستوری به وسیله ساختار قابل برنامه ریزی پیاده سازی شوند. پردازندههای نرم میتوانند همه منظوره باشند یا برای کاربردی خاص ساخته شوند.
پردازندههای دستور با کاربرد خاص و پردازندههایی با دستورات انعطاف پذیر، دو نمونه از چنین ساختارهایی میباشند. بقیه تجهیزات، مانند پردازنده‌ گرافیکی و پردازندههای با کاربرد خاص آرایهای، مقداری از قابلیت انعطاف رایانههای قابل پیکربندی مجدد را نشان میدهند. این تجهیزات، دستورات را به خوبی انجام می‌دهند، اما بر خلاف رایانههای قابل پیکربندی مجدد و ریزپردازندهها، نمیتوانند محاسبات کلیتر را اجرا کنند(Gonzalez 2012, 247-256).
2-2- پیکربندی مجدد جزئی پویا و ایستا در FPGA ها
پیکر بندی مجدد جزئی پویا6 در FPGA ها فضای طراحی جدیدی رابامزایای زیادی نظیر کاهش زمان پیکربندی و ذخیره حافظه به عنوان فایل پیکربندی دوباره با تعداد بیتهای کمتر ارائه میدهد.
پیکر بندی مجدد جزئی7 توانایی پیکربندی مجدد هر منطقه مشخص از یک FPGA را پس از پیکربندی اولیه دارد. بر اساس نوع طراحی، پیکر بندی مجدد را میتوان به دو گروه تقسیم کرد: پیکر بندی مجدد پویا و پیکر بندی مجدد ایستا (Wang and Feng-yan 2009, 445-449). پیکر بندی مجدد جزئی پویا که در شکل 2-1 نشان داده شده است، به عنوان پیکر بندی مجدد فعال شناخته شده و اجازه تغییر برای بخشی از برد را میدهد در حالی که بقیه بخشهای FPGA همچنان در حال اجرا میباشند (Krill and Ahmad 2010, 377-387).
شکل 2-1. پیکر بندی مجدد جزئی پویا
در پیکر بندی دوباره جزئی ایستا8 دستگاه در طول فرآیند پیکربندی مجدد فعال نیست. به عبارت دیگر، در حالی که دادههای جزئی که به FPGA ارسال میشوند، بقیه بخشها متوقف میشوند، همانطور که در شکل 2-2 نشان داده شده است.
شکل 2-2. پیکر بندی دوباره جزئی ایستا
پیکر بندی مجدد جزئی پویا است که اجازه می دهد FPGA برای انطباق با تغییر الگوریتم های سخت افزاری، قابلیت تحمل خطا و بهره برداری از منابع، به منظور افزایش کارایی و یا به کاهش مصرف برق انجام شده است.
2-3- معرفی مرجع اول در پیکر بندی مجدد FPGA
در مرجع 1 یک سیستم تنظیم مجدد ساده معرفی شده و بر مزایای استفاده از جدیدترین طراحی پیکر بندی دوباره جزئی پویا تمرکز میکند. سیستم پیشنهادی را در شکل 2-3 ملاحظه میکنید.
شکل 2-3. سیستم پیشنهادی مرجع (Wang and Feng-yan 2009, 445-449) در پیکر بندی مجدد FPGA
در این سیستم، یک قسمت ایستا وجود دارد که ورودیهای FPGA وارد این قسمت میشوند و پردازشهای لازم بر روی آنها ایجاد میشود. این بخش به وسیله باسهایی با بخشی که عملیات پیکربندی مجدد را انجام میدهد ارتباط دارد. در واقع، عملیاتی که باید مرتبأ پیکربندی مجدد شوند، توسط این بخش به صورت موازی با هم انجام میشوند و سپس نتیجه به خروجی ارسال میگردد (Christopher and Rathgeb 2009, 13-15 ).
در شکل 2-4 فلو چارت مربوط به مرجع 1 را ملاحظه میکنید.
شکل 2-4. فلو چارت مربوط به مرجع (Wang and Feng-yan 2009, 445-449)
در واقع، عملکرد به این صورت است که با کد VHDL عملیات مربوط به قسمتهایی که باید پیکر بندی مجدد بشوند و همچنین عملیات مربوط به قسمتهایی که نباید پیکر بندی مجدد بشوند به صورت جدا انجام شده و در نهایت با هم ترکیب میشوند و به خروجی ارسال میشوند.
2-4- معرفی مرجع دوم در پیکر بندی مجدد FPGA
این مرجع یک روش را برای بهبود طراحیها در سطح VHDL معرفی کرده است تا بتوان به کمک آن کدها را بدون خطا نوشته و آن را به صورت پیکر بندی مجدد بر روی FPGA پیاده سازی کرد.
ابتدا طراحیها در سطح RTL را در شکل 2-5 ملاحظه میکنید که چگونگی پیاده سازی کدها را در برد FPGA نمایش میدهد.
شکل 2-5. طراحی در سطح RTL در برد FPGA
برای طراحی در سطح RTL از نرم افزار ISE Xilinx استفاده میشود. نکته مهم در طراحی در سطح RTL این است که باید قبل از پیاده سازی کدها را در نرم افزار Modelsim نوشت و از نحوه پیاده سازی زیاضی آن اطمینان حاصل کرد. به همین منظور دو نمونه از پیاده سازی در نرم افزار Modelsim را که در همین مرجع برای پیاده سازی کدها از آنها استفاده شده است را در شکل 2-6 نمایش میدهیم.
شکل 2-6. نمونههایی از پیاده سازی در نرم افزار Modelsim
2-5- معرفی مرجع سوم در پیکر بندی مجدد FPGA
جریان طراحی جدید که در بالا به آن اشاره شده است همچنین به عنوان پیکر بندی مجدد جزیی است و بر اساس روش های سنتز کلی سیستم پیاده سازی میشود. این روش مستلزم آن است که کدهای مربوط به هر بخش (یا ماژول پیکر بندی مجدد PRM) به طور مستقل و بدون بهینه سازی در سراسر مرزهای بخشها، تولید شود. به صورت موازی، هر ماژول طراحی شده به طور مستقل و با جعبههای سیاه برای هر پارتیشن سنتز میشود. این روند در شکل 2-7 نشان داده شده است که در آن کدها برای PRM ها از طریق سنتز با استفاده از Xilinx ISE به دست آمده است. در پارتیشن جدید طراحی، همه فعالیتهای مربوط به پیکر بندی مجدد جزئی در اطراف این ابزار قادر است تا به صورت خودکار و دقیق سیم بندی بین ماژولها را برقرار کند (Koch, Beckhoff and Torresen 2010, 103-108).
شکل 2-7. جریان طراحی سنتی برای مفهوم سیستم پیکر بندی مجدد به صورت پویا
2-6- معرفی مرجع چهارم در پیکر بندی مجدد FPGA
در مرجع چهارم یک طراحی موثر مبتنی بر پیکر بندی مجدد جزئی پویا ارائه شده است که یک محیط مناسب برای پردازش تصویر و سیگنال و همچنین هستههای محاسباتی IP-Core آماده میکند که نمودار مربوط به این الگوریتم را در شکل 2-8 ملاحظه میکنید.
شکل 2-8. الگوریتم پیکر بندی مجدد جزئی پویا مرجع (Krill and Ahmad 2010, 377-387)
روند طراحی به این گونه است که ابتدا کدهای مربوط به هستههای محاسباتی را نوشته و در مرحله دوم آنها را سنتز میکنیم. در این مرحله و مرحله سوم سایز و منطقه مربوط به هر کدام را مشخص میکنیم. در مرحله چهارم، عملیات مربوط به سیمبندیها انجام میشود و در نهایت سیستم را تکمیل میکنیم.
2-7- معرفی مرجع پنجم در پیکر بندی مجدد FPGA
در مرجع پنجم، به منظور به دست آوردن کلاک مورد نیاز برای سرعت بالا، طراحی با چگالی بالا، مدیریت کلاکFPGA اختصاص داده شده که در حال تبدیل شدن به یک ضرورت بسیار مهم است، طراحیهای مناسبی انجام گرفته است. انعطاف پذیری و برنامه ریزی در محدوده برنامههای کاربردی دارای نقشی حیاتی است. معماریهای جدیدFPGA ، از جمله سریXilinx Virtex ، اجازه پیکر بندی مجدد زمان اجرا و پویا را میدهد. یک FPGA میتواند داده های پیکربندی خود را در زمان اجرا تغییر دهد و امکان جایگزینی بخشهای خاصی از طراحی سخت افزاری را بر اساس نیازهای برنامه فراهم کند.
مرجع پنجم به تشریح یک رویکرد جدید از سنتز فرکانسهای دیجیتال در رابطه با مدیریت کلاک FPGA میپردازد. اجرای الگوریتم بر اساس انجام سنتز فرکانسی با استفاده از پیکربندی مجدد پویا(DRP) یک مدیریت کلاک دیجیتالیDCM اولیه از طریق ماژول تنظیم مجدد است.
طراحی بر اساس روشهای طراحی مجدد جزئی است که به صورت پویا فرکانس کلاک DCM را با توجه به نیازهای برنامههای در حال اجرا، تعیین میکند. هر فرکانس خروجی را می توان با دقت و به سرعت تصحیح کرد.
به طور کلی FPGA ها با DCM های تعبیه شده خود به حل مشکلات مدیریت کلاک در طراحی با سرعت بالا میپردازند. بنابراین، DCM ها طراحیها را ساده تر میکنند و توسعه و هزینه طراحیها را بهبود میبخشند. این می تواند یک کلاک تاخیر داده شده در حلقه، یک سنتز کننده فرکانسی دیجیتال، فاز دیجیتال، و طیف گستردهای از سیگنالهای دیجیتال را همانطور که در شکل 2-9 نشان داده شده است، پیاده سازی کند.
شکل 2-9. بلوک DCM
در شکل 2-10 طراحی در سطح RTL بلوک DCM نشان داده شده است.
شکل 2-10. طراحی در سطح RTL بلوک DCM
شکل 2-11 یک نمودار از کدهای سلسله مراتبی را برای بلوک DCM نشان میدهد. ماژولهای TOP و DCM در منطقه ایستا از طراحی هستند، به این معنی این بلوکهای منطقی مختص به کارهای مشخص شدهای هستند در حالی که ماژولهای دیگر را میتوان به صورت پویا پیکربندی مجدد کرد.
ماژول پیکر بندی مجدد DCM_Cntrl پیکر بندی مجدد مولفه DCM قرار داده شده در منطقه استاتیک را با استفاده از پورت DRP کنترل میکند. هر بلوک متشکل از طراحی بالا به طور جداگانه ساخته شده و سپس با استفاده از نرم افزار ISE Xilinx سنتز میشود.
این ابزار دارای خصوصیاتی است که به طراح اجازه میدهد تا مفهوم ماژولار را درک کند و به آن اجازه می دهد تا فایلهای پیکر بندی مجدد جزئی را پیاده سازی کند.
شکل 2-11. طراحی سلسله مراتبی مرجع پنجم
برای پیاده سازی اولیه در نرم افزار Modelsim مرجع پنجم شکل 2-12 را به دست آورده است.

شکل 2-12. نتایج شبیه سازی DRP بلوک های منطقی
شکل 2-13 سیستم را که به بخشهای استاتیک و پیکر بندی مجدد جزیی تقسیم شده است را نشان می دهد. برای هر بخش تنظیم مجدد (RP) فایلهای چند بیتی بر اساس نوع برنامه تولید میشوند. تابع اجرا شده در پیکر بندی مجدد بخشی است که با دانلود یکی از فایلهای بیتی جزئی اصلاح شده به دست میآید.

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

شما می توانید تکه های دیگری از این مطلب را با جستجو در همین سایت بخوانید

ولی برای دانلود فایل اصلی با فرمت ورد حاوی تمامی قسمت ها با منابع کامل

اینجا کلیک کنید

فصل سوم:
پیاده سازی نرم افزاری و سخت افزاری
پیکربندی مجدد پیشنهادی
3-1- مقدمه
بر خلاف پیاده سازیهای بر مبنای ریزپردازنده که طول کلمه به وسیله سیم بندی معماری پردازنده تعریف شده است، محاسبات قابل پیکربندی مجدد بر مبنای FPGA ها به هر متغیر این اجازه را میدهد که هر طولی برای تولید بهترین موازنهها در دقت عددی اندازه، طرح، سرعت و مصرف توان، داشته باشد. کاربرد چنین نمایش داده سفارشی برای بهینه سازی طراحیها یکی از نقاط قوت اصلی محاسبات قابل پیکربندی مجدد میباشد.
با این قابلیت انعطاف، خودکار سازی فرآیند، پیدا کردن یک نمایش داده خوب، مطلوب میباشد. مهمترین تصمیم پیاده سازی برای خودکارسازی، انتخابی از یک طول کلمه مناسب و مقیاس گذاری برای هر سیگنال در یک سیستم DSP است.
مسأله مورد بحث اغلب این است که کاراترین پیاده سازی سخت افزاری یک الگوریتم آن است که تعداد زیادی از نمایش‌هایی با دقت نهایی از اندازههای گوناگون برای متغیرهای داخلی مختلف باشند که دقت قابل مشاهده در خروجی یک سیستم DSP تابعی از طول کلمه برای نمایش تمام متغیرهای میانی در الگوریتم باشد. با وجود این، دقت برخی از متغیرها نسبت به بقیه کمتر حساس است. ثابت شده است که با در نظرگرفتن خطا و اطلاعات سطح در یک روش ساخت یافته با استفاده از مدلهای نویز تحلیلی و نیمه تحلیلی این امکان وجود دارد که به پیاده سازیهای DSP با کارآیی بالاتر دست یافت.
نشان داده شده است که مسأله بهینه سازی طول کلمه کاری بسیار مشکل است ولی در سیستمهایی با ویژگی‌های محاسباتی خاص که مسأله را از یک دیدگاه کاربردی، ساده میکنند. به هر حال چندین رویکرد برای حل این مسأله منتشر شده است. یکی از این راهحلها، رویکردهای بهینهای هستند که میتوانند در الگوریتمهای همراه با خواص ریاضیاتی خاص به کار گرفته شوند.
بهترین راه برای پیکربندی مجدد به صورت نرم افزاری و با استفاده از روش طول کلمه، نوشتن کدها در نرم افزار VHDL به صورت n بیتی میباشد. دلیل این است که در برد FPGA میلیونها محاسبات ریاضی در ثانیه انجام میگردد. هر کدام از این محاسبات با یک طول کلمه خاص (بین 2 تا 4096 بیت) است. به عنوان مثال، عمل ضرب همزمان بین دو عدد 8 بیتی و 128 بیتی انجام میگیرد. اگر بخواهیم برای هر کدام یک ضرب کننده جدا طراحی کنیم (که عملأ غیر ممکن است)، سریعأ فضای FPGA پر میشود و سرعت به شدت پایین میآید. بنابراین، بهترین راه برای آن، پیکربندی مجدد به صورت نرم افزاری و با استفاده از روش طول کلمه است. یعنی، کدهای عملیات ریاضی را به صورت n بیتی مینویسیم و با تکنیک فراخوانی بلادرنگ، هر گاه نیاز به هر یک از توابع جمع کننده، تفریق کننده، ضرب کننده و تقسیم کننده و با هر تعداد بیت دلخواه داشتیم، بلافاصله از این کدها استفاده میکنیم.
بنابراین، اگر در یک ثانیه نیاز به صدها عمل ضرب کردن داشتیم، میتوانیم از این کد ضرب کننده n بیتی استفاده کنیم که علاوه بر افزایش سرعت، استفاده از فضای داخلی FPGA را کاهش دادهایم.
در این پاین نامه، توابع جمع کننده، تفریق کننده، ضرب کننده و تقسیم کننده را به صورت n بیتی به وسیله نرم افزار VHDL طراحی کردهایم. نکته بسیار مهم این است که حتی بهترین نرم افزار دنیا در زمینه سنتز کدهای VHDL که ISE میباشد، این اختیار را برای کاربر فراهم نکرده است و تنها به کاربر اجازه میدهد تا از هستههای محاسباتی خود به صورت 4، 8، 16، 32 و 64 بیتی استفاده کند. بنابراین، اگر کاربر بخواهد که از ضرب کننده 65 بیتی به بالا استفاده کند، کاملأ ناتوان خواهد بود. اما توابعی که برای پیاده سازی توابع جمع کننده، تفریق کننده، ضرب کننده و تقسیم کننده که در این پایان نامه به روش پیکربندی مجدد طراحی شده است، برای تمامی نیازهای کاربر را به خوبی فراهم میکند. استفاده از این کدها میتواند برای کاربردهای زیر باشد:
* تمامی مراکز دانشگاهی و علمی.

دسته بندی : پایان نامه ها

پاسخ دهید