Serial Communication

Transcription

Serial Communication
‫תקשורת סריאלית‬
‫מגיש‪ :‬דביר דדון‬
‫מנחה‪ :‬ד"ר מרטין לנד‬
‫תקשורת סריאלית‬
‫• הגדרה‪ :‬תקשרות סריאלית‪ ,‬בין שני משתמשי קצה אשר המידע בינהם עובר באופן‬
‫טורי‪.‬‬
‫סריאלית = סדרתי‪/‬טורי‬
‫• בתקשורת סריאלית אנו מעבירים מידע באופן סדרתי‪ ,‬כלומר המידע עובר ביט אחר‬
‫ביט (כאשר רק סיבית אחת תעבור ברגע מסוים)‪.‬‬
‫• ההפך מתקשורת סיריאלית היא תקשורת מקבילית‪.‬‬
‫• בתקשורת מקבילית מספר סיביות יעברו בבת אחת ממחשב למחשב‪.‬‬
‫דוגמא לתקשורת סריאלית‬
‫לדוגמא‪ :‬מעוניינים להעביר מילה ‪ 10011101‬בתקשורת‬
‫סריאלית (טורית) בין שני מחשבים‪.‬‬
‫דוגמא לתקשורת מקבילית‬
‫לדוגמא‪ :‬מעוניינים להעביר מילה ‪ 10011101‬בתקשורת‬
‫מקבילית בין שני מחשבים‪.‬‬
‫תקשורת סריאלית‬
‫• תקשורת סריאלית‪ ,‬יתרונות‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫חסכוני יותר בכבלים (= חסכוני בכסף)‬
‫מאפשר העברת נתונים למרחקים גדולים יותר‬
‫העברה ביט באופן טורי יותר קלה לפיענוח בצד המקבל‪.‬‬
‫אם נעביר באופן אחר (למשל שימוש בשני קווי תקשורת) עלול להיווצר בעיה‬
‫בתקשורת עקב הגעה לא נכונה של הביטים שנשלחו (אין הבטחה שהמהירות בקו‬
‫אחד זהה למהירות בקו השני)‬
‫• תקשורת סריאלית‪ ,‬חסרונות‪:‬‬
‫• מאט את קצב העברת הנתונים‬
‫• דורש מעגלי המרה ממקבילי לטורי ולהפך‪.‬‬
‫תקשורת סריאלית‬
‫• תקשורת סריאלית מחולקת לשני סוגים‬
‫ תקשורת סריאלית סינכרונית‬‫‪ -‬תקשורת סריאלית אסיכרונית‬
‫• סינכרונית – יתואם מראש בין שני ההתקנים קצב העברת המידע על ידי שעון‪ ,‬כך כל‬
‫דגימה של הקו ידועה מראש‪.‬‬
‫• כיצד?‬
‫• נקבע מראש את קצב השעון‪ ,‬וכך בכל פעם שהשעון יראה "‪ "1‬לוגי אזי ההתקן‬
‫המקבל ידגום את קו התקשרות‪ .‬וכאשר השעון מראה "‪ "0‬לוגי אזי ההתקן המוסר‬
‫יעביר את המתח החשמלי בקו התקשורת‪.‬‬
‫תקשורת סריאלית‬
‫• אסינכרונית – אין צורך בשליחת סיגנל שעון למקבל ההודעה‪.‬‬
‫בין השולח והמקבל יסוכם מראש צורת העברת המידע‬
‫• השולח והמקבל נמנעים לשדר רצפים ארוכים של סיביות‪ ,‬זאת משום שאין סנכרון‬
‫מלא בין היחידה ששולחת נתונים לזו המקבלת‪.‬‬
‫במקרה זה‪ ,‬המידע המשודר מחולק למסגרות מידע ‪ )frames) ,‬בגודל של בית אחד‬
‫כאשר כל מסגרת כוללת סיבית ‪ Start‬וסיבית ‪Stop‬‬
‫• סיבית ‪ Start‬מסמנת את תחילת מסגרת חדשה‪ ,‬וסיבית ‪ Stop‬מסמנת את סיומה‪.‬‬
‫• מסגרות המידע אינן חייבות להיות משודרות במרווחי זמן שווים‪ ,‬מכוון שאינן תלויות‬
‫בשעון‪.‬‬
‫פרוטוקול ‪UART‬‬
‫• )‪Universal Asynchronous Receiver Transmitter (UART‬‬
‫הוא פרוטוקול תקשורת נפוץ לתקשורת טורית אסינכרונית‬
‫• הפרוטוקול מאפשר שליטה על מספר פרמטרים‪:‬‬
‫‪ .1‬קצב העברת הנתונים ‪,14400 ,9600 ,4800 ,2400 ,1200 ,300 ,50 -‬‬
‫‪ 57600 ,28800 ,19200‬ו‪ 115200‬סיביות לשנייה‪.‬‬
‫‪ .2‬כמות סיביות המידע בכל מסגרת ‪ 5,6,7 -‬או ‪ 8‬סיביות מידע בכל מסגרת‬
‫(כלומר בין סימבול ההתחלה לסימבול הסיום)‪.‬‬
‫‪ .3‬הוספת סיבית זוגיות ‪ -‬ניתן להוסיף לכל מסגרת סיבית אשר תקבע את‬
‫מצב הזוגיות של ביטי המידע במסגרת‬
‫‪ .4‬משך סימבול הסיום ‪ -‬ניתן לקבוע את משך הזמן של שידור סימבול הסיום‬
‫לאורך של ‪ 1.5 ,1‬או ‪ 2‬סיביות‪.‬‬
‫פרוטוקול ‪UART‬‬
‫• סט הפרמטרים הנפוץ ביותר הוא ‪ 8N1‬שמשמעותו '‪ '8‬סיביות מידע‪ - 'N' ,‬ללא‬
‫סיבית זוגיות‪ - '1' ,‬אורך סיבית הסיום היא (משך הזמן של) סיבית יחידה‪.‬‬
‫• המושג ‪BAUD RATE‬‬
‫• זהו קצב העברת הסיביות בקו‪.‬‬
‫כלומר‪ ,‬כמות הסיביות העובר בקו בשניה אחת‪.‬‬
‫• קצבים מקובלים‪:‬‬
‫‪110,150,300,600,1200,2400,4800,9600,14400,19200,28800,‬‬
‫‪33600,57600,115200…. BAUD.‬‬
‫פרוטוקול ‪UART‬‬
‫• קצב העברת הנתונים נטו ניתן לחישוב לפי פרמטרי המערכת‪ .‬למשל‪ ,‬סט‬
‫הפרמטרים ‪ 8N1 ,‬קצב הנתונים הוא ביחס של ‪ 8:10‬מקצב הסימבולים‪ ,‬עקב ‪2‬‬
‫סיביות תקורה אשר מתווספות לכל בית של מידע גולמי‪.‬‬
‫• ניתן לחשב את קצב הנתונים לפי הנוסחה הבאה‪:‬‬
‫• נגדיר‪ SB :‬אורך סימבול הסיום;‬
‫‪ P‬קיום סיבית זוגיות (‪ 0‬אם לא קיימת‪ 1 ,‬אם קיימת);‬
‫‪ D‬כמות סיביות המידע בכל מסגרת‪.‬‬
‫• קצב המידע נתון על ידי‪:‬‬
‫פרוטוקול ‪UART‬‬
‫• דוגמא‪:‬‬
‫• הסבר‪ :‬כדי להעביר מילה בקו טורי עלינו לשדר לפי סדר‪:‬‬
‫• א‪START BIT .‬‬
‫ב‪ .‬סיביות הנתון (בדרך כלל ‪ ,)8‬מתחילים עם ה‪LSB -‬‬
‫ג‪ STOP BIT .‬אחד או שניים‪.‬‬
‫פרוטוקול ‪UART‬‬
‫• דוגמא‪:‬‬
‫• כמה מילים לדקה נוכל להעביר בקו‪ ,‬אם קצב ההעברה הוא ‪ BAUD 2400‬מילת‬
‫הנתון היא בת ‪ 8‬סיביות וקיים ‪ STOP BIT‬אחד?‬
‫• ‪[2400 / (1+8+1)] * 60 = 14,400 bytes‬‬
‫‪RS-232‬‬
‫• פרוטוקול ‪ RS-232‬מאפיין תקשורת בינארית טורית ‪Single-Ended‬‬
‫(קו העברה בודד לכל כיוון תקשורת) המחבר בין שני מכשירים אלקטרוניים‬
‫)‪)Point to Point‬‬
‫• יציאות התקשורת הטורית של מחשבים אישיים רבים תומכים בפרוטוקול ‪RS-232‬‬
‫הפרוטוקול מגדיר את המאפיינים החשמליים והתזמון של האותות‪ ,‬המשמעות של כל‬
‫אות‪ ,‬וסידור הפינים והמחברים‪.‬‬
‫• פרטים על אופיין הביטים וקצב השידור נשלטים באמצעות החומרה‬
‫(כגון רכיבי ‪)UART‬‬
‫• מבנה של פרוטוקול ‪ RS-232‬מופיע באיור הבא‪:‬‬
‫‪RS-232‬‬
‫• ערכי המתחים בפרוטוקול זה נעים באזור ה‪ ±15V -‬עבור מידע )‪ (Data Bits‬ערך‬
‫מתח שלילי נותן ערך לוגי "‪ "1‬ואילו ערך מתח חיובי נותן ערך לוגי "‪ ."0‬עבור‬
‫שליטה )‪ (Control Bits‬ערך מתח חיובי נותן ערך לוגי "‪ "1‬וערך מתח שלילי נותן‬
‫ערך לוגי "‪."0‬‬
‫‪RS-232‬‬
‫• בגלל שהמתחים בפרוטוקול זה גבוהים ממתחי )‪ (TTL 0-5V‬שמיושמים במעגלים‬
‫חשמליים רבים‪ ,‬נדרש רכיב שממיר את רמות המתח של ‪ RS-232‬לרמות מתח ‪TTL‬‬
‫• פרוטוקול ‪ RS-232‬מיועד לשדר ולקלוט נתונים בקצבים של עד ‪ Kbps 20‬אך יש‬
‫יצרנים של מכשירים שמאפשרים לבצע את ההעברה בקצב גבוה יותר‪.‬‬
‫• פרוטוקול ‪ RS-232‬רגיש מאוד להפרשים בפין ההארקה בשני צידי הכבל‪ .‬יש ליצור‬
‫הארקה משותפת לפיני ההארקה על מנת לשמור על תקשורת אמינה‪.‬‬
‫• זו אחת הסיבות שפרוטוקול זה אינו מיועד לשימוש במרחקים גדולים‪.‬‬
‫‪SPI‬‬
‫• תקן )‪ SPI (Serial Peripheral Interface‬נועד לאפשר תקשורת טורית בין‬
‫מכשיר ‪ Master‬אחד למספר מכשירי ‪Slave‬‬
‫• התקן הזה לא מגדיר את המידע אלא את אופן ותזמון השידור והקליטה שלו‪.‬‬
‫• קצב השידור בפרוטוקול ‪ SPI‬הוא עד ‪ Mbps 1‬והמרחק המומלץ בין מכשירים הוא‬
‫‪ft.10‬‬
‫• התקן מבוסס על העברת מידע באמצעות ארבעה קווי תקשורת דו כיווניים‪:‬‬
‫‪SPI‬‬
‫• תהליך התקשורת המלא מתחיל בכך שרכיב ה‪ MASTER -‬מגדיר את קצב השעון‬
‫ואת מוד הפעולה שלו‪.‬‬
‫• קיימים ארבעה מודי פעולה של שעון‪:‬‬
‫‪SPI‬‬
‫• לאחר מכן ה‪ MASTER -‬מגדיר לאיזה ‪ SLAVE‬הוא עומד לבצע תקשורת באמצעות‬
‫שליחת "‪ "0‬בקו ה‪ CS -‬של ה‪ SLAVE -‬הרצוי‪.‬‬
‫• לאחר מכן‪ ,‬הוא שולח ביט התחלה בקו ה‪ MOSI -‬שאותו ה‪ SLAVE -‬קורא‪ .‬במקביל‪,‬‬
‫ה‪ SLAVE -‬שולח ביט אישור בקו ה ‪ MISO‬שאותו ה‪ MASTER -‬קורא‪.‬‬
‫‪SPI‬‬
‫• כאשר ה‪ MASTER -‬מסיים את שליחת המידע‪ ,‬הוא מפסיק את פעולת השעון‪ .‬פעולה‬
‫זו גורמת לביטול הבחירה של ה‪SLAVE -‬‬
‫רק ה‪ SLAVE -‬שנבחר באמצעות קו ה‪ CS -‬מתייחס לשעון ‪ CLK‬ולקו ה‪MOSI -‬‬
‫ורק הוא יכול לכתוב מידע בקו ה‪MISO -‬‬
‫שאר רכיבי ה‪ SLAVE -‬מתעלמים מהשעון ומה‪ MOSI -‬ואינם רשאים לכתוב לקו ה‪-‬‬
‫‪MISO‬‬
‫‪IIC/I2C‬‬
‫• תקן )‪ IIC (Inter-Integrated Circuit‬שנועד לאפשר תקשורת טורית בין‬
‫מכשיר ‪ Master‬אחד למספר מכשירי ‪Slave‬‬
‫• התקן הזה לא מגדיר את המידע אלא את אופן ותזמון השידור והקליטה שלו‪( .‬ביט‬
‫אחד בכל מחזור שעון ו‪ 8-‬ביטי מידע נוספים בין שני אישורים)‪.‬‬
‫• קיימים שלושה קצבי שידור‪:‬‬
‫‪Standard Mode – 100Kbps .1‬‬
‫‪Fast Mode – 400Kbps .2‬‬
‫‪High-Speed Mode – 3.4Mbps .3‬‬
‫• המרחק המומלץ בין מכשירים בפרוטוקול זה הוא עד ‪ft.10‬‬
‫• התקן מאפשר זיהוי התנגשויות )‪ )Collision Detection‬סנכרון שעון וביצוע ‪Hand-‬‬
‫‪Shake‬‬
‫‪IIC/I2C‬‬
‫• התקן מבוסס על העברת מידע באמצעות שני קווי תקשורת דו כיווניים‪:‬‬
‫‪SCL – Serial Clock Line o‬‬
‫‪SDA – Serial Data Line o‬‬
‫• בזמן התקשרות גם ה‪ Master -‬וגם ה‪ Slave -‬משמשים גם כמשדרים וגם כמקלטים‪.‬‬
‫מספר רכיבי ‪ Slave‬שניתן לחבר ל‪ Master -‬תלוי בסך הקיבול של הרכיבים‪.‬‬
‫רמות המתחים של פרוטוקול ‪ I2C‬הן רמות )‪)TTL 0-5V‬‬
‫• לפרוטוקול ‪ I2C‬יש ‪ 127‬כתובות‪.‬‬
‫• עקרונות הפעולה של פרוטוקול ‪ I2C‬הן ששינוי מידע בקו ‪ SDA‬אפשרי רק כאשר‬
‫קו ‪ SCL‬נמוך "‪ ."0‬כאשר קו ‪ SCL‬גבוה "‪ "1‬קו ה‪ SDA -‬חייב להיות יציב ולא‬
‫להשתנות‪.‬‬
‫• סיגנל ‪ START‬מתאפשר כאשר ‪ SDA‬עובר מ‪ "1"-‬ל‪ "0"-‬בזמן ש‪SCL -‬נמצא ב‪."1"-‬‬
‫סיגנל ‪ STOP‬מתאפשר כאשר ‪ SDA‬עובר מ‪ "0"-‬ל‪ "1"-‬בזמן ש‪ SCL -‬נמצא ב‪."1"-‬‬
‫‪IIC/I2C‬‬
‫• אורך מילה בקו ה‪ SDA -‬מוגדרת בגודל של ‪ 9‬ביט‪ 8 .‬עבור מידע וביט תשיעי עבור‬
‫אישור‪ .‬השעון של האישור מיוצר ע"י מכשיר ה‪MASTER -‬‬
‫• קיימים שלושה מצבים עבור אישור‪:‬‬
‫‪ o‬בזמן אישור מכשיר ה‪ MASTER -‬יוצר מתח‪-‬צף על קו ה‪ SDA -‬וה‪SLAVE -‬‬
‫יוצר "‪ "0‬על קו ה‪SDA-‬‬
‫‪ o‬כאשר ‪ SLAVE‬לא משדר אישור הוא יוצר מתח‪-‬צף בקו ה‪ SDA -‬ומשחרר‬
‫אותו לטובת ה‪MASTER-‬‬
‫‪ o‬כאשר ‪ SLAVE‬משדר אי אישור הוא יוצר מתח "‪ "1‬ומייד אחר כך יוצר‬
‫מתח‪-‬צף על קו ה‪ SDA -‬ומשחרר אותו לטובת ה‪MASTER-‬‬
‫• מכשיר ה‪ SLAVE -‬יכול לגרום ל‪ MASTER -‬להמתין באמצעות הורדת קו ה‪ SCL -‬ל‪-‬‬
‫"‪."0‬‬
‫• כאשר קיימים מספר מכשירי ‪ MASTER‬על אותו קו תקשורת ניתן לסנכרן את השעון‬
‫של כולם‪ SCL .‬יעבור למצב "‪ "1‬רק כאשר כל מכשירי ה‪ MASTER -‬יציגו בשעון‬
‫שלהם "‪."1‬‬
‫‪IIC/I2C‬‬
‫• תהליך התקשורת המלא מתחיל בכך שרכיב ה‪ MASTER -‬בודק אם קו התקשורת‬
‫פנוי‪ .‬במידה וכן‪ ,‬הוא מייצר ביט התחלה ‪ 7 +‬ביטי כתובת של ‪ SLAVE‬וביט תשיעי‬
‫של מוד כתיבה ("‪ )"0‬או קריאה ("‪.)"1‬‬
‫• לאחר מכן‪ ,‬מתקבל ביט ‪ ACK‬ע"י ה‪ SLAVE -‬וה‪ MASTER -‬ממשיך בשליחת המידע‬
‫(‪ 8‬ביטים)‪.‬‬
‫דוגמא ממערכות מובילאיי‬
‫• במובילאיי ה‪-‬צ'יפ של החברה (‪ )IQ4‬הוא ה‪ Master -‬והמצלמה היא ה‪Slave -‬‬
‫(קיימים עוד כמה רכיבים שקשורים למצלמה שהם ‪ Slaves‬נוספים‪ ,‬כגון‪ :‬אופרציות‬
‫אוגרים וה‪ process -‬על התמונה) התקשורת ביניהם עובדת לפי פרוטוקול ‪i2c‬‬
‫• בין ה‪-‬צ'יפ ליצרנית הרכב התקשורת כיום (בצ'יפ המתקדם של החברה = (‪))IQ4‬‬
‫הינה לפי פרוטוקול ‪SPI‬‬
‫• כאשר מספר המעבדים בצ'יפ הם ה‪ Slaves -‬ו ה‪ Master -‬הוא יצרן הרכב‪.‬‬
‫• בצ'יפים הישנים של מובילאיי ((‪ ))IQ1( ,)IQ2( ,)IQ3‬בהם יש מעבד אחד משתמשים‬
‫בפרוטוקול ‪UART‬‬
‫• מדוע?‬
‫• הצ'יפ יותר פרימיטיבי (= יותר איטי) ולכן אין צורך בפרוטוקולים חכמים ומתקדמים‬
‫כמו ‪ I2C‬ו‪SPI -‬‬
‫סוף!‬
‫תודה רבה על‬
‫ההקשבה!‬