PLL ( حلقه ی قفل شده ی فاز) در میکروکنترلرهای ARM
PLL (حلقه ی قفل شده ی فاز)
مطلب زیر بر مبنای ساختار میکروکنترلر LPC214x نوشته شده است.
در خانوداده ی LPC214X دو ماژول PLL قرار گرفته است. PLL0 برای تولید کلاک سیستم CCLK است و PLL1 کلاک USB در مقدار ۴۸MHz فیکس می کند. از لحاظ ساختار این دو PLL شبیه به هم هستند به جز اینکه قابلیت وقفه ی PLL تنها برای PLL0 تعبیه شده است.
PLL0 و PLL1 نرخ کلاکی بین ۱۰MHz تا ۲۵MHz را به عنوان ورودی قبول می کنند. فرکانس ورودی ضرب شده و خروجی بین ۱۰MHz تا ۶۰MHz برای CCLK و ۴۸MHz را برای USB با استفاده از یک اسیلاتور کنترل شده با جریان CCO ایجاد می کند. ضرب کننده می تواند در فرکانس ورودی را در یک مقدار صحیح بین ۱ تا ۳۲ ضرب کند ، اما در عمل به دلیل محدودیت پردازنده این مقدار برای خانواده LPC214X نمی تواند بیش تر از ۶ باشد. CCO در رنج فرکانسی ۱۵۶MHZ تا ۳۲۰MHz کار می کند پس یک مقسم اضافی در حلقه قرار دارد تا PLL را در رنج فرکانسی مطلوب حفظ کند. مقسم خروجی می تواند یکی از اعداد ۲ یا ۴ یا ۸ یا ۱۶ تنظیم گردد. تا زمانیکه حداقل شریب مقسم خروجی ۲ است می تواند متطئن شد که خروجی PLL مدت زمان وظیفه ۵۰% دارد. بلوک دیاگرام واحد PLL را در شکل زیر مشاهده می کنید.

فعال سازی PLL از طریق رجیستر PLLCON کنترل می شود. مقدار ضریب و مقسم توسط رجیستر PLLCFG کنترل می شود. این دو رجیستر به دلیل جلوگیری از تغییرات ناگهانی پارامتر های PLL یا غیر فعال کردن PLL ، به صورت محافظت شده هستند. به دلیل اینکه تمامی فعالیت های تراشه ، حتی تایمر watchdog ، بستگی به PLL0 دارند ، تغییرات ناگهانی در تنظیمات PLL نتایج پیش بینی نشده ای را در پی خواهد داشت. همین اهمیت در مورد PLL1 و واحد USB وجود دارد. هر دو PLL در هنگام ریست شده تراشه و یا در مد عملکرد Power-down خاموش می شوند. PLL تنها به صورت نرم افزاری فعال می شود. برنامه باید PLL را پیکربندی و سپس فعال کند و مدتی برای قفل شدن حلقه منتظر بماند و سپس واحد PLL را به منبع کلاک متصل گرداند.
واحد PLL دارای ۴ رجیستر است که در جدول زیر آورده شده است. هر گونه مقداری دهی غیر مناسب برای این رجیستر ها موجب فعالیت نادرست واحد USB و خود وسیله می شود.

رجیستر PLL0CON و PLL1CON:
بیت صفرم این رجیستر برای فعال سازی واحد PLL و بیت یک ام آن برای اتصال واحد PLL به منبع کلاک است. بقیه بیت ها آن برای مصارف آینده رزرو شده اند. تغییرات اعمال شده در این رجیستر تا زمانیکه که رشته مناسب در رجیستر PLLFEED قرار نگیرد ، اعمال نمی شود.
PLL قبل از آنکه استفاده شود باید پیکربندی ، فعال و در حلقه ی خود قفل شود. سخت افزار قبل از آنکه PLL وصل شود نمی تواند مطمئن شود که حلقه قفل شده است یا نه. هنگام از دست دادن قفل حلقه ی در PLL مانند این می ماند که اسیلاتور ما ناپایدار شده باشد.
رجیستر PLL0CFG و PLL1CFG :
این رجیستر مقدار ضریب و مقسم را در خود دارد. تغییرات در این رجیستر تا زمان قرار دادن رشته مناسب در PLLFEED اعمال نخواهند شد. ۵ بیت اول (بیت صفرم تا چهارم ) این رجیستر MSEL (مقدار ضریب ) و بیت ۵ و ۶ آن PSEL (مقدار مقسم) نام دارد. کلاک خروجی واحد PLL از رابطه زیر محاسبه می گردد :
CCLK = M × FOSC or CCLK = FCCO / (2 × P)
FCCO = CCLK × ۲ × P or FCCO = FOSC × M × ۲ × P
FOSC باید بین ۱۰MHz تا ۲۵MHz باشد. CCLK باید بین ۱۰MHz تا ۶۰MHz باشد. FCCO باید بین ۱۵۶MHz تا ۳۲۰MHz باشد.
رجستر PLL0STAT و PLL1STAT :
این دو رجیستر فقط خواندنی هستند و پارامتر های واحد PLL را در خود ذخیره کرده اند. مقدار PLLSTAT شاید با مقدار PLLCON یا PLLCFG فرق کند زیرا مقادری دو رجیستر فوق تا قبل از اعمال رشته مناسب به PLLFEED اعمال نمی شوند.
بیت صفرم تا چهارم مقدار MSEL و بیت پنجم و ششم مقدار PSEL را در خود نگه داشته اند. بیت هشتم نشان دهنده فعال بودن واحد PLL و بیت نهم نشان دهنده متصل بود واحد PLL به منبع کلاک است. بیت دهم این رجیستر نشان می دهد که آیا حلقه قفل شده است یا نه. یک بودن بیت دهم نشان دهنده این است که حلقه در فرکانس خواسته شده قفل شده است.
بیت PLOCK یا همان بیت دهم که نشان دهنده قفل شدن حلقه است به کنترلر وقفه متصل است. این کار امکان را به ما می دهد که PLL را روشن کرده و با سایر توابع بدون انتظار برای قفل شدن PLL کار کنیم و بعد از قفل شده حلقه از طریق وقفه ای که ایجاد می کنیم واحد PLL را متصل کنیم. همانطور که گفته شد این وقفه تنها برای PLL0 پیش بینی شده است و وجود دارد.
رجیستر PLL0FEED و PLL1FEED :
رشته ی مناسب که باید در این رجیستر نوشته شود تا مقادیر رجیستر های PLLCON و PLLCFG اعمال شوند :
ابتدا مقدار 0xAA را در رجیستر PLLFEED نوشته شود. سپس مقدار 0x55 نوشته شود. در طول این عمکرد این رجیستر با وقفه ها غیر فعال باشند.
تالیف و ترجمه : علی آقایی فر