عنوان : طراحی و پیاده سازی یک ریزپردازنده قابل پیکربندی مجدد

دانشگاه آزاد اسلامی

واحد علوم و تحقیقات کرمان

دانشکده فنی و مهندسی، گروه مهندسی برق

پایان نامه برای دریافت درجه کارشناسی ارشد در رشته مهندسی برق  (M.Sc)

گرایش: الکترونیک

 عنوان:

طراحی و پیاده سازی یک ریزپردازنده قابل پیکربندی مجدد

 استاد راهنما:

دکتر مهدی جعفری

 استاد مشاور:

دکتر مهران ابدالی

برای رعایت حریم خصوصی نام نگارنده پایان نامه درج نمی گردد
(در فایل دانلودی نام نویسنده موجود می باشد)
تکه هایی از متن پایان نامه به عنوان نمونه :
(ممکن می باشد هنگام انتقال از فایل اصلی به داخل سایت بعضی متون به هم بریزد یا بعضی نمادها و اشکال درج نشود اما در فایل دانلودی همه چیز مرتب و کامل می باشد)
فهرست مطالب
عنوان                                                شماره صفحه
چکیده 1
فصل اول:تاریخچه محاسبات با قابلیت پیکربندی مجدد
1-1- مقدمه. 3
فصل دوم: مفهوم، معماری‌ها و روش‌های طراحی سیستم‌های قابل‌ پیکربندی مجدد
2-1- محاسبات و سخت افزار با قابلیت پیکربندی مجدد. 8
2-2- پیکربندی مجدد جزئی پویا و ایستا در FPGA ها 10
2-3- معرفی مرجع اول در پیکر بندی مجدد FPGA. 11
2-4- معرفی مرجع دوم در پیکر بندی مجدد FPGA. 12
2-5- معرفی مرجع سوم در پیکر بندی مجدد FPGA. 14
2-6- معرفی مرجع چهارم در پیکر بندی مجدد FPGA. 14
2-7- معرفی مرجع پنجم در پیکر بندی مجدد FPGA. 15
فصل سوم: پیاده سازی نرم افزاری و سخت افزاری پیکربندی مجدد پیشنهادی
3-1- مقدمه. 19
3-2- پیاده سازی جمع کننده Carry_Look_Ahead به صورت n بیتی.. 20
3-3- پیاده سازی ضرب کننده به صورت n بیتی.. 24
3-3-1 ضرب کننده برای دو عدد قدر مطلق علامت… 24
3-3-2 ضرب دو عددمتمم 2 یا 2’s. 25
3-4- پیاده سازی تقسیم کننده به صورت n بیتی.. 26
3-5- طراحی سخت افزار و ALU برای پیاده سازی کدها با قابلیت پیکر بندی مجدد. 28
3-5-1 طراحی واحد کنترل. 28
3-5-2 به کارگیری کنترل های FPGA در طراحی سخت افزاری با سرعت بالا. 31
 فصل چهارم: نتایج شیبه سازی
4-1- نتایج شیبه سازی در نرم افزار Modelsim.. 37
4-2- نتایج شیبه سازی در نرم افزار ISE. 39
4-3- مقایسه با مراجع. 51
فصل پنجم: نتیجه گیری
5-1- نتیجه گیری.. 54
فصل ششم: کارهای آینده
6-1- کارهای آینده 56
منابع و مآخذ. 57
فهرست منابع انگلیسی.. 57
پیوست: کدهای نوشته شده VHDL. 59
چکیده انگلیسی 68
چکیده
دو روش کلی در محاسبات برای اجرای الگوریتم­های مختلف هست. روش اول، بهره گیری از 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 را به عنوان ورودی می­گیرد و با تغییراتی اندک، آنها را برای اجرا و پیاده­سازی روی [5]FPGA در ریزپردازنده، کامپایل می­کند. بعضی از الگوریتم­های کاربردی با زبانهای سطح بالا همانند 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 و X30xx 1989 تا 1991
SPLASH و X40xx 1991 تا 1993
PRISM و DISC 1993 تا 1995
MATRIX و X6200 1995 تا 1997
CVH، RAW و FPGA 1997 تا 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).
تعداد صفحه :81
قیمت : 14700 تومان

این مطلب رو هم توصیه می کنم بخونین:   پایان نامه کارشناسی ارشد رشته مهندسی برق با موضوع انرژی رادیو فرکانسی یا RF

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

و در ضمن فایل خریداری شده به ایمیل شما ارسال می گردد.

پشتیبانی سایت :        ****       serderehi@gmail.com

در صورتی که مشکلی با پرداخت آنلاین دارید می توانید مبلغ مورد نظر برای هر فایل را کارت به کارت کرده و فایل درخواستی و اطلاعات واریز را به ایمیل ما ارسال کنید تا فایل را از طریق ایمیل دریافت کنید.

***  *** ***

دسته‌ها: مهندسی برق