اطلاعیه

Collapse
No announcement yet.

SPI on FPGA

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

    SPI on FPGA

    سلام به دوستان گلم
    دوستان من یه پروژه ای رو با ARM بستم که 27 کیلوبایت رو باید در عرض 25 میکرو ثانیه از طریق SSP ارسال کنه ، اما نشد چون 12 مگاهرتز بیشتر کلاک نمیده SSP lpc1768
    حالا میخوام ببرمش روی FPGA اما متاسفانه تجربه ای ندارم روی FPGA
    نمی دونم چجوری میشه SPI روی FPGA شبیه سازی کرد ، و اون 27 کیلو بایتی که میخوام بفرستم رو چجوری باید بفرستم ،
    اگر کمک کنید ممنون میشم
    دلا خو کن به تنهایی که از تنها بلا خیزد

    #2
    پاسخ : SPI on FPGA

    سلام دوست عزیز
    ببخشید مطمئنید عددها را درست دادید؟ آخه اینجوری که شما میگید 27kB/25us ~ 1GBps پهنای باند لازم دارید! اونم روی باس SPI سریال! فکر نکنم هیچ FPGA ی این امکان را داشته باشه!

    دیدگاه


      #3
      پاسخ : SPI on FPGA

      آره دوست من 1GB/S
      من باید تعداد زیادی سیگنال سینوسی با D/A تولید کنم که با هم Sync باشن تا بتونم اختلاف فاز بدم
      الان با 12 مگاهرتز دارم 2.5 کیلوهرتز میگیرم
      اما من 40 کیلو هرتز میخوام و هیچ میکرویی انقد سرعت SPI نداره
      حالا چیکار کنم ؟؟؟
      دلا خو کن به تنهایی که از تنها بلا خیزد

      دیدگاه


        #4
        پاسخ : SPI on FPGA

        تا جایی که بنده میدونم امکان دستیابی به این performance با هیچ FPGA ی ممکن نیست.
        بعنوان نمونه، این دیتاشیت که مربوط به کور xps_spi هست را ملاحظه بفرمایید:
        http://www.xilinx.com/support/documentation/ip_documentation/xps_spi.pdf
        ماکزیمم کلاک SPI که روی virtex-6 (که یکی از FPGA های HighEnd محسوب میشه) ساپورت میشه، زیر 200 مگاهرتزه!
        به نظرم اگر میخواهید با DAC سرعت بالا کار کنید باید برید سراغ DAC های با اینترفیس موازی مثل این:
        http://www.linear.com/product/LTC1668

        دیدگاه


          #5
          پاسخ : SPI on FPGA

          یه فکر دیگه
          چون اصلا سخت افزاره dacم یه همچین فرکانسی جواب نمیده
          می خوام هر چند تاش رو با یه cpld یا یه میکرو راه بندازم
          به نظرتون شدنیه ؟
          اگر بخوام از cpld استفاده کنم ،میتونم حداقل واسه هر کدومش 30 مگاهرتز کلاک spi بگیرم ؟
          و اینکه چجوری میتونم با هم sync شون کنم ؟
          ممنون از کمکتون
          دلا خو کن به تنهایی که از تنها بلا خیزد

          دیدگاه


            #6
            پاسخ : SPI on FPGA

            فرکانس 30 مگاهرتز روی FPGA و CPLD ها منطقی و به راحتی قابل دستیابی هست.
            اگر همه ی DAC ها به یک CPLD/FPGA وصل باشند که تولید چند تا سیگنال سنکرون یک کار کاملا سرراست و شدنی هست.
            اختلاف فاز هم با ایجاد آفست در اندیس شمارنده عناصر آرایه ی حاوی مقادیر اون سیگنال امکانپذیره.
            مثلا اگر مقادیر سیگنالتون در آرایه ای 256 تایی مثل
            کد:
            M[255:0]
            ریخته شده باشه و شما بخواهید چهار تا سیگنال با اختلاف فاز 90 درجه ایجاد کنید کافیه سیگنالهاتون را اینجوری تعریف کنید:
            کد:
            S_1[i]=M[i]
            S_2[i]=M[(i+64)%255]
            S_3[i]=M[(i+128)%255]
            S_4[i]=M[(i+192)%255]
            و اینها را توی یک لوپ میگذارید ("%" نماد باقیمانده تقسیم است).

            موفق باشید

            دیدگاه


              #7
              پاسخ : SPI on FPGA

              ممنون دوست عزیز
              یعنی توی CPLD یا FPGA هم میتونم از همین روند آرایه استفاده کنم ؟
              بعد یه چیزی چجوری میتونم چند تاشو با هم SYNC کنم ؟
              آخه سخت افزار DAC من تا 30 مگاهرتز بیشتر کلاک نمیگیره و مجبورم از چند تا CPLD استفاده کنم
              ممنون که به سوالام پاسخ میدین
              دلا خو کن به تنهایی که از تنها بلا خیزد

              دیدگاه


                #8
                پاسخ : SPI on FPGA

                بله در FPGA و CPLD میتونید از همین روش آرایه استفاده کنید. البته اصطلاح رایج در زبانهای توصیف سخت افزار، "بردار" هست. فقط باید به این نکته توجه داشته باشید که حافظه ram داخلی FPGA/CPLD ها محدوده و شاید اگه آرایه تون خیلی بزرگ باشه مجبور باشید از RAM خارجی استفاده کنید.
                بعد یه چیزی چجوری میتونم چند تاشو با هم SYNC کنم ؟
                SYNC کردن چند تا FPGA را منظورتونه؟ خب این کار یکمی پیچیده است و اصلا فکر نمیکنم نیازی به این کار داشته باشید! اونجوری که شما میگید محدودیت روی DAC هست و با یک FPGA/CPLD میتونید به چند تا DAC بصورت موازی دیتا بفرستید. شاید این سوال شما ناشی از این تصور غلط باشه که تعداد محدودی پورت SPI روی یک FPGA/CPLD قرار داره (مثل میکروها) و از این بابت مجبورید چند تاش را استفاده کنید. باید بگم که این تصور غلطیه و خوشبختانه در مورد FPGA ها، محدودیت خاصی روی نوع و تعداد اینترفیس هاتون ندارید. شما میتونید (تقریبا) هر تعداد دلخواهی اینترفیس SPI روی یک FPGA قرار بدین و مستقل از هم باهاشون کار کنید.

                دیدگاه


                  #9
                  پاسخ : SPI on FPGA

                  ممنون از پاسختون
                  پس با این تفاسیر من میتونم 20 تا کانال SPI روی FPGA داشته باشم !؟ و به DAC هام بدم و اینکه همه DAC ها رو میتونم خروجیشون رو SYNC کنم !!!
                  دلا خو کن به تنهایی که از تنها بلا خیزد

                  دیدگاه


                    #10
                    پاسخ : SPI on FPGA

                    سلام
                    دوست عزیز میتونی با Spartan 6 که یکی از ارزوون ترین FPGA ها هست به سرعت 1Gbps برسی، همه IO ها Seredes دارن که تا 1G رو ساپورت می کنه.

                    دیدگاه


                      #11
                      پاسخ : SPI on FPGA

                      با این تفاسیر من میتونم 20 تا کانال SPI روی FPGA داشته باشم !؟ و به DAC هام بدم و اینکه همه DAC ها رو میتونم خروجیشون رو SYNC کنم !!!
                      اگر FPGA مناسب انتخاب کنید نباید مانع خاصی برای این کار وجود داشته باشه.

                      دیدگاه

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