חזור לתיקייה: 00440252 - מערכות ספרתיות ומבנה המחשב

6 - תקשורת

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • תקשורת טורית
  • תקשורת אסינכרונית
  • תקשורת על חוט יחיד - UART
  • ה-BUS

6 - תקשורת

00440252

מערכות ספרתיות ומבנה המחשב

רשימות הרצאה לקריאה בשבת

תקשורת

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

תקשורת טורית

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

במידה ויש לנו שני יצורים שרוצים לתקשר אחד עם השני, אחד מהם נדרש ליזום.
כאשר רכיב יוזם תקשורת הוא נקרא Master והתואר הזה ניתן לו לתקשורת הזו. לרכיב המתוקשר קוראים Slave וגם התואר הזה מתחלף.

ישנו פרוטוקול בשם 4−phase4-phase4−phase שבו ניתן להשתמש לתקשורת. הוא דורש:

  • שני חוטי בקרה ו-NNN חוטי נתונים.
  • שני רכיבים מתקשרים.
  • הוא לא דורש שעון. (אך ניתן להשתמש בשעון)

נסתכל על דוגמה לאיזושהי תקשורת:
​ספרתיות - הרצאה תקשורת 1.png

תקשורת על חוט יחיד - UARTUARTUART

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

ניתן לחבר חוטים בתצורה שתיתן לנו תקשורת בכיוון אחד או תקשורת בשני כיוונים(את התקשורת בשני כיוונים ניתן לבנות כך שהם לוקחים תורות בשליחת המידע או ששניהם יכולים לשלוח מידע באותו הזמן)

תקשורת על חוט יחיד נהוגה ביציאת COMCOMCOM של מחשבים ישנים.

הערה

ניתן לקודד את השעון ביחד עם הנתונים ואז יש חוט אחד פחות שאנו צריכים לשלוח.

על מנת לתקשר השולח(TXTXTX או transmitter) והמקבל(RXRXRX או receiver) צריכים להיות עם אותם כמה פרמטרים זהים:

Baud  rate,Tbit,Bit  order,#bits,Parity  bitBaud\;rate,\quad Tbit,\quad Bit\; order,\quad \text{\#}bits, \quad Parity\; bitBaudrate,Tbit,Bitorder,#bits,Paritybit

אם שינינו את אחד מהערכים האלו בשולח או במקבל, נדרש לשנות אותו גם בשני כדי שיתאים.

ה-BUSBUSBUS

BUSBUSBUS הוא קו תקשורת מרכזי אשר מכיל בתוכו הרבה חוטים אשר יכולים להתחבר לכל מיני דברים בדרך.
מה הוא כולל?
​ספרתיות הרצאה תקשורת - 2.png
נניח ומישהו רוצה להיות Master אז הוא מעלה את הרגל start שלו ואז, מסמן ב-address לאיזה מיקום הוא רוצה שהמידע יגיע(מי יהיה ה-Slave) ולבסוף, בערוץ operation וה-data שולח את המידע. לבסוף, נשלח ה-finish אשר מסמן את סוף התקשורת.

הגדרה 1 (פעולה)

העברת נתונים על ה-Bus כולל כל פעולות הבקרה הנדרשות נקרא Transaction ובעברית פעולה.

הגדרה 2 (Bus Master)

מי שיוזם את הפעולה יקרא Bus Master.
ייתכנו מספר מאסטרים אך רק אחד מהם הוא המסטר של ה-BusBusBus.

הגדרה 3 (Bus Slave)

מי שמגיב ל-master נקרא Bus Slave.

הגדרה 4 (Bus Cycle)

זמן הפעולה מתחילת הבקשה ע"י ה-master ועד סיום מילוי הבקשה נקרא Bus Cycle.
ייתכן וידרשו לכך מספר מחזורי שעון.

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

דוגמה (פעולת BusBusBus פשוטה)

​ספרתיות הרצאה תקשורת - 3.png
ה-MasterMasterMaster קובע מה תהיה הפעולה, כותב כתובת ו-startstartstart וממתין ל-slaveslaveslave.
ה-SlaveSlaveSlave ממתין ל-startstartstart, בודק כתובת, אם עבורו אז:

  • בודק מהי הפעולה
  • מבצע אותה
  • מסמן finishfinishfinish

הוא יכול לבקש גם יותר זמן.
ה-BusBusBus ממתין ל-startstartstart, מתחיל מונה ואם אין תגובה לאחר המניה, צועק :O

נסתכל כעת על תזמונים של BusBusBus:
​ספרתיות הרצאה תקשורת - 4.png
נשים לב כי יש מחזור "מבוזבז" באמצע. למה? שכן לוקח זמן למקבל לקבל את המידע עד סופו ולעבד אותו לכך שהוא יוכל לשלוח בחזרה את הודעת הקבלה.

זו הייתה תקשורת אחת בלבד. מה אם נרצה לשלוח מלא דברים? מה אז קורה? נוכל להעביר מספר חלקי מידע ולהגיד למקבל בדיוק באיזה כתובת נרצה לכתוב את המידע בתוך הרכיב המקבל. כך זה יראה:
​ספרתיות הרצאה תקשורת - 5.png

מה קורה אם כמה רכיבים מנסים להעלות start ולהיות ה-master באותו הזמן? נדרשת איזושהי מערכת שתהנהל את הזמנים.

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