اطلاعیه

Collapse
No announcement yet.

چند سوال مقدماتی در باره ی FPGA

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چند سوال مقدماتی در باره ی FPGA

    سلام به همه .
    من میخوام به تازگی کار با FPGA رو شروع کنم ، توی سایت مقالات و اموزش های خوبی وجود داشت که ازشون بهره بردم .
    بعد از خوندن این مقالات سوالاتی به شرحی زیر برام پیش اومده که از افرادی که اونا پاسخ میدن کمال تشکر رو دارم : ( من با میکروکنترلر های PIC و AVR قبلا کار کردم و و یه چیزایی حالیمه :read: )
    1- مفهوم واژه زیر دقیقا چی هست ؟
    verification
    addresses verification
    cutting-edge FPGA
    مفهوم و تفاوت ASIC با FPGA با SOC
    سنتز کردن

    2- برای برنامه نویسی تراشه های FPGA دقیقا چه مراحلی باید طی بشه ( مثلا برای میکروکنترلر ها ، یکی از میکروکنترلر ها رو انتخاب میکردیم و بعد در کامپایلر مربوطه شروع به برنامه نویسی میکردیم ، بعد برنامه رو کامپایل میکردیم و بعد از شبیه سازی ( در صورت نیاز به شبیه سازی ) کد هگز ایجاد شده رو با پروگرامر به میکرو کنترلر منتقل میکردیم ، همچنین میشد با استفاده از دیباگر ها برنامه رو به صورت سخت افزاری اشکال یابی کرد . توی FPGA چطوری هست ؟ )
    3- از چه کامپایلر و شبیه سازی برای FPGA استفاده میکنید ( من با نام نرم افزار ها آشنایی دارم و فقط میخوام نظر شما رو بدونم . مثلا برای AVR کامپایلر های زیادی وجود داره که تقریبا همه میدونن که IAR حرفه ای ترینه ، بسکام سبک ترین و راحت ترین کامپایلر برای یاد گیریه وین AVR متن بازه و رایگانه و... ، همچنین از پروتوس هم میشه برای شبیه سازی استفاده کرد ) .
    4- آیا توی FPGA هم میشه پردازنده رو عوض کرد یا کد های ایجاد شده مخصوص یک پردازنده ی خاص ( پردازنده ای که در ابتدای برنامه نویسی تعیین میشه ) هستند ؟ ( مثلا توی میکروکنترلر ها کار رو با PIC16F877 شروع میکردم و بعد اگه فضا کم می یومد یا ... به سادگی ، نام میکرو کنترلر رو در برنامه به PIC18F455 تغییر می دادم و دیگه نیازی به ایجاد تغییر در برنامه نبود ) ؟
    5- مفهوم IP چی هست ؟ (تا اونجا که فهمیدم IP یه بخش از برنامه هست که به صورت بلوک آماده ارائه میشه ، مثل Analog IP که با استفاده از اون میشه ADC یا DAC ایجاد کرد ، درسته ؟ )
    6- آیا همه ی پردازنده ها از IP پشیتبانی میکنن ؟ ( IP یه چیز سخت افزاری هست ؟ )
    7- آیا IP ها به صورت استاندارد هستند یا نه بسته به نرم افزاری که استفاده میکنیم فرق داره و ممکنه بعضی از نرم افزار ها اصلا از اون پشیتبانی نکنن ؟
    بازم هم کمال تشکر و قدر دانی رو دارم

    #2
    پاسخ : چند سوال مقدماتی در باره ی FPGA

    سلام مهندس

    Verification -a1خودش دنیایی هست. همه معمولا اهمیت Verification رو با این مثال شروع میکنن:
    http://en.wikipedia.org/wiki/Pentium_FDIV_bug
    خلاصش این هست که یک BUG توی قسمت Floating Point پروسسور Pentium از شرکت Intel پیدا شده بود که به گفته خودشون از هر 9 میلیارد محاسبه رندم با اعداد اعشاری یکیش خطا داشت! به خاطر همین خطای به ظاهر کوچیک اینتل حدود 500 میلیون دلار ضرر داد! حالا برای اینکه جلوی همچین ضرری رو بگیرن میان قبل از مرحله Fabrication طرح رو از نظر عملکرد مورد بازبینی قرار میدن. اگر اشکالی پیدا شد به مرحله طراحی میبرن و دوباره پروسه Verification رو روش انجام میدن. این یک اصل هست که هیچ طرحی بدون خطا نخواهد بود. بنابراین برای Verification معمولا یا بازه زمانی در نظر میگیرن و یا سطح پوشش خطا رو برای اتمام پروسه Verification مد نظر قرار میدن. مثلا میگن که اگر 90% طرح از لحاظ عملکردی پوشش داده شد پروسه رو به اتمام میرسونن.

    1b- این رو کجا دیدی؟ توی متن بهم نشون بده!
    1c- در فارسی به همون لبه دانش ترجمه میکنن. منظور این هست که این محصول با بالاترین سطح دانش طراحی شده.
    1d-فرض کن یک مدار دیجیتال طراحی کردی و حالا میخوای اون رو توی عمل پیاده سازی کنی. راه اول این هست که بری یک کامیون! گیت AND , OR و.. بخری و شروع کنی به بستن مدار! تازه در نهایت مطمنا کار نمیکنه! راه دوم این هست که طرحت رو مجتمع کنی و بدی برات IC رو بسازی. برای این کار تو هم خرج بالایی باید بکنی و هم اینکه سطح دانش و امکانات بالایی میخوای. ولی در عوض دیگه قطعه مخصوص خودت هست و میتونی این IC رو به دیگران هم بفروشی. به این میگن ASIC! حالا چون هزینه این کار خیلی بالا بود و از طرفی هم نیاز به داشتن طرح پیاده سازی شده هم خیلی زیاد بود اومدن یک سیستمی(FPGA) در اختیارت قرار دادن که تو میتونی هر چند بار که میخوای طرحت رو روش پیاده کنی و به صورت عملی عملکرد مدار رو هم بیینی. از طرف دیگه خرج زیادی هم نباید بکنی.
    SOC ها معمولا شامل یک FPGA و یک سری System های دیگه (مثلا یک Processor) میشه. به نسبت از FPGA خیلی جدید تر هست.

    2و3 رو میتونی توی همین سایت مطلب در موردش پیدا کنی

    4- FPGA با پردازنده کلا فرق داره. در عمل یک فایل با پسوند ucf وجود داره که ارتباط کد شما رو با پایه های فیزیکی برقرار میکنه. در کل برای اکثر طرح ها میشه این کار رو کرد ولی باید حواستون به تعداد گیت های استفاده شده باشه. همچنین اگر طرح برای مقصد خاصی Optimize شده باید طرح رو برای قطعه جدید دوباره Optimize کنید.

    5- IP core های میتونن شامل یک بلوک ساده UART بشن تا یک پروسسور. توی ISE و SDK میتونی ببینی که چه IP Core هایی برای این قطعه ای که داری استفاده میکنی از قبل آماده هست.

    6- ربطی به نرم افزار نداره. شاید توی نرم افزار هم همچنین مفهمو هایی باشه ولی اینجا منظور یک بلوک سخت افزاری هست


    دیدگاه


      #3
      پاسخ : چند سوال مقدماتی در باره ی FPGA

      Verification -a1خودش دنیایی هست. همه معمولا اهمیت Verification رو با این مثال شروع میکنن:
      http://en.wikipedia.org/wiki/Pentium_FDIV_bug
      خلاصش این هست که یک BUG توی قسمت Floating Point پروسسور Pentium از شرکت Intel پیدا شده بود که به گفته خودشون از هر 9 میلیارد محاسبه رندم با اعداد اعشاری یکیش خطا داشت! به خاطر همین خطای به ظاهر کوچیک اینتل حدود 500 میلیون دلار ضرر داد! حالا برای اینکه جلوی همچین ضرری رو بگیرن میان قبل از مرحله Fabrication طرح رو از نظر عملکرد مورد بازبینی قرار میدن. اگر اشکالی پیدا شد به مرحله طراحی میبرن و دوباره پروسه Verification رو روش انجام میدن. این یک اصل هست که هیچ طرحی بدون خطا نخواهد بود. بنابراین برای Verification معمولا یا بازه زمانی در نظر میگیرن و یا سطح پوشش خطا رو برای اتمام پروسه Verification مد نظر قرار میدن. مثلا میگن که اگر 90% طرح از لحاظ عملکردی پوشش داده شد پروسه رو به اتمام میرسونن.
      سلام
      ابتدا از پاسخ روشن و کاملتون کمال تشکر رو دارم .
      دو تا سوال دیگه :
      آیا عملیات Verification و Fabrication توسط ما ( برنامه نویس ) انجام میشه یا توسط شرکت سازنده ی قطعه ؟
      در مورد سنتز کردن هم یه مقدا توضیح میدید ؟ :mrgreen:
      با تشکر

      دیدگاه


        #4
        پاسخ : چند سوال مقدماتی در باره ی FPGA

        نوشته اصلی توسط mohammadh1387
        ...SOC ها معمولا شامل یک FPGA و یک سری System های دیگه (مثلا یک Processor) میشه. به نسبت از FPGA خیلی جدید تر هست...
        oo:
        منظورتون چیه؟
        system on a chip or system on chip !!!
        یه کامپیوتر کوچولو توی یه پکیج IC !! تمام! مثلا یه میکروکنترلر.

        دیدگاه


          #5
          پاسخ : چند سوال مقدماتی در باره ی FPGA

          نوشته اصلی توسط user23
          سلام
          ابتدا از پاسخ روشن و کاملتون کمال تشکر رو دارم .
          دو تا سوال دیگه :
          آیا عملیات Verification و Fabrication توسط ما ( برنامه نویس ) انجام میشه یا توسط شرکت سازنده ی قطعه ؟
          در مورد سنتز کردن هم یه مقدا توضیح میدید ؟ :mrgreen:
          با تشکر

          پروسه Verification کلا قبل از ساخت آی سی صورت میگیره. در کل یک گروه کامل برای Design در نظر گرفته میشه و یک گروه کامل توی بخش Verification کار میکنن. به ازای هر 1 طراح حداقل 2 مهندس Verifier احتیاج هست و این خودش اهمیت کار رو نشون میده. یک توضیح دیگه هم در مورد Verification بدم. به طور کلی Functional Verification داریم و Formal Verification. مفهوم Functional Verification خیلی به نوشتن یک Test Bench ساده نزدیکه ولی خیلی پیشرفته تر از اون هست. تا جایی که زبون مخصوص خودش رو داره. Formal Verification یک تئوری هست و اصولش اینه که بیای سیستم رو مدل کنی (مثلا تبدیل به state machine کنی) و حالا بیای ببینی این مدل با اون چیزی که میخوای (Specification) یکی هست یا نه. یا در حالت کلی تر آیا تمام حالت هایی که توی مدل اتفاق میفته زیر مجموعه ای از Spec هست یا نه. کلا بحث خیلی خفن و باحالی هست و کار خیلی تخصصی هست. توی صنعت ایران که هیچ! توی خارج از کشور فعلا اکثر توجهات روی Functional Verification هست. همه اینها روگفتم که بگم Verification رو بستگی به طرح انجام میدن. شما همون Test Bench که برای یک پروژه ات مینویسی رو میتونی یک نوع Functional Verification حساب کنی. ولی مطمئنا این نوع روش ( Test Bench نویسی) برای طرح های خیلی بزرگ مثلا یک پروسسور خیلی کارایی نداره و باید یک گروه یا یک شرکت بیاد این کار رو انجام بده.
          Fabrication یا همون ساخت پروسه ساخت آی سی هست. امکانات خیلی پیشرفته ای میخواد. توی اینترنت میتونی کلیپ ساخت یک مدار ترانزیستوری ساده که با امکانات خانگی! انجام شده رو ببینی و متوجه شی که چقدر کار سخت و زمان گیری هست. همچنین بسیار هزینه بر هست و اصلا و ابدا در توان یک شرکت معمولی نیست. خود شرکت های بزرگ هم این کار رو انجام نمیدن و معمولا طرح رو برای ساخت به شرکت های مخصوص این کار میدن.


          در مورد سنتز کردن که خیلی بحث شده! ولی حالا! در حالت کلی منظور اینه که طرح رو از سطوح بالا به سطوح پایین تر انتقال بدی. مثلا در نظر بگیر میخوای یک ماژول UART طراحی کنی. توی همون Verilog میتونی بیای با Primitive (گیت های AND,OR,...) این کار رو انجام بدی که دیوانگی محض هست! چون همین ماژول ساده کلی وقت برای طراحیش باید بزاری تازه خیلی هم طول میکشه که کد رو بیای دیباگ کنی. بنابراین میان طرح رو به صورت خیلی جامع تر پیاده میکنن یعنی میان در نظر میگیرن که این ماژول از چه بلوک هایی ساخته شده و میان تک تک این بلوک ها رو خیلی High Level طراحی میکنن. بعد میان این طرح رو تبدیل به کد VHDL میکنن ولی اینبار چون طرح خیلی واضح تعریف شده و خیلی قابل فهم تر هست میان اون رو توی VHDL به صورت رفتاری (Behavioral) طراحی میکنن. حالا مشکل این جاست که توی FPGA شما فقط گیت های معمولی داری( And, or ,xor) و FPGA شما این کدی رو که نوشتی متوجه نمیشه. همچنین هر FPGA شامل Resource های خاص خودش هست. یعنی مثلا فرض کن شما توی کدتون از ضرب استفاده کردی، توی یک FPGA در کنار گیتهای AND , OR یک بلوک ضرب هم ممکنه باشه ولی توی یک FPGA دیگه چنین قابلیتی موجود نباشه. پس یک نرم افزار میاد اون کدی که شما به صورت High level طرح کردی رو تبدیل به Resource های اون FPGA مد نظرتون میکنه. به این کار سنتز کردن میگن. البته جاهای دیگه ای هم از این اصطلاح استفاده میشه ولی عموما به همین معناست.

          دیدگاه


            #6
            پاسخ : چند سوال مقدماتی در باره ی FPGA

            نوشته اصلی توسط Rohalamin
            oo:
            منظورتون چیه؟
            system on a chip or system on chip !!!
            یه کامپیوتر کوچولو توی یه پکیج IC !! تمام! مثلا یه میکروکنترلر.
            توی طراحی هایی که با FPGA انجام میدن خیلی خیلی پیش میاد که نیاز به یک پروسسور هم احساس میشه. یکی از امکاناتی که معمولا توی SOC ها تعبیه میشه قرار دادن یک پروسسور در کنار یک FPGA و داخل یک package هست. مثلا این طرح زیبا! رو از Xilinx برای SOC های سری Zync ببینید:
            http://www.xilinx.com/products/silicon-devices/soc/index.htm
            http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/index.htm

            همونظور که میبینید علاوه بر داشتن یک Programmable Hardware یک قسمت هم به پروسسور و peripheral ها اختصاص داده شده.

            دیدگاه


              #7
              پاسخ : چند سوال مقدماتی در باره ی FPGA

              نوشته اصلی توسط mohammadh1387
              توی طراحی هایی که با FPGA انجام میدن خیلی خیلی پیش میاد که نیاز به یک پروسسور هم احساس میشه. یکی از امکاناتی که معمولا توی SOC ها تعبیه میشه قرار دادن یک پروسسور در کنار یک FPGA و داخل یک package هست. مثلا این طرح زیبا! رو از Xilinx برای SOC های سری Zync ببینید:
              http://www.xilinx.com/products/silicon-devices/soc/index.htm
              http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/index.htm

              همونظور که میبینید علاوه بر داشتن یک Programmable Hardware یک قسمت هم به پروسسور و peripheral ها اختصاص داده شده.
              حرف شما درسته ولی این جمله که شما زدید که من نقل قول کردم منظورمه. من میگم لزوما اینطور نیست. یه FPGA و یه میکرو یا پردازنده دیگه. این به قول خود شما یه شیوه جدید هستش. اگه جزو SOC میشه حسابش کرد بخاطر اون میکروکنترلر هستش(بهتره بگیم میکروکنترلر چون اگه دقیقا نگاه کنید تقریبا همه پریفرال ها لازم و حافظه ها رو داره اگه بخواییم بگیم پردازنده باید جدا حساب کنیم که اگه نگاه کنیم نیست).

              دیدگاه

              لطفا صبر کنید...
              X