סקירת טכנולוגיות נפוצות בתחום המיקרו-מעבדים \ מיקרו-בקרים

תגיות:

מיקרו-מעבדים, מיקרו-קונטרולרים, מיקרו-בקרים

בעבר מיקרו-בקרים הכילו בעיקר מנגנוני קלט-פלט פשוטים, זיכרון ויחידת עיבוד.עם השנים, לא רק שגודל הזכרון גדל משמעותית ומהירות השעון עלתה, אלא שגם נוספו מרכיבים רבים שפעם היו ממומשים ברכיב נפרד חיצוני למעבד. כמו כן, נוספו טכנולוגיות שונות המסייעות לפעילות הבקר, וממשקי תקשורת שונים. כל אלה ממומשים היום על אותה פיסת סיליקון (system on chip). המאמר בא לסקור חלק גדול מהטכנולוגיות שניתן למצוא מימוש שלהם במיקרו-בקרים כיום.

שעון המערכת

כמו כל מערכת סינכרונית, המיקרו-בקר צריך אות שעון על מנת לסנכרן בין פעולת הרגיסטרים השונים. ישנם מספר אפשרויות למימוש שעון למערכת:

שעון RC חיצוני – מחברים לרגל המתאימה של הבקר קבל+נגד בטור היוצרים גל בגלל תהליך הפריקה/טעינה של הקבל באמצעות הנגד. שיטה זו זולה שכן היא מצריכה רק שני רכיבים פשוטים אך הדיוק שלה נמוך (תלוי בדיוק הרכיבים) מומלץ להשתמש בשיטה זו ברכיבים בהם אין שעון פנימי ובאפליקציות הדורשות קצב שעון נמוך יחסית ולא חייבות דיוק רב בזמנים.

שעון RC פנימי מהיר – במרבית המיקרו-בקרים החדשים ממומש שעון RC פנימי. פעילותו זהה לחיצוני רק שהוא ממומש בתוך הרכיב. שימושי בעיקר במערכות בהן אין חשיבות גדולה לדיוק של תזמונים שונים, ויש חשיבות גודלה למיזעור מהערכת. רכיב זה משמש גם כשעון ריצה בעת תחילת המערכת או במקרה של כשל השעון החיצוני.

שעון חיצוני מגבישcrystal oscillator – שעון הפועל ע"י שני קבלים, גביש (לרוב קוורץ) ושער NOT ונגד (שני האחרונים ממומשים כבר בתור הבקר) יתרונו הגדול הוא בדיוק הגבוה ובכך שפעילותו כמעט ולא משתנה כתלות בטמפרטורה. זוהי הדרך המקובלת כיום להפקת אות שעון ורוב המערכות משתמשות בה.

מקור שעון חיצוני - לעיתים רוצים שהבקר יהיה בעל תדר שעון שיקבע ע"פ רכיב אחר (יכול להיות בקר אחר למשל) לכן ישנה אפשרות להשתמש באות שעון חיצוני שיחובר לאחד מרגלי המעבד.

שעון פנימי איטי – שעון RC פנימי נוסף המפיק תדר נמוך מאוד. מטרתו היא לשימוש כשהבקר במצב "שינה" SPLEEP. במיקרו-בקר ממומשים רכיבי PLL המחלקים/מכפילים את התדר ומסייעים לייצב אותו. באמצעותם ניתן ליצור לדוגמה תדר-שעון של 48MHZ באמצעות גביש של 12MHZ ע"י הכפלת התדר ב 4.
כל הגדרות השעונים ואופן פעולתם נעשים באמצעות תוכנה ע"י הגדרות מתאימות לרגיסטרים השולטים בפעולת השעון.
ישנם עוד מנגנונים הממומשים בחומרה כדי להבטיח עבודה תקינה עם השעון:

Fail-Safe Clock Monitor הינו מנגנון המזהה בעייה עם האות השעון החיצוני לבקר (למשל גביש) ומשנה אוטומאטית ובצורה חלקה את השעון הפנימי להיות שעון המערכת.

Two Speed Startup לאחר איתחול הבקר לוקח לשעון החיצוני (שנוצר מהגביש) זמן רב במונחי חומרה להתייצב. כדי לחסוך זמן זה יש מנגנון שמפעיל את המעבד באמצעות השעון הפנימי, ומתחיל להריץ את הקוד. לאחר שהשעות החיצוני מתייצב הוא הופך להיות השעון הראשי לבקר.

מוני זמן Timers

מוני זמן שימושיים באפליקציות בהן נדרש לספור זמן בצורה מדוייקת כגון: בקרת מנועים, תקשורת או מדידות שונות. מוני הזמן הם רגיסטרים שכאשר מקפלים פקודה מתאימה הם מתחילים לספור מחזורי שעון ברקע, כלומר ללא התערבות הבקר, והבקר יכול בפקודה מסויימת לבדוק את ערכם. המונים ממומשים בחומרה ורצים באופן עצמאי ולכן אין צורך בפעילות המעבד על מנת לקדם אותם (המעבד ניגש אליהם רק כדי לאתחל אותם, להורות על תחילת הספירה ולבדוק את ערכם. המונה מסוגל לשלוח פסיקה למעבד כאשר הגיע לערך מסויים או שבוצעה גלישה מערכו המקסימאלי. ניתן לבצע חלוקה של תדר השעון, כלומר לקבוע כל כמה מחזורי שעון יקודם המונה ביחידה אחת. לדוגמא מונה של 16 ביט יכול להכיל 64 אלף ערכים. אם נורה למונה זה להתקדם ביחס של 1:256 לשעון המערכת, יוכל המונה לספור עד 16 מליון מחזורי שעון (כשנייה עבור שעון בתדר של 16Mhz) רוב הבקרים ממומש יותר ממונה זמן אחד ע"מ לאפשר פעילות לכמה רכיבים במקביל.

מערכת ניהול הספק

מערכת ניהול הספק אחראית על הקצאת הספק לכל אחת מיחידות הבקר ולניהול נכון של משאב זה כדי לא לבזבז הספק כשאי צורך בכך. מיקרו-בקרים רבים נמצאים בהתקנים אלחוטיים הפועלים על סוללות. רבים מהתקנים אלה נמצאים ב"מצב פעולה" באחוז קטן מאוד מהזמן. לדוגמא, שלט רחוק לטלוויזה נמצא בפעולה רק כאשר אנו לוחצים על אחד הכפתורים. במרבית הזמן הוא סתם יושב על השולחן ואינו פעיל. נגן MP4 למשל, גם בזמן שהוא עובד ומשמיע שיר, אינו זקוק לחיבור ה USB שלו, לכן כל אנרגיה שתדרש ע"י רכיב ה USB שבו בזמן זה היא בזבוז. לפיכך ממומשת מערכת ניהול הספק במיקרו-בקרים. לבקר יש מספר מצבי עבודה, מצב רגיל, מצב המתנה idle ומצב שינה sleep. בכל מצב ניתן להגדיר אילו יחידות יפעלו ואילו לא, ומה יהיה מקור השעון של המערכת. למשל, במצב שינה נרצה מינימום דרישת הספק שכן במצב זה ניתן לומר שההתקן לא בשימוש (למרות שהוא לא מכובה לגמרי) מצב זה "נכסה" את מרבית ההתקני תקשורת, או שנעביר גם אותם למצב שינה (מצב שבו הם ידרשו מינימום הספק, אך יעירו" את המערכת באם תתקבל הודעה בקו התקשורת". כל שמהירות השעון של הבקר גדולה יותר, כך הוא מבזבז יותר הספק, לכן במצב שינה ננתק את השעון החיצוני ונשתמש בשעון RC הפנימי העובד בתדר נמוך ככל האפשר. שנם עוד אופציות רבות שניתן לשלוט על רובן באמצעות תוכנה ובכך להביא למינימום את צריכת ההספק של הבקר בכך להאריך את משך השימוש של המוצר לפני שתיגמר הסוללה.

זיכרון EEPROM

זהו זיכרון ROM הנוסף לזכרון הנתונים הרגיל של המעבד אך יתרונו הוא בכך שאינו נדיף.ֿזיכרון זה נועד לשמור נתונים או טבלאות שאינם חלק מקוד היצרן או שיתתכן שישתנו בעתיד. בזכרון זה לרוב יאוחסנו נתונים על המשתמשים, סיסמאות, ערכים משתנים כמו טבלאות המרה של מטבעות ועוד. עבר השתמשו למטרות אלה בזיכרון EEPROM חיצוני. שילובם של זיכרונות אלה על אותה פיסת סיליקון בתוך המעבד חוסך את השימוש בזיכרונות חיצוניים ולרוב מקצר את זמן הגישה אליהם. זיכרונות אלה לא מיועדים לשמירת מידע כגון תמונות, קבצים. לשמירת נתונים אלה משתמשים היום בזיכרונות FLASH חיצוניים. (יש כיום נסיונות לממש זכרונות FLASH על אותה פיסת סיליקון של הבקר, אך אלה פחות נפוצים ומוצלחים בגלל סיבות טכנולוגיות)

פעולת כפל מבוססת חומרה

פעולת כפל היא פעולה ארתמטית הדורשת זמן חישוב רב בגלל שמימושה באמצעות תוכנה הוא באמצעות חיבור. לדוגמא, ביצוע הפעולה 200*213 תידרוש לחבר 200 פעמים את המספר 213 למשתנה (רגיסטר בעל 8 ביט) כלומר תדרוש לולאה שתחזור 200 פעם על פעולת החיבור הבסיסית. באפליקציות בהן יש פעולות הכפלה לעיתים קרובות, הן יגזלו משאבי מערכת רבים. לכן בבקרים רבים ממומשת פעולת כפל בסיסית בחומרה, כלומר ישנו מנגנון המסוגל לבצע הכפלה של רגיסטר ברגיסטר במספר מצומצם של מחזורי שעון. יכולת זו מקנה למיקרו-בקרים רגילים להריץ אפליקציות שמומשו בעבר רק על רכיבי DSP יעודיים. לחברת MICROCHIP ישנה משפחת מיקרו-בקרים dsPIC הלוקחת את נושא הפעולות מתמטיות הממומשת בחומרה צעד אחד קדימה ומהווה פתרון זול ויעיל לאפליקציות רבות של עיבוד אותות שהיו נחלת רכיבי ה DSP בלבד.

פסיקות

מנגנון הפסיקות אינו דבר חדש, אך הכנסתי אותו לרשימה מכיוון שכיום יש מגוון רחב מאוד של פסיקות והמנגנון עצמו אינו פשוט כבעבר. מנגנון הפסיקות מאפשר לרכיבים ומערכות שונות בבקר להודיע למעבד CPU שאירעה פעולה מסויימת. ישנו בקר פסיקות המחליט אם להענות לפסיקה זו, ולגרום למעבד להפסיק להריץ את הקוד במקום בו הוא נמצא ולעבור לקטע קוד אחר המטפל בפסיקה. לדוגמה, אחד ההתקנים הפריפריאליים כמו ה USB יכול לשלוח בקשת פסיקה למעבד בזמן שהוא "הרגיש" שהוא חובר למחשב. המעבד מחליט אם לקבל את הפסיקה ואם כן, אז הוא שומר את כל רגיסטרים החשובים לו, ועובר לביצוע קוד הנמצא בכתובת מסויימת המתאימה לטיפול בפסיקה – במקרה זה קוד המטפל בחיבור של ה USB. ישנם היבטים רבים למנגנון זה, אך לא אפרט אותם כאן. כיום במיקרו-בקרים יש מספר רב של התקנים ותרחישים המייצרים פסיקות, כגון התקני תקשורת, בעת נפילת מתח, סיום מחזור של מוני הזמן, בעת תקלה באות השעון של המערכת ועוד.

CAPTURE/COMPARE/PWM

מנגנון זה שימושי באפליקציות בהן יש חשיבות גבוהה לדיוק בתזמון. זהו מודל האמאפשר לבצע פעילויות שמירה/השוואה/פלט כתלות בערכי מוני הזמן של המערכת. אופן הפעילות מוגדר בעת איתחול המודל ולאחר מכן רץ ברקע ללא תקורה מצד המעבד.
CAPTURE – פעולה זו שומרת לרגיסטר בזיכרון את ערך אחד ממוני הזמן כאשר מתרחשת פעולה מסויימת כגון שינוי ערך בכניסה מסויימת. פעולה זו שימושי לאפליקציות בהם רוצים למדוד במדוייק את משך הזמן בהן אחת הכניסות היא ב 1 לוגי וב 0 לוגי – כלומר בעיקר לניתוח אותות תקשורת שהמידול שלהם נעשה ע"פ הזמן.
COMPARE – פעולה זו משווה בין ערך רגיסטר מסויים לערך של אחד ממוני הזמן ומבצעת פעילות מסויימת כאשר הם שווים (למשל שינוי ערך של אחת היציאות הדיגיטאליות). פעולה זו שימושית אם אנחנו רוצים לגרום ליציאה להיות בערך מסויים לזמן נתון: נקבע את ערך הרגיסטר בהתאם לזמן שאנו רוצים ונאפס את הטיימר. מכאן מובטח לנו שערך היציאה ישתנה כאשר ערך הטיימר יגיע לערך שקבענו.
PWM -Pulse Width Modulation – באמצעות מודל זה ניתן לקבוע תדירות שינוי של ערך אחת היציאות בצורה מדוייקת, כלומר ניתן להגדיר כמה זמן היציאה תהיה גבוהה וכמה נמוכה. זהו מנגנון השימושי מאוד בבקרה על מנועים.

תקשורת טורית סינכרונית

מודל זה מאפשר לבקר לבצע תקשורת טורית פשוטה המיועדת בעיקר לתקשר עם רכיבים נוספים בסביבת הבקר כגון מתאמים שונים (LCD, ETHERNET, EEPROM ) או כל מעגל משולב אחד הנמצא בסביבת הבקר וממומשת בו אחת משני הפרוטוקולים SPI -Serial Peripheral Interface או פרוטוקול I2C . המודל ממש בחומרה את כל הרגיסטרים והבדיקות שיש לבצע בשביל לממש את פרוטוקולים אלה, כך שהמעבד בלב הבקר צריך רק לרשום לרגיסטר שליחה או לקרוא נתונים מרגיסטר הקבלה.

תקשורת טורית סיכרונית/אסיכרונית USART -Universal Synchronous Asynchronous Receiver Transmitter

ממיוש בחומרה של מודל תקשורת כללי, כולל באפרים לכניסות יציאות. באמצעות מודל זה ניתן לממש פרוטקולי תקשורת פשוטים בהם יש קו נפרד לשליחת מידע וקבלת מידע (half duplex) כמו RS-232 ודומיו. במודל ממומשים בחומרה בדיקות זוגיות, stop bit , וקצב קבלת/שליחת הנתונים כך שהמעבד מקבל/שולח את המידע באמצעות השמה פשוטה לרגיסטרי TX/RX. (המודל ממש את השכבות התחתונות במודל OSI)

ממיר אנאלוגי לדיגיטאלי ADC

במרבית הבקרים היום ממומש ממיר אנאלוגי לדיגיטאלי פנימי בחומרה. יכולת זו מאפשר לממש באמצעותו מערכות שבעבר נדרש להשתמש בהן בממיר חיצוני (יקר יותר, תופס יותר שטח). הממיר מסוגל לדגום אות אנאלוגי ממספר רב של כניסות (בבקרים עם מספר רגליים גבוה). הרזולוציה מגיעה כיום ל 10 ועד 16 ביט לכל דגימה. קצב הדגימה נע בין 50kbps בבקרים ישנים ועד 1Mbps בטובים יותר. (בכל פעם כניסה אנאלוגית אחרת מחוברת אל הדוגם לכן אם יש כמה כניסות אנאלוגיות אז הקצב הכללי יורד). קצב זה מתאים לדגימה של אותות מחיישנים שונים ואפילו אותות דיבור. רמות המתחים שבהם מתבצעת הדגימה יכולה להיות שונה מערך המתח שמקבל הבקר. למשל בקר שעובד על 0-5V יכול לדגום אות אנאלוגי הנע בין 0-10V או 3- ל 3 וולט.

Analog Comparator Module

כמעט בכל משפחות המיקרו-בקרים ממומש משווה מתח, אליו מחוברות 2 כניסות אנלוגיות משני רגליים של הבקר. המשווה יכול לתת למעבד חיווי לגבי איזה ערך כניסה גבוה יותר ועוד. (חוסך שימוש ביחידה משווה ברכיב נפרד באפליקציות הנדרשות לכך).

USB

ישנם מיקרו-בקרים שממומש בהם בחומרה יחידת USB המתקשרת עם המחשב. ישנם רגיסטרים מיוחדים לשמירת הגדרות האיתחול של ההתקן, ולמימוש מנגנון התקשורת, כמו כן קיים ממיר ל 3.3V לפעולת ה USB . מימוש זה חוסך שימוש ברכיב מיוחד המממש תקשורת USB ומאפשר עבודה בקצבי גבוהים של 480Mbps FULL SPEED USB.

Ethernet

בדומה ל USB, ישנם מיקרו-בקרים שממומש בתוכם ממשק ETHERNET שמממש את שני השכבות התחתונות של התקשורת בחומרה, ומאפשר לליבת המעבד לקבל את ההודעות המתאימות רק לרכיב. (ממומשת שכבת ה MAC)

CAN – Controller Area Network

CAN הינו פרוטוקול תקשורת המשמש בעיקר לתקשורת בסביבה מרובת מיקרו-בקרים. הפרוטוקול הומצא עבור תעשיית הרכב, שבה יש מספר רב של מיקרו-בקרים (בקר מנוע, תאורה, כריות אוויר, מחשב ניווט, מערכת קול, כיוון מראות ועוד). הפרוטוקול מממש BUS עליו ניתן לחבר מספר גדול של מיקרו בקרים ואחראי על הסדר התקשורת בניהם. הפרוטוקול מכיל מנגננוני בקרה ובדיקת שגיאות ולכן שימושי בסביבה רועשת. ישנן סדרות של מיקרו-בקרים בהן ממומש פרוטוקול זה בחומרה.

High/Low-Voltage Detect module

מנגנון זה מאפשר לבצע בקרה על מתח הפעולה של המיקרו-בקר. ניתן להגדיר באמצעות התוכנה ערך לרגיסטר מסויים בו קובעים רמת מתח מסויימת (למשל ניתן לקבוע 3.8V) במקרה ומתח ההזנה של הבקר VDD מגיע לערך זה, המנגנון ייצר פסיקה שבאמצעות ניתן להגדיר לבקר מה לבצע במקרה זה. מנגנון זה שימושי למקרים של נפילת מתח פתאומית. במקרה שמקור המתח של הבקר מנותק בצורה פתאומית, הוא יכול להמשיך לפעול עוד כמה מיקרו/מילי שניות (תלוי בקבלים שונים במערכת) בזמן זה הבקר יכול לבצע פעולות חשובות לפני שיפסיק לעבוד כגון שמירה של נתונים חשובים לזיכרון הלא נדיף ֿֿ, או ביצוע נעילה/התראה במערכות אזעקה. לדוגמא, נניח שמתח ההזנה שלנו VDD הוא 5V. ניתן לכוון את המנגנון לערך של 4V. בעת ניתוק המתח לבקר תרד רמת המתח במהירות. כשתגיע ל 4V המנגנון יזהה זאת ויבצע פסיקה. והבקר יעבור לבצע קטע קוד שישמור נתונים שונים. ויהיה לו זמן לבצע זאת עד אשר מתח ההזנה ירד לרמה של כ 2V שבה הבקר כבר לא יכול לתפקד כראוי.אם מתכננים את קיבולי המערכת ואת הקוד נכון, זמן זה אמור להספיק. שימוש נוסף למנגנון הוא לאפליקציות המשתמשות בסוללה. עם השימוש בסוללה, ערך המתח שהיא מסוגלת לספק יורד. מכיוון שאנו לא רוצים שיווצר מצב שערך זה ירד לרמת נמוכה בה הבקר לא יוכל לתפקד כראוי (דבר שיכול לגרום לו להתקע בצורות שונות או לבצע דברים שלא התכוונו שיבצע) אז ניתן להגדיר שמרמת מתח מסויימת ההתקן יכבה את עצמו, או לעליפין יציג למשתמש הודעה על כך שהסוללה מתרוקנת ויש להחליפה.

תהליך ה RESET

כדי לבצע הפעלה תקינה של הבקרים ממומשים בחומרה מספר מנגנוניםשמטרתם ליצור איתחול תקין:
Power on Reset
מנגנון זה אחרי לכן שבעת חיבור הבקר למקור מתח, הוא יעבור למצב RESET. פעולה זו חשובה כדי שהבקר לא יתחיל לעבור עם ערכי רגיסטרים שגויים. כאשר הבקר עובר למצב RESET הוא מתחיל להריץ את הקוד ממקום ידוע ומבצע שורה של פעולות איתחול ולכן חשוב שיתחיל כך.
Power up Timer
זהו מונה זמן הפועל מהרגע שניתן אות RESET למשך זמן קצר של כמה מילי-שניות. תפקידו הוא להשהות את תחילת פעולת הבקר עד אשר מקור המתח יתייצב
oscillator Start-up Timer
זהו מונה זמן המופעל עם סיום ה Power-up Timer ותפקידו לתת לשעון מספיק זמן ע"מ להתייצב ולספק מחזור שעון מדוייק.
Brown-out Reset -BOR מנגנון המבצע פעולת RESET כשמתח ההזנהנמוך מערך מסויים שנקבע בתוכנה, ומשאיר את המעבד במצב זה עד שמתח הספק יעלה שוב.
WatchDog Timer – WDT זהו מנגנון שאמור לבצע פעולת RESETבמידה ויש חשש שהמעבד "נתקע" בגלל סיבה מסויימת כמו באג בתוכנה. המימוש הוא באמצעות מונה זמן שניתן לכוון את ערכו. מונה זה מתחיל לרוץ לאחר אתחול הבקר. באם עבר משך זמן מסויים ומונה זה לא אופס, הוא יגיע לערכו המקסימאלי ואז יבצע RESET למערכת. אם מאפשרים את פעולתו יש לדאוג לאפס אותו בקוד בכל כמה זמן. במקרה והתוכנה מגיעה לקטע קוד בו היא נתקעת (לולאה אינסופית, מצב המתנה לקלט חיצוני שלא מגיע, גלישת זיכרון ועוד) אז מונה ה wathcdog ירוץ עד שיגיע לערכו המקסימלי ואז יאתחל את המערכת ויחזיר אותה למצב יציב.

Code Protection

כדי להגן על הקוד מפני העתקות, ניתן להגדיר למעבד שלא ניתן יהיה לקרוא את הקוד ממנו. ישנם מספר מנגנוני הגנה על הקוד. ניתן לקרוא על כך במאמר הבא.

In-Circuit Serial Programming

מנגנון המאפשר לצרוב את הקוד לבקר גם לאחר שחובר למעגל משולב, וזאת באמצעות 3 קווים בלבד.

סיכום

ישנם עוד מנגנונים רבים הממומשים בחומרה שלא מופיעים במאמר זה כמו בקרה ל LCD , בקרת מנועים ועוד. המגמה כיום היא להכניס כמה שיותר יכולות לתוך הבקר עצמו, שכן זה חוסך שטח, הספק ומוריד בצורה משמעותית את מחירו הסופי של המוצר.


שאלות בנושא ניתן להפנות לפורום אלקטרוניקה.

2 Responses to "סקירת טכנולוגיות נפוצות בתחום המיקרו-מעבדים \ מיקרו-בקרים"

  • משתמש אנונימי (לא מזוהה) says:
  • קיוביק says:
Leave a Comment

No results