اطلاعیه

Collapse
No announcement yet.

انتقال داده با نرخ بالای 250Mbps

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

    انتقال داده با نرخ بالای 250Mbps

    با سلام

    دوستان من باید یکسری داده از داخل یک حافظه (nand flash/usb flash) بخونم و بعد روی یک پایه i/o با نرخ حداقل 250Mbps انتقال بدم.

    ممنون میشم، پردازنده ای که میشه اینکار رو باهاش انجام داد و بوردش هم موجود باشه به من معرفی کنید، یه چیزی مثله beagle board، اگه پیشنهادی دیگه ای هم دارید ممنون میشم بفرمایید.

    در مورد beagle board تو چت رومش سوال کردم اونجا گفتن که GPIOهاش این فرکانس رو جواب نمیده و باید از FPGA استفاده کنم.

    #2
    پاسخ : انتقال داده با نرخ بالای 250Mbps

    نوشته اصلی توسط mojtaba_led
    ...دوستان من باید یکسری داده از داخل یک حافظه (nand flash/usb flash) بخونم و بعد روی یک پایه i/o با نرخ حداقل 250Mbps انتقال بدم...
    منظورتون از پایه اینه که پروتکول سریال داشته باشه؟
    آخه چطوری؟ کلاک نمی خواد؟ یا می خوایید مثل UART بفرستید؟ شایدم منظورتون یه پورت کامل مثلا32 بیتی هستش؟

    دیدگاه


      #3
      پاسخ : انتقال داده با نرخ بالای 250Mbps

      بله، همراه با دیتا یه کلاک هم ارسال میشه که داده با اون سینک هست(مثلا داده روی خط تو لبه بالا رونده اون کلاک بروز میشه).

      دیدگاه


        #4
        پاسخ : انتقال داده با نرخ بالای 250Mbps

        باشه، بذار حساب کنیم:
        هر 1 مگابیت میشه 1 میلیون بیت پس اگه ضرب در 250 کنیم میشه 250 میلیون بیت
        اگه برای هر بیت یه کلاک لازم باشه؛ پس ما باید 250 میلیون کلاک بزنیم. یعنی میشه 250Mhz !
        بهتره توی Cortex-M دنبالش نباشی.
        شاید با زیادتر کردن خطوط داده بتونی انتقال بدی. مورد دیگه که هست مسئله نویز هستش. اگه درست به خاطر بیارم مثلا ST32 فروشگاه تا 50Mhz هم بیرون میده ولی توی دیتاشیت توصیه کرده که از فرکانس کمتر سعی کنید استفاده کنید چون اثرات نویز روش زیاده.
        این عوامل دست به دست هم میده که شما راهی جز FPGA نداشته باشید. :smile:

        دیدگاه


          #5
          پاسخ : انتقال داده با نرخ بالای 250Mbps

          آقا مجتبی LED، این سرعت انتقال داده که مد نظر شماست خیلی بالاست. با توجه به تجربیاتم می گم که با میکروکنترلر و پردازنده معمولی نمی تونی این کار رو انجام بدی، مگر اینکه پردازنده ت از این خفنای توی FPGAها باشه که ارتباط سریال سرعت بالا داشته باشه.
          راه طراحیِ مستقیم استفاده از FPGA هست که بشینی براش پروتکل هم بنویسی. تازه گیرنده ش هم دردسرهای خاص خودش رو داره. راه بهتر (به نظر من) استفاده از ارتباطات استاندارد مثل USB، Ethernet و امثال اینهاست.

          فاصله بین فرستنده و گیرنده رو هم باید مد نظر داشته باشی.
          بیایید با Google آشتی کنیم!

          دیدگاه


            #6
            پاسخ : انتقال داده با نرخ بالای 250Mbps

            امکان استفاده از اینترفیس های استاندارد نیست و باید طبق یه پرتوکل خاص داده ها ارسال بشن.
            مشکله دیگه ای که وجود داره حجم بالای داده است که باید خونده و ارسال بشه که 3گیگ هست!
            راه حلهایی که به نظر خودم میرسه اینه که:
            1. با استفاده از یک پروسسور که high speed usb host controller داشته باشه و fgpa، به نحوی که داده ها با پروسسور خونده بشن و از طریق یه باس 8 بیتی یا بیشتر به fpga منتقل بشن و ... . برای این منظور میشه از همین beaglebone black استفاده کرد و از طریق باس GPMC داده ها رو به FPGA منتقل کرد اما در این رابطه یه نمونه متقن که همچین کاری انجام شده باشه و جواب گرفته باشه پیدا نکردم.

            2. استفاده از fpga و 3 گیگ رم و sd card، داده ها از sd card خونده و داخل ddr ram نوشته و بعد داده با نرخ مورد نظر از داخل ddr ram خونده و ارسال بشن.
            مشکل این روش، مقدار بسیار زیاد ram هست که نمیدونم چطور میشه یه همچین رمی داشت از طرفی ddr های میکرون تو این حجم bga هستن و خوب مشکلات مربوط به این پکیج رو در پی خواهیم داشت. شاید بشه از چند تا ram که پکیجشون bga نباشه استفاده کرد، شایدم از مموری کارتهای دسکتاپ.

            3. از USB Host Controller core که تو اینجا توضیحاتش داده شده استفاده بشه:
            http://www.wiki.xilinx.com/USB+Host+Controller+Driver
            که حالا راه اندازیa یه طرف، لایسنسشم یه طرف.

            4. استفاده از FT313H و FPGA ولی FPGA حتما باید دارای هسته ARM Cortex باشه مثلا FPGA های Altera Arria V or Cyclone V

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

            دیدگاه


              #7
              پاسخ : انتقال داده با نرخ بالای 250Mbps

              می شه یکم شسته رفته و واضح راجع به صورت مسئله توضیح بدین؟ اینطوری من گیج شدم.. oo:
              بیایید با Google آشتی کنیم!

              دیدگاه


                #8
                پاسخ : انتقال داده با نرخ بالای 250Mbps

                صورت مسئله دقیقا همون چیزیه که قبلا گفتم،

                ما یه سری داده داریم (به حجم 3 گیگ) که داخل یه مموری استیک (USB flash/sd card) قرار دارن و حالا باید این داده ها حالا فرضا بایت به بایت خونده بشن و سپس از طریق "یک پایه" با نرخ حداقل 250Mbps ارسال بشه (یک بیت، یک بیت داده با فرکانس 250 مگا هرتز شیفت داده بشه روی یک پایه I/O خیلی ساده و بدون هیچ گونه فریم خاصی) که همراه اون یک سیگنال کلاک (جهت سینکرونیزاسیون در گیرنده) هم ارسال میشه، مسلما چون باس داده تک بیتی هست پس فرکانس کلاک همون 250MHz خواهد بود.

                این دقیقا همون چیزیه که به عنوان صورت مسئله موجود هست نه بیشتر و نه کمتر.

                دیدگاه


                  #9
                  پاسخ : انتقال داده با نرخ بالای 250Mbps

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

                  دیدگاه


                    #10
                    پاسخ : انتقال داده با نرخ بالای 250Mbps

                    سلام
                    با FPGA میشه . بهتره از پورت های تفاضلی استفاده کنید. برد آماده هم بخرید که روش رم باشه و بهتره خود FPGA مموری کنترلر داشته باشه.
                    این عدد ارسالی هم بزرگ محسوب میشه، خیلی حساب شده باید از پایه بیرون بیاد وگر نه ممکن است پایه ها رو از بین ببرد.
                    { خلاف قوانین - پاک شد }

                    دیدگاه


                      #11
                      پاسخ : انتقال داده با نرخ بالای 250Mbps

                      ممنون از توجه دوستان،

                      متاسفانه برد آماده FPGA که حداقل 1گیگ RAM هم روش باشه پیدا نکردم و خوب طبیعی بود. ممنون میشم که اگر برد خاصی مورد نظرتون هست به بنده معرفی کنید.

                      دیدگاه


                        #12
                        پاسخ : انتقال داده با نرخ بالای 250Mbps

                        تمام FPGAهای جدید کنترلر DDR و DDR2 دارن. آی سی های حافظه DDR2 هم گرون نیستن و به وفور یافت می شن (تو چین، نه تو ایران!). لینک زیر رو با فیلترشکن ببینید:
                        http://www.digikey.com/product-searc...2556980?k=ddr2

                        عنایت دارید که داریم راجع به FPGAهای خفن و برد چند لایه و آی سی های BGA صحبت می کنیم، چون کاری که شما می خواید انجام بدید کاملاً سفارشی و خاصه و به نظر نمیاد قبلاً کسی انجامش داده باشه و برد آماده با حجم حافظه زیاد براش موجود باشه! بجز سخت افزار، برنامه نویسی FPGA هم کلی زحمت داره و زمان می طلبه.
                        اگه همونطور که گفتید لازم نباشه روی داده ها کار خاصی صورت بگیره، ممکنه بتونید با یه Spartan3 موجود تو ایران هم کار رو انجام بدید.
                        به هر حال امیدوارم موفق باشید.
                        بیایید با Google آشتی کنیم!

                        دیدگاه


                          #13
                          پاسخ : انتقال داده با نرخ بالای 250Mbps

                          مهندس بفرمایید انتقال رو تو چه مسافتی می خواهید انجام بدید؟

                          اگر مسافت زیاده که ارتباط LAN مناسبتره در غیر اینصورت بهتره از پروتکل های استاندارد ارسال سریال موجود استفاده کنید.

                          من پیشنهاد میکنم برد SP605 شرکت Xilinx رو بررسی کنید. به نظرم نیاز شما رو جواب میده. هم RAM داره هم LAN و هم میتویند پروتکلهای سریال رو با استفاده از GTXهاش راه اندازی کنید.
                          البته توجه داشته باشید که این کارها سنگین و زمانبر هستن.
                          یا علی.

                          دیدگاه


                            #14
                            پاسخ : انتقال داده با نرخ بالای 250Mbps

                            چنین سرعت داده ای در صورت استفاده از مدولاسیون های معمولی و بصورت سریال خیلی سخته، اگرم شدنی باشه فقط در فواصل بسیار کوتاه
                            شما اگر بخوایی با مدولاسیون های NRZI و امثالهم سیگنالتو بفرستی هارمونیک اصلی سیگنالت 250 مگاهرتز میشه و تا هارمونیک 3 هم که باید در نظر بگیری یه رابط انتقالی با پهنای باند 750 مگاهرتز نیاز داری که ... کلا بیخیالش :دی
                            همونطور که گفتم، شدنیه ولی سخته

                            کاری که معمولا برای فرار از مشکلات پهنای باند رسانه انتقال میکنن استفاده از مدولاسیون های مثل MLT یا PAM یا QAM هست. مثلا تو MLT-3 که در 100BaseTX استفاده میشه با پهنای باند حدود 33 مگاهرتز سرعت انتقال اطلاعات سریال به 125Mbit/s میرسه.
                            فتو بلاگ من
                            کاردستی ها :
                            روبات شطرنج باز ( یادگار دوران جوانی )
                            فارسی نویسی مستقیم در نمایشگر های گرافیکی
                            کتابچه خود آموز زبان توصیف سخت افزار Verilog

                            دیدگاه


                              #15
                              پاسخ : انتقال داده با نرخ بالای 250Mbps

                              مهندس بفرمایید انتقال رو تو چه مسافتی می خواهید انجام بدید؟
                              اگر مسافت زیاده که ارتباط LAN مناسبتره در غیر اینصورت بهتره از پروتکل های استاندارد ارسال سریال موجود استفاده کنید.
                              ممنونم از توجهتون،
                              داده ها باید از طریق SMA برای گیرنده ارسال بشه و گیرنده در فاصله 20 تا 30 سانتی متری فرستنده فکر میکنم هست این مورد رو باید دقیق در بیارم فکر میکنم تا جایی که امکانش باشه بشه کمترش کرد ولی گیرنده جدا از فرستنده هست.

                              من پیشنهاد میکنم برد SP605 شرکت Xilinx رو بررسی کنید. به نظرم نیاز شما رو جواب میده. هم RAM داره هم LAN و هم میتویند پروتکلهای سریال رو با استفاده از GTXهاش راه اندازی کنید.
                              مشکل ما الان حجم بالای داده است که باید خونده بشه (از داخل یه مموری استیک)، همونطور که گفتم راه حلی که به نظرم میرسه باید از یه اینترفیسی برای خوندن داده انتخاب کنیم که نرخ اش از 250 مگا بیت بیشتر باشه، مثله USB2 مد High speed، بعد یه FIFO کوچیک هم جواب کارمون رو میده.
                              SP605 ، رو فکر میکنم بشه از طریق PCIe داده ها رو بخونیم. ولی یه رابط میخواد مثلا SATA به PCIe. اما مثلا اگه بخواییم از SD Card داده ها رو بخونیم باید داده ها رو یه بار کامل بخونیم و بافر کنیم بعد با نرخی که میخواییم ارسال کنیم بنابراین نیاز به رم بالایی داریم که تو بوردهای xilinx بیشتر از 2 گیگ ندیدم یه بودری دیدم از DINI GROUP که 4 گیگ رم داشت. ولی یه راه بهتری برای خوندن داده به فکرم رسیده که بیاییم داده ها را از داخل یه هارد SSD از طریق SATA بخونیم. این طوری یه FIFO کوچیک هم جواب کارمون رو میده، نظرتون چیه ؟

                              البته توجه داشته باشید که این کارها سنگین و زمانبر هستن.
                              حدودا یکسالی در نظر داریم ولی اگه بورد آماده استفاده کنیم فکر میکنم بشه تو زمان کمتری انجام اش داد.

                              چنین سرعت داده ای در صورت استفاده از مدولاسیون های معمولی و بصورت سریال خیلی سخته، اگرم شدنی باشه فقط در فواصل بسیار کوتاه
                              شما اگر بخوایی با مدولاسیون های NRZI و امثالهم سیگنالتو بفرستی هارمونیک اصلی سیگنالت 250 مگاهرتز میشه و تا هارمونیک 3 هم که باید در نظر بگیری یه رابط انتقالی با پهنای باند 750 مگاهرتز نیاز داری که ... کلا بیخیالش :دی
                              همونطور که گفتم، شدنیه ولی سخته

                              کاری که معمولا برای فرار از مشکلات پهنای باند رسانه انتقال میکنن استفاده از مدولاسیون های مثل MLT یا PAM یا QAM هست. مثلا تو MLT-3 که در 100BaseTX استفاده میشه با پهنای باند حدود 33 مگاهرتز سرعت انتقال اطلاعات سریال به 125Mbit/s میرسه.
                              خیلی ممنونم از نکات مهمی که فرمودید.

                              دیدگاه

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