PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [سوال] مقایسه fpga با میکرو کنترولر و مینی کامپیوتر ها



alamdar
23-01-2014, 18:05
سلام

دوستان یک سوال دارم . میخواستم ببینم قدرت و توان fpga رو با چه میکروهایی میشه مقایسه کرد ؟ یعنی با قویترین fpga چه سطح میکروکنترولرهایی رو میشه پیاده سازی کرد و یا چه سیستم ها و برنامه هایی رو میشه اجرا کرد ؟

فرضا من میخوام روی یک دوربین کار پردازش تصویر انجام بدم . هم میتونم با pc کار کنم(از همین مینی بردهای روی سایت) ، هم با میکرو و هم با fpga . اما مزایا و معایب هرکدام چی هست؟ و با کدامیک میتوان سیستم قوی تر و سریعتری داشت؟

قبلا یادمه میگفتن مزیت استفاده از میکرو به جای pc ، real-time بودن و هنگ نکردن میکروست و مثلا در یک پرنده ی کواد روتور اگر از pc استفاده بشه ممکنه سیستم عاملش هنگ کنه و بعدش هم سقوط!

اما نمیدونم این لینوکس هایی که جدیدا روی این مینی برد های مبتنی بر ARM میریزند هم هنگ میکنه یا نه ؟ و یا سیستم عامل جدیدی که برای ARM اومده RIOS فکر کنم؟ اونم ممکنه که هنگ کنه؟

و از همه ی اینها مهمتر بحث fpga . آیا fpga هم مشکلات هنگ کرده یا real-time نبودن رو داره ؟ آیا fpga مثل میکرو خروجی های از پیش تعریف شده مثل I2C و USB و usart و ... داره و یا خروجی هاشم باید توسط کاربر طراحی بشه ؟

همچنین اگر کسی بخواد برای fpga که ساخته ، برد راه انداز هم بسازه ، باید چه دانش رو به دست بیاره؟ و چه کتاب هایی رو پیشنهاد میدید برای آموزش؟ (مثلا در مورد میکرو میدونم خودش نقشه ی همه خروجی هارو داره و گفته چطور باید از اونها استفاده بشه، و یا میشه از بردهای دیگه که از اون میکرو استفاده کردن و خروجی مورد نیاز مارو پیاده سازی کردن کپی برداری کرد ولی در مورد fpga ها چطور؟)

اصلا تفاوت سرعت fpga با میکرو چقدر هست؟

alamdar
23-01-2014, 19:36
اگر مثلا یک میکروکنترولر رو عینا بخواهیم با استفاده از یک fpga پیاده سازی کنیم ، سرعتش کمتر میشه؟ چقدر کمتر؟ همچنین مصرفش چطور؟

من میدونم fpga ها از 20 هزار گیت به بالا هستند ، اما کسی میدونه مثلا یک میکروی ARM رو با چند گیت منطقی میشه پیاده سازی کرد؟

hossein1387
23-01-2014, 21:05
اگر مثلا یک میکروکنترولر رو عینا بخواهیم با استفاده از یک fpga پیاده سازی کنیم ، سرعتش کمتر میشه؟ چقدر کمتر؟ همچنین مصرفش چطور؟

من میدونم fpga ها از 20 هزار گیت به بالا هستند ، اما کسی میدونه مثلا یک میکروی ARM رو با چند گیت منطقی میشه پیاده سازی کرد؟


سلام

یکی از جالبترین کارهایی که میشه با FPGA کرد همین طراحی پروسسرو براساس نیاز خودتون هست. مثلا هسته Cortex M0 بین 12000 تا 17000 تا گیت احتیاج داره. این تعدا گیت فقط برای هسته احتیاج هست. روش طراحی این هست که یک باس APB یا AHB یا AXI و یا... طراحی میکنن و Peripheral های خودشون رو اضافه میکنن. برای مثلا برای یک بلوک UART ساده که به حدود 100 تا گیت احتیاج داره رو به راحتی میشه با AXI-Lite به بلوک AXI اضافه کرد و این بلوک رو هم به میکرو. بقیه peripheral ها هم به همین صورت.
برای قسمت های آنالوگ هم یا از بلوک های آنالوگ خارجی استفاده میشه و یا از FPGA هایی که این قابلیت ها رو دارن استفاده میکنن مثلا سری ARTIX7 درخودشون بولک های Mixed Signal رو دارن:
Artix-7 FPGA Family (You can see links before reply)

از لحاظ مصرف توان و سرعت، علاوه بر روش طراحی تکنولوژی FPGA هم بسیار تاثیر گذار خواهد بود:
All Programmable FPGAs (You can see links before reply)
همینطور که میبینید خانواده ARTIX با تکنولوژی 28nm ساخته شده ولی مثلا خانواده Spartan با تکنولوژی 45nm. واضح هست که مصرف توان و سرعت طرح های پیاده شده روی این دو خانواده با هم فرق خواهند داشت.
اگر با شرکت Xilinx آشنا باشید حتما میدونید که خود این شرکت هم پروسسورهای مخصوص خودش رو طراحی کرده و به صورت IP در اختیار شما قرار داده. برای مثلا MicroBlaze:
MicroBlaze - Wikipedia, the free encyclopedia (You can see links before reply)

alamdar
23-01-2014, 21:35
سلام
ممنون دوست عزیز اطلاعاتی که دادید خیلی عالی بود

راستش منم برای همین وسوسه شدم به جای یادگرفتن دستورات برنامه نویسی میکروهای مختلف و یا معماری و خصوصیاتشون و بعد از مدتی دوباره مهاجرت به میکروی جدید ، روی fpga ها سرمایه گذاری کنم و اینطوری میتونم به مرور زمان(که البته نمیدونم واقعا چقدر طول میکشه) یک میکروی اختصاصی واسه خودم داشته باشم و هروقت خواستم قسمت های مختلفش رو تغییر بدم یا کامل کنم .

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

اما به نظرم سرمایه گذاری بهتری باشه نسبت به میکرو ؟ ولی خب این فقط یک نظریه است و نمیدونم سطح کاری که نوشتم چقدر میتونه بالا باشه و اصلا شدنی هست یا نه؟!!

hossein1387
23-01-2014, 21:53
اگرچه FPGA قابلیت های خیلی زیادی در اختیارتون قرار میده، ولی باید در نظر داشته باشید که مصرف توان FPGA ها اکثرا از میکروهای Customize شده ای که توسط شرکت های مختلف ارایه میشه بیشتر هست. ولی در کل یک تجربه بسیار عالی خواهد بود اگر بتونید همیچین کاری رو انجام بدین. از اونجا که شما هسته Cortex رو دراختیار ندارید، مجبور خواهید شد که از Microblaze به عنوان پروسسور مرکزی شروع کنید. چون Microblaze از باس AXI استفاده میکنه، باید آشنایی خوبی با این باس داشته باشید. بنابراین توصیه میکنم که با document های Microblaze و AXI از سایت Xilinx و ARM شروع به کار کنید. کار خیلی پیچیده ای هم نیست ولی اوایل یکم سخت جلو خواهید رفت.

gate_crasher
24-01-2014, 01:38
به نظر من میکرو و fpga رو نمیشه به راحتی مقایسه کرد. در کل یه نظریه وجود داره که می گه باید راه رو ادامه داد نه اینکه کارهایی که قبلا انجام شده و با هزینه های بسیار بهینه شده رو دوباره انجام بدی. همون طور که حتما خودتون اطلاع دارید تقریبا همه میکرو ها در مرحله اولیه طراحی توسط Fpga ها و cpld ها پیاده سازی شدن و بعد از انجام کلی تست ساخته شدن. به نظر من fpga فقط به درد طراحی های خاص و هدفمند می خوره. مثلا یکی از پروژه هایی که ارتش ایران در حال پیاده سازیش بود چند وقت پیش ساخت cpu هایی بود که حملات DoS رو به صورت سخت افزاری تشخیص بده و ازشون جلوگیری کنه یا مثلا یکی از کارهای دیگه ثبت رکورد هایی جهانی سرعت شکستن رمز گذاری AES با موازی کردن چندین fgpa و این جور کارا. البته این فقط نظر من هست و اعتبار بیشتری نداره. :D

alamdar
24-01-2014, 11:49
ممنون از دوستان ، واقعا بحث مفیدی شد

اتفاقا منم دنبال طراحی های هدفمند و خاص منظوره هستم و امیدوارم روزی برسه که منم بتونم از روی fpga خودم میکروش رو بسازم . دنبال اختراع چرخ از نو هم نیستم ولی نمیدونم چطور میشه راه رو ادامه داد؟ اگر منابع کافی برای ادامه کار باشه که مسلما منم دوست دارم راه رو ادامه بدم .

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

آیا fpga هم مثل میکرو real-time حساب میشه و میشه مثلا یک ربات پرنده رو باهاش پیاده سازی کرد؟
پس این تاخیر بالا قضیه اش چیه؟

gate_crasher
24-01-2014, 12:16
نگا کنید شما مثلا یه میکرو کنترلر می خرید مثل سری lpc که بهتون کلی امکانات می ده مثلا پورت lan, can, uart و ... ولی شما توی یه پروژه شاید فقط از یکی از این موارد استفاده کنید و بقیه بالا استفادس. این که می گن fpga سرعتش خیلی بالاس بخاطر این هست که منابعی رو که به کاربرد های بلا استفاده اختصاص داده شده رو می تونید در راستای هدفتون به کار بگیرید و نذارید که منابع (مثل انواع گیت ها و ریجستر ها و رم) هدر بره.

و به نظرم fpga ها realtime هستن اگر اصطلاحا سنتز اونا بدون مشکل و تست شده باشه

alamdar
06-02-2014, 15:42
یک سوال ، فرضا ما یادگرفتیم که چطور باید fpga رو برنامه ریزی کرد و رفتیم یک IC fpga هم خریدیم . خب حالا چطور باید یک بورد برای استفاده از این آی سی ساخت؟

gate_crasher
06-02-2014, 23:58
بورد های آموزشی و تست اون به صورت آماده موحود هست که امکانات مختلفی مثل پورت های ارتباطی رو بهت می ده. اگه مراحل طراحی تون آماده شد و به یه طرح کامل رسیدی بعد می تونی برد اختصاصی برای طرحت توی نرم افزار هایی مثل altium desiner طراحی کنی

alamdar
07-02-2014, 00:46
ممنون . ولی اصل سوالم در مورد چگونگی طراحی برد هست؟ اینکه خوندن چه کتابهایی در این زمینه(طراحی برد برای انواع ic ها) توصیه میشه؟ از مقدماتی تا پیشرفته

gate_crasher
07-02-2014, 01:58
اگه اهل خوندن کتاب هستین(خوندن کتاب رو به pdf ترجیح می دی) من 2 تا کتاب از fpga خوندم که به نظرم بد نیستن ولی کافی نیست و فقط شما رو با مقدمات کار آشنا می کنه یکیش انتشارات نص هست و دومیش از انتشارات نشر علوم اگه اشتبا نکنم. اینا رو که خوندی تازه یه درک ابتدایی از fpga پیدا می کنی بعدش دیگه هرچی لازم داری رو باید توی نت جستجو کنی. تو این کتابا اشاراتی هم به اصول طراحی بورد برای fpga شده که چه نکانی رو با توجه به اینکه با مدارات فرکانس بالا سر و کار دارید باید رعایت کنید.

alamdar
09-02-2014, 13:15
من میخوام یاد بگیرم برای هر آی سی(از FPGA تا میکروکنترولر و میکروپروسسور) که دستم اومد بتونم یک شماتیک طراحی کنم و بعدشم بوردش رو بسازم (بدون کپی کاری)

قبلا یک بورد برای میکروی nxp 1768 طراحی کردم ولی با استفاده از کپی کردن از روی شماتیک بورد های تجاری که قبلا واسه این میکرو ساخته شده بود!

نمیخوام دیگه کپی کاری کنم . میخوام دانش بدست بیارم که من بتونم اولین طراح یک بورد برای یک IC باشم.

sadeghbakhshi
15-02-2014, 04:37
من میخوام یاد بگیرم برای هر آی سی(از FPGA تا میکروکنترولر و میکروپروسسور) که دستم اومد بتونم یک شماتیک طراحی کنم و بعدشم بوردش رو بسازم (بدون کپی کاری)

قبلا یک بورد برای میکروی nxp 1768 طراحی کردم ولی با استفاده از کپی کردن از روی شماتیک بورد های تجاری که قبلا واسه این میکرو ساخته شده بود!

نمیخوام دیگه کپی کاری کنم . میخوام دانش بدست بیارم که من بتونم اولین طراح یک بورد برای یک IC باشم.
خب شما باید قبل از هر چیز بدونید که اون قطعه چی هست
کارش چیه؟
چقدر اتلاف حرارتی داره
و ترتیب پایه ها چطوری هست
که اکثر این اطلاعات توی دیتاشیت درج شده
مثلا چکار کنید که ترک ها بر اثر جریان بالا کنده نشه یا جریان مدار رو محدود نکنه
گفتی سخت افزار خوندید
شما به آخرین سری مادربرد ها گیگابایت نگاه کنید
من تنها یکی از کارهای اخرش رو میگم
قطر ترک رو دوبرابر کرده همین
خب چه تاثیراتی داره
1.جریان دهی بیشتر
2.دفع حرارت
3.پایداری در برابر اورکلاک کردن
4. تا دوبرابر امپدانس کمتر
5.و در نهایت بازده ی بیشتر
این یک چیز کوچیک بود
یا ترکی که قرار هست سیگنال فرکانس بالا از خودش عبور بده نباید 90 درجه چرخش داشته باشه
این میشه یک بخش مساله
طرف دیگه میشه خلاقیت . سلیقه و حوصله
اینکه چطوری قطعات رو بچینی چطوری ترک بزنی که نویزمدار به حداقل برسه
قطعه رو کجا بزارید که بر اثر حرارت زیاد نسوزه و یا کارهایی برای دفع گرما انجام بدید
که این ها به صورت تجربی و دید بازتر به وجود میاد
البته این ها هم یک اصولی دارند ولی من تا بحال مرجعی در این رابطه ندیدم
پس بهترین کار اینکه بچسبی به کسانیکه تجربه ی کافی دارند و به زور هم که شده ازشون
اطلاعات بگیری
و از هیچ چیز کوچک و جزی نگذری
البته این رو هم بدون یک شبه طراح حرفه ای نمیشی

alamdar
15-02-2014, 12:02
خیلی ممنون از شما

ولی سوال من دقیقا همینه که این اطلاعاتی که شما لیست کردید رو از کجا کسب کردین؟ مطمئنا یک قسمتیش تحربه بوده ولی یک قسمت هم مطالعه بوده. من میخوام اول قسمت مطالعه رو کامل کنم تا بعد با استفاده از اصول و دانش پایه ، بتونم کارهایی کنم که در حینش بشه تحربه هم کسب کرد!

و الان دنبال مرجع یا مراجعی برای یادگیری اون اصول پایه ام.

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

1 - جلد اول و دوم نظریه اساسی مدارها و شبکه‌ها - نویسنده: چارلز دسور - ارنست کوه (ترجمه دکتر جبه دار مارالانی)

2- Digital design نویسنده موریس مانو

3- Computer System Archtecture نویسنده موریس مانو

4- دو تا درس به نام های مدار الکترونیکی و الکترونیک دیجیتال هم داشتیم (که فکر کنم برابر با دروس الکترونیک 1 و 2 رشته برق بود) که از روی کتاب Digital Integrated Circuits Thomas A. Demassa, Zack Ciccone تدریس شد.

5- اصول طراحی VLSI
نوشته: کامران اشراقیان ، داگلاس پاکنل

6- درس میکروپروسسور که مرجعش یادم نیست ولی بیشتر از روی جزوه و در مورد اینترفیس کردن پردازنده های سری 8086 و 80386 بود.

7- درس کنترول خطی که از روی کتاب های Benjamin Kuo و Katsuhiko Ogata تدریس شد.(که البته این ربطی به طراجی برد نداشت و بیشتر در مورد مفاهیم و رویکرد حل مسئله حرف میزد)

8- یه درسی بود اسمش یادم نیست ولی زبان برنامه نویسی VHDL رو یاد گرفتیم و توی quartos2 کد تست میکردیم . و یک کارگاه هم داشت که اونجا verilog رو یاد گرفتیم و توی نرم افزاری xilinx قسمت های مختلف یک کامپیوتر مثل حافظه و cpu و ... رو شبیه سازی میکردیم .

دروس دیگه شبیه انتقال داده و مدار واسط و شبکه هم داشتیم که بیشتر در مورد نحوه شبکه کردن و انتقال دادن داده ها بین سیستم های دیجیتالی و .. بود.


به نظر شما این دروس کافیه؟
اگر کافیه که هیچی برم و یکبار دیگه با عمق بیشتری مرورشون کنم. اگر نیست بگید چه دروس دیگه ای برای اینکار لازمه؟ برای یاد گرفتن اون اصول پایه برای شروع طراحی؟

az_10s
08-03-2014, 19:05
خب شما باید قبل از هر چیز بدونید که اون قطعه چی هست
کارش چیه؟
چقدر اتلاف حرارتی داره
و ترتیب پایه ها چطوری هست
که اکثر این اطلاعات توی دیتاشیت درج شده
مثلا چکار کنید که ترک ها بر اثر جریان بالا کنده نشه یا جریان مدار رو محدود نکنه
گفتی سخت افزار خوندید
شما به آخرین سری مادربرد ها گیگابایت نگاه کنید
من تنها یکی از کارهای اخرش رو میگم
قطر ترک رو دوبرابر کرده همین
خب چه تاثیراتی داره
1.جریان دهی بیشتر
2.دفع حرارت
3.پایداری در برابر اورکلاک کردن
4. تا دوبرابر امپدانس کمتر
5.و در نهایت بازده ی بیشتر
این یک چیز کوچیک بود
یا ترکی که قرار هست سیگنال فرکانس بالا از خودش عبور بده نباید 90 درجه چرخش داشته باشه
این میشه یک بخش مساله
طرف دیگه میشه خلاقیت . سلیقه و حوصله
اینکه چطوری قطعات رو بچینی چطوری ترک بزنی که نویزمدار به حداقل برسه
قطعه رو کجا بزارید که بر اثر حرارت زیاد نسوزه و یا کارهایی برای دفع گرما انجام بدید
که این ها به صورت تجربی و دید بازتر به وجود میاد
البته این ها هم یک اصولی دارند ولی من تا بحال مرجعی در این رابطه ندیدم
پس بهترین کار اینکه بچسبی به کسانیکه تجربه ی کافی دارند و به زور هم که شده ازشون
اطلاعات بگیری
و از هیچ چیز کوچک و جزی نگذری
البته این رو هم بدون یک شبه طراح حرفه ای نمیشی

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