اطلاعیه

Collapse
No announcement yet.

ارتباط FPGAآ‌ و پورت USB با آی سی FT2232H

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

    ارتباط FPGAآ‌ و پورت USB با آی سی FT2232H

    با سلام. چندی پیش برای یک پروژه نیاز به انتقال حجم زیادی از اطلاعات به کامپیوتر داشتم. اطلاعات از یک سنسور تصویری دریافت و در یک SDRAMآ‌ ذخیره می شدند که بحث من نیست. برای انتقال ازلاعات تصمیم گرفتیم از پورت USB آ‌استفاده کنیم. در دسترس ترین آی سی با سرعت بالا آی سی FT2232H بود که طبق گفته ی شرکت FTDI میشه از اون در حالت Synch FIFO Mode استفاده کرد. در این حالت این آی سی یک FIFO به اندازه 65280 بایت و یک پالس 60 مگا هرتز در اختیار کاربر قرار میده که مستقیما به FPGAآ‌متصل می شوند و هرچی درون اون نوشته بشه میشه با توابعی که خود FTDI در اختیار گذاشته در Visual Studioآ‌داده ها رو با سرعت خوبی دریافت کرد.
    پس از سروکله زدن بسیار با این آی سی به یک مشکل اساسی برخوردیم: شمارنده ی داخلی این آی سی هر 510 بایت یک بار، به اندازه ی 2 واحد افزایش پیدا کرده و یک بایت داده از دست می رود. این مشکل توسط FTDI به صورت مستقیم تأیید نشده و فقط گفته شده که شمارنده دو واحد در بعضی موارد افزایش پیدا می کنه و در ورژن B آی سی این مشکل اصلاح شده. ولی ما از ورژن B استفاده کردیم و مشکل وجود داشت!
    مشکل دیگری که با اون روبرو شدیم: در صورتی که ابتدا یا انتهای بسته ی داده، بایت 0xFF داشته باشیم، آی سی Byte Stuffingآ‌انجام داده و یک بایت 0xFF به آن اضافه می کند.
    در مورد مشکل اول سعی کردیم بسته های داده را در تعداد کمتر از 510 بایت (مثلا 500 یا 100 بایت) در FIFOآ‌ آی سی FT2232H قرار دهیم و پس از خواندن این بسته، بسته ی بعدی را ارسال کنیم. ولی به مشکل دیگری برخوردیم: آی سی بایت 0x3B را در انتهای بسته های فرد و بایت 0x0F یا 0x0F را در انتهای بسته های زوج جایگزین آخرین بایت می کند. این بود که کلا بی خیال استفاده از این حالت شدیم و از UARTآ‌ استفاده کردیم. منتها برای هر ارسال نیم ساعت معطل می شدیم در صورتی که اگر FT2232Hآ‌درست کار می کرد، کمتر از یک ثانیه اطلاعات منتقل می شدند.
    این آی سی حالت های دیگری به غیر از FIFO و UART مانند SPIآ‌ و I2C داره که ما دیگه خودمونو علاف اونا نکردیم.
    در آخر این مطلب رو نوشتم که بگم برای کار حرفه ای اصلا از FTDI استفاده نکنین. معمولا روی بردهای حرفه ای از آی سی های Cypress آ‌استفاده می کنن که بعضی از ورژن های این شرکت هم ممکنه مشکل داشته باشه ولی باز بهتر از FTDI آ‌هستش. آی سی های ا¾Cypressآ‌ هم دارای FIFO هستند که در کنارشون یک میکروکنترلر 8051 هم قرار داده شده. شرکت دیگه ای که آی سی های USB تولید می کنه و توی بعضی بردهای حرفه ای استفاده شدند شرکت NetChipآ‌ هستش.
    اگر کسی تجربه ای در این زمینه ها داره لطفا به اشتراک بزاره که بقیه زیاد با این آی سی های مزخرف سر کار نرن!!!

    #2
    پاسخ : ارتباط FPGAآ‌ و پورت USB با آی سی FT2232H

    سلام.
    من توی یه پروژه FPGA با این آیسی توی مود sync fifo کار کردم و جواب گرفتم. سرعت انتقالی که من بهش رسیدم حدود 8MBytes/sec بود که البته ظاهرا میشه با کمی دستکاری توی کد تا نزدیکای همون 60 MBytes/sec هم رسوندش. اگه از دوستان کسی مایل بود بگه تا بیشتر توضیح بدم.

    دیدگاه


      #3
      پاسخ : ارتباط FPGAآ‌ و پورت USB با آی سی FT2232H

      توضیح بده تا شیر فهم بشیم هم شما ÷واب می گیرید هم ما یه چیز یاد می گیریم :nerd:

      دیدگاه


        #4
        پاسخ : ارتباط FPGAآ‌ و پورت USB با آی سی FT2232H

        من با این core شروع کردم:

        http://opencores.org/project,ft2232hcore

        این core در واقع یک مبدل FT2232 به باس آوالون آلترا هستش. البته من چون قرار بود روی زایلینکس اجرا کنم، اون قسمتهاییش که مربوط به باس آوالون میشد را حذف کردم و مستفیما با خود fifo های داخل core ارتباط گرفتم. انشاءالله در آینده ی نزدیک یه آموزش نسبتا جامع در این زمینه قرار میدم برای دوستان.

        دیدگاه

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