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

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

נניח ומישהו רוצה להיות Master אז הוא מעלה את הרגל start שלו ואז, מסמן ב-address לאיזה מיקום הוא רוצה שהמידע יגיע(מי יהיה ה-Slave) ולבסוף, בערוץ operation וה-data שולח את המידע. לבסוף, נשלח ה-finish אשר מסמן את סוף התקשורת.
העברת נתונים על ה-Bus כולל כל פעולות הבקרה הנדרשות נקרא Transaction ובעברית פעולה.
מי שיוזם את הפעולה יקרא Bus Master.
ייתכנו מספר מאסטרים אך רק אחד מהם הוא המסטר של ה-.
מי שמגיב ל-master נקרא Bus Slave.
זמן הפעולה מתחילת הבקשה ע"י ה-master ועד סיום מילוי הבקשה נקרא Bus Cycle.
ייתכן וידרשו לכך מספר מחזורי שעון.
כפי שאנו יודעים, לפעמים יש איזשהם הפרעות לחוטים ויכולים להיווצר מה שנקרא צלצולים אשר הם הפרעות רגעיות למידע ברגע הגעתו.
לשם כך, אנו משתמשים בשעון מאוד איטי ובנוסף, אנו מחכים קצת עד שהצלצולים יסתיימו והאות יהיה יציב ורק אז דוגמים את הערך.

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

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

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