بیژن بینایی GitHub
بیژن بینایی Rss

Clock

نوشته شده توسط بیژن | در دسته مخابرات, مهندسی برق | نوشته شده در ۲۷-۱۱-۱۳۹۶

۰

ahmad-ossayli-clock

پیشنویس: این پست به مبحث طراحی، استفاده و پیاده سازی کلاک و موضوعات پیرامون اون می پردازه. اینجا فرض شده خواننده به حد کافی با این مطالب آشناست. در غیر اینصورت خوندن این پست بی فایده، مصخره و کسل کننده خواهد بود.

کلاک، اسیلاتور، DCO NCO VCO و stratum و 1pps موجوداتی هستن که تو این سه ماهه شدن شب و روز ما. PLL و PFD و PD و DLL و CP و Loop Filter هم چاشنی مفاهیم یادشده هستن. از یه ور دیگه هم XO و TCXO و OCXO مغز رو از تفکر واداشتن. همه این موجودات ترم ۴ برام خواب و خیال و آرزو بودن اما الان دیگه انقدر این ور و اون ور راجع بهشون خوندم دیگه دارم بالا میارم. با اینوجود همچنان موضوع جذابین برای نوشتن. کلاک از برد زینک می یاد. اسیلاتور از پروژه مدار مخ و VCO از پروژه یه بنده خدای دیگه. NCO تو AD9361 بود و DCO توی Digital PLL. می مونه stratum و 1pps که اونا هم از AD9548 برا یه برده دیگه می یاد. فک کنم تجربیات زیادی هست امیدوارم بشه یکی از بلند ترین پست ها.

■ اصطلاحات

خب همیشه تو هر حرفه ای یه سری اصطلاحات پایه وجود داره که قبل از خوندن گزارشات فرض می شه خواننده عاقل اینا رو بلده. مبحث CDR متاسفانه به خاطر سرعت رشد بسیار زیادش کتاب منسجمی نداره. این بخش سعی داره نگاه جامعی داشته باشه به اصطلاحات این شاخه از مخابرات.

  • datum level: خب همه این روزا می دونن eye دیاگرام چیه. از کجا می یاد و چرا می یاد. اما اغلب دو تا واژه ی zero crossing و datum level در مقالات آدم رو انگشت به دهان می ذاره که این دو واژه چرند یعنی چی . شکل زیر با یک مثال کاملا به این مفهوم نور می تابونه.

eye

  • relaxation oscilator: اسیلاتورهایی که سینوسی تولید نمی کنن رو بهشون می گن relaxation oscilator. شکل موج خروجی می تونه مربعی، مثلثی یا هر شکل با دوره تناوب ثابت باشه
  • ring oscialtor: اسیلاتورهایی هستن که چند تا بلاک با قدرت تقویت منفی می گذارند پشت سر هم که نوسان کنند. لزوما تعداد فردی not پش سر هم نیستن. به عنوان نمونه حالت زوجش رو می شه با سری کردن یک تقویت کننده مثبت پشت سر تقویت منفی ساخت. نکته جذاب ring oscilator ها اینه که خیلی از vco هه pll های پردازنده ها از همین نوع هستن و به عبارت دیگه VCO هستن یعنی می شه فرکانسشونو در حد گیگ عوض کرد پس صرفا اون not ساده ای که همه می گن نیست.
  • pierce oscialtor: می دونم الان خسته شدید که چقدر اسیلاتور تو این جهان کوفتی وجود داره ولی این بهترینشونه. بله تمام میکروها و کلاک pc و هر کوفت دیجیتالیه دیگه ای که دور و برتون وجود داره از این نوع اسیلاتور برای ساخت کلاک پایش (قبل PLL) استفاده می شه. تشکیل شده از کریستال خارجی یه آمپلی فایر قوی داخلی و چند تا خازن کوچولو موچولو برای phase noise بهتر. خلاصه بگم که برا انتخاب کریستال باید حواستون به مفاومت motional arm، خازن موازی و ppm باشه و ppm بی اهمیت ترین پارامتره.
  • PFD: نام گذاری این موجود هم یکی از شاهکارهای دست بشره. PFD مخفف phase-frequency detector هست. اولین چیزی که به ذهن آدم می رسه اینه که این همون PD هست که یه خروجی هم داره و میزان اختلاف فرکانس دو ورودیشو اعلام می کنه اما باید بگم زهی خیال باطل. PFD ها دو تا FF هستن که با طرز خوبی به همدیگه بسته شدن. فرقشون با PD ها اینه که PD صرفا یه XOR بود و میزان اختلاف فاز رو می گفت. PFD عین همون PD اختلاف فاز رو یه طورایی داره می گه اما فرقش با PD اینه که تو PD امکان lock نکردن PLL به دلایلی که حوصلشو ندارم بگم خیلی بالاس اما تو PFD حتی اگه فرکانس VCO خیلی هم با مقدار نهایی فاصله داشته باشه، PFD با احتمال خوبی می تونه error فرکانسی رو کم کنه و در نهایت به lock کردن PLL منجر بشه.

■ Phase Noise در سیستم های مخابراتی

واژه سخیر phase noise به میون اومد خوبه اینجا کمی چند در باره این موجود بنویسم. دو واژه phase noise و jitter تقریبا معادل هم هستن. phase noise توی فرکانس و جیتر توی حوزه زمان اندازه گیری می شن و هر دو بیانگر میزان پایداری اسیلاتور در یک بازه زمانی مشخص هستن. اما سوال اصلی اینه که چرا phase noise انقدر مهم هست و ملت دنبال phase noise هایی تو رنج -150dBc در ۱۰۰ کیلو یا پایین تر می گردن.

ظاهرا phase noise تو مدولاسیون های PSK اذیت ایجاد می کنن. کلا اگه بصورت تیوری خالی به قضیه نگاه کنید شکل زیر ماحصل تخیلاتتان خواهد بود.

نمی خوام بگم این چرنده ها ولی خب کسی که این شکل رو کشیده خیلی تیوریک به قضیه نگاه کرده (چرا؟) و در نتیجه تخیلش ما فقط شاهد چرخش سمبل ها تو فضای IQ اومون هستیم. خیلی هم عالی اما عموما می بینیم ملت ۵۰ دلار (شت می شه حدود ۳۰۰ هزار تومن) پول OCXO می دن و ۵ برابر کریستال معمولی جا می گذارن رو بردشون که phase noise رو بیارن پایین. فقط برا این که این شکله نچرخه؟ نوپ! فرض کنید شما یه A2D دو گیگا سمپلی دارید. تو این سرعت ها که کریستال وجود نداره. تنها راه استفاده از PLL و دوست خوبمون VCO تو یه خلقه بسته هست. حالا اگه phase noise کلاک ورودی زیاد باشه معادل می شه با jitter تو خروجی VCO و عملا سمپل هاتون در جاهای رندمی برداشته می شن. ایرادی نداره ها…. اما اگه بخواید تا مرز نایکوییست نمونه بردارید بدون شک game over خواهید شد. و اینجا یکی از جاهایی هست که phase noise اهمیت پیدا می کنه. به عبارت دیگه تو جاهایی که real time می خواید از RF بصورت پهن باند نمونه بردارید چاره ای نیس به جز کاهش جیتر PLL که می شه با یکم هزینه بیشتر تا حد خوبی بهبودش داد.

کاربرد دیگه این اسیلاتور ها تو فرکانس های خیلی بالا مثل 24GHz یا 77GHz و … هست. اگر چه استفاده از PLL تنها راه برای ایجاد این فرکانس ها نیست اما به علت سادگی و قابلیت مجتمع سازی بالا همچنان به عنوان یک گزینه مطرح در جامعه شناخته می شه. یه رابطه ای هست که دکتر ا. (به سبک مهدی :)) هم بهم یادآوری کرد رابطه 20LogN هست که که N عدد اون تقسیم کننده هه تو مسیر فیدبک هه. این رابطه می گه phase noise خروجی به اندازه اونقدر dB از phase noise ورودی تو یه آفست یکسان بالاتره. و مشکل وقتی بوجود می یاد که N زیادی زیاد باشه. انقدر که تو فرکانسای بالا phase noise اونقدر خراب می شه که می زنه SNR گیرنده رو حسابی خراب خروب می کنه. خب دوباره چاره کار همون هزینه بیشتر و استفاده از TCXO و اسیلاتورهای مرد تر هست.

■ کولپیتس

آره اینم یه اسیلاتوری بود که از همون روز اولی که چشمم بهش افتاد نه از ریختش نه از معادلاتش و نه حتی از نوسان کردنش خوشم اومد. آما…. خب همیشه برام سوال بود این موجود چطور نوسان می کنه (به غیر از آنالیز تیوریک… منظورم این هست که چطور این توپولورژی روز اول به ذهن طراحش رسیده). اگرچه الان هم نمی دونم اما بعد طراحی فهمیدم ظاهرا هیشکی براش مهم نیس این موجود چطور نوسان می کنه. فقط دو تا نکتش به نظرم مفید اومد. شکل زیر یکی از ۳ نوع کولپیتس رو نشون می ده.

colpits

خب حالا این دوستمون با چه فرکانسی نوسان می کنه؟

$$ \omega_m = \sqrt{\frac{C_1 + C_2}{L~C_1~C_2}} $$

چرا؟ بنوسید در میاد. خیلی سادس اما نکته ای که می خواستم بگم اون خازن C1 و C2 هست. نسبت این ها رو معمولا ۱۰ می گیرن. تاثیرش اینه که C1 و C2 یه تقسیم خازنی ایجاد می کنن (شبیه همون تقسیم مقاومتی). پس loop gain اتون به صورت زیر وابسته می شه به این دو موجود گوگولی

$$ gain = \frac{C_1+C_2}{C_1} $$

■ Wien-Bridge

اسیلاتور وین هم با این که مهدی راه انداخته بود. کاظم هم یه کارایی روش کرده بود و منم کلی زور زدم روش اما wien-bridge نمی تونه بیش از چند ۱۰ مگاهرتز بالاتر بپره. من حتی رفتم یه AD8021 از جمهوری گرفتم که ft ایش ۲۰۰ مگ هست اما با اونم بیشتر از ۱۰ مگ نتونستم سینوسی تولید کنم. علت اینه که slew rate آپ امپا بخاطر ۱۰ ۲۰ طبقه ای که توشون هست خیلی می یاد پایین. در صورتی که اگه مثلا توپولوژی همین ring اسیلاتور می تونه تا نزدیکی ft راحت براتون نوسان کنه. پس اگه مثل من عطش فرکانس بالا رو دارید wien-bridge تا یه آبادی اون ور تر هم نمی تونه ببرتتون.

■ VCO

خب اینا اسیلاتور های چرندی بودن که تو مدارمخ درس می دن. تو کتابا هم زیاد پیدا می شه. اما بعد نگاه سر سری به کتاب های مختلف حوزه RFIC و اسیلاتور های monolithic از آدم هایی مثل حاجمیری تا رضوی و …. به این نتیجه رسیدم که کلا دور کتاب ها رو تو این زمینیه باید خط بکشید. بهترین سورس بدون شک مقالات هستن. یه علت اصلیش هم اینه که با خیلی از همین توپولوژی هایی که سخت گیر خواهید آورد عملا patent هایی هستن که غول هایی از Qualcomm تا Analog Devices دارن باهاش پول در میارن. به همین دلیل منم جاشون بودم عمرا نمی ذاشتم که کتاب بشه که بچه مچه هایی مثل من و شما هم بتونن طراحی اسیلاتورهای گیگاهرتزی انجام بدن.

اینجا قطعا حوصله درس دادن همه ایده ها برای طراحی یه VCO درست و درمون رو ندارم اما دو تا نکته هست به عنوان شاه بیت این دفترچه دور و دراز دوست دارم یادآوری کنم

شبیه سازی

قطعا هیچ خری بدون شبیه سازی نمی ره سراغ ساخت IC حتی اگر free باشه. پس تمام مقالاتی که به ساخت رو تراشه منجر شدن و تعدادشون هم کم نیست قطعا پشتش یه شبیه سازی سنگین شده با این وجود کمتر می تونین یه مقاله رو پیدا کنید که نحوه شبیه سازی کارش رو توضیح داده باشه. توضیح پارامترای ساخت و آنالیز حساسیت رو اگه بیخیال شیم می رسیم به قلب اسیلاتور یعنی پیدا کردن فرکانس نوسان و میزان gain margin و …

اگه بخوام خلاصه بگم بهترین نرم افزار برای شبیه سازی اسیلاتور ها ADS هست. راه های مختلفی وجود داره. یکیش HB هست با osc port. یه راه دیگش sparam هست با osc test. اما خودم هیچ کدوم از اینا رو دوست ندارم. جالبه…. خیلی ها رو می بینم (منجمله خودم) که اولین راهی که برای شبیه سازی به ذهنشون می رسه آنالیز زمانی هست. اگرچه transient بهترین شبیه سازی هست همزمان بدترین شبیه سازی هم هست. اینجا می خوام یه آنالیز ساده و سریع رو بهتون معرفی کنم که هم مشکل زمان بر بودن شبیه سازی transient رو نداره و هم مشکلات نداشتن دید OSC Port تو HB. جواب سادس. استفاده از آنالیز AC! آنالیزی که حتی جاهایی که HB و SParam هر دو می گن مدار نوسان نحواهد کرد آنلالیز AC بهتون این دروغ کثیف رو نخواهد گفت.

حالا چطوری؟ بر اساس یه شرط خیلی ساده که هممون می دونیم. شرط بارخازن! یک مدار نوسان می کنه if و تنها if گین حلقه بسته بیش از 0dB باشه پلاس فاز بعد طی کردن حلقه دوباره بشه ۰ یا مضاربی از ۳۶۰ درجه یا به عبارت دیگه همفاز با ورودی. خب فک کنم الان بفهمید چرا آنالیز transient بدترین و آنالیز AC بهترین آپشن برا شبیه سازی VCO ها هست. transient خوبه اما به شرط اینکه startup time اسیلاتورتون میلیون ها تا cycle مثل pierce oscialtor نباشه. خب چرند پرند بسه بریم سراغ یه طراحی واقعی

یک Ring پنج تا 7GHzای

همونطور که اشاره کردم(کجا؟) تقریبا تمام PLL پردازنده ها از یک هم چین اسیلاتوری استفاده می کنن. Ring Oscilator ها بر خلاف تصور اولیه فقط موج مربعی تولید نمی کنند و دیدن یه سینوسی خیلی جیگری در خروجیشون اونقدرا هم عجیب نیست. فرکانس کاری یه ring oscilator توی کتاب حاج میری با یه رابطه تخیلی مدل سازی شده و من هیچ وقت نفهمیدم چطور به این رابطه رسیده. اما بصورت سرانگشتی فرکانس نوسان می شه

$$ f_{osc} = \frac{1}{n t_d} $$

که n تعداد stage ها و t تاخیر هر stage هست. از همین رابطه بالا می شه فهمید اگه تو تکنولوژی 45nm فرکانس ماکزیمم اسیلاتور ring پنج طبقه ای حداکثر 12GHz باشه با همین تکنولوژی ساخت اگر تعداد طبقات رو به ۳ تا کاهش بدیم فرکانس نوسان می تونه تا 20GHz افزایش پیدا کنه(چرا؟). حالا تصور کنید بشه سه طبقه رو به دو طبقه کاهش داد. فرکانس چقدر افزایش پیدا می کنه؟ … آره می شه به 30GHz نوسان هم دست پیدا کرد. یعنی %250 افزایش نسبت به حالت اول و این برا یکی مثل من که تشنه فرکانسه شاهکاره!!! خب اینجا برای اینکه هیجان یکم زیاد شه یه راست می ریم سراغ یه توپولوژی دو طبقه ای.

شکل زیر یک اسیلاتور ring دو طبقه ای رو نشون می ده که از دو تا آمپلی فایر دو طبقه ای دیفرانسیلی تشکیل شده. فرکانس با تنظیم جریان tail ها انجام می شه و کل مدار با ولتاژ 1.8ولت و جریان ۱۵۰ میکرو آمپر تغذیه می شه. این مدار یک VCO هست که اگه بجای منبع جریان یه ماسفت بزارید با کنترل ولتاژ gate که با یه charge pump انجام می شه به یه VCO ناز رسید که از پنج تا 7GHz رو تکنولوژی هیجده صدم همراهیتون کنه. تحلیل، شبیه سازی و بررسیش هم پای خودتون.

و می رسیم به قسمت جذاب خروجی. مدار بالا طبق HB و Sparam نوسان نخواهد کرد. اما وقتی با AC تیون کنید با 5ns برای start up time مدار like a boss شروع می کنه نوسان. طبق شکل زیر، هر طبقه در فرکانس نوسان، ۹۰ درجه شیفت فاز ایجاد می کنه. دو طبقه داریم پس ۱۸۰ درجه شیفت فاز خواهیم داشت، ۱۸۰ درجه بقیش رو هم با جا به جا کردن دو سر دیفرانسیلی طبقه آخر ایجاد می کنیم و شیفت کل حلقه می شه ۳۶۰ درجه، gain هم که خدا رو شکر ۱۵ dB هست و در نتیجه مدار تو 5.3GHz نوسان خواهد کرد.

نکات پایانی

اینم یه چند تا نکته نهایی که تو کار بهشون رسیدم

۱. اسیلاتورهای ring با تمام خوبی ها و پایداری بسیار بالاشون، جیتر خروجیشون بشدت آشغال هست. مثلا همین اسیلاتور خودم که سینوسی نسبتا تمیزی می ساخت، اگر ۵۰۰۰ تا سایکلش رو بندازید رو هم می رسید به شکل زیر که نشون می ده جیتر مدار خیلی ضعیف هست :(. استفاده از سلف در این مواقع کاملا این مشکل رو رفع می کنه.

۲. تو آنالیز Transient نیازی به گذاشتن تحریک اولیه و … نیست. خود ADS به صورت اتوماتیک نویز تولید می کنه اما به هر دلیلی اگر انتظار نوسان داشتید و این اتفاق رخ نداد می تونید از تنظیمات Transient تب Noise، اسکیل نویز رو ۱ و پهنای باندش رو دو برابر فرکانس نوسان احتمالی انتخاب کنید.

۳. ولتاژ VCO ها برای رسیدن به قابلیت tune شدن می تونه تا ولتاژ های خیلی بالا هم برسه. مثلا یه چیپی که ولتاژ نامیش ۱.۸ هست شارژ پمپش رو طوری طراحی می کنن که تا ۱۴ ولت هم قابلیت تولید رو داشته باشه [4]

۴. نکته آخر هم اینکه اکثر اسیلاتورها از کم بودن gain یا بهتر بگم gm کم ترانزیستورشون رنج می برن. تو این شرایط دو تا راه وجود افزایش نسبت w به l یا افزایش Q سلف. اما هر دوی این روش ها هزینه ساخت رو افزایش می دن. یه راه سخت تر ولی ارزون تر استفاده از زوج دارلینگتون بود که تو یکی از IC ها دیدم. توی اون طراحی که cross coupled هم بود با این روش طراح تونسته در فرکانس نوسان gain ماسفت رو تا ۵۰ برابر زیاد کنه.

بعید می دونم کسی حال خوندن همه این چرندیات رو داشته باشه…. به هر حال خسته نباشید

■ منابع

 

[1] Andy aka, “Colpitts Oscillator’s Capacitors,” StackExchange, Feb. 2018.

[2] B. Razavi, “A study of phase noise in CMOS oscillators,” IEEE journal of Solid-State circuits 31.3, pp. 331-343 Mar. 1996.

[3] Y.A. Eken and J.P. Uyemura, “A 5.9-GHz voltage-controlled ring oscillator in 0.18um CMOS,” IEEE journal of Solid-State circuits 39.1, pp. 230-233 Jan. 2004.

[4] A. Harney, “Designing High-Performance Phase-Locked Loops with High-Voltage VCOs,” Analog Dialogue, Dec 2009, [Online]. Available: http://www.analog.com/en/analog-dialogue/articles/designing-plls-with-high-voltage-vcos.html