مقدمه
در این مقاله مفاهیم کلی مرتبط با منابع ورودی و خروجی FPGA مرور میشود. سپس به شکل مختصر مهمترین ویژگیهای این منابع معرفی میشوند. این مقاله به طور خاص برای تراشههای سری ۷ شرکت Xilinx نوشته شده است، اما بسیاری از تعاریف ارائه شده برای سایر خانوادهها قابل تعمیم است.
شاید برای شما مفید باشد: آموزش FPGA
به طور کلی منابع ورودی/خروجی در هر FPGA، منابعی هستند که بین پینها و منابع منطقی درون تراشه قرار گرفته اند. این منابع به لحاظ ساختاری از دو بخش تشکیل شدهاند:
- بخش الکتریکی: وظیفه این بخش کنترل ولتاژ و استاندارد کاری ورودی/خروجی هاست. پیکرهبندی یک پین ورودی/خروجی به صورت تک سیم یا زوج سیم (تفاضلی) و همچنین فعال یا غیرفعال بودن امپدانس داخلی دیجیتال (DCI) هر ورودی/خروجی در این بخش تعیین میشود.
- بخش منطقی: وظیفه این بخش که خود متشکل از چند واحد است، اعمال کنترلهای منطقی روی سیگنالهای ورودی یا خروجی است. پیکرهبندی پورت از لحاظ SDR و یا DDR بودن و همینطور ورودی، خروجی و یا سه حالته بودن پورت در این بخش تعیین میشود. واحدهای پیشرفته تاخیر و سریالایزر/دی سریالایزر هم در این بخش قرار دارند.
معماری داخلی یک بلوک ورودی/خروجی در تراشههای سری ۷ (Input/Output Block – IOB)
اگر با FPGA آشنایی ندارید اول مقاله FPGA چیست؟ را مطالعه نمایید.
بانکهای ورودی/خروجی
دسته بندی منابع ورودی و خروجی FPGA در قالب بانکهای ورودی/خروجی انجام میشود. تعداد این بانکها کاملا به نوع تراشه و پکیج آن وابسته است. در حالت کلی ویژگیهای الکتریکی هر ورودی یا خروجی با توجه به قیود قابل تعریف برای هر بانک، تعیین میشود. البته موارد استثنا نیز وجود دارد که باید به آنها توجه کرد.
با توجه به متفاوت بودن تعداد بانکها بسادگی میتوان حدس زد که تعداد پینهای ورودی/خروجی نیز با توجه به نوع پکیج و منابع درون تراشه متفاوت است. بلوکهای ورودی/خروجی با استفاده از ابزارهای گرافیگی Xilinx به سادگی قابل پیکرهبندی هستند و با بسیاری از استانداردهای الکتریکی سازگار هستند. توجه شود که تمامی پینهای فیزیکی روی تراشه به صورت IO قابل استفاده نیستد. با این وجود تعداد قابل توجهی از آنها به عنوان ورودی/خروجیهای همه منظوره در دسترس هستند. در هر پکیج بجز تعداد محدودی از پینها که به تامین تغدیه مورد نیاز تراشه و پیکرهبندی آن اختصاص دارند. سایر پایهها تقریباً مشابه هم هستند و قابلیتهای یکسانی دارند.
بانکهای ورودی/خروجی در تراشههای سری ۷ در دو کلاس HR و HP دسته بندی میشوند.
- بانکهای با رنج بالا یا High Rate ، همانطور که از نامشان پیدا است برای پشتیبانی از رنج ولتاژی وسیع بین 1.2v تا 3.3v طراحی شدهاند.
- در نقطه مقابل بانکهای با کارایی بالا یا High Performance ، که برای دستیابی به بالاترین راندمان در تبادل داده طراحی شدهاند. این بانکها رنج ولتاژی محدودتری دارند و از ولتاژها 1.2v تا 1.8v پشتیبانی میکنند.
بخش الکتریکی منابع ورودی/خروجی
هر کدام از بانکها در تراشههای FPGA دارای ۵۰ پین ورودی/خروجی هستند. این پینها در اصطلاح SelectIO نام گذاری شدهاند. از این ۵۰ پین ۲ پین به صورت انحصاری تنها با استاندارهای سیگنالهای تک سیم سازگار هستند و ۴۸ پین باقی مانده به صورت ۲۴ زوج تفاضلی یا ۴۸ پین تکی قابل پیکرهبندی هستند. این ۴۸ پین به صوت دو به دو با برچسبهای P و N نام گذاری میشوند.
معماری بخش الکتریکی یک بلوک ورودی/خروجی
از نظر الکتریکی هر کدام از SelectIO ها میتوانند خواص متفاوتی داشته باشند. رفتار آنها به عنوان یک درایور خروجی و یا گیرنده ورودی با توجه به خواص الکتریکی که به آن بانک نسبت داده میشود، تعیین میشود. هر SelectIO دارای سه نوع درایور ورودی، خروجی و سه حالته است.
امپدانس قابل کنترل دیجیتال
قبل از اتمام بحث در این بخش بد نیست کمی در مورد DCI صحبت کنیم. البته باید یادآور شویم، نکاتی که در ادامه بیان میشود صرفا یک معرفی کوتاه است. خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده میشود. به بیان دقیقتر ترمینیشن روشی برای کاهش یا از بین بردن انعکاسهای ناخواسته در یک خط انتقال است. این انعکاسها باعث ایجاد اثرات ناخواسته و نویز در سیستم میشود. از نقطه نظر سختافزاری استفاده از تِرمینیشن مناسب یک ملاحظه مهم در طراحی محسوب میشود.
با بزرگتر شدن تراشههای FPGA و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدار چاپی روز به روز سخت تر میشود. طراحان سخت افزار میدانند که کنترل یکپارچگی سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است.
جایگزینی ترمینیشن خارجی با ترمینیشن داخلی با استفاده از DCI
تقریبا تمامی استانداردهای تفاضلی توسط ورودی/خروجیها پشتیبانی میشود، از LVDS تا HSTL همگی قابل تنظیم هستند.
برای مطالعه ادامه این مطلب به لینک منبع مراجعه بفرمایید.