اطلاعیه

Collapse
No announcement yet.

کمک در مورد یادگیری FPGA

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

    #16
    پاسخ : کمک در مورد یادگیری FPGA

    حالا فقط یک مورد پیش میاد. در یک میکرو کنترلری مثل AVR اطلاعات برنامه (اینجا مدل) در فلش میکرو ذخیره میشه. در میکرویی مثل 8031 که فلش داخلی نداره؛ ROM خارجی استفاده میشه. ولی در اینجا چطور؟
    در اصل FPGA بدون چیزی مثل فلش داخلی هست. اون انواعی که بر اساس eeprom داخلی کار میکنن رو بهش میگیم CPLD. اما وقتی میشه یک CPLD با ایپرام خارجی داشت چه کاریه بریم سراغ FPGA؟
    جواب اینجاست که وقتی میزان تعداد یا ظرفیت یک آی سی برای نگهداری یک منطق بسیار بزرگ بالا میره استفاده از نوع EEPROM based از لحاظ قیمتی مقرون به صرفه نیست. بخاطر همین میشه برای منطق های کوچیک از انواع EEPROM ی استفاده کرد ولی برای منطق های بزرگ باید سراغ انواع RAM-based که بهش FPGA میگیم رفت.

    اما نوع RAM based چطوری کار میکنه؟ معلومه! اینجا چیزی مثل یک ROM خارجی داریم که مدل ها رو توی اون میریزیم. به محض اینکه سیستم برقدار میشه کل اطلاعات رو از این حافظه خارجی به داخل خودش منتقل میکنه و آماده به کار میشه.
    به این ROM خارجی هم اصطلاحا configuration memory میگیم. حالا برای انواع این configuration memory چطوری میشه برنامه ریزی کرد من نمیدونم چون تا بحال فقط با CPLD کار کردم.

    حالا فرض میکنیم بردی طراحی کردیم و با استفاده از شماتیک فوق مدل مورد نیازمون رو روی CPLD ریختیم. کار تموم شد؟ نه! ما اینجا مثلا روی یک آی سی مثل 9572 نزدیک به 30 پایه ورودی خروجی داریم. حالا سیگنال a کدوم پایه هست؟

    در زمان سنتز مدل یکی از چیزهایی که توسط ابزار مربوطه چک میشه تعداد پایه ها و نحوه اتصال منطقی اونها به یک سیگنالی مثل a در مدل ما هست. ایجاد این ارتباط بین یک سیگنال در برنامه با یکی از پین های ورودی خروجی همینجوری الا بختکی!! توسط برنامه مربوطه انجام میشه. که مثلا a میشه پایه 12 و b میشه پایه 27 و q میشه پایه 4! اما ما که نمیتونیم اینجوری کار کنیم! همه چی باید مشخص باشه. برای اینکه یک سیگنال رو روی یک پایه بخصوص بچسبونیم خود ابزار امکاناتی داره که میشه یک سیگنال رو روی یک پایه اصطلاحا قفل کرد. بهش میگیم pin lock. پس برای پین های مد نظرمون عمل pin lock رو انجام میدیم و برنامه رو مجددا (چون روابط بین پایه ها و مدل تغییر کرده) سنتز (کامپایل) میکنیم. و بعد اطلاعات رو داخل config memory یا CPLD پروگرام میکنیم و ....
    حالشو میبریم!

    ....هنوز ادامه داره....

    دیدگاه


      #17
      پاسخ : کمک در مورد یادگیری FPGA

      حالا یک مثال:
      فرض کنین میخواییم یک میکروی 8 بیتی مثل AVR رو به یک ماجول رم 32 کیلو بایتی از آدرس 0x8000 به بالا وصل کنیم به انضمام 2 پورت 8 بیتی خروجی و دو پورت 8 بیتی ورودی. در آدرس های 0 تا 3. یک شماتیک برای این کار بکشین. فعلا به FPGA هم کاری نداشته باشین.
      مدل FPGA اش یک چیزی حدود 80 خط VERILOG هست.
      شماتیکش رو بکشین بعد با هم تحلیل میکنیم و مدل VERILOG معادلش رو در میاریم.
      اینجوری عمده کارتون راه میفته.

      دیدگاه


        #18
        پاسخ : کمک در مورد یادگیری FPGA

        آقای آقازاده بسیار ممنون بابت راهنمایی
        اما تمام این راه ها رو من رفتم.مشکلی که الان دارم همون جایی که شما میگی از اینجا به بعد رو دیگه من نمیدونم :cry2:

        دیدگاه


          #19
          پاسخ : کمک در مورد یادگیری FPGA

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

          دیدگاه


            #20
            پاسخ : کمک در مورد یادگیری FPGA

            پس میشه گفت شما اصلا بلد نیستین شماتیک بکشین!! :mrgreen:
            اینم خودش معضلیه!
            پس بذارین من شماتیک بکشم!
            عکس ضمیمه رو نگاه کنید.

            قراره یک مدار طراحی کنیم تا بتونیم 32 کیلو بایت رم برای یک میکروی فرضی 8 بیتی در آدرس 0x8000 تا 0xFFFF داشته باشیم و دو پورت 8 بیتی ورودی و دو پورت خروجی 8 بیتی. در آدرس های 0 و 1.
            فایل های پیوست شده

            دیدگاه


              #21
              پاسخ : کمک در مورد یادگیری FPGA

              شرح مدار:
              (فقط امیدوارم شماتیک رو بتونین بخونین و تحلیل کنین)

              یک میکروی 8 بیتی مثل 8051 یا حتی یک AVR به صورت تیپیک دارای 16 خط آدرس و 8 خط داده و 3 خط کنترلی هست. اما از اونجایی که تعداد پایه های یک آی سی روی قیمتش بسیار تاثیر گذاره معمولا سازندگان 8 خط آدرس صفر تا 7 رو روی پایه های دیتا مالتی پلکس میکنن. برای این کار فرض بر این هست که در فاز اول خطوط آدرس از بیت 0 تا 15 فقط حاوی آدرس مورد نظر برای دسترسی هست. در انتهای این مرحله یک سیگنال بنام ALE از حالت 1 به صفر تغییر وضعیت میده تا بشه توسط یک آی سی لچ محتوای 8 بیت پایینی آدرس رو برای استفاده های بعدی نگهداری کرد. خطوط A8 تا A15 کما فی السابق بدون هیچ تغییری تا انتهای عمل خوندن یا نوشتن دارای بیت های آدرس 8 تا 15 هستن.

              بعد از این فاز با استفاده از یکی از دو سیگنال RD یا WR عمل خوندن یا نوشتن انجام میشه. برای انجام این عمل پایه مربوطه که همیشه 1 هست در ابتدای فاز خواندن-نوشتن صفر و سپس دوباره یک میشه.

              اگر در شماتیک دقت کنین میبینین در محدوده ای که با اسم MEMORY با خط نقطه چین مشخص شده از یک آی سی لچ 74573 و یک گیت NOT استفاده شده. توجه دارین که ما فقط 32 کیلو بایت رم داریم و قراره این دسترسی از آدرس 0x8000 به بعد صورت بگیره. یعنی کلیه آدرس هایی که بیت A15 اونها یک هست. ولی آی سی رم ما در صورتی فعال میشه که پایه CE اون صفر بشه. پس اینجا با یک NOT و با استفاده از پایه A15 آی سی رم رو فعال و غیر فعال میکنیم.

              در زمانی که به آدرس 0 و یک دسترسی پیدا میکنیم بایستی رم غیر فعال باشه (که هست چون A15 صفر هست و NOT اون میشه 1 که آی سی رم غیر فعال میشه) و در کنار اون با استفاده از صفر شدن یکی از خطوط RD و WR میتونیم بفهمیم که قراره عمل خوندن یا نوشتن انجام بشه.
              اما ما دو آدرس برای ورودی و دو آدرس برای خروجی داریم. اینجا رو چکار کنیم؟ معلومه! ار بیت صفر آدرس که قبلا در لچ خودمون نگهداری کردیم استفاده میکنیم. اما توجه داشته باشین که لچ های مورد استفاده ما یعنی 74573 در حالتی داده های ورودی رو در خروجی لچ میکنن که سیگنال C اونها 1 باشه. بنا براین برای این کار یک NOT بعد از گیت های تحریک کننده عمل نوشتن روی لچ قرار میدیم تا سیگنالهای EN0 و EN1 رو تولید کنه.
              به همین صورت سیگنالهای EN2 و EN3 برای تحریک بافر های 74244 ایجاد میشه که باید برای فعال سازی صفر بشه.

              حالا میخواییم این رو یک مدل اش کنیم.
              اول باید مشخص کنیم که کدوم قسمت از منطق داخل FPGA قرار میگیره.
              مسلما رم و میکرو داخل FPGA نمیشینن. میکرو که کاملا مشخصه. اما چرا رم؟ چون با اینکه یک FPGA میتونه حاوی تعدادی بیت رم داخلی باشه اما این بیت های حافظه داخلی بشدت محدود هستن و نسبت به یک آی سی رم معمولی بشدت گرون تر درمیاد. که مقرون به صرفه نیست. مثلا آی سی 9572 دارای 72 بیت رم داخلی با قیمت حول و حوش 3000 تومن هست که برای یک آی سی 95288 با قیمتی حدودا چهار برابری فقط 288 بیت میشه.

              .....ادامه دارد....
              پی نوشت: این تقصیر من نیست که سایت نمیتونه پیغامهای خیلی طولانی رو در یک پست نمایش بده. ناچارم که مطلب رو تیکه تیکه کنم. (البته از اینکه تعداد پست هامم بالا میره که مسلما بدم نمیاد! :mrgreen
              پی نوشت دوم:
              این شماتیک یک ایراد اساسی داره و اونم اینه که در زمان خوندن از روی IO باید باس دیتا از روی رم ایزوله بشه. که میباید اینجا یک آی سی 74244 دیگه میذاشتم که باس رو ایزوله کنه. و تحریکش هم بر اساس بیت 15 آدرس باشه. اما میدونم که پایه CE رو دارم غیر فعال میکنم و سرعت Z شدن پایه دیتا باس آی سی رم خیلی بیشتر از اونیه که میکرو بتونه اصلا متوجه بشه. الان دیگه حال تصحیح مدار رو ندارم. اما با این اشتباه برای این نوع میکرو ها باز هم مدار کار میکنه. چراییش با خودتون.

              دیدگاه


                #22
                پاسخ : کمک در مورد یادگیری FPGA

                شرح مشکل:
                قراره یک آی سی طراحی کنیم که بتونه ارتباط ما بین یک میکروی 8 بیتی و یک مجموعه شامل آی سی رم 32 کیلو بایتی و 16 بیت خروجی و 16 بیت ورودی رو برقرار کنه. پس در حال حاضر ورودی و خروجی های این آی سی ما مشخصه:

                سیگنالهای طرف میکرو.
                سیگنالهای طرف رم.
                سیگنالهای ورودی و خروجی.

                برای توصیف این آی سی هم از زبان verilog استفاده میکنیم. از VHDL خیلی ساده تره و یک حسن اساسی هم که داره اینه که من VHDL بلد نیستم!!!

                سورس مدل طلبتون. دیگه بریدم.

                دیدگاه


                  #23
                  پاسخ : کمک در مورد یادگیری FPGA

                  سلام اقا نوید
                  توصیه میکنم حتما حتما فیلم های مهندس صدری رو ببینی. همه چی رو در مورد fpgaتوضیح داده googoolia.com بای

                  دیدگاه


                    #24
                    پاسخ : کمک در مورد یادگیری FPGA

                    سلام به همه
                    ایا میشه تو محیط التیوم برای پرو گرام کردن fpga از پورت usb استفاده کرد.؟

                    دیدگاه


                      #25
                      پاسخ : کمک در مورد یادگیری FPGA

                      اگه اینترنت پرسرعت دارین googoolia.com سایت دکتر صدری استاد صنعتی اصفهان برین(Verilog) وگرنه برید سایت دکتر گرایلو استاد صنعتی شاهرود که اسلایدهای خوبی داره(VHDL). فارسی هست و از یک منبع خوب استفاده کرده. برای من که خیلی مفید بود امیدوارم برای شما هم مفید باشه:
                      www.digitalelearning.ir
                      لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                      لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                      با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
                      اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
                      یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"

                      دیدگاه


                        #26
                        پاسخ : کمک در مورد یادگیری FPGA

                        دوست عزیز برای یارگیری FPGA بهتره اول verilog و نحوه کار کردن با نرم افزار AlteraQuartus II رو یاد بگیرید.
                        اگه دوست داشه باشید من میتونم اینجا این نرم افزارو آموزش بدم.

                        دیدگاه


                          #27
                          پاسخ : کمک در مورد یادگیری FPGA

                          برای شروع یک فایل راه اندازی Quartus گذاشتم، دوستان ببینید اگر به درد میخوره ادامه بدم.

                          https://rapidshare.com/files/143189448/Part_1.pdf

                          دیدگاه


                            #28
                            پاسخ : کمک در مورد یادگیری FPGA

                            با سلام
                            شما اگه میتونید کتاب طراحی مدارات منطقی با fpga و زبان vhdl دکتر رضی بخرین از ابتدا شروع کرده
                            یه سر هم به سایت http://www.dspcore.ir شرکت رهپویان علم و صنعت آوا بزنید
                            دفترچه راهنمای بردهای fpga تولید خودشونه گذاشتن کامل و دید کلی و کاملی بهتون میده نمونه کدهای مختلف دارن و اگه بتونی از برداشون استفاده کنی راحت میشی قیمتاشونم خیلی خوب و مناسبه
                            التماس دعا

                            دیدگاه

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