چگونه CPU می تواند از صحت کلاک واقعی خود اطلاع پیدا کند؟
فرض کنیم که در یک مدار حساس با کاربردهای صنعتی یا پزشکی و غیره، کلاک CPU از یک اسیلاتور خارجی یا اسیلاتور داخلی مبتنی بر کریستال خارجی تامین شود . حال اگر به دلایلی مانند خرابی یا اشتباه در انتخاب قطعات، تفاوت قابل توجهی بین فرکانس واقعی کلاک با مقدار ایده آل وجود داشته باشد، CPU از چه طریقی می تواند از وجود این خطا در فرکانس کلاک اطلاع حاصل کند تا بتواند روتین های حفاظتی مناسب را اجرا کند؟ در این رابطه چند راهکار پیشنهاد می شود:
1- اولین روش کلی برای سنجش صحت فرکانس کلاک، استفاده از یک منبع مستقل تولید فرکانس به عنوان مرجع است. این مرجع فرکانسی می تواند از اسیلاتورهای داخلی یا خارجی یا سایر سخت افزارهای خارجی که دارای کلاک مربوط به خود هستند (مانند میکروکنترلرهای دیگر یا کامپیوتر) یا هر مبنای زمانی مستقل مانند فرکانس برق شهر تامین شود. در این روش باید به نحوی امکان مقایسه بین فرکانس کلاک CPU با فرکانس مرجع فراهم شود. مثلا اگر تایمری با کلاک مستقل در سیستم وجود داشته باشد (مانند RTC)، تایمر دیگری را می توان با کلاک CPU یا تقسیمات آن راه اندازی کرد و از مقایسه تغییرات دو تایمر، صحت کلاک مورد سنجش را بررسی کرد.
از مبناهای زمانی در دسترس مانند فرکانس برق شهر هم با تمهیدات مناسب می توان برای این ارزیابی استفاده کرد. به عنوان یک مثال اگر کلاک تایمری با Prescaler=8 از کلاک CPU تامین شود و منبع کلاک اسیلاتوری با کریستال 16MHz باشد، فاصله زمانی نیم سیکل از برق شهر که دو بار گذر از صفر در آن اتفاق می افتد برابر 10ms است و انتظار می رود که مقدار شمارنده در این مدت زمان 20000 واحد تغییر کند. حال اگر بجای کریستال 16MHz به اشتباه یک کریستال 8MHz قرار داده شده باشد، در فاصله دو گذر از صفر مقدار شمارنده بجای 20000 واحد فقط 10000 واحد تغییر می کند که از مقایسه این مقدار با مقدار ایده آل می توان به وجود خطا در فرکانس کلاک پی برد و به این نتیجه رسید که فرکانس واقعی اسیلاتور نصف مقدار مطلوب است.
2- روش کلی دیگر، استفاده از تکنیک های آنالوگ است. با استفاده از روش های آنالوگ به طرق مختلفی می توان فرکانس را به یک کمیت آنالوگ مرتبط کرد و آن را اندازه گرفت. مثلا می توان موجی با فرکانس مشخص را توسط میکروکنترلر تولید کرد و بعد از اعمال آن به مدار مبدل فرکانس به ولتاژ، این ولتاژ را توسط ADC اندازه گیری کرد که مقدار اندازه گیری شده ملاکی برای سنجش فرکانس خواهد بود. یا به عنوان مثال دیگر در روشی که جنبه تقریبی دارد، یک پله ولتاژ به مدار RC با مقادیر معلوم اعمال می شود و ولتاژ دو سر خازن تا رسیدن به حد معینی توسط ADC اندازه گیری می شود و تایمری بصورت همزمان با کلاک CPU یا تقسیمات آن راه اندازی می شود. با توجه به معلوم بودن مقدار خازن و مقاومت و فرکانس تایمر، میزان تغییرات تایمر بصورت تقریبی تا شارژ خازن مشخص است (ولتاژ دو سر خازن در زمان RC به 0.63 حداکثر مقدار خود می رسد). بنابراین بعد از رسیدن ولتاژ خازن به حد مشخصی با مقایسه مقدار واقعی تایمر با مقدار مورد انتظار می توان صحت فرکانس کلاک CPU را احراز کرد.
@KnowledgePlus