مدیریت سیگنال کلاک : بخش اول مدیریت کلاک در FPGA

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

مقدمه

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

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

تولید و توزیع کلاک

مروری بر منابع مدیریت کننده کلاک در FPGA

تراشه‌های FPGA دارای منابع و بلوک‌های انعطاف پذیر و البته قدرتمندی برای مدیریت سیگنال کلاک هستند که زمان و هزینه طراحی را به شکل محسوسی کاهش می‌دهند. این منابع پرکاربرد در تراشه‌های مختلف شرکت Xilinx با عناوین متفاوتی نام گذاری شده‌اند و به مررور زمان برقابلیت‌های آن‌ها افزوده شده است. معماری و ساختار سیستم تولید و توزیع کلاک در تراشه‌های جدیدتر شرکت Xilinx بر اساس CMT ها شکل گرفته است. واژه CMT مخفف عبارت Clock Management Tile است. به عنوان مثال هر CMT در تراشه‌های سری ۷ متشکل از یک بلوک Mixed Mode Clock Manager (MMCM) و یک بلوک Phased Lock Loop (PLL) است. در تراشه‌های Spartan-6 و تراشه‌های قدیمی‌تر این شرکت در هر CMT دو بلوک Digital Clock Manger (DCM) و یک بلوک PLL قرار دارد.

در تراشه‌های FPGA کلاک خارجی از طریق پین‌های اختصاصی کلاک در هر بانک IO که (CC) نام دارند، وارد تراشه می‌شود. سپس با استفاده از بافرهای ورودی کلاک (IBUF) وارد CMT ها می‌شود و در نهایت از طریق شبکه کلاک درون تراشه توزیع می‌شود.

فرایند تولید سیگنال کلاک جدید از روی کلاک مرجع ورودی، توسط بلوک‌های مدیریت کلاک با انجام عملیات ضرب و یا تقسیم روی کلاک ورودی صورت می‌پذیرد. بلوک‌های مدیریت کلاک قادر هستند در صورت نیاز شیفت فاز قابل برنامه ریزی روی کلاک نیز اعمال کنند و یا پهنای پالس کلاک را نیز کنترل کنند. علاوه بر این بلوک‌های مدیریت کلاک قادر به از بین بردن یا به حداقل رساندن پدیده کجی کلاک (clock de-skew) برای کلاک‌هایی که در داخل تراشه توزیع می‌شوند و یا کلاک‌هایی را که قرار است توسط قطعه دیگری روی بورد استفاده شود، می‌باشند.

در ادامه این بخش همراه با شما نگاهی متفاوت به تاریخچه‌ و سیر تکاملی بلوک‌های مدیریت کلاک در نسل‌های مختلف تراشه‌های FPGA شرکت Xilinx خواهیم داشت، و مسیری را که برای دستیابی به بلوغ فعلی طی شده است، مرور خواهیم کرد.

بلوک‌های DCM

واژه DCM کوتاه شده عبارت Digital Clock Manager است و در ادبیات Xilinx که برای مخاطب قرار دادن بلوک‌های مدیریت کلاک درون نسل‌های قدیمی تر تراشه‌های FPGA بکار می‌رفت. در قلب این بلوک‌ها، عناصری به نام Delay Locked Loop (DLL) قرار دارد. این بلوک‌ها قادرند کجی کلاک را جبران کنند (clock de-skew)، فازهای متفاوتی از یک کلاک تولید کنند، به صورت دینامیک فاز کلاک را تغییر دهند، کلاک‌های با فرکانس بالاتر و یا پایین تر تولید کنند و حتی در صورت نیاز کلاک‌هایی که هارمونیکی از کلاک اصلی ورودی هستند، تولید کنند. این عناصر تنها بلوک‌های مدیریت کلاک در تراشه‌های FPGA تا زمان معرفی تراشه‌های Virtex-5 بودند (در تراشه‌های Virtex-2 ، Spartan-3 و Virtex-4 وجود داشتند).

بلوک‌های PLL

با معرفی تراشه‌های Virtex-5 و Spartan-6 بلوک‌های جدیدی به نام PLL که کوتاه شده عبارت Phase Locked Loop و اصطلاحاً حلقه قفل فاز نامیده می‌شوند به همراه بلوک‌های DCM معرفی شدند. در عمل PLL یک سلول اختصاصی آنالوگ برای مدیریت کلاک است که قادر به انجام بخش قابل توجهی از قابلیت‌های DCM به جز تغییر دینامیک (پویا) و دقیق فاز است. در حالت کلی یک PLL قادر به سنتز و تولید فرکانس‌های کلاک به مراتب دقیق تری نسبت به DCM است. این بلوک‌ها می‌توانند به صورت همزمان چندین فرکانس متفاوت تولید کنند، در حالی که جیتر فرکانس‌های تولید شده نیز نسبت به فرکانس تولید شده توسط DCM از کیفیت بالاتری برخوردار است. این مسأله زمانی که سنتز فرکانس با ضرائب ضرب یا تقسیم نسبتاً بزرگ انجام می‌شود، بیشتر به چشم می‌آید.

بلوک‌های MMCM

در تراشه‌های Virtex-6 بلوک‌های جدید دیگری به نام MMCM که مخفف عبارت Mixed Mode Clock Manager است، معرفی شدند. به بیان ساده یک بلوک MMCM نوعی از PLL است که قابلیت‌های ویژه DCM را نیز پشتیبانی می‌کند. مثلاً MMCM همچون DCM‌ قابلیت تغییر دینامیک فاز را دارد و در حقیقت به همین دلیل از عبارت Mixed Mode در نام گذاری این بلوک استفاده شده است. با معرفی بلوک MMCM هر دو بلوک DCM و PLL در تراشه‌های Virtex-6 کنار گذاشته شدند، چون این بلوک جدید قادر به اجرای عملکرد‌های مورد انتظارِ هر دو بلوک قبلی به صورت توأمان بود (شیفت یا تغییر فاز دینامیک و سنتز همزمان چندین کلاک با فرکانس‌های متفاوت).

منابع کلاک در FPGA
معماری داخلی بلوک MMCM در Virtex-6

در تراشه‌های 7Series ، بار دیگر بلوک‌های PLL به درون تراشه‌های FPGA بازگشتند و یک بلوک ترکیبی از MMCM و PLL برای مدیریت کلاک درون این نسل از تراشه‌ها معرفی شد. احتمالاً مهمترین دلیلی که طراحان FPGA را مجبور به گرفتن این تصمیم کرده است، بزرگ شدن فضای منطقی قابل استفاده برای پیاده سازی در درون تراشه‌ها بوده است. (به طور کلی PLL ها کوچکتر از MMCM ها هستند و فضای کمتری روی سطح سیلیکونی تراشه اشغال می‌کنند.) بعلاوه اینکه PLL ها به شکل ویژه‌ای برای پشتیبانی از ساختارهای درون منابع ورودی‌/خروجی (IOB) بکارگرفته می‌شوند. پیاده سازی کنترلر برای حافظه‌های DDRx-SDRAM با استفاده از ویزارد معروف MIG (Memory Interface Generator) در ISE و Vivado بهترین مثال برای این موضوع است.

در تراشه‌های UltraScale و +UltraScale همچنان برای مدیریت کلاک از بلوک‌های MMCM و PLL در کنار هم استفاده می‌شود. هرچند عملکرد و قابلیت‌های مورد انتظار از بلوک‌های PLL تا حدودی محدود شده است و گستردگی نسل‌های پیشین را ندارند. در واقع به نظر می‌رسد Xilinx استفاده از PLL‌ ها را به شکل اختصاصی برای بلوک‌های ورودی خروجی (IO) سفارشی سازی کرده است و اتصالات انعطاف پذیرتری بین آن‌ها در نظر گرفته است. این مسأله هنگام بکارگیری مد کاری “Native Mode” I/O که برای تبادل پرسرعت داده با DDRx-SDRAM ها مورد نیاز است، به خوبی نمایان می‌شود. البته PLL ها همچنان می‌توانند در صورت نیاز در هر جایی فراخوانی و استفاده شوند، اما باید به این نکته توجه داشت که بلوک اصلی مدیریت کننده کلاک در این تراشه‌ها MMCM است و هدف اصلی استفاده از PLL ها تولید کلاک برای IO ها است.

منابع کلاک در FPGA
معماری داخلی بلوک MMCM در UltraScale

کاشی‌های مدیریت کلاک

همانطور که اشاره شد توپولوژی تولید و توزیع کلاک در تراشه‌های Spartan-6 ، Virtex-6 ، 7Series و UltraScale بر اساس CMT ها شکل گرفته است. در عمل این CMT ها هستند که ساختار درخت و شبکه کلاک را شکل می‌دهند. هر CMT می‌تواند متشکل از یک یا چند MMCM و یک یا چند PLL در نزدیکی IO ها و همینطور یک بلوک Phasor باشد. دلیل استفاده از نام Tile برای این واحد‌های سخت افزاری شیوه کنار هم قرار گرفتن آن‌ها است. برای انتقال کلاک مدیریت شده درون CMT به سرتاسر تراشه، تعداد زیادی بافر از انواع مختلف در روی درخت کلاک هر تراشه گنجانده شده است. کلاک اولیه و اصلی همواره از طریق پین‌های اختصاصی کلاک که اصطلاحاً Clock Capable (CC) Pin نامیده می‌شوند و به یکی از CMT‌ ها منتهی می‌شوند، وارد تراشه FPGA می‌شود و سپس در بخش‌های مختلف تراشه انتشار می‌یابد.

در گذشته و در نسل‌های پیشین پایه‌های Clock Capable با عنوان GClock شناخته می‌شدند.

نواحی کلاک

مفهوم ناحیه کلاک یا Clock Region اولین بار هنگام معرفی تراشه‌های Virtex-4 وارد ادبیات Xilinx و تراشه‌های FPGA این شرکت شد. از نقطه نظر کلاک، تراشه‌‌های FPGA به تعدادی ناحیه کلاک تقسیم می‌شوند. هر چند تقسیم فضای داخلی تراشه به تعدادی ناحیه کلاک در ابتدا چندان حائز اهمیت به نظر نمی‌رسید، اما به مرور زمان با بزرگتر شدن تراشه‌ها و افزایش تنوع کلاک‌های مورد نیاز در یک طرح اهمیت آن‌ها بر همگان روشن شد. هر ناحیه کلاک در بر گیرنده بخشی از عناصر سنکرون درون تراشه است. مدیریتِ تولید و توزیع کلاک در هر ناحیه می‌تواند مستقل از سایر نواحی صورت بپذیرد. در عمل نواحی کلاک با هدف محلی کردن یکسری از منابع و مسیرهای کلاک درون تراشه‌ها ایجاد شدند.

از نقطه نظر کلاک، تراشه‌‌های FPGA بعد از Virtex-4 به تعدادی ناحیه کلاک تقسیم می‌شوند.

نواحی کلاک در Virtex-4

در ابتدای کار نواحی کلاک در تراشه‌های Virtex-4 با هدف بهبود الگوی توزیع کلاک درون تراشه و همینطور بازکردن دست طراح برای رهایی از قیدها و محدودیت‌های نسل‌های پیشین شکل گرفتند. مهمترین ویژگی‌های هر ناحیه کلاک در این تراشه‌ها عبارتند از:

  • هر ناحیه کلاک از مرکز تراشه‌ تا لبه‌‌های سمت راست یا چپ تراشه امتداد پیدا می‌کند.
  • ارتفاع نواحی کلاک در این تراشه‌ها برابر با ۱۶ بلوک قابل پیکره بندی یا CLB است.
  • هر ناحیه کلاک در برگیرنده ۳۲ پین IO می‌باشد.
  • با توجه به ابعاد تراشه، این تراشه‌ها ممکن است بین ۸ تا ۲۴ ناحیه کلاک داشته باشند.

نواحی کلاک در Virtex-5

برای اینکه تصویر بصری بهتری از نحوه تقسیم بندی فضای داخلی تراشه‌های FPGA به نواحی کلاک داشته باشید. به شکل زیر دقت کنید. این شکل شمایی کلی از نواحی کلاک درون دو تراشه از خانواده Virtex-5 را نشان می‌دهد. نواحی کلاک در این تراشه‌‌ها دارای مشخصات زیر هستند:

  • هر ناحیه کلاک از مرکز تراشه‌ تا لبه‌‌های سمت راست یا چپ تراشه امتداد پیدا می‌کند.
  • ارتفاع این نواحی کلاک با هم برابر است و هر کدام شامل ۲۰ بلوک قابل پیکره بندی یا CLB‌ و همینطور ۴۰ پین IO‌ می‌باشند.
  • با توجه به ابعاد تراشه، این تراشه‌ها ممکن است بین ۸ تا ۲۴ ناحیه کلاک داشته باشند.
منابع کلاک در FPGA
نواحی کلاک در تراشه‌های Virtex-5

نواحی کلاک در Spartan-6

نحوه چیدمان نواحی کلاک در تراشه‌های Spartan-6 مشابه Virtex-4 و Virtex-5 است و مشخصات کلی آن به شرح زیر است.

  • ارتفاع نواحی کلاک در این تراشه‌ها برابر با ۱۶ بلوک قابل پیکره بندی یا CLB است.
  • هر ناحیه کلاک در برگیرنده ۴۰ پین IO می‌باشد.
  • هر ناحیه کلاک ۴ بلوک حافظه ۱۸ کیلو بیتی و ۴ اسلایس DSP48E1 را در بر می‌گیرد.
  • این تراشه‌ها بین ۲ تا ۶ ناحیه کلاک دارند.

نواحی کلاک در Virtex-6

هر ناحیه کلاک در تراشه‌های Virtex-6 دارای ویژگی‌های زیر می‌باشد:

  • ارتفاع نواحی کلاک در این تراشه‌ها برابر با ۴۰ بلوک قابل پیکره بندی یا CLB است
  • هر بانک IO یک ناحیه کلاک محسوب می‌شود و در برگیرنده ۴۰ پین IO می‌باشد.
  • هر بانک IO چهار پین اختصاصی کلاک دارد.
  • این تراشه‌ها بین ۶ تا ۱۸ ناحیه کلاک دارند.
منابع کلاک در FPGA
نواحی کلاک در تراشه‌های Virtex-6

نواحی کلاک در 7Series

نواحی کلاک در تراشه‌های 7Series دارای ویژگی‌های زیر هستند:

  • تعداد این نواحی با توجه به سایز تراشه می‌تواند بین ۱ تا ۲۴ متغییر باشد.
  • در داخل هر ناحیه کلاک مجموعه‌ای از عناصر سخت افزاری سنکرون نظیر CLB ، DSP ، ‌block  RAM ، CMT و البته IOB وجود دارد. هر ناحیه کلاک فضایی به اندازه ۵۰ بلوک قابل پیکره بندی (CLB) اشغال می‌کند و در برگیرنده یک بانک ورودی خروجی (IO) است. هر بانک ورودی خروجی متشکل از ۵۰ پین ورودی یا خروجی است. دقیقاً در مرکز این ناحیه، خطوط اختصاصی کلاک قرار دارد که اصطلاحاً HROW کوتاه شده عبارت Horizontal Clock Row نامیده می‌شود.
  • اگر خطوط کلاک در HROW را معیار قرار دهیم تعداد CLB های قرار گرفته در بالا و پایین HROW با هم یکسان و برابر با ۲۵ است.
  • برخی از مسیرهای کلاک تنها در یک ناحیه با هم در ارتباط هستند.

به بیان بسیار ساده مسیرهای اختصاصی کلاک درون تراشه‌های 7Series و نسل‌های بعد از آن را می‌توان مشابه ستون فقرات و دنده‌ها در بدن موجودات زنده در نظر گرفت. ستون فقرات کلاک جایی است که در آن بافرهای سرتاسری کلاک قرار می‌گیرند و نواحی کلاک جایی است که دقیقاً دنده‌ها در وسط آن قرار می‌گیرند. خطوط افقی کلاک دقیقاً از وسط نواحی کلاک می‌گذرند.

نواحی کلاک در UltraScale

ارتفاع نواحی کلاک در تراشه‌های UltraScale و +UltraScale برابر با ۶۰ بلوک قابل پیکره بندی یا CLB است و هر ناحیه کلاک در برگیرنده ۵۲ پین ورودی/خروجی معمولی و ۴ پین ورودی خروجی ترنسیور می‌باشد.

در تراشه‌های اولترا اسکیل بر خلاف نسل‌های قبلی، نواحی کلاک به صورت متقارن در دو طرف ستون فقرات کلاک توزیع نشده‌اند و نصف عرض تراشه‌ را در بر نمی‌گیرند. در این تراشه‌ها نواحی کلاک به شکل کاشی در کنار هم قرار گرفته‌اند. هر یک از این کاشی‌ها CR نامیده می‌شود. ارتفاع این کاشی‌ها برابر با ۶۰ بلوک قابل پیکره بندی است و هر کاشی ۲۴ اسلایس DSP48E2 و ۱۲ حافظه بلوکی را در بر می‌گیرد. البته در این تراشه‌ها مسیر افقی کلاک تحت عنوان Horizontal Clock Spin (HCS) همچنان حفظ شده است.

منابع کلاک در FPGA
نواحی کلاک در تراشه‌های UltraScale

جمع بندی

در ابن نوشتار سعی ما بر آن بود تا شما را با بلوک‌های مدیرت کلاک در نسل‌های مختلف تراشه‌های FPGA آشنا کنیم و به شکل اجمالی آن‌ها را مقایسه کنیم. در طراحی سناریوی تولید و توزیع کلاک آشنایی با منابع و امکاناتی که هر تراشه در اختیار شما قرار می‌دهد بسیار حائز اهمیت است. مقوله کلاک در FPGA، موضوع بسیار حساس و نسبتاً پیچیده‌ای است. اشتباه در نحوه چینش و استفاده از منابع کلاک می‌تواند اثرات منفی و غیرقابل اصطلاحی روی طرح شما بگذارد.

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

منبع: UG331 و UG190 و UG362 و UG382 و UG742 و UG572

اشتراک در
بیشتر بخوانیم
آموزش سریع Vivado HLS ابزارهای طراحی

قسمت چهارم: ساخت HLS IP برای System Generator for DSP

در این ویدئو شیوه ساخت HLS IP برای System Generator for DSP را باهم مرور خواهیم کرد. این HLS IP می‌تواند به صورت یک بلوک فراخوانی و استفاده شود.

آشنایی با مفهوم Device Tree سیستم‌های نهفته و لینوکس

آشنایی با مفهوم Device Tree

آیا با مفهوم Device Tree آشنا هستید؟ برای اکثر ما Device Tree جایی است که اضافه یا حذف قطعات کوچک سخت افزاری به کرنل لینوکس گزارش می‌شود.

چگونگی استفاده از ساختار Configuration در VHDL توصیف سخت افزاری

چگونگی استفاده از ساختار Configuration در VHDL

ساختارهای پیکره بندی یا Configuration یکی از مفاهیم پیشرفته در زبان VHDL هستند، و در صورت استفاده صحیح می‌توانند بسیار مفید باشند.

تصاحب XILINX توسط AMD ، خوب یا بد؟ عمومی

تصاحب Xilinx توسط AMD ، موفقیت یا شکست؟

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

عناوین مطالب
    برای شروع تولید فهرست مطالب ، یک هدر اضافه کنید

    4 در مورد “مدیریت سیگنال کلاک : بخش اول مدیریت کلاک در FPGA”

    1. سایت hexalinx حقیقا ‍پر بارترین سایت داخلی در زمینه fpga.من هر هفته به سایت شما سر میزنم واقعا به تلاش و پشت کار شما احسنت میگم و شما رو الگوی بسیار مناسبی برای تمام کسانی که توی این زمینه فعالیت میکنن میدونم.ممنون بابت انتشار دانسته هاتون.

    دیدگاه‌ خود را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد.

    اسکرول به بالا