از منابع ورودی و خروجی FPGA چه می دانیم؟ (قسمت اول)

از منابع ورودی و خروجی FPGA چه می دانیم

مقدمه

در این مقاله دو قسمتی مفاهیم کلی مرتبط با منابع ورودی و خروجی FPGA مرور می‌شود. سپس به شکل مختصر مهمترین ویژگی‌های این منابع معرفی می‌شوند. این مقاله به طور خاص برای تراشه‌های سری ۷ شرکت Xilinx نوشته شده است، اما بسیاری از تعاریف ارائه شده برای سایر خانواده‌ها قابل تعمیم است.

به طور کلی منابع ورودی/خروجی در هر FPGA، منابعی هستند که بین پین‌ها و منابع منطقی درون تراشه قرار گرفته اند. این منابع به لحاظ ساختاری از دو بخش تشکیل شده‌اند:

  • بخش الکتریکی: وظیفه این بخش کنترل ولتاژ و استاندارد کاری ورودی/خروجی هاست. پیکره‌بندی یک پین ورودی/خروجی به صورت تک سیم یا زوج سیم (تفاضلی) و همچنین فعال یا غیرفعال بودن امپدانس داخلی دیجیتال (DCI) هر ورودی/خروجی در این بخش تعیین می‌شود.
  • بخش منطقی: وظیفه این بخش که خود متشکل از چند واحد است، اعمال کنترل‌های منطقی روی سیگنال‌های ورودی یا خروجی است. پیکره‌بندی پورت از لحاظ SDR و یا DDR بودن و همینطور ورودی، خروجی و یا سه حالته بودن پورت در این بخش تعیین می‌شود. واحدهای پیشرفته تاخیر و سریالایزر/دی سریالایزر هم در این بخش قرار دارند.
معماری داخلی یک بلوک ورودی/خروجی در تراشه‌های سری ۷ (Input/Output Block - IOB)
معماری داخلی یک بلوک ورودی/خروجی در تراشه‌های سری ۷ (Input/Output Block – IOB)

بانک‌های ورودی/خروجی

دسته بندی منابع ورودی و خروجی FPGA در قالب بانک‌های ورودی/خروجی انجام می‌شود. تعداد این بانک‌ها کاملا به نوع تراشه و پکیج آن وابسته است. در حالت کلی ویژگی‌های الکتریکی هر ورودی یا خروجی با توجه به قیود قابل تعریف برای هر بانک، تعیین می‌شود. البته موارد استثنا نیز وجود دارد که باید به آن‌ها توجه کرد.

با توجه به متفاوت بودن تعداد بانک‌ها بسادگی می‌توان حدس زد که تعداد پین‌های ورودی/خروجی‌ نیز با توجه به نوع پکیج و منابع درون تراشه متفاوت است. بلوک‌های ورودی/خروجی با استفاده از ابزارهای گرافیگی Xilinx به سادگی قابل پیکره‌بندی هستند و با بسیاری از استانداردهای الکتریکی سازگار هستند. توجه شود که تمامی پین‌های فیزیکی روی تراشه به صورت IO قابل استفاده نیستد. با این وجود تعداد قابل توجهی از آن‌ها به عنوان ورودی‌/خروجی‌های همه منظوره در دسترس هستند. در هر پکیج بجز تعداد محدودی از پین‌ها که به تامین تغدیه مورد نیاز تراشه و پیکره‌بندی آن اختصاص دارند. سایر پایه‌ها تقریباً مشابه هم هستند و قابلیت‌های یکسانی دارند.

بانک‌های ورودی/خروجی‌ در تراشه‌های سری ۷ در دو کلاس HR و HP دسته‌ بندی می‌شوند.

  • بانک‌های با رنج بالا یا High Rate ، همانطور که از نامشان پیدا است برای پشتیبانی از رنج ولتاژی وسیع بین 1.2v تا 3.3v طراحی شده‌اند.
  • در نقطه مقابل بانک‌های با کارایی بالا یا High Performance ، که برای دستیابی به بالاترین راندمان در تبادل داده طراحی شده‌اند. این بانک‌ها رنج ولتاژی محدودتری دارند و از ولتاژها 1.2v تا 1.8v پشتیبانی می‌کنند.
بیشتر بخوانیم:
مبانی محاسبات ریاضی در FPGA (قسمت اول)

تمامی تراشه های سری ۷ از بانک‌های HR پشتیبانی می‌کنند اما بانک‌های HP مختص تراشه‌های قدرتمندتر و بزرگتر هستند. هر بانک دارای تعدادی پین VCCO اختصاصی است که برای تعیین ولتاژ کاری آن بانک و تامین تغذیه مورد نیاز بافرهای ورودی در آن بانک مورد استفاده قرار می‌گیرد. هر بانک دارای دو پین با نام VREF است که برای تامین ولتاژ مرجع مد مشترک برای ورودی‌های تکی (single-ended) بکار گرفته می‌شود. البته امکان تامین ولتاژ مد مشترک با مرجع داخلی نیز وجود دارد. هر بانک تنها می‌تواند یک ولتاژ مرجع داشته باشد.

بانک صفر در FPGA ها یک بانک خاص منظوره است و پین VREF‌ ندارد.

بخش الکتریکی منابع ورودی/خروجی

هر کدام از بانک‌ها در تراشه‌های FPGA دارای ۵۰ پین ورودی/خروجی هستند. این پین‌ها در اصطلاح SelectIO نام گذاری شده‌اند. از این ۵۰ پین ۲ پین به صورت انحصاری تنها با استاندارهای سیگنال‌های تک سیم سازگار هستند و ۴۸ پین باقی مانده به صورت ۲۴ زوج تفاضلی یا ۴۸ پین تکی قابل پیکره‌بندی هستند. این ۴۸ پین به صوت دو به دو با برچسب‌های P و N نام گذاری می‌شوند.

معماری بخش الکتریکی منابع ورودی/خروجی
معماری بخش الکتریکی یک بلوک ورودی/خروجی

از نظر الکتریکی هر کدام از SelectIO ها می‌توانند خواص متفاوتی داشته باشند. رفتار آن‌ها به عنوان یک درایور خروجی و یا گیرند‌ه ورودی با توجه به خواص الکتریکی که به آن بانک نسبت داده می‌شود، تعیین می‌شود. هر SelectIO دارای سه نوع درایور ورودی، خروجی و سه حالته است.

هر پین می‌تواند به صورت ورودی یا خروجی و یا به صورت ورودی/خروجی دو طرفه پیکره‌بندی شود.

ورودی‌ها و خروجی‌های تکی از استاتدارد CMOS برای دریافت و یا تولید خروجی استفاده می‌کنند. برای سیگنال‌های خروجی مقدار صفر منطقی به ازای مقادیر نزدیک به GND و مقدار یک منطقی به ازای مقادیر نزدیک به Vcco حاصل می‌شود. همینطور امکان قرار گرفتن در حالت امپدانس بالا نیز وجود دارد.

طراح به سادگی می‌تواند پارامترهایی نظیر slew rate و output strength را برای هر پورت خروجی به صورت مستقل تعیین کند. همینطور به صورت اختیاری امکان pull-up و pull-down کردن داخلی هر بلوک ورودی/خروجی وجود دارد. علاوه بر موارد فوق بانک‌های HP مجهز به یک مدار داخلی کالیبراسیون برای ساخت تِرمینیشن زوج‌های تفاضلی هستند.

مشابه پین‌های تکی، زوج‌های تفاضلی هم به صورت ورودی و یا خروجی قابل پیکره‌بندی هستند. علاوه بر این زوج‌های تفاضلی ورودی می‌توانند به صورت اختیاری با یک مقاومت ۱۰۰ اهم داخلی به هم متصل شوند و اصطلاحاً تِرمینیشن داخلی یا Internal Termination داشته ‌باشند.

امپدانس قابل کنترل دیجیتال

قبل از اتمام بحث در این بخش بد نیست کمی در مورد DCI صحبت کنیم. البته باید یادآور شویم، نکاتی که در ادامه بیان می‌شود صرفا یک معرفی کوتاه است. خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده می‌شود. به بیان دقیق‌تر ترمینیشن روشی برای کاهش یا از بین بردن انعکاس‌های ناخواسته در یک خط انتقال است. این انعکاس‌ها باعث ایجاد اثرات ناخواسته و نویز در سیستم می‌شود. از نقطه نظر سخت‌افزاری استفاده از تِرمینیشن مناسب یک ملاحظه مهم در طراحی محسوب می‌شود.

بیشتر بخوانیم:
مفهوم حافظه در FPGA و کاربردهای آن

با بزرگتر شدن تراشه‌های FPGA‌ و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدار چاپی روز به روز سخت تر می‌شود. طراحان سخت افزار می‌دانند که کنترل یکپارچگی سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است.

جایگزینی ترمینیشن خارجی با ترمینیشن داخلی با استفاده از DCI
جایگزینی ترمینیشن خارجی با ترمینیشن داخلی با استفاده از DCI

تقریبا تمامی استانداردهای تفاضلی توسط ورودی/خروجی‌ها پشتیبانی می‌شود، از LVDS تا HSTL همگی قابل تنظیم هستند.

بانک‌های HR از DCI پشتیبانی نمی‌کنند.

پس به طور خلاصه نکات مرتبط با بخش الکتریکی ورودی/خروجی‌ها به صورت زیر می‌باشد.

پیکره بندی پایه های P و N مجاور در یک بانک به دو صورت امکان پذیر است.

  • دو سیگنال تک سیم
  • یا یک زوج تفاضلی

سطوح ولتاژی ورودی‌ها در حالت استاندارد CMOS به صورت زیر است.

  • مقدار صفر منطقی به ازای مقادیر نزدیک به GND
  • مقدار یک منطقی به ازای مقادیر نزدیک به Vcc

در صورت استفاده از پایه‌های VREF مقادیر ورودی‌ها با توجه ولتاژ مرجع تعیین می‌شود.

  • مقدار صفر منطقی به ازای مقادیر کمتر از VREF
  • مقدار یک منطقی به ازای مقادیر بیشتر از VREF

در حالت تفاضلی یک یا صفر بودن ورودی‌ها به صورت زیر تعیین می‌شود.

  • مقدار صفر منطقی به ازای Vp < Vn
  • مقدار یک منطقی به ازای Vp > Vn

جمع بندی

هر بانک ورودی/خروجی‌ می‌توانند بصورت مستقل برای یک سطح ولتاژ متفاوت نسبت به بانک دیگر پیکره‌بندی شود. این ولتاژ با توجه به ولتاژ پین VCCO تعیین می‌شود، هر پین می‌تواند جریان خروجی و سرعت متفاوتی داشته باشد. پین‌ها می‌توانند به صورت دو طرفه پیکره‌بندی شوند این مزیت باعث بالار رفتن کارایی FPGA در کاربردهایی که نیاز به پیاده سازی پروتکل کنترلی دوطرفه دارند، می‌شود.

مطلبی که مطالعه کردید قسمت اول از مقاله آموزشی معرفی منابع ورودی خروجی FPGA بود، برای مطالعه ادامه مطلب روی لینک زیر کیک کنید.

از منابع ورودی و خروجی FPGA چه می دانیم؟ (قسمت دوم)

منبع: DS180, UG471

اشتراک:
هر روزمان را با FPGA شروع می‌کنیم و با FPGA به پایان می‌بریم. ساز و کار زندگیمان را با معماری FPGA گره زدیم و با هم پیش می‌رویم.

دیدگاه ها

  • shabnam
    مهر ۲۸, ۱۳۹۸

    سلام
    ممنون از مطالب مفیدتون، کامل و شفاف توضیح داده شده، خیلی عالیه!

  • samira
    آبان ۶, ۱۳۹۸

    با سلام
    بسیارممنون از شما.خیییییلی عالی بودند.جامع ،شفاف و قابل درک

    • سردبیر
      آبان ۶, ۱۳۹۸

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

  • samira
    آبان ۲۴, ۱۳۹۸

    با سلام میشه لطف بفرمایین توضیحات بیشتری در رابطه با DCI بدین؟

  • samira
    آبان ۲۴, ۱۳۹۸

    و همچنین توضیحاتی درباره single_ended و differentiol هم بفرمایین سپاسگزار خواهم بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *