8251 - ahdl-altera.narod.ru

‫‪USART‬‬
‫‪Universal Synchronous / Asynchronous Receiver / Transmitter‬‬
‫הקדמה‪ .‬מסמך זה מתאר את רכיבי התקשורת הטורית המקובלים במחשבי ‪8251, :PC‬‬
‫‪ 8050, 16450, 16550‬ועוד‪ .‬הרכיבים דומים ביסודם‪ .‬הדמיון ברור‪ :‬צריך להפעיל אותם‬
‫במחשבים דומים‪ ,‬עם אותן התוכנות פחות או יותר )חוץ מה‪ ,-8251‬שלמיטב ידיעתי אף‬
‫פעם לא הופעל בתוך מחשב ‪.(PC‬‬
‫חלק מתכונות הרכיב לא מופעלות אף פעם‪ .‬חלקן משום שלא נמצא שימוש בהן )כגון‬
‫האפשרות להפעיל את הרכיב בתקשורת סינכרונית( וחלקן בגלל תוכנות התקשורת‬
‫הנפוצות בשוק המחשבים‪ ,‬שכותביהן חיפשו את המכנה המשותף הרחב ביותר האפשרי‬
‫ודילגו על תכונות יוצאות דופן ברכיב כזה או אחר‪.‬‬
‫החלק הראשון עוסק ברכיב הפשוט והישן ‪ 1-8250‬הנמצא בתכנית הלימודים‪ ,‬חלקו‬
‫האחרון עוסק ברכיבים חדישים יותר שלא הגיעו עדיין אל תכנית הלימודים‪.‬‬
‫מבחינת חיבורו אל המעבד ‪ -‬יש לו קו בקרה הנקרא‬
‫’‪/ Data’) C/D‬‬
‫‪ .(Control‬יש‬
‫להבין קו זה כקו כתובת ‪ ,A0‬שמטרתו להבחין בין שתי כתובות פנימיות באוגרי הרכיב‪.‬‬
‫‪ 8251‬הוא רכיב פשוט יותר‪ ,‬מיושן יותר בגישתו אל צרכי המשתמש‪ .‬אחת הבעיות שלו‪:‬‬
‫תדר השעון הקובע את קצב השידור בא מבחוץ‪.‬‬
‫‪ 8250‬הוא רכיב דומה מאד‪ ,‬קצת יותר מתוחכם‪ ,‬המכיל כמה שיפורים‪:‬‬
‫השעון הוא פנימי‪ ,‬הרכיב יוצר לעצמו את תדר השעון‪ ,‬בעזרת גביש חיצוני‪.‬‬
‫•‪1‬‬
‫התווספו אוגרי שליטה במודם וסטטוס של המודם‪.‬‬
‫•‪2‬‬
‫התוספו אוגרי בקרת פסיקות‪.‬‬
‫•‪3‬‬
‫בהמשך יתוארו האוגרים של ‪ ,8251‬הפשוט יותר‪.‬‬
‫‪ .1‬האוגרים )‪: (8251‬‬
‫אוגר האופן )‪ .(Mode register‬הגישה אליו היא כאשר הקו‬
‫והרכיב במצב של כתיבה אליו‪ ,‬כמו באוגר הבקרה‪.‬‬
‫’‪C/D‬‬
‫במצב "‪,"1‬‬
‫המילה הראשונה שתיכתב אל כתובת זו אחרי פעולת‬
‫אוגר האופן‪ .‬אוגר זה מגדיר את אופן העבודה הדרוש‪.‬‬
‫אם צריך לשנות את מילת המצב תוך כדי עבודה‪ ,‬אפשר לבצע איתחול פנימי במקום‬
‫חיצוני‪ ,.‬ואחריו להגדיר את האופן ואת הבקרה מחדש‪ ,‬בסדר זה‪.‬‬
‫‪Reset‬‬
‫ברכיב ‪ -‬תיכתב אל‬
‫אוגר הבקרה )‪ .(Control‬הגישה אליו כאשר הקו‬
‫של כתיבה אליו‪.‬‬
‫המילה שתיכתב אל כתובת זו אחרי הכתיבה אל אוגר האופן תגיע אל אוגר‬
‫הבקרה‪ ,‬בין אם היא השניה או אחר‪-‬כך‪ .‬אוגר זה מכיל את הגדרות אופן העבודה‬
‫הדרושות‪.‬‬
‫’‪C/D‬‬
‫במצב "‪ ,"1‬והרכיב במצב‬
‫אוגר המצב )‪ C/D’ .(Status‬עדיין במצב "‪ ,"1‬אבל הרכיב במצב של קריאה ממנו‪.‬‬
‫במצב זה אפשר לקרוא את מילת המצב‪ ,‬ה"סטטוס"‪ ,‬המתארת את המצב בתוך‬
‫אוגרי המידע‪ .‬למשל‪ :‬האם שידור המילה האחרונה הסתיים? האם קליטת המילה‬
‫האחרונה הסתימה?‬
‫‪.‬‬
‫אוגר המידע ‪ -‬שידור‪ .‬הגישה אליו היא כאשר ’‪ C/D‬במצב "‪ "0‬והרכיב במצב‬
‫כתיבה אליו‪ .‬במצב זה מעבירים מילה )בד"כ בית( לשידור‪.‬‬
‫‪.‬‬
‫אוגר המידע ‪ -‬קליטה‪ .‬הגישה אליו היא כאשר הקו ’‪ C/D‬במצב "‪ "0‬והרכיב במצב‬
‫קריאה ממנו‪ .‬במצב זה המעבד קורא מתוך הרכיב את המילה שהתקבלה‪.‬‬
‫כדאי לציין שאוגרי המידע ב‪ -8250‬הם כפולים )‪ ,(Double Buffered‬כך שאם המחשב‬
‫עסוק בטיפול בהם או בקריאה מהם ‪ -‬הרכיב יכול‪ ,‬באותו הזמן‪ ,‬להמשיך לקלוט מידע‪.‬‬
‫כנ"ל גם לגבי שידור מידע‪ :‬הוא יכול להמשיך לשדר גם כאשר המעבד עסוק בהכנסת‬
‫מילה חדשה לשידור‪ .‬סידור זה מייעל את לוחות הזמנים של המעבד‪ ,‬כותב התוכנה יכול‬
‫להיות פחות לחוץ מבחינת לוח זמנים לקריאה ולכתיבה‪.‬‬
‫‪ - 16450‬רכיב דומה לקודם‪.8250 ,‬‬
‫‪ - 16550‬רכיב דומה חדש‪ ,‬גם מהיר יותר וגם מסוגל להחזיק בתוכו "תור" של ‪ 16‬מילים‬
‫מחכות לקריאה על ידי המעבד‪ .‬הפניות אל תכנית הפסיקה המשרתת את התקשורת‬
‫הטורית מרוחקות יותר זו מזו‪ .‬כל פניה כזו גורמת להעברת של ‪ 16‬בתים בבת אחת‪,‬‬
‫פנימה או החוצה‪.‬‬
‫‪ - 16650‬דומה‪ ,‬מכיל חוצץ של ‪ 32‬בתים‪.‬‬
‫‪ - 16750‬דומה‪ ,‬מכיל חוצץ של ‪ 64‬בתים‪ .‬בנוסף ‪ -‬התקשורת עם המודם שופרה‪ ,‬היא‬
‫אינה דורשת פעילות תוכנה‪.‬‬
‫מגמת ההתפתחות ברורה‪ ,‬לכל המתבונן במספרים‪.‬‬
‫למרות ההבדלים בכמות האוגרים בכל רכיב כזה‪ ,‬אין‪ ,‬כמעט‪ ,‬הבדל בתוכנות התקשורת‪.‬‬
‫למעשה‪ ,‬הכל מסודר בהתאם למכנה המשותף הנמוך ביותר‪ ,‬והתוכנות בד"כ לא‬
‫"מתעסקות" כמעט בשיפורים שהוכנסו‪.‬‬
‫‪ .2‬מילת האופן‬
‫מילה זו אפשר לכתוב ברכיב‪ ,‬רק בכתיבה הראשונה אחרי פעולת איתחול )‪ ,(reset‬אחרת‬
‫הכתובת "שייכת" לאוגר הבקרה‪.‬‬
‫פעולת איתחול כזו יכולה להיות חיצונית‪ ,‬על ידי חיבור ההדק מתאים‬
‫במחשב‪ ,‬או על ידי ביצוע איתחול פנימי דרך מילת הבקרה‪.‬‬
‫‪D‬‬
‫‪0‬‬
‫‪B‬‬
‫‪a‬‬
‫‪u‬‬
‫‪d‬‬
‫‪D‬‬
‫‪2‬‬
‫‪C‬‬
‫‪h‬‬
‫‪a‬‬
‫‪r‬‬
‫‪D‬‬
‫‪1‬‬
‫‪B‬‬
‫‪a‬‬
‫‪u‬‬
‫‪d‬‬
‫‪D‬‬
‫‪3‬‬
‫‪C‬‬
‫‪h‬‬
‫‪a‬‬
‫‪r‬‬
‫‪D‬‬
‫‪5‬‬
‫‪P‬‬
‫‪a‬‬
‫‪ri‬‬
‫‪t‬‬
‫‪y‬‬
‫‪D‬‬
‫‪4‬‬
‫‪P‬‬
‫‪a‬‬
‫‪ri‬‬
‫‪t‬‬
‫‪y‬‬
‫גורם הכפלת קצב התקשורת‬
‫‪Baud rate‬‬
‫סינכרוני‬
‫‪00‬‬
‫‪01‬‬
‫‪10‬‬
‫‪11‬‬
‫אסינכרוני‬
‫אסינכרוני‬
‫אסינכרוני‬
‫‪X1‬‬
‫‪X16‬‬
‫‪X64‬‬
‫אורך התו‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪Character‬‬
‫‪00‬‬
‫‪01‬‬
‫‪10‬‬
‫‪11‬‬
‫סיביות‬
‫סיביות‬
‫סיביות‬
‫סיביות‬
‫בקרת זוגיות‬
‫‪Parity‬‬
‫ללא זוגיות‬
‫זוגי‬
‫אי זוגי‬
‫‪X0‬‬
‫‪01‬‬
‫‪11‬‬
‫‪ , D6, D7‬אם הוגדר בסיביות ‪D0-1‬‬
‫כאסינכרוני‪:‬‬
‫בקרת המסגרת‬
‫‪Framing‬‬
‫לא תקין‬
‫אחת‬
‫סיבית ‪Stop‬‬
‫סיבית וחצי ‪stop‬‬
‫שתי סיביות ‪Stop‬‬
‫‪00‬‬
‫‪01‬‬
‫‪10‬‬
‫‪11‬‬
‫‪ , D6, D7‬אם הוגדר בסיביות ‪D0-1‬‬
‫כסינכרוני‪:‬‬
‫בקרת סינכרון‬
‫סינכרון פנימי‬
‫‪Syn‬‬
‫‪control‬‬
‫‪X0‬‬
‫‪D‬‬
‫‪6‬‬
‫‪F‬‬
‫‪r‬‬
‫‪a‬‬
‫‪m‬‬
‫‪e‬‬
‫‪D‬‬
‫‪7‬‬
‫‪S‬‬
‫‪y‬‬
‫‪n‬‬
‫ל‪-reset‬‬
‫חמרה‬
‫סינכרון חיצוני‬
‫תו סינכרון כפול‬
‫תו סינכרון אחד‬
‫‪X1‬‬
‫‪0X‬‬
‫‪1X‬‬
‫‪ .3‬מילת הבקרה‬
‫‪D‬‬
‫‪0‬‬
‫‪T‬‬
‫‪x‬‬
‫‪E‬‬
‫‪N‬‬
‫‪D‬‬
‫‪2‬‬
‫‪R‬‬
‫‪x‬‬
‫‪E‬‬
‫‪D‬‬
‫‪1‬‬
‫‪D‬‬
‫‪T‬‬
‫‪R‬‬
‫‪D‬‬
‫‪3‬‬
‫‪S‬‬
‫‪B‬‬
‫‪R‬‬
‫‪K‬‬
‫‪D‬‬
‫‪4‬‬
‫‪E‬‬
‫‪R‬‬
‫‪D‬‬
‫‪5‬‬
‫‪R‬‬
‫‪T‬‬
‫‪S‬‬
‫‪D‬‬
‫‪6‬‬
‫‪I‬‬
‫‪R‬‬
‫‪ - D0‬איפשור שידור‬
‫‪ - 1‬איפשור‬
‫‪ - 0‬ביטול‬
‫‪DTR - D1‬‬
‫"‪ "1‬יאלץ את הקו למצב "‪"0‬‬
‫‪ - D2‬איפשור קליטה‬
‫‪ - 1‬איפשור‬
‫‪ - 0‬ביטול‬
‫‪ - D3‬שדר "ביטול" ‪Send Break -‬‬
‫‪ - 1‬מאלץ את ‪ TxD‬ל‪.-0‬‬
‫‪ - 0‬שידור רגיל‬
‫‪ - D4‬איפוס כל הודעות השגיאה ‪Error Reset -‬‬
‫‪ - 1‬איפוס דגלי השגיאה‬
‫)‪OE, FE‬‬
‫‪(PE,‬‬
‫‪RTS - D5‬‬
‫‪ - 1‬מאלץ את הקו ל‪.-0‬‬
‫‪ - D6‬איתחול פנימי ‪Internal Reset -‬‬
‫‪ - 1‬מבצע איתחול כללי‪ ,‬כמו האיתחול החיצוני‪.‬‬
‫אחרי האיתחול אוגר הבקרה יעבור לקבלת "אופן" )‪(MODE‬‬
‫‪ - D7‬מתחיל מצב "חיפוש" ‪Enter Hunt mode -‬‬
‫‪ - 1‬נכנס למצב חיפוש מילת סינכרון‪ ,‬אם מוגדר‬
‫כתקשורת סינכרונית‬
‫‪D‬‬
‫‪7‬‬
‫‪E‬‬
‫‪H‬‬
‫‪ .4‬מילת המצב‬
‫‪D0‬‬
‫‪TxR‬‬
‫‪DY‬‬
‫‪D1‬‬
‫‪Rx‬‬
‫‪RD‬‬
‫‪Y‬‬
‫‪D‬‬
‫‪2‬‬
‫‪T‬‬
‫‪x‬‬
‫‪E‬‬
‫‪D‬‬
‫‪3‬‬
‫‪P‬‬
‫‪E‬‬
‫‪D‬‬
‫‪4‬‬
‫‪O‬‬
‫‪E‬‬
‫‪ - D0‬המילה שודרה ‪Tx Ready -‬‬
‫‪ - 1‬שודרה‬
‫‪ - 0‬לא שודרה עדיין‬
‫‪ - D1‬מילת המידע נקלטה ‪Rx Ready -‬‬
‫‪ - 1‬נקלטה‬
‫‪ - 0‬לא נקלטה עדיין‬
‫‪ - D2‬הקליטה מאופשרת ‪TxE -‬‬
‫‪ - 1‬מאופשרת‬
‫‪ - 0‬ביטול‬
‫‪ - D3‬שגיאת זוגיות ‪Parity Error -‬‬
‫‪ - 1‬יש שגיאה‬
‫‪ - D4‬שגיאת כפילות ‪Overrun Error -‬‬
‫‪ - 1‬מצב שגיאה‪ ,‬המילה האחרונה "עלתה" על‬
‫הקודמת‪ ,‬שלא נקראה בזמן‬
‫‪ - D5‬שגיאת מסגרת ‪Framing Error -‬‬
‫‪ - 1‬התגלתה תקלה בקליטת אותות "‪"Stop‬‬
‫‪ - D6‬התגלה אות סינכרון ‪SynDet -‬‬
‫‪ - 1‬התגלה סינכרון‪ ,‬אם פועל בתקשורת סינכרונית‬
‫‪ - D7‬מצביע על מצב ‪DSR‬‬
‫‪ - 1‬הכל מוכן לקליטת מילה חדשה‬
‫‪D‬‬
‫‪5‬‬
‫‪F‬‬
‫‪E‬‬
‫‪D6‬‬
‫‪SYN‬‬
‫‪DET‬‬
‫‪D7‬‬
‫‪DS‬‬
‫‪R‬‬
‫‪8250‬‬
‫כתובות האוגרים ברכיב‬
‫איננו כזה‪ :‬זה איננו הדק אלא‬
‫הקוים ‪ A0, A1, A2‬הם‪ ,‬כמובן‪ ,‬קוי כתובת‪DLAB .‬‬
‫סיבית בתוך אוגר אחר‪ ,‬האוגר הנקרא ‪ ) Line Control‬בקרת הקו (‪ .‬הסיבית ‪ D7‬באוגר‬
‫זה צריכה להכתב מראש כ‪ -0‬או כ‪ ,-1‬בכדי לאפשר לנו לגשת אל האוגרים האחרים‪.‬‬
‫אוגר זה עצמו נמצא בין האוגרים שסיבית זו בהם אינה חשובה‪ ,‬ולכן אפשר לכתוב אליו‬
‫תמיד‪.‬‬
‫האוגר‬
‫קריאה‪ :‬אוגר הקליטה‪.‬‬
‫כתיבה‪ :‬אוגר השידור‬
‫איפשור פסיקות‬
‫קריאה‪ :‬זיהוי פסיקות‬
‫בקרת הקו‬
‫בקרת המודם‬
‫מצב הקו‬
‫בקרת מצב המודם‬
‫לא בשימוש‬
‫‪A‬‬
‫‪0‬‬
‫‪0‬‬
‫‪A‬‬
‫‪1‬‬
‫‪0‬‬
‫‪A‬‬
‫‪2‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫מחלק התדר ‪ -‬הנמוך‬
‫‪0‬‬
‫מחלק התדר ‪ -‬הגבוה‬
‫‪1‬‬
‫‪DL‬‬
‫‪AB‬‬
‫‪0‬‬
‫‪0‬‬
‫‪x‬‬
‫‪x‬‬
‫‪x‬‬
‫‪x‬‬
‫‪x‬‬
‫‪x‬‬
‫‪1‬‬
‫‪1‬‬
‫‪ .5‬תכנית תקשורת לדוגמה‬
‫תכנית זו היא מינימלית‪ ,‬אינה בודקת מצבי שגיאה כלשהם‪ .‬כל מה שהיא עושה זה לאתחל‬
‫את הרכיב‪ ,‬לקלוט מילה בתקשורת טורית ולשדר אותה בחזרה אל השולח‪ ,‬בלולאה אין‪-‬‬
‫סופית‪ .‬התכנית נועדה לבדוק את רכיב התקשורת‪.‬‬
‫התכנית אינה מטפלת באוגר האופן ‪ -‬זה נעשה במקום אחר במחשב )במסגרת‬
‫האיתחולים שלו(‪.‬‬
‫כתובות הפורט הטורי במחשב‪ ,‬למי שמבקש להתנסות בכתיבת תכנית כזו‪:‬‬
‫‪COM1 = 03F8h, 03F9h‬ערוץ פסיקה = ‪IRQ 4‬‬
‫‪COM2 = 02F8h, 02F9h‬ערוץ פסיקה = ‪IRQ 3‬‬
‫ערוץ פסיקה = ‪IRQ 4‬‬
‫‪COM3 = 03E8h, 03E9h‬‬
‫ערוץ פסיקה = ‪IRQ 3‬‬
‫‪COM4 = 02E8h, 02E9h‬‬
‫מכיוון שהכתובות גבוהות‪ ,‬יש צורך להשתמש באוגר ‪DX‬‬
‫הקרובה‪.‬‬
‫בפניה אליהן‪ ,‬ולא כמו בדוגמה‬
reset
mode
equ 01000000b
equ 01001110b
;1stop, Parity odd, no parity, 8 bits, Baud X 16
command
equ 00000101b
;
‫איפשור שידור וקליטה‬
‫כתובת אוגר המידע‬
sr_data
equ 90h ;
‫כתובת אוגר קריאת המצב‬
sr_status
equ 91h ;
sr_cntrl
equ 91h ; ‫כתובת אוגר כתיבת פקודת הבקרה‬
code
segment
assume cs:code, ds:code, es:code, ss:code
;Inch = Input character into Al
inch:
in al, sr_status
ror al,1
ror al,1
jnc inch
; ‫בדוק אם סיים לקבל את המילה‬
in al,sr_data
; ‫קרא את המילה שהתקבלה‬
ret
;Outch = Output character from Al
outch:
push
ax
push
cx
outch2: in
al, sr_status
mov
cl, 3
ror
al,cl
jnc
outch2 ; ‫בדוק האם הסתיים שידור המילה הקודמת‬
pop
cx
pop
ax
out
sr_data, al ; ‫שדר את המילה‬
ret
;Main = Initialize the device, wait for a received word and send it back
main:
mov
dx, cs
mov
ds, dx
; DS ‫תיקון‬
mov
al, mode
out
sr_cntrl, al
; 8251 ‫איתחול‬
loop:
call
inch
call
outch
jmp
loop
code
ends
end
main
‫התפתחות היסטורית‬
‫מכיוון שמערכות ישנות יותר עדיין בשימוש‪ ,‬כדאי להקדיש זמן להתפתחות הרכיבים‪.‬‬
‫‪ - 8251‬נמצא בשימוש במערכות תקשורת רבות‪ ,‬לא במחשבי ‪.PC‬‬
‫‪ - 8250‬היה בשימוש במחשבי‬
‫‪XT‬‬
‫ישנים‪ ,‬הוחלף על ידי ‪ 16450‬בכדי להתגבר על‬
‫מהירות הגישה בפסי הנתונים של מחשב ‪.AT‬‬
‫‪ - 16450‬הוכנס לשימוש במחשבי ‪ ,AT‬בכדי להשיג שתי תוצאות‪ :‬מהירות גישה גבוהה‬
‫יותר מצד המעבד‪ ,‬קצב תקשורת מהיר יותר‪ .‬מסוגל להגיע עד ‪.38KBPS‬‬
‫‪ - 16550A‬מאפשר קצב תקשורת מהיר יותר‪ ,‬עד ‪ .115.2BPS‬השכלול שהתווסף בו הוא‬
‫הכנסת שני חוצצים‪ ,‬שרשרות אוגרים‪ 16 ,‬בתים כל אחת‪ ,‬עבור אוגר השידור ועבור אוגר‬
‫הקליטה‪ .‬אוגרים אלה הם אוגרי הזזה מסוג‬
‫‪FIFO‬‬
‫)ראשון נכנס ‪ -‬ראשון יוצא(‬
‫המאפשרים את האצת התקשורת באופן משמעותי‪.‬‬
‫תכונה נוספת שהתווספה ‪ -‬האפשרות להפעיל את הרכיב ב‪ ,-DMA‬בגישה ישירה‪ ,‬ובכך‬
‫לאפשר העברות מידע מהירות אל הרכיב וממנו‪ .‬תכונה זו אינה מנוצלת ברוב מערכות‬
‫המחשבים בגלל סיבוכיות המעגל‪ .‬מעט כרטיסי תקשורת מנצלים תכונה זו‪.‬‬
‫רכיב זה הוא הנפוץ ביותר היום‪ ,‬מבין כל הרכיבים במשפחה זו‪.‬‬
‫‪ - 16650‬הגדלת החוצצים ל‪-32‬‬
‫בתים‪.‬‬
‫‪ - 16750‬הגדלת החוצצים ל‪-64‬‬
‫בתים‪.‬‬
‫הוספת אוגרים )‪.(16650‬‬
‫‪.1‬‬
‫‪Buffer Register) RBR‬‬
‫‪ .(Receiver‬חוצץ הקליטה‪ ,‬קריאה בלבד‪.‬‬
‫זהו אוגר המידע‪ ,‬ממנו קוראים את המידע שהגיע בתקשורת‪ .‬אם החוצץ )‪ 16‬בתים(‬
‫מופעל ‪ -‬אוגר זה מכיל את המילה העליונה )הראשונה( שהגיעה‪ .‬בכל קריאה מאוגר זה‬
‫המילה תתחלף עם הבאה אחריה‪.‬‬
‫‪.2‬‬
‫‪Holding Register) THR‬‬
‫‪ .(Transmitter‬החזקת המילה המשודרת‪.‬‬
‫כתיבה בלבד‪.‬‬
‫זהו אוגר השידור‪ .‬אליו שולחים את המילה שברצוננו לשדר‪ .‬מבחינת כתובת הרכיב ‪ -‬הוא‬
‫באותה כתובת כמו אוגר הקליטה‪ ,‬אלא שהאחרון יהיה במצב קריאה כשניגשים אליו ואילו‬
‫אוגר השידור יהיה במצב כתיבה כשניגשים אליו‪.‬‬
‫אם הרכיב הוא אחד מהפשוטים )‪ (16450 ,8250‬יש בו אוגר שידור אחד‪ .‬אם הוא ‪- 16650‬‬
‫יש בו ‪ 16‬אוגרים בשרשרת‪ .‬אפשר לאגור בו עד ‪ 16‬בתים בבת אחת‪ ,‬ולשדר אותם אחד‬
‫אחד לפי התור‪.‬‬
‫‪.3‬‬
‫‪Enable Register) IER‬‬
‫‪ .(Interrupt‬אוגר איפשור הפסיקה‪ ,‬קריאה או‬
‫כתיבה‪.‬‬
‫הרכיב יכול לפעול עם פסיקות‪ ,‬כאשר הוא יודיע למעבד על ידי פסיקה על כל שינוי‬
‫שקורה בו‪ ,‬או יכול לפעול באופן של קלט‪-‬פלט רגיל‪ ,‬כאשר המעבד פונה אל הרכיב בכל‬
‫כמה מילי‪-‬שניות לבדוק אותו‪.‬‬
‫אם אוגר הפסיקה מאופס כולו ‪ -‬אין פסיקות‪ .‬כל סיבית באוגר שאוחסן בה "‪ = "1‬תפעיל‬
‫פסיקה בכל פעם שהאירוע המוזכר קורה‪ .‬טבלת תפקידי הסיביות וארועי הפסיקה‪:‬‬
‫הסיבית‬
‫הארוע‬
‫‪0‬‬
‫התקבלה מילת מידע‬
‫‪1‬‬
‫אוגר השידור ריק‪ ,‬הכל שודר‬
‫‪2‬‬
‫חל שינוי באוגר מצב הקו‬
‫‪3‬‬
‫חל שינוי באוגר מצב המודם המחובר‬
‫‪4‬‬
‫מצב "שינה" )רק ב‪(-16750‬‬
‫‪5‬‬
‫הרכיב במצב "הספק נמוך" )רק ב‪(-16750‬‬
‫‪6‬‬
‫שמור לשימוש עתידי‬
‫‪7‬‬
‫שמור לשימוש עתידי‬
‫‪.4‬‬
‫‪Identification register) I I R‬‬
‫‪ ,(Interrupt‬אוגר זיהוי הפסיקה‪ ,‬קריאה‬
‫בלבד‪.‬‬
‫מכיוון שהקו המבקש פסיקה הוא קו אחד‪ ,‬תכנית הפסיקה זקוקה למידע נוסף בכדי לדעת‬
‫איך להגיב על הפסיקה‪ .‬את המידע הנוסף היא מקבלת מאוגר זה‪ ,‬תפקידו להצביע על‬
‫הגורם לפסיקה בתוך הרכיב או על מצב הרכיב‪ ,‬בסיביות מסוימות‪.‬‬
‫הסיבית‬
‫הערך‬
‫הארוע‬
‫‪D0‬‬
‫‪0‬‬
‫פסיקה צפויה‬
‫מבוטל ע"י‬
‫‪1‬‬
‫‪D1,2,3‬‬
‫פסיקה לא צפויה‬
‫‪D1‬‬
‫‪D2‬‬
‫‪D3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫שינוי מצב מודם‬
‫קריאת ‪MSR‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫חוצץ השידור ריק‬
‫קריאת ‪ IIR‬או ‪THR‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫נקלטה מילת מידע‬
‫קריאת ‪RBR‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫מצב הקו השתנה‬
‫קריאת ‪LSR‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫זמן התו נפגע ) ‪(16550‬‬
‫קריאת ‪RBR‬‬
‫‪D4‬‬
‫‪0‬‬
‫שמור‬
‫‪D5‬‬
‫‪0‬‬
‫שמור )ברכיבים הישנים(‬
‫‪1‬‬
‫חוצץ ‪ 64‬סיביות מופעל )‪(16750‬‬
‫‪D6,7‬‬
‫‪FIFO‬‬
‫=‬
‫‪D6‬‬
‫‪D7‬‬
‫‪0‬‬
‫‪0‬‬
‫חוצץ ‪FIFO‬‬
‫אינו מופעל‬
‫‪0‬‬
‫‪1‬‬
‫חוצץ ‪FIFO‬‬
‫לא ניתן לשימוש‬
‫‪1‬‬
‫‪1‬‬
‫חוצץ ‪FIFO‬‬
‫מאופשר‬
‫‪First In First Out‬‬
‫= תיאור של סוג החוצץ‪ .‬פועל כאוגר הזזה‪ ,‬המילה‬
‫הראשונה שהוכנסה לתוכו היא הראשונה שתיקרא ממנו‪.‬‬
‫‪.5‬‬
‫‪Control Register) ,FCR‬‬
‫‪ ,(FIFO‬בקרת חוצץ המידע‬
‫אוגר זה נמצא בשימוש החל מהרכיב ‪.16550‬‬
‫הסיבית‬
‫הערך‬
‫הפעולה‬
‫‪D0‬‬
‫‪0‬‬
‫ביטול החוצץ‬
‫‪1‬‬
‫איפשור החוצץ‬
‫‪D1‬‬
‫‪1‬‬
‫לרוקן את חוצץ הקליטה‬
‫‪D2‬‬
‫‪1‬‬
‫לרוקן את חוצץ השידור‬
‫‪D3‬‬
‫‪0‬‬
‫בחר באופן ‪DMA‬‬
‫"‪"0‬‬
‫‪1‬‬
‫בחר באופן ‪DMA‬‬
‫"‪"1‬‬
‫‪D4‬‬
‫שמור‬
‫‪D5‬‬
‫‪1‬‬
‫‪D6,7‬‬
‫‪.6‬‬
‫אפשר חוצץ של ‪ 64‬סיביות )‪(16750‬‬
‫‪D6‬‬
‫‪D7‬‬
‫באיזה רמת קליטה תישלח פסיקה‬
‫‪0‬‬
‫‪0‬‬
‫כעבור בית אחד‬
‫‪1‬‬
‫‪0‬‬
‫כעבור ‪ 4‬בתים‬
‫‪0‬‬
‫‪1‬‬
‫כעבור ‪ 8‬בתים‬
‫‪1‬‬
‫‪1‬‬
‫כעבור ‪ 14‬בתים‬
‫‪Control Register ,LCR‬‬
‫‪ ,Line‬אוגר בקרת הקו‪.‬‬
‫אוגר זה דרוש בעיקר בזמן איתחול התקשורת‪ ,‬בדרך כלל אין ניגשים אליו במשך‬
‫ההתקשרות‪.‬‬
‫הסיבית‬
‫הערך‬
‫‪D0,1‬‬
‫‪D2‬‬
‫הפעולה‬
‫‪D0‬‬
‫‪D1‬‬
‫אורך המילה המשודרת‬
‫‪0‬‬
‫‪0‬‬
‫‪ 5‬סיביות‬
‫‪1‬‬
‫‪0‬‬
‫‪ 6‬סיביות‬
‫‪0‬‬
‫‪1‬‬
‫‪ 7‬סיביות‬
‫‪1‬‬
‫‪1‬‬
‫‪ 8‬סיביות‬
‫‪0‬‬
‫סיבית וחצי עצירה )‪ ,(Stop‬רק כשהמילה ‪ 5‬סיביות‬
‫‪1‬‬
‫‪ 2‬סיביות עצירה‪ ,‬עבור מילה של ‪ 6,7,8‬סיביות‬
‫‪D3,4,‬‬
‫‪D3‬‬
‫‪D4‬‬
‫‪D5‬‬
‫‪5‬‬
‫‪0‬‬
‫‪X‬‬
‫‪X‬‬
‫ללא זוגיות‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫סיבית הזוגיות אי זוגית‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫סיבית הזוגיות זוגית‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫סיבית הזוגיות "‪"1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫סיבית הזוגיות "‪"0‬‬
‫‪0‬‬
‫אין איפשור מצב עצירת שידור )‪(Break‬‬
‫‪1‬‬
‫איפשור מצב עצירת שידור )‪(Break‬‬
‫‪D6‬‬
‫‪D7‬‬
‫‪0‬‬
‫סיבית‬
‫‪1‬‬
‫‪ 8250‬למעלה(‬
‫‪DLAB‬‬
‫)ראה‬
‫יש גישה אל האוגרים ‪RBR, THR, IER‬‬
‫הכתובות שייכות לאוגרים‪DLM ,DLL :‬‬
‫‪.7‬‬
‫‪Register ,MCR‬‬
‫‪ ,Modem Control‬בקרת המודם‪ ,‬קריאה ‪ /‬כתיבה‪.‬‬
‫הסיבית‬
‫הפעולה‬
‫‪0‬‬
‫‪Data Terminal Ready‬‬
‫‪1‬‬
‫‪Request To Send‬‬
‫‪2‬‬
‫יציאת עזר ‪1‬‬
‫‪3‬‬
‫יציאת עזר ‪2‬‬
‫‪4‬‬
‫מצב בדיקה )‪(Loop-Back‬‬
‫‪5‬‬
‫בקרת זרימה אוטומטית )רק ‪)16750‬‬
‫‪6‬‬
‫שמור‬
‫‪7‬‬
‫שמור‬
‫יציאות העזר בדרך כלל לא נועדו לשימוש‪ .‬אפשר להשתמש בהן בכדי לבקר מעגלים‬
‫שונים בסביבת הרכיב‪.‬‬
‫‪.8‬‬
‫‪Status Register ,LSR‬‬
‫‪ ,Line‬מצב הקו‪ ,‬קריאה בלבד‪.‬‬
‫אוגר זה הוא המצביע העיקרי של מצבי שגיאה‪.‬‬
‫הסיבית‬
‫הפעולה‬
‫‪0‬‬
‫התקבלה מילת מידע‪ ,‬צריך לקרוא אותה‬
‫‪1‬‬
‫שגיאת חפיפה )‪ .(Overrun‬מילה חדשה "עלתה" על הקודמת‪ ,‬שלא נקראה‬
‫‪2‬‬
‫שגיאת זוגיות‬
‫‪3‬‬
‫שגיאת מסגרת‪ ,‬סיביות העצירה )‪bits‬‬
‫‪4‬‬
‫התקבל אות עצירה )‪(Break‬‬
‫‪5‬‬
‫אוגר השידור )‪ (THR‬ריק‪ ,‬אבל יש מידע שעוד לא יצא באוגר ההזזה‬
‫‪6‬‬
‫אוגר השידור ריק והקו פנוי )גם אוגר ההזזה ריק(‬
‫‪7‬‬
‫המידע בחוצץ הקליטה בעייתי )אולי שגוי(‬
‫‪ (Stop‬אינן תקינות‬
‫‪.9‬‬
‫‪Register ,MSR‬‬
‫‪ ,Modem Status‬מצב המודם )קריאה בלבד(‬
‫אוגר זה מצביע על מצב המודם‪ ,‬מראה את הקוים הנכנסים מהמודם‪ ,‬בעיקר קוים נכנסים‬
‫של ‪.RS-232‬‬
‫צריך לשים לב להבדל בין "מצב נוכחי" לבין "היה שינוי"‪ .‬הבדל זה נועד למנוע מצבי טעות‬
‫שעשויים לקרות כאשר בין גישה אחת אל הרכיב לבין גישה שניה‪ ,‬המעבד "לא ראה"‬
‫שהגיע אות קצר כלשהו‪.‬‬
‫הסיבית‬
‫הפעולה‬
‫‪0‬‬
‫היה שינוי בקו ‪CTS‬‬
‫‪1‬‬
‫היה שינוי בקו ‪DSR‬‬
‫‪2‬‬
‫היה שינוי בקו ‪Ring Indicator‬‬
‫‪3‬‬
‫היה שינוי בקו גילוי הנושא )‪(DCD‬‬
‫‪4‬‬
‫מצב נוכחי של ‪CTS‬‬
‫‪5‬‬
‫מצב נוכחי של ‪DSR‬‬
‫‪6‬‬
‫מצב נוכחי של ‪Ring Indicator‬‬
‫‪7‬‬
‫מצב נוכחי של הקו ‪DCD‬‬
‫‪.10‬‬
‫‪Register ,SCR‬‬
‫)צלצול(‬
‫)צלצול(‬
‫‪ ,Scratch‬אוגר טיוטה‪ ,‬קריאה ‪ /‬כתיבה‪.‬‬
‫זהו אוגר ריק‪ ,‬לא ברור מה תפקידו‪ .‬יש כותבי תוכנה שהשתמשו בו בכדי לזהות האם‬
‫הרכיב הוא מהישנים )‪8250B‬‬
‫מהחדשים )‪16450‬‬
‫‪.11‬‬
‫‪ (8250,‬שלא היה בהם אוגר כזה )במחשבי ‪ (XT‬או שהוא‬
‫‪ .(8250A,‬ככל שעובר הזמן גם יישום זה נראה מיותר‪.‬‬
‫‪ .DLM ,DLL‬אוגרי קצב השידור‬
‫‪Latch Least significant ,DLL‬‬
‫‪ ,Devisor‬מכיל את מילת החלוקה הנמוכה‪.‬‬
‫‪Latch Most significant ,DLM‬‬
‫‪ ,Devisor‬מכיל את מילת החלוקה הגבוהה‪.‬‬
‫הרכיב מכיל מתנד המסוגל לעבוד בתדר של‬
‫‪MHz1.8432‬‬
‫גביש מדויק חיצוני המתחבר אל הרכיב‪ .‬תדר זה מחולק‬
‫)בערך(‪ .‬התדר נקבע על ידי‬
‫ב‪-16‬‬
‫בכדי ליצור את בסיס הזמן‬
‫של הרכיב‪ .‬בכדי לקבוע את תדר העבודה הרצוי המדויק יש צורך לחלק אותו חלוקה‬
‫נוספת‪ .‬מילת החלוקה הנוספת )‪ 16‬סיביות( מאוחסנת בשני האוגרים האמורים‪ .‬להלן‬
‫הטבלה המראה את התדר המתקבל כתוצאה מזוגות מספרים מתאימים‪:‬‬
‫המהירות )‪(bps‬‬
‫המחלק )עשרוני(‬
‫)‪DLL (hex‬‬
‫)‪DLM (hex‬‬
‫‪50‬‬
‫‪2304‬‬
‫‪0‬‬
‫‪9‬‬
‫‪300‬‬
‫‪384‬‬
‫‪80‬‬
‫‪1‬‬
‫‪1200‬‬
‫‪96‬‬
‫‪0 60‬‬
‫‪2400‬‬
‫‪48‬‬
‫‪30‬‬
‫‪0‬‬
‫‪4800‬‬
‫‪24‬‬
‫‪18‬‬
‫‪0‬‬
‫‪9600‬‬
‫‪12‬‬
‫‪0c‬‬
‫‪0‬‬
‫‪19200‬‬
‫‪6‬‬
‫‪6‬‬
‫‪0‬‬
‫‪38400‬‬
‫‪3‬‬
‫‪3‬‬
‫‪0‬‬
‫‪57600‬‬
‫‪2‬‬
‫‪2‬‬
‫‪0‬‬
‫‪115200‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫עקרונית‪ ,‬הרכיב ‪ 16550‬מסוגל לעבוד גם בתדרים גבוהים יותר‪ ,‬עד ‪ .24MHz‬פעולה כזו‬
‫נדירה‪ ,‬משום שהתוכנה שתיכתב לצורך זה לא תהיה תואמת למערכות ישנות יותר‪.‬‬
‫‪ : a6850-ALTERA‬מתאם ממשק תקשורות אסינכרוני‬
‫תכונות‪:‬‬
‫‪ .1‬ה‪ ,a6850 -‬הוא פונקציה המיישמת מתאם ממשק תקשורת אסינכרוני‪.‬‬
‫‪ .2‬מתאים לארכיטקטורות של ‪ FLEX‬ו‪.MAX-‬‬
‫‪ .3‬אורך מילה ניתן לתכנות ‪ ,stop bit‬ושוויון ‪.parity‬‬
‫‪ .4‬מציע מצב עבודה המחולק לפי ‪ 16 , 1‬או ‪.64‬‬
‫‪ .5‬כולל זיהוי שגיאות‪.‬‬
‫‪ .6‬משתמש ב‪ 237-‬אלמנטים לוגיים של ‪.flex‬‬
‫‪ .7‬מתבסס מבחינה פונקציונלית על ‪ mc6850‬של "מוטורולה"‪.‬‬
‫תיאור כללי‪:‬‬
‫ה‪ a6850-‬מיישם פונקצית מתאם ממשקי תקשורת אסינכרונית‪ ,‬שהוא למעשה‬
‫מקמ"ש אוניברסלי אסינכרוני‪ .‬ה‪ a6850-‬מספק ממשק בין מעבד וערוצי‬
‫תקשורת טוריים‪ .‬הוא קולט ומשדר נתונים בכמה קונפיגורציות‪ ,‬כולל מילים של‬
‫‪ 7‬או ‪ 8‬ביטים‪ ,‬עם שוויון זוגי ואי זוגי או היעדר שוויון )‪ , (parity‬ו‪ 1 -‬או ‪stop 2‬‬
‫ביט‪.‬‬
‫תרשים ‪:1‬‬
‫הפורטים של ‪:a6850‬‬
‫תיאור‬
‫מוכן לשליחה‪ ,‬שם של אות‬
‫המודם‪.‬כניסת ה‪ ncts-‬מונעת את‬
‫עליית הביט המציין רגיסטר נקי‬
‫מנתונים)‪(tdre‬‬
‫זיהוי קו נתונים‪ ,‬מעבר מנמוך‬
‫לגבוה‪ ,‬נוצר אות פסק למעבד‪.‬‬
‫בורר רגיסטר‪ .‬כניסה זו בוחרת‬
‫את הרגיסטר בהתבסס על ‪.rnw‬‬
‫אם ‪ rnw‬גבוה) מסמן פעולת‬
‫קריאה(‪ ,‬אז ‪rn =1‬בוחר את‬
‫רגיסטר קולט הנתונים‪.‬‬
‫‪ rs=0‬בוחר את רגיסטר סטטוס‪.‬‬
‫אולם אם ‪ rnw‬נמוך )פעולת‬
‫כתיבה( אז ‪ rs=1‬בוחר רגיסטר‬
‫משדר נתונים ו‪ rs=0 -‬בוחר‬
‫רגיסטר בקרה‪.‬‬
‫קוטביות‬
‫סוג‬
‫שם‬
‫נמוכה‬
‫כניסה‬
‫‪nCTS‬‬
‫נמוכה‬
‫כניסה‬
‫‪nDCD‬‬
‫כניסה‬
‫‪RS‬‬
‫המשך ‪RS‬‬
‫תיאור‬
‫קוטביות‬
‫סוג‬
‫שם‬
‫בקרת רגיסטר כתיבה‪/‬קריאה‪.‬‬
‫כאשר ‪ RnW‬גבוה המעבד קורא‬
‫את הרגיסטרים וכאשר ‪RnW‬‬
‫נמוך המעבד כותב לרגיסטרים‪.‬‬
‫אפשור לממשק המעבד‪ .‬כאשר "‪e‬‬
‫" גבוה‪ ,‬המעבד יכול לגשת‬
‫לרגיסטרים‪.‬‬
‫איפוס אסינכרוני לרגיסטרים‬
‫ולוגיקת הבקרה‪.‬‬
‫נמוכה‬
‫כניסה‬
‫‪RnW‬‬
‫גבוהה‬
‫כניסה‬
‫‪E‬‬
‫נמוכה‬
‫כניסה‬
‫‪nRESET‬‬
‫קליטת שעון‪ .‬רגיסטר קליטת‬
‫השעון דוגם ‪ rxdata‬בהתבסס על‬
‫‪ rxclk‬ואת מצב הביטים במונה‬
‫החלוקה )‪ (cds‬ברגיסטר הבקרה‪.‬‬
‫קולט נתונים‪ .‬כניסת נתונים‬
‫טורית מהמודם או הפריפריה‪.‬‬
‫שעון שידור‪ .‬הנתונים עולים עם‬
‫‪ txdata‬עם ירידת ‪.txclk‬‬
‫שבב בחירה מהמעבד‪ .‬השבב חייב‬
‫להיות במצב ‪ 110‬כדי שה‪a8650 -‬‬
‫ייבחר‪.‬‬
‫כניסת נתונים מקבילה מהמעבד‬
‫או מהתקן בקרה אחר‪.‬‬
‫בקשת פסק למעבד‪.‬‬
‫בקשה לשליחה‪ .‬ביטים ‪ 5‬ו‪6-‬‬
‫)ביטים בקרת משדר‪ 9‬של רגיסטר‬
‫הבקרה דורכים את ביט ה‪.nrst-‬‬
‫אות ה‪ nrst-‬עולה כאשר ביט ‪6‬‬
‫נמוך או ביט ‪ 5‬ו‪ 6-‬שניהם גבוהים‪.‬‬
‫נתוני שידור‪ .‬יציאה טורית למודם‬
‫או לפריפריה‪.‬‬
‫יציאת נתונים מקבילה למעבד או‬
‫להתקן בקרה אחר‪.‬‬
‫נמוכה‬
‫נמוכה‬
‫כניסה‬
‫‪RXCLK‬‬
‫נמוכה‬
‫‪RXDATA‬‬
‫כניסה‬
‫‪TXCLK‬‬
‫כניסה‬
‫‪CS‬‬
‫כניסה‬
‫‪DI‬‬
‫יציאה‬
‫יציאה‬
‫‪nIRQ‬‬
‫‪nRTS‬‬
‫יציאה‬
‫‪TXDATA‬‬
‫יציאה‬
‫]‪D[0..7‬‬
‫רגיסטרים‪:‬‬
‫רגיסטר שידור נתונים ‪:‬‬
‫אל ה‪ TDR -‬כותב המעבד או התקני בקרה אחרים‪ .‬ברגע שהביטים הקיימים‬
‫של הנתונים ברגיסטר היסט היציאה משודרים במלואם‪ ,‬ה‪ ,TDR -‬מעביר‬
‫נתונים חדשים לתוך רגיסטר ההיסט של היציאה‪.‬‬
‫רגיסטר קולט נתונים‪:‬‬
‫אל ה‪ RDR-‬כותב רגיסטר ההיסט שבכניסה‪ .‬ברגע שהנתונים ב‪ RDR -‬נקראים‪,‬‬
‫רגיסטר ההיסט של היציאה מעביר נתונים חדשים ל‪ .RDR -‬אם בוחרים‬
‫בנתונים של ‪ 7‬ביטים‪ ,‬ביט ‪ 7‬מוצב על לוגי נמוך‪.‬‬
‫רגיסטר הבקרה‪:‬‬
‫הרגיסטר הזה מכיל את הביטים של הבקרה ‪.‬‬
‫בורר חלוקת המונה‪ -‬ביט ‪:0‬‬
‫ביטים ‪ 0‬ו‪ 1 -‬של רגיסטר הבקרה הם הביטים של ה‪ ,CDS -‬שקובעים את היחס‬
‫שבין קצב הנתונים והשעונים‪ .‬היחסים בזמן שידור וקליטה זהים‪ .‬הביטים של‬
‫ה‪ CDS -‬יכולים לשמש גם לאיפוס ה‪ m6850-‬למצב ידוע‪.‬‬
‫הביטים של בורר חלוקת המונה )‪:(cds‬‬
‫פונקציה‬
‫‪CDS0‬‬
‫‪0‬‬
‫‪CDS1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫מצב של חלוקה ב‪ .16-‬קצב‬
‫השעון הוא פי ‪ 16‬גדול מקצב‬
‫הנתונים‪ .‬עם זיהוי ביט ה‪start -‬‬
‫)‪ rxdata‬נמוך(‪ ,‬אות ה‪rxdata -‬‬
‫נידגם עם העלייה ה‪ 9-‬של ה‪-‬‬
‫‪ ,rxclk‬לאחר הכתיבה לרגיסטר‬
‫שידור הנתונים‪ ,‬אות ה‪txdata -‬‬
‫עולה עם הירידה הראשונה של‬
‫אות ה‪ txclk-‬וכל ‪ 16‬מתקפי‬
‫שעון לאחר מכן‪.‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫מצב של חלוקה ב‪ .64 -‬קצב‬
‫השעון גדול פי‪ 64 -‬מקצב‬
‫הנתונים‪ .‬לאחר זיהוי ביט ה‪-‬‬
‫‪ ,start‬אות ה‪ rxdata-‬מודגם‬
‫בעלייה ה‪ 33-‬של ה‪ .rxclk-‬לאחר‬
‫הכתיבה לרגיסטר משדר‬
‫הנתונים‪ ,‬אות ה‪ txdata-‬עולה‬
‫עם הירידה הראשונה של ‪txclk‬‬
‫ועם כל מיתקף ‪ 64‬של השעון‬
‫לאחר מכן‪.‬‬
‫איפוס מסטר‪ .‬כאשר בוחרים‬
‫במצב זה‪ ,‬ה‪ m6850-‬מתאפס‬
‫למצב ידוע‪ ,‬רגיסטר הסטטוס‬
‫מתנקה‪ ,‬ופעולת השידור‬
‫והקליטה נעצרות ומאותחלות‪.‬‬
‫מצב של חלוקה ב‪ .1-‬קצב‬
‫הנתונים והשעון זהים‪ .‬לוגי‬
‫חיצוני אחראי לסינכרון של‬
‫‪ rxdata‬לפי ‪ .rxclk‬אות ה‪-‬‬
‫‪ rxdata‬נידגם עם הופעת ה‪-‬‬
‫‪ ,rxclk‬ואות ה‪ , txdata-‬עולה‬
‫עם ירידת ה‪.txclk -‬‬
‫בחירת מילה )‪:(ws‬‬
‫ביטים ‪ 3,2‬ו‪ 4-‬של רגיסטר הבקרה הם הביטים של ה‪ ,ws-‬הקובעים את אורך‬
‫המילה‪ ,parity ,‬ואת מ"ס הביטים של ה‪ ) .stop-‬ראה טבלה הבאה(‪.‬‬
‫זוגי‪/‬אי‪-‬זוגי‬
‫זוגי‬
‫אי‪-‬זוגי‬
‫זוגי‬
‫אי‪-‬זוגי‬
‫‪X‬‬
‫‪X‬‬
‫זוגי‬
‫אי‪-‬זוגי‬
‫‪Stop bit‬‬
‫‪2‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫בחירת מילה )‪(ws‬‬
‫אורך מילה‬
‫‪Ws0‬‬
‫‪0‬‬
‫‪7‬‬
‫‪1‬‬
‫‪7‬‬
‫‪0‬‬
‫‪7‬‬
‫‪1‬‬
‫‪7‬‬
‫‪0‬‬
‫‪8‬‬
‫‪1‬‬
‫‪8‬‬
‫‪0‬‬
‫‪8‬‬
‫‪1‬‬
‫‪8‬‬
‫‪Ws1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪Ws2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫בקרת משדר‪:‬‬
‫ביטים ‪ 5‬ו‪ 6-‬של רגיסטר הבקרה הם הביטים של ‪.tc‬‬
‫ביטים אלה אחראים ל‪:‬‬
‫‪ .1‬אפשור או מניעה של הפסק שניגרם ע"י מצב של )‪, (tdre‬רגיסטר שליחת‬
‫נתונים ריק‪.‬‬
‫‪ .2‬בקרה על אות בקשה לשליחה )‪.(nrst‬‬
‫‪ .3‬שליחת סימן ‪ break‬על יציאת ה‪.txdata -‬‬
‫אפשור קליטת פסק‪:‬‬
‫ביט ‪ 7‬של רגיסטר הבקרה הוא ביט ה‪ .rie -‬כאשר ביט זה גבוה‪ ,‬ה‪ ,mdcd ,rdrf -‬וה‪-‬‬
‫את יציאת ה‪ .nirq-‬כאשר‬
‫‪ ovr‬ייעלו‬
‫ביט ה‪ rie -‬נמוך‪ ,‬לא מתאפשרת יצירת אות ה‪nirq -‬‬
‫רגיסטר סטטוס‪:‬‬
‫הרגיסטר הזה מכיל את הביטים הבאים של הסטטוס‪:‬‬
‫ביט ‪ :0‬רגיסטר קליטת נתונים מלא )‪.(rdrf‬‬
‫ביט ‪ :1‬רגיסטר שליחת נתונים ריק )‪.(tdre‬‬
‫ביט ‪ :2‬זיהוי קו נתונים )‪.(ndcd‬‬
‫ביט ‪ :3‬מוכן לשליחה )‪.(ncts‬‬
‫ביט ‪ :4‬שגיאת מסגרת )‪.(fe‬‬
‫ביט ‪ :5‬הדבקה בקליטה )‪.(our‬‬
‫ביט ‪ :6‬שגיאת ‪.(pe) Parity‬‬
‫)המשך רגיסטר סטטוס(‬
‫ביט ‪ :7‬בקשת פסק )‪.(irq‬‬
‫רגיסטר קליטת נתונים מלא‪:‬‬
‫ביט ‪ 0‬של רגיסטר הסטטוס הוא ביט ה‪ .rdrf -‬כאשר הוא גבוה‪ ,‬הביט מציין‬
‫שהנתונים שנקלטו הועברו לתוך רגיסטר קליטת הנתונים והוא מוכן להיקרא‬
‫ע"י המעבד‪ .‬אם פסק הקליטה מאופשר‪ ,‬אז עולה אות ה‪ .nirq -‬ביט ה‪rdrf -‬‬
‫מתנקה כאשר האות של ‪ nreset‬עולה‪ ,‬כאשר המעבד קורא את רגיסטר קליטת‬
‫הנתונים‪ ,‬או כאשר רגיסטר הבקרה נידרך למצב איפוס מסטר) כללי(‪.‬‬
‫רגיסטר שליחת נתונים ריק‪:‬‬
‫ביט ‪ 1‬של רגיסטר הסטטוס הוא ביט ה‪ ,tdre-‬כאשר הוא גבוה‪ ,‬הביט מציין‬
‫שהנתונים הועברו מרגיסטר שליחת הנתונים לרגיסטר ההיסט שביציאה‪.‬‬
‫בנקודה זו‪ ,‬ה‪ a6850-‬מוכן לקלוט מילת נתונים חדשה‪ .‬אולם‪ ,‬אם אות ה‪ncts -‬‬
‫גבוה‪ ,‬ביט ה‪ tdre -‬נותר נמוך ללא קשר למצבו של רגיסטר שליחת הנתונים‪.‬‬
‫כמוכן‪ ,‬אם מאפשרים פסק שידור‪ ,‬יציאת ה‪ nirq -‬עולה‪ .‬ביט ה‪ tdre-‬יורד כאשר‬
‫אות ה‪ nreset -‬עולה‪ ,‬המעבד כותב לתוך רגיסטר שליחת הנתונים‪ ,‬או שרגיסטר‬
‫הבקרה נידרך למצב של איפוס מסטר)כללי(‪.‬‬
‫זיהוי קו נתונים‪:‬‬
‫ביט ‪ 2‬של רגיסטר הסטטוס הוא ביט ה‪ ,ndcd-‬המשקף את מצביה של כניסת ה‪-‬‬
‫‪.ndcd‬‬
‫כאשר כניסת ה‪ ndcd -‬משדרת מנמוך לגבוה‪ ,‬ביט הסטטוס נידרך ללוגי גבוה‪.‬‬
‫אם פסק הקליטה מאופשר‪ ,‬נוצר נמוך ביציאת ה‪ .nirq-‬ברגע שדורכים את ביט‬
‫ה‪ ,ndcd -‬הוא נותר גבוה ללא קשר למצבה של כניסת ה‪ ndcd-‬עד שמתקיים‬
‫אחד התנאים הבאים‪:‬‬
‫‪ .1‬רגיסטר הסטטוס ניקרא אחרי שקראו את רגיסטר קליטת הנתונים‪.‬‬
‫‪ .2‬אות ה‪ nreset-‬עולה‪.‬‬
‫‪ .3‬רגיסטר הבקרה נידרך למצב של איפוס כללי‪.‬‬
‫מוכן לשליחה‪:Clear to send :‬‬
‫ביט ‪ 3‬של רגיסטר הסטטוס הוא ביט ה‪ ,ncts-‬המשקף את מצבה של כניסת ה‪-‬‬
‫‪ .ncts‬כניסת ה‪ nreset -‬דורכת את ביט ה‪ ncts -‬ללוגי גבוה עד להופעתה‪txclk -‬‬
‫‪.‬‬
‫שגיאת מסגרת‪:‬‬
‫ביט ‪ 4‬של רגיסטר הסטטוס הוא ביט ‪ .fe‬ה‪ fe-‬עולה כאשר אות שניקלט לא‬
‫מסתיים בביט סטופ נכון‪ ,‬דבר שנגרם בדרך‪-‬כלל ע"י שגיאה בשידור‪ .‬ה‪ fe -‬נידרך‬
‫כאשר האות הנקלט מועבר לרגיסטר קליטת הנתונים‪ ,‬ונותר דרוך עד שאות‬
‫נוספת נכתבת לרגיסטר נתונים הנקלטים‪.‬‬
‫ביט ה‪ fe-‬ביט ה‪ fe-‬יורד כאשר עולה אות ה‪ ,nreset-‬נכתב סימן לרגיסטר קליטת‬
‫הנתונים ושאין לו שגיאת ‪ ,fe‬או שרגיסטר הבקרה נידרך למצב איפוס כללי‪.‬‬
‫הדבקה בקולט )‪:(overrun‬‬
‫ביט ‪ 5‬של רגיסטר הסטטוס הוא ה‪ ,ovr-‬המציין מצב של הדבקה במקלט‪ ,‬כלומר‪,‬‬
‫מילת נתונים‬
‫אחת או יותר כתבו שוב ברגיסטר ההיסט בכניסה‪ .‬מצב זה קורה בנקודה‬
‫האמצעית של הביט שניקלט אחרון ברגיסטר ההיסט בכניסה‪ ,‬כאשר המילה‬
‫הקודמת )ב‪ (rdr-‬עדיין לא נקראה ע"י המעבד‪ .‬אולם‪ ,‬ביט ה‪ ovr -‬לא עולה באופן‬
‫מיידי כאשר מתרחשת הדבקה‪ ,‬רק נידרך כאשר המילה המתאימה ב‪rdr -‬‬
‫נקראת‪ ,‬לכן‪ ,‬כאשר יש מצב הדבקה אלה הם הנתונים שברגיסטר ההיסט‬
‫שכותבים עליהם‪ ,‬ולא הנתונים שב‪ .rdr-‬הביט יורד כאשר עולה אות ה‪, nreset -‬‬
‫הנתונים שנקלטים ברגיסטר קליטת הנתונים נקראים ‪ ,‬או שרגיסטר הבקרה‬
‫נידרך למצב של איפוס כללי‪.‬‬
‫שגיאת שוויון‪:‬‬
‫ביט ‪ 6‬ברגיסטר הסטטוס הוא ה‪ .pe -‬כאשר הוא גבוה‪ ,‬הוא מציין שביט השוויון‬
‫שנקלט לא מתאים לשוויון שחושב בזמן תהליך הקליטה‪ .‬ביט ה‪ pe-‬נידרך כאשר‬
‫הנתונים נכתבים לתוך רגיסטר קליטת הנתונים‪ .‬אם בוחרים בהיעדר שוויון‪ ,‬ה‪-‬‬
‫‪ pe‬לא תופיע‪.‬‬
‫ביט ה‪ pe-‬יורד כאשר אות ה‪ nreset -‬עולה‪ ,‬הנתונים נקראים מרגיסטר קליטת‬
‫הנתונים‪ ,‬או שרגיסטר הבקרה נידרך למצב של איפוס כללי‪.‬‬
‫בקשת פסק )‪:(interrupt‬‬
‫ביט ‪ 7‬של רגיסטר הסטטוס הוא ה‪ ,irq-‬ההפך הלוגי של יציאת ה‪.nirq-‬‬
‫פעולות‪:‬‬
‫פעולת ממשק אפיק‪:‬‬
‫המעבד ניגש ל‪ a6850 -‬דרך ממשק אפיק‪ ,‬המספק קשר ישיר לרגיסטרים של‬
‫הקליטה‪ ,‬שידור‪ ,‬סטטוס ובקרה‪.‬‬
‫ממשקי המעבד עם ה‪ a6850-‬פועלים כאשר כניסת ה‪ cs-‬נדרכת ללוגי ‪,110‬‬
‫וכניסת ה‪ rnw-‬נדרכת ללוגי נמוך בכתיבה‪ ,‬או לוגי גבוה בקריאה‪ .‬כניסת ה‪rs-‬‬
‫בוחרת אז את פעולת הרגיסטר המתאימה‪ .‬כאשר ‪ ,rnw ,cs‬ו‪ rs-‬נדרכים מתחילה‬
‫הגישה כאשר כניסת ה‪ e-‬מעבירה מנמוך לגבוה‪ .‬כניסת ה‪ e-‬חייבת להיות גבוהה‬
‫למשך מחזור ‪ txclk‬אחד לפחות במחזור קריאה‪ ,‬הנתונים זמינים דרך יציאת‬
‫אפיק הנתונים )‪ (do‬עם הופעת כניסת ה‪ .e-‬במחזור כתיבה‪ ,‬הנתונים נכתבים עם‬
‫הירידה של כניסת ה‪.e-‬‬
‫פעולת המקלט‪:‬‬
‫הוא מציין שניקלט ביט השוויון‪ ),‬בכניסת ה‪.(rxdata-‬‬
‫זיהוי ביט ה‪:start-‬‬
‫ה‪ a6850-‬מתחיל לקלוט נתונים כאשר מזהים ביט ‪.start‬‬
‫ביט ‪ start‬הוא לוגי נמוך בכניסת ה‪ ,rxdata-‬והוא נידגם עם כל עלייה של אות‬
‫ה‪.rxclk-‬‬
‫ברגע שה‪ a6850-‬מזהה לוגי נמוך‪ ,‬הוא מתחיל לספור את דגימות הלוגי נמוך‬
‫בהתאם למצב החלוקה שנקבע )‪16 ,1‬או ‪.(64‬‬
‫דגימת ביטים של נתונים‪:‬‬
‫לאחר זיהוי לוגי נמוך ‪ ,‬ה‪ a6850-‬דוגם ומסיט את הנתונים לתוך כניסת רגיסטר‬
‫ההיסט‪ .‬דגימת ביטים מתרחשת עם כל עלייה במצב החלוקה ב‪ ,1-‬כל ‪ 16‬עליות‬
‫במצב ‪ ,16‬וכל ‪ 64‬עליות במצב ‪ .64‬בכל פעם שהביט נידגם ‪ ,‬מחושב השוויון‬
‫לצורך זיהוי שגיאות‪.‬‬
‫זיהוי ביטים של ‪ stop‬ו‪:parity -‬‬
‫ה‪ a6850 -‬סופר את מ"ס הביטים בנתונים כשהם זזים‪ .‬כאשר מ"ס הביטים‬
‫שניקלט מתאים למ"ס המפורט ברגיסטר הבקרה‪ ,‬ה‪ a6850-‬מצפה לקבל ביט‬
‫שוויון או ‪.stop‬‬
‫אם מאפשרים שוויון‪ ,‬ה‪ a6850-‬דוגם אחר ביט ה‪ ,parity-‬המעובד לאחר מכן‪,‬‬
‫אולם אם לא מאפשרים שוויון‪ ,‬ה‪ a6850-‬דוגם אחר ביט סטופ )כלומר לוגי‬
‫גבוה(‪ .‬אם דוגמים לוגי גבוה‪ ,‬נידרך ביט ה‪ fe-‬ברגיסטר הסטטוס‪ .‬ה‪ a6850-‬קולט‬
‫עם ביט אחד או שניים של סטופ‪ .‬אם קובעים ביט אחד ברגיסטר הבקרה‪ ,‬ה‪-‬‬
‫‪ a6850‬מצפה לביט סטופ אחד לפני התחלת תהליך הסנכרון‪ .‬באופן דומה‪ ,‬אם‬
‫קובעים שני ביטים של סטופ‪ ,‬התהליך יתחיל לאחר שזוהו שני ביטים של סטופ‪.‬‬
‫זיהוי שגיאות‪:‬‬
‫שגיאות יכולות להופיע כאשר קולטים‪ :‬מסגור‪ ,‬הדבקה ושוויון‪.‬‬
‫העברה לרגיסטר קליטת נתונים‪:‬‬
‫ברגע שקולטים את ביט הסטופ האחרון או שמזהים שגיאות מסגרת‪ ,‬הנתונים‬
‫בכניסה לרגיסטר ההיסט מועברים לרגיסטר קליטת נתונים‪ .‬בנקודה זו‪ ,‬כל‬
‫הביטים של הסטטוס הקשורים למילת נתונים זו נדרכים ‪ ,‬כולל ביט ה‪ .rdrf-‬אם‬
‫מאפשרים קליטת פסק ‪ ,‬נוצר פסק ב‪ .nirq -‬תהליך הקליטה מסתיים כאשר‬
‫המעבד קורא נתונים מרגיסטר קליטת הנתונים‪.‬‬
‫פעולת השידור‪:‬‬
‫רגיסטר שליחת נתונים כתיבה‪/‬קריאה‪:‬‬
‫פעולת שידור מתחילה כאשר המעבד כותב נתונים לרגיסטר שליחת הנתונים‪,‬‬
‫בפעולת הכתיבה הראשונית‪ .‬אם יציאת רגיסטר ההיסט ריקה‪ ,‬הנתונים‬
‫מועברים מיד ופעולת ההיסט מתחילה‪ .‬אולם‪ ,‬אם פעולת ההיסט מתרחשת‪,‬‬
‫הנתונים נעצרים ברגיסטר שליחת הנתונים עד שפעולת ההיסט המתרחשת‬
‫מסתיימת‪.‬‬
‫כאשר הנתונים נמצאים ברגיסטר שליחת הנתונים ‪ ,‬אות ה‪ tdre -‬יורד‪ .‬ברגע‬
‫שהנתונים הועברו לרגיסטר ההיסט‪ ,‬ביט הסטטוס של ‪ tdre‬נידרך‪ .‬בנקודה זו‪,‬‬
‫פסק השידור מתאפשר‪ ,‬ופסק ב‪ nirq-‬נוצר‪.‬‬
‫ביט תחילת שידור‪:‬‬
‫לאחר שהנתונים מועברים לרגיסטר ההיסט‪ ,‬ביט ‪ ) start‬לוגי נמוך( מוצב‬
‫ביציאת ה‪ . txdata -‬עם ירידת אות ה‪ . txclk-‬ביט ה‪ start-‬נשאר פעיל עבור‬
‫מ"ס מחזורי השעון שנקבעו ע"י מצב החלוקה ב‪ ,16 ,1 -‬או ‪.64‬‬
‫שליחת נתונים‪:‬‬
‫לאחר ביט ה‪ ,start-‬הנתונים מוסטים החוצה מהרגיסטר אחד אחרי השני‪ ,‬מהכי‬
‫פחות משמעותי להכי משמעותי‪ .‬מחזור הזמן עבור כל ביט מתחיל בתחילת‬
‫מחזור השעון הקבוע‪ 1,16) ,‬או ‪ .(64‬מ"ס הביטים המוסטים החוצה מקביל למ"ס‬
‫הביטים שנקבעו ברגיסטר הבקרה‪.‬‬
‫שליחת ביט שוויון ‪:parity‬‬
‫אם מאפשרים שוויון‪ ,‬הביט שבא לאחר ביט הנתונים האחרון הוא ביט השוויון‪.‬‬
‫יש לו ערך המאלץ את הנתונים כך שיהיה להם השוויון הנכון‪ .‬לדוגמא‪ ,‬אם‬
‫קובעים שהשוויון יהיה אי‪-‬זוגי ברגיסטר הבקרה‪ ,‬אז ביט השוויון מבטיח שיהיה‬
‫מ"ס אי‪-‬זוגי של אחדים ולהפך‪.‬‬
‫שליחת ביט ‪:stop‬‬
‫לאחר שליחת ביט השוויון ‪ ,‬או את ביט הנתונים האחרון אם לא מאפשרים‬
‫שוויון‪ ,‬משודרים ‪ 1‬או ‪ 2‬ביטים של סטופ ליציאת ה‪ .txdata-‬היציאה נשארת אז‬
‫גבוהה עד תחילת שידוריה של מילת הנתונים הבאה‪.‬‬
‫פעולת פסק‪:‬‬
‫יציאת ה‪ nirq -‬נועדה להוות פסק למעבד‪ ,‬היציאה מוציאה כמה מצבים כולל‬
‫שידור וקליטה‪.‬‬
‫פעולת השידור משדרת פסק בתנאים הבאים‪:‬‬
‫‪ .1‬מאפשרים שידור פסק‬
‫‪ .2‬דגל ה‪ tdre -‬נידרך‪.‬‬
‫‪ .3‬אות ה‪ ncts -‬נמוך‪.‬‬
‫פעולת הקליטה יוצרת פסק כאשר התנאים הבאים קיימים‪:‬‬
‫‪ .1‬מאפשרים קליטת פסקי קליטה‪ ) .‬אות הבקרה ‪ rie‬גבוה(‪.‬‬
‫‪ .2‬כל אחד מהאותות הבאים נידרך ‪.rdrf ,ovr ,ndcd :‬‬
‫פעולת איפוס‪:‬‬
‫ה‪ a6850 -‬מתאפס באחת מהדרכים הבאות‪:‬‬
‫‪ .1‬הפיכת כניסת ה‪ nreset -‬לנמוך‪.‬‬
‫‪ .2‬כתיבת ‪ 1‬לוגי בכל הביטים של ה‪ cds -‬של רגיסטר הבקרה‪.‬‬
‫כניסת ה‪ nreset -‬משמשת כניקוי סינכרוני לכל הרגיסטרים הפנימיים‪ .‬הכנסת ה‪-‬‬
‫‪ a6850‬לאיפוס כללי תנקה באופן סינכרוני את כל הרגיסטרים‪ ,‬אולם‪ ,‬איפוס‬
‫כללי פועל רק אם שני השעונים פועלים‪.‬‬
‫‪ :A8255‬ממשק מתאם פריפרלי הניתן לתכנות‪:‬‬
‫תכונות‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫‪ a8255‬מיישם פונקצית תאום ממשק פריפרלית ברת‪-‬תכנות‪.‬‬
‫מותאם לארכיטקטורות ‪ FLEX‬ן‪.MAX -‬‬
‫‪ 24‬כניסות יציאות הניתנות לתכנות‪.‬‬
‫מצבים סטטיים של קריאה‪/‬כתיבה או של לחיצת‪-‬יד‪.‬‬
‫יכולת ישירה של איפוס‪/‬דריכה שח ביט‪.‬‬
‫עיצוב סינכרוני‪.‬‬
‫משתמש בערך ב‪ 194 -‬אלמנטים של ‪ flex‬לוגי‪.‬‬
‫מתבסס מבחינה פונקציונלית על האינטל ‪ a8255‬והאריס ‪,82c55a‬‬
‫פרט למצוין בהערות‪.‬‬
‫תיאור כללי‪:‬‬
‫פונקצית ה‪ a8255 -‬מיישמת מתאם ממשק פריפרלי הניתן לתכנות‪.‬ל‪ a8255 -‬יש ‪24‬‬
‫אותות קלט‪/‬פלט שניתן לתכנתם בשתי קבוצות של ‪ .12‬פונקציה זו מתפקדת‬
‫בשלושת המצבים הבאים‪:‬‬
‫מצב ‪ :0‬קלט‪/‬פלט בסיסי‪ -‬פורט ‪ , A‬פורט ‪ B‬ופורט ‪) , C‬עליון ותחתון( ניתנים‬
‫לקונפיגורציה בלתי תלויה ככניסות או כיציאות כדי לקרוא או לשמור נתונים‬
‫סטטיים‪ .‬היציאות רשומות‪ ,‬הכניסות לא‪.‬‬
‫מצב ‪ :1‬קלט‪/‬פלט במעקב‪ -‬פורטים ‪ B , A‬ו‪ C -‬ניתנים לקונפיגורציה בלתי תלויה‬
‫בכניסה במעקב או ערוצי יציאה‪ .‬אותות מפורט ‪ C‬נחשבים לאותות בקרה להחלפת‬
‫נתונים‪.‬‬
‫מצב ‪ :2‬ערוץ דו‪-‬כיווני‪ :‬ניתן לקנפג את פורט ‪ A‬כערוץ דו‪-‬כיווני כאשר הרוב של‬
‫פורט ‪ C‬מספק את אותות הבקרה‪ .‬בקונפיגורציה כזו‪ ,‬פורט ‪ B‬עדיין יכול להפעיל‬
‫את מצב ‪ 0‬או מצב ‪.1‬‬
‫פורטים של ‪a8255:‬‬
‫תיאור‬
‫סוג‬
‫שם‬
‫נמוכה‬
‫כניסה‬
‫כניסה‬
‫‪clk‬‬
‫‪ncs‬‬
‫נמוכה‬
‫כניסה‬
‫‪nrd‬‬
‫קוטביות‬
‫שעון‬
‫שבב בחירה‪ ,‬כאשר ‪ ncs‬עולה ה‪-‬‬
‫‪ a8255‬נבחר ומתאפשרות‬
‫פעולות של כתיבה וקריאה‬
‫לרגיסטרים הפנמיים‪.‬‬
‫בקרת קריאה‪,‬כאשר ה‪ nrd-‬עולה‬
‫וה‪ 8255-‬ניבחר‪ ,‬פעולות קריאה‬
‫מהרגיסטרים הפנמיים‬
‫מתאפשרות‪.‬‬
‫בקרת כתיבה‪).‬כנ"ל(‬
‫איפוס‪ .‬מאתחל את הרגיסטרים‬
‫של הבקרה ושל פורט ‪ ,c‬ודורך את‬
‫פורטים ‪ a‬ו‪ b -‬ו‪ c-‬למצב כניסה‪.‬‬
‫ערוץ הכתובת של הרגיסטר‪.‬‬
‫ערוץ)אפיק( זה בוחר את אחד‬
‫מהרגיסטרים הפנמיים‪.‬‬
‫אפיק כניסת נתונים‪ ,‬המעבד כותב‬
‫נתונים לרגיסטר הבקרה הפנימית‪,‬‬
‫לפורט ‪ b ,a‬או ‪ c‬דרך ערוץ ]‪[7..0‬‬
‫‪.din‬‬
‫ערוץ כניסת נתונים פורט ‪.a‬‬
‫ערוץ כניסת נתונים פורט ‪.b‬‬
‫ערוץ כניסת נתונים פורט ‪.c‬‬
‫מאפשר נתונים פורט ‪ .a‬אפשור‬
‫יציאה עבור אפיק נתונים פורט ‪.a‬‬
‫מאפשר נתונים פורט ‪ .b‬אפשור‬
‫יציאה עבור אפיק נתונים פורט ‪.b‬‬
‫אפיק יציאת נתונים‪ .‬המעבד‬
‫המרכזי קורא נתונים מהבקרה‬
‫הפנימית ‪,‬מפורט ‪ ,b , a‬או ‪ ,c‬דרך‬
‫‪.dout‬‬
‫אפיק נתונים פורט ‪.a‬‬
‫אפיק נתונים פורט ‪.b‬‬
‫אפיק אפשור נתונים פורט ‪.c‬‬
‫אפשור יציאה עבור כל ביט של‬
‫אפיק הנתונים של פורט ‪,c‬‬
‫ביציאה‪.‬‬
‫אפיק יציאת נתונים פורט ‪.c‬‬
‫נמוכה‬
‫גבוהה‬
‫כניסה‬
‫כניסה‬
‫‪rwr‬‬
‫‪reset‬‬
‫גבוהה‬
‫כניסה‬
‫]‪a[1..0‬‬
‫גבוהה‬
‫כניסה‬
‫]‪din[7..0‬‬
‫גבוהה‬
‫גבוהה‬
‫גבוהה‬
‫גבוהה‬
‫כניסה‬
‫כניסה‬
‫כניסה‬
‫יציאה‬
‫]‪pain[7..0‬‬
‫]‪pbin[7..0‬‬
‫]‪pcin[7..0‬‬
‫‪paen‬‬
‫גבוהה‬
‫יציאה‬
‫‪pben‬‬
‫גבוהה‬
‫יציאה‬
‫]‪dout[7..0‬‬
‫גבוהה‬
‫גבוהה‬
‫גבוהה‬
‫יציאה‬
‫יציאה‬
‫יציאה‬
‫‪paout‬‬
‫‪pbout‬‬
‫‪pcen‬‬
‫גבוהה‬
‫יציאה‬
‫‪pcout‬‬
‫מפת כתובות הרגיסטר‪:‬‬
‫רגיסטר‬
‫פורט ‪) a‬כל המצבים(‪.‬‬
‫פורט ‪) b‬כל המצבים(‪.‬‬
‫פורט ‪) c‬מצב ‪ ,(0‬וסטטוס )מצב ‪1‬‬
‫ו‪.(2 -‬‬
‫רגיסטר בקרה ופורט ‪.c‬‬
‫‪a0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫רגיסטרים‪:‬‬
‫קטע זה מתאר את הרגיסטרים הבאים של ה‪.a8255 -‬‬
‫‪a1‬‬
‫‪ .1‬בקרה‪.‬‬
‫‪ .2‬פורטים ‪ b ,a‬ו‪.c -‬‬
‫רגיסטר בקרה‪:‬‬
‫רגיסטר זה דורך את המצב והכוון של האות עבור שלושת הפורטים של ‪ 8‬ביטים‬
‫‪ ) I/O‬קלט‪/‬פלט( מחולקת לשתי קבוצות‪ .‬קבוצה ‪ A‬מורכבת מפורט ‪ A‬ו‪4 -‬‬
‫הביטים העליונים של פורט ‪ .C‬קבוצה ‪ B‬מורכבת מפורט ‪ B‬ו‪ 4-‬הביטים‬
‫התחתונים של פורט ‪ .C‬את קבוצה ‪ A‬ניתן להציב על מצב ‪ 1 ,0‬או ‪ ,2‬אך את‬
‫קבוצה ‪ B‬אפשר להציב על מצב ‪ 0‬או ‪.1‬‬
‫כתיבה לתוך כתובת רגיסטר הבקרה עם ביט ‪ ,7‬היא הגדרת פורמט המצב‪,‬‬
‫המאפשרת בקרה על המצב והכוון של שלושת הפורטים של ה‪ .I/O -‬כתיבה‬
‫לכתובת רגיסטר הבקרה עם ביט איפוס היא פורמט ‪ .C‬המעבד המרכזי קורא‬
‫את רגיסטר הבקרה בעזרת פורמט הגדרת המצב‪.‬‬
‫רגיסטרים של פורט ‪ b ,a‬ו‪:c -‬‬
‫בתלות הכיוונים המקונפגים של הכניסה והיציאה הנדרכים ברגיסטר הבקרה‪,‬‬
‫המעבד כותב או קורא נתונים אל ומאת הרגיסטרים של פורט ‪ .c,b,a‬לפורטים ‪a‬‬
‫ו‪ b-‬יש רגיסטרים נפרדים שלכניסה ויציאה‪ .‬במצב ‪ ,0‬הרגיסטר של פורט ‪c‬‬
‫מתפקד כמו אלה של פורטים ‪ a‬ו‪ .b-‬במצבים ‪ 1‬ו‪ ,2-‬לרגיסטר של פורט ‪ c‬יש‬
‫תפקיד מיוחד‪ .‬לכתיבה לפורט ‪ c‬אין שום השפעה‪ -‬חייבים לשנות את הביטים‬
‫של הרגיסטר באופן אינדיווידואלי בעזרת הפורמט של ביט הדריכה‪/‬איפוס של‬
‫פורט ‪ .c‬קריאת מצבם של הביטים בפורט ‪ c‬במצבים ‪ 1‬או ‪ 2‬מספקת ל‪ cpu -‬את‬
‫מצב של אותות הבקרה והדגלים ‪ ,‬אולם המצבים וכיווני הפורטים יכולים‬
‫להתערבב ביותר קומבינציות ‪.‬‬
‫פעולה‪ :‬ה‪ a8255-‬פועל בשלושת המצבים הבאים‪:‬‬
‫‪ .1‬מצב ‪ -0‬כניסה‪/‬יציאה בסיסי‪.‬‬
‫‪ .2‬מצב ‪ -1‬כניסה‪/‬יציאה במעקב‪.‬‬
‫‪ .3‬מצב ‪ -2‬אפיק דו‪-‬כיווני במעקב‪.‬‬
‫מצב ‪ -0‬כניסה‪/‬יציאה בסיסי‪:‬‬
‫מצב ‪ 0‬משמש לבצע קריאות פשוטות או כתיבות של אותות סטטיים יחסית‪,‬‬
‫כמו מתגים או תצוגות מצב‪.‬ניתן לבצע קונפיגורציה )"לקנפג"( לפורטים ‪ b ,a‬ו‪-‬‬
‫‪ c‬תחתון כיציאות או ככניסות מבלי לדרוש איתות של לחיצת‪-‬יד‪ .‬נתונים‬
‫שנכתבו ע"י ה‪ cpu-‬לפורט שקונפג ביציאה נרשמים; נתונים שנקראו ע"י ה‪cpu-‬‬
‫מפורט שקונפג בכניסה לא נרשמים‪.‬‬
‫מצב ‪ -1‬כניסה‪/‬יציאה במעקב‪:‬‬
‫מצב זה משמש כדי לבצע קריאות וכתיבות של נתונים המבוקרים ע"י אותות‬
‫לחיצת‪-‬יד‪ .‬פורטים ‪ a‬ו‪ b-‬הם הפורטים של הנתונים‪ ,‬מקונפגים באופן בלתי תלוי‬
‫ככניסות או כיציאות‪ .‬פורט ‪ c‬מספק את ‪ 3‬איתותי לחיצת היד עבור כל אחד‬
‫מהפורטים של הנתונים‪ .‬נתוני הכניסה והיציאה נרשמים‪.‬‬
‫טבלה זו מראה כיצד איתותי לחיצת היד מקונפגים עבור כניסה במצב ‪:1‬‬
‫קונפיגורציה של איתותי לחיצת‪ -‬יד‪:‬‬
‫שם‬
‫סוג האיתות‬
‫תיאור‬
‫‪nstb‬‬
‫כניסה‬
‫‪ibf‬‬
‫יציאה‬
‫‪intr‬‬
‫יציאה‬
‫‪inte‬‬
‫ביט בקרה פנימית‬
‫במעקב‪ .‬מאופשר לרגיסטר‬
‫כניסה‪.‬‬
‫דגל המציין זיכרון מלא‪.‬‬
‫כשנידרך‪ ,‬הוא מציין שהנתונים‬
‫הועמסו לכניסת הרגיסטר‪ .‬נידרך‬
‫ע"י כך שה ‪ nstb‬יורד‪ ,‬ומתאפס‬
‫ע"י האות המופיע של כניסת ה‪-‬‬
‫‪.nrd‬‬
‫בקשת הפרעה‪ .‬משמשת כאות‬
‫הפרעה למעבד‪ .‬עולה עם הופעת‬
‫ה‪ nstb -‬כאשר ה‪ inte -‬גבוה‪.‬‬
‫מתאפס ע"י הירידה של ה‪.nrd-‬‬
‫מאפשר הפרעה‪ .‬נידרך ע"י ביט‬
‫דריכה ל‪ pc-4 -‬עבור פורט ‪ a‬ו‪-‬‬
‫‪pc2‬עבור פורט ‪.b‬‬
‫טבלה זו מראה כיצד אותות לחיצת היד מקונפגים עבור יציאה‪ ,‬מצב ‪:1‬‬
‫שם‬
‫סוג איתות‬
‫תיאור‬
‫‪nobf‬‬
‫יציאה‬
‫‪nack‬‬
‫כניסה‬
‫‪intr‬‬
‫יציאה‬
‫‪inte‬‬
‫ביט בקרה פנימי‬
‫דגל זיכרון מלא ביציאה‪ .‬מציין‬
‫שנתונים נכתבו לפורט‪ .‬יורד עם‬
‫הופעת ה‪ ,nwr -‬ושב לגבוה כאשר‬
‫מופיע אות ה‪.nack -‬‬
‫אישור‪ ,‬מציין שהפריפריה מוכנה‬
‫לאחסן את נתוני היציאה‪.‬‬
‫בקשת הפרעה‪ .‬משמשת כאות‬
‫הפרעה למעבד‪ ,‬המציין שההתקן‬
‫הפריפרלי אחסן את‬
‫הנתונים‪),‬נעילה(‪ .‬מתאפס עם‬
‫ירידת ה‪ ;nwr -‬נידרך עם הופעת‬
‫‪ nack‬וכאשר ‪ inte‬גבוה‪.‬‬
‫מאפשר הפרעה )פסק(‪ .‬נידרך ע"י‬
‫ה‪ pc-6 -‬עבור פורט ‪ a‬ו‪pc-2-‬‬
‫עבור פורט ‪.b‬‬
‫מצב ‪ -2‬אפיק דו‪-‬כיווני במעקב‪:‬‬
‫מצב ‪ 2‬משמש לבצע קריאות וכתיבות של נתונים על האפיק הדו‪-‬כיווני המבוקר‬
‫ע"י אותות לחיצת‪-‬יד‪ .‬פורט ‪ a‬הוא פורט הנתונים היחידי המסוגל לפעול במצב ‪2‬‬
‫‪ ,‬בזמן שפורט ‪ c‬מספק את ‪ 5‬אותות הבקרה עבור פורט נתונים זה‪ .‬נתוני‬
‫הכניסה והיציאה נרשמים‪.‬‬
‫קונפיגורציית אפיק דו‪-‬כיווני‪:‬‬
‫שם‬
‫סוג האיתות‬
‫תיאור‬
‫‪nstb‬‬
‫‪nack‬‬
‫כניסה‬
‫כניסה‬
‫‪ibf‬‬
‫יציאה‬
‫‪nobf‬‬
‫יציאה‬
‫מעקב‪ .‬מאפשר רגיסטר כניסה‪.‬‬
‫אישור‪ .‬מציין שהפריפריה מוכנה‬
‫לנעול את נתוני היציאה‪ .‬פועל‬
‫כמאפשר תלת‪ -‬מצבי עבור פורט‬
‫‪.c‬‬
‫דגל זיכרון כניסה מלא‪ ,‬כשנידרך‪,‬‬
‫מציין שהנתונים הועמסו‬
‫לרגיסטר הכניסה‪ .‬נידרך ע"י‬
‫‪ nstb‬יורד‪ .‬ומתאפס ע"י הופעת‬
‫כניסה ה‪.nrd-‬‬
‫דגל זיכרון יציאה מלא‪ .‬מציין‬
‫שהנתונים נכתבו לפורט ‪.a‬‬
‫מתאפס עם הופעת ‪ ,nwr‬ונידרך‬
‫כאשר ה‪ nack-‬יורד‪.‬‬
‫_המשך הטבלה בעמוד הבא(‬
‫המשך הטבלה‪:‬‬
‫שם‬
‫סוג האיתות‬
‫תיאור‬
‫‪intr‬‬
‫יציאה‬
‫‪inte1‬‬
‫ביט בקרה פנימי‬
‫‪inte2‬‬
‫ביט בקרה פנימי‬
‫בקשת פסק‪ .‬משמשת כאות פסק‬
‫)הפרעה( למעבד המציינת‬
‫שהפריפריה נעלה את הנתונים‪.‬‬
‫מתאפס עם ירידת ה‪ nwr-‬או ה‪-‬‬
‫‪ .nrd‬נידרך עם עליית ה‪,nack-‬‬
‫כאשר ‪ int1‬גבוה‪ ,‬או עם עלייתו‬
‫של ה‪ nstb -‬כאשר ‪ inte2‬גבוה‪.‬‬
‫מאפשר פסק ‪ .1‬נידרך ע"י דריכת‬
‫ביט ל‪.pc-6 -‬‬
‫מאפשר פסק ‪ .2‬נידרך ע"י דריכת‬
‫ביט ל‪.pc-4 -‬‬
‫‪– a8251 -ALTERA‬ממשק תקשורת בר‪-‬תכנות‪.‬‬
‫תכונות‪:‬‬
‫‪ .1‬פונקציה ‪ a8251‬המספקת ממשק בין מעבד וערוץ תקשורת טורי‪.‬‬
‫‪ .2‬מיועל עבור ארכיטקטורות ‪.FLEX‬‬
‫‪ .3‬אורך מילה הניתן לתכנות‪ ,‬ביטים של ‪ stop‬ובדיקת שוויון‪.‬‬
‫‪ .4‬מציע אופן עבודה מחולק ב‪ ,16 , 1-‬או ‪.64‬‬
‫‪ .5‬תומך בפעולה סינכרונית ואסינכרונית‪.‬‬
‫‪ .6‬משתמש בערך ב‪ 528-‬אלמנטים של ‪flex‬‬
‫כולל‪:‬‬
‫• זיהוי ביט התחלה שגוי‪/‬מזויף‪.‬‬
‫• זיהוי שגיאות‪.‬‬
‫• זיהוי אוטומטי של הפסקה‪.‬‬
‫• זיהוי פנימי וחיצוני של אות סנכרון‪.‬‬
‫‪ .7‬מתבסס מבחינה פונקציונלית על התקן ‪.a8251‬‬
‫תיאור כללי‪:‬‬
‫פונקצית ה‪ a8251-‬מספקת ממשק בין מעבד וערוץ תקשורת טורי‪ .‬ה‪ a8251-‬קולט‬
‫ומשדר נתונים בכמה קונפיגורציות כולל מילים של ‪ 7‬או ‪ 8‬ביטים‪ ,‬עם שוויון אי‪-‬‬
‫זוגי‪ ,‬זוגי או היעדר שוויון וביטים ‪ 1‬או ‪ 2‬של ‪ .stop‬ניתן לתכנת את המקלט והמשדר‬
‫לעבודה סינכרונית או אסינכרונית‪.‬‬
‫פורטים של קלט‪/‬פלט של ה‪:a8251-‬‬
‫‪ :Clk‬קלט‪ -‬כניסת שעון ראשית‪.‬‬
‫‪ Cnd‬קלט‪ -‬ברירת בקרה‪/‬נתונים‪ .‬כאשר אות ה‪ cnd -‬עולה המעבד בוחר בין נתוני‬
‫מצב‪/‬בקרה ו‪-‬קריאה‪/‬כתיבה‪ :‬אחרת‪ ,‬המעבד בוחר נתוני מקלט‪/‬משדר ל‪-‬‬
‫קריאה‪/‬כתיבה‪.‬‬
‫]‪ :din[7..0‬קלט‪ -‬כניסת נתונים מקבילה מהמעבד או התקני בקרה אחרים‪.‬‬
‫‪ :Extsynd‬קלט‪ -‬קוטביות גבוהה‪-‬זיהוי סינכרון חיצוני‪ ,‬בתכנותים מסונכרנים‪,‬‬
‫כאשר אות ה‪ extsyncd -‬מופיע‪ ,‬ה‪ a8251 -‬מתחיל לקלוט נתונים עם הופעת האות‬
‫הבא של אות ה‪.nrxc -‬‬
‫‪ :Ncs‬קלט‪-‬קוטביות נמוכה‪ -‬שבב בחירה מהמעבד‪.‬‬
‫כאשר מופיע אות ה‪ ,ncs-‬כל פעולות הכתיבה והקריאה מתאפשרות‪.‬‬
‫‪ :Nctc‬קלט‪ -‬קוטביות נמוכה‪ -‬נקי לשידור בדרך‪-‬כלל שם של אות מודם‪ .‬כאשר אות‬
‫ה‪ nctc -‬מופיע‪ ,‬ואם ביט ה‪ txen -‬של רגיסטר הוראת ההפעלה דרוך‪ ,‬שליחת‬
‫נתונים מתאפשרת‪.‬‬
‫המשך פורטים ‪:a8251‬‬
‫‪ :ndcr‬קלט‪ -‬קוטביות נמוכה‪ ,‬נקי לשידור‪ ,‬בדרך‪-‬כלל שם של אות מודם‪ .‬כאשר אות‬
‫ה‪ nctc-‬מופיע‪ ,‬ואם ביט ה‪ txen-‬של רגיסטר הוראת ההפעלה דרוך‪ ,‬שליחת נתונים‬
‫מתאפשרת‪.‬‬
‫‪ :ndsr‬קלט‪ -‬קוטביות נמוכה‪ ,‬סידרת נתונים מוכנה‪ ,‬בדרך‪-‬כלל אות של מודם‪ .‬מצבו‬
‫של קלט זה יכול להיבדק ע"י קריאת רגיסטר סטטוס ביט ‪.(dsr) 7‬‬
‫‪ :nrd‬קלט‪ -‬קוטביות נמוכה‪ ,‬בקרת קריאה לרגיסטרים‪ .‬כאשר אותות ה‪ nrd -‬וה‪-‬‬
‫‪ ncs‬נמוכים ‪ ,‬המעבד קורא מתוך הרגיסטר‪.‬‬
‫‪ :nrxc‬קלט‪ -‬קוטביות נמוכה‪ ,‬שעון קליטה‪ .‬מעבד המקלט דוגם את ‪ nrxd‬בהתבסס‬
‫על מצבו של אות ה‪ nrxc -‬וקצב פקטור הבאוד ברגיסטר‪.‬‬
‫‪ :ntxc‬קלט‪ -‬קוטביות נמוכה‪ ,‬שעון שידור‪ .‬הנתונים נשלחים ל‪ txd -‬עם ירידת אות‬
‫ה‪.ntxc -‬‬
‫‪ :nwr‬קלט‪ -‬קוטביות נמוכה‪ ,‬בקרת כתיבה לרגיסטר‪ .‬כאשר אות ה‪ nwr -‬ואות ‪ncs‬‬
‫נמוכים‪ ,‬המעבד כותב ברגיסטר‪.‬‬
‫‪ :nreset‬קלט‪ -‬קוטביות נמוכה‪ ,‬איפוס אסינכרוני של הרגיסטר והבקרה‪.‬‬
‫‪ :rxd‬קלט‪ -‬נתוני קליטה‪ .‬כניסה טורית מהמודם או הפריפריה‪.‬‬
‫‪ :dout‬יציאה‪ -‬קוטביות נמוכה‪ ,‬יציאת נתונים מקבילית‪ ,‬למעבד או להתקני בקרה‬
‫אחרים‪.‬‬
‫‪ :ndtr‬יציאה‪ -‬קוטביות נמוכה‪ ,‬מסוף נתונים מוכן‪ .‬בדרך‪-‬כלל שם של אות מודם‪.‬‬
‫ביט ‪ 1‬של הוראה הפקודה ברגיסטר דורך את אות ה‪.ndtr -‬‬
‫‪ :nen‬יציאה‪ -‬קוטביות נמוכה‪ ,‬אפשור יציאה עבור אפיק יציאת נתונים‪ .‬כאשר‬
‫מופיע אות ה‪ ,nen -‬מתאפשרת יציאת נתונים על אפיק ה‪.dout -‬‬
‫‪ :nrts‬יציאה‪ -‬קוטביות נמוכה‪ ,‬בקשה לשליחה‪ ,‬בדרך‪-‬כלל שם של אות מודם‪ .‬ביט ‪5‬‬
‫של רגיסטר ההוראות דורך את אות ה‪.nrts -‬‬
‫‪ :rxrdy‬יציאה‪ -‬קוטביות גבוהה‪ ,‬מקלט מוכן‪ .‬אות ה‪ rxrdy -‬מציין שה‪a8251-‬‬
‫קיבל סימן שיש לקוראו ע"י המעבד‪.‬‬
‫‪ :sym-brk‬יציאה‪ -‬קוטביות גבוהה‪ ,‬זיהוי סנכרון‪/‬פסק )‪ .(break‬בעבודה מסונכרנת‪,‬‬
‫כאשר מופיע אות ה‪ , extsyncd -‬ה‪ a8251 -‬מתחיל לקלוט נתונים עם הופעת האות‬
‫הבא של ‪ .nrxc‬בעבודה מסונכרנת‪ syn-brk ,‬מציין מצב הפסקה ב‪.rxd -‬‬
‫‪ :txd‬יציאה‪ -‬נתוני שידור‪ .‬יציאה טורית למודם או פריפריה‪.‬‬
‫המשך פורטים ‪:a8251‬‬
‫‪ :txempty‬יציאה‪ -‬קוטביות גבוהה‪ ,‬משדר ריק‪ .‬מציין שלמשדר אין יותר נתונים‬
‫לשליחה‪.‬‬
‫‪ :txrdy‬יציאה‪ -‬קוטביות גבוהה‪ ,‬המשדר מוכן‪ .‬כאשר מופיע אות זה‪ ,‬הלוגיקה של‬
‫המשדר מוכנה לקלוט ביט נתונים נוסף‪ .‬יציאה זו מותנת במצב כניסת ה‪ cts -‬וביט‬
‫הפקודה של ‪.txen‬‬
‫תיאור פונקציונלי‪:‬‬
‫ה‪ a8251 -‬מכיל את הרגיסטרים הבאים‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫הוראת מצב )אופן פעולה‪/‬ביצוע(‪.‬‬
‫הוראת פקודה‪.‬‬
‫מצב )סטטוס(‪.‬‬
‫אות סנכרון אחד‪.‬‬
‫אות סנכרון שתיים‪.‬‬
‫זיכרון זמני משדר )‪.(buffer‬‬
‫זיכרון זמני מקלט‪.‬‬
‫רגיסטר הוראת מצב‪:(mir) :‬‬
‫רגיסטר ה‪ mir-‬תומך בעבודה סנכרונית ואסנכרונית‪ .‬ביטים ‪ 0‬ו‪ 1 -‬הם גורם קצב‬
‫הבאוד וקובעים את היחס שבין קצב הנתונים והשעונים‪ .‬אם ביטים ‪ 1‬ו‪ 0 -‬מכוונים‬
‫ללוגיקה נמוכה ‪ ,‬אז ה‪ a8251 -‬מתוכנת לעבודה מסונכרנת‪ ,‬אחרת ה‪ a8251 -‬פועל‬
‫באופן אסנכרוני‪.‬‬
‫פעולה אסינכרונית‪ :‬כאשר ה‪ a8251 -‬מתוכנת לעבודה אסינכרונית ‪ ,‬ה‪ mir -‬מכיל‬
‫את הביטים שבטבלה זו‪:‬‬
‫ביט‬
‫שם האות‬
‫‪0‬‬
‫פקטור קצב הבאוד )‪.(b1‬‬
‫פקטור קצב הבאוד )‪.(b2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫בורר אורך המילה )‪.(l1‬‬
‫בורר אורך המילה )‪.(l2‬‬
‫בורר שוויון ‪.(pen) parity‬‬
‫בורר שוויון ‪.(ep) parity‬‬
‫בורר ביט סטופ )‪.(s1‬‬
‫בורר ביט סטופ )‪.(s2‬‬
‫פקטור קצב הבאוד‪:‬‬
‫ביט ‪ 1‬ו‪ 0 -‬של ה‪ mir -‬הם ביטים של פקטור קצב הבאוד‪ ,‬הקובע את היחס שבין‬
‫קצב הנתונים והשעונים‪ .‬היחסים זהים בזמן שידור ובזמן קליטה‪ .‬הביטים של‬
‫פקטור קצב הבאוד מספקים גם אמצעי לתכנות ה‪ a8251 -‬לעבודה מסונכרנת‪.‬‬
‫טבלה זו מראה את הרמה הלוגית של הביטים של פקטור קצב הבאוד ואת‬
‫הפונקציה המתוכנתת המקבילה‪.‬‬
‫‪b1‬‬
‫‪b2‬‬
‫פונקציה מתוכנתת‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫עבודה מסונכרנת‪.‬‬
‫מחולק ב‪ .1-‬קצבי השעונים‬
‫והנתונים זהים‪ .‬לוגיק חיצוני‬
‫אחראי לסנכרון אות ה‪ rxd -‬לפי‬
‫אות ה‪ .nrxc -‬אות ה‪ rxd -‬מודגם‬
‫עם הופעת אות ה‪ ,nrxc -‬ואות ה‪-‬‬
‫‪ txd‬מופיע עם ירידת אות ה‪ntxc -‬‬
‫‪.‬‬
‫מחולק ב‪ .16 -‬קצב השעון הוא פי‪-‬‬
‫‪ 16‬מקצב הנתונים‪ .‬עם זיהוי ביט‬
‫ה‪ rxd) start -‬נמוך(‪ ,‬אות ה‪rxd -‬‬
‫מודגם עם העלייה ה‪ 9 -‬של ה‪-‬‬
‫‪ .nrxc‬לאחר כתיבה לרגיסטר‬
‫השידור‪ ,‬אות ה‪ txd -‬מופעל עם‬
‫ירידת אות ה‪ ntxc -‬וכל ‪16‬‬
‫הופעות שעון לאחר מכן‪.‬‬
‫מחולק ב‪ .64 -‬קצב השעון הוא פי‪-‬‬
‫‪ 64‬מקצב הנתונים‪ .‬לאחר זיהוי‬
‫ביט ה‪ rxd) start -‬נמוך(‪ ,‬אות ה‪-‬‬
‫‪ rxd‬מודגם עם ההופעה ה‪ 33 -‬של‬
‫‪ ,nrxc‬לאחר כתיבה לרגיסטר‬
‫)בהנחה שכתיבה מאופשרת(‬
‫דורכים את ה‪ txd -‬עם הירידה‬
‫הראשונה של אות ה‪ ntxc -‬וכל‬
‫מתקף שעון ה‪ 64 -‬לאחר מכן‪.‬‬
‫בורר אורך המילה‪:‬‬
‫ביטים ‪ 2‬ו‪ 3-‬של ה‪ mir -‬הם הביטים המציינים את אורך המילה‪ ,‬המשמשים לבחירת‬
‫האורך של הביט )‪ 8‬סיביות(‪.‬‬
‫טבלה זו מראה את רמת הלוגיקה של בורר אורך המילה ואת אורך המילה המקביל‪.‬‬
‫אורך המילה‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪l1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪l2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫בורר שוויון‪:(parity) -‬‬
‫ביטים ‪ 4‬ו‪ ,(pen ,ep) 5 -‬של ה‪ mir -‬הם הביטים של בורר השוויון‪ ,‬המשמשים‬
‫לבחירת אופציית השוויון‪.‬‬
‫טבלה זו מראה את רמת הלוגיקה של בחירת השוויון והשוויון המקביל‪.‬‬
‫‪ep‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪pen‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫שוויון‬
‫לא קיים‬
‫אי‪-‬זוגי )לא שווה(‬
‫לא קיים‬
‫זוגי )שווה(‬
‫בורר ביט עצור )‪:(stop‬‬
‫ביטים ‪ 6‬ו‪ (s3 ,s2) 7 -‬של ה‪ mir -‬הם הביטים של ה‪ ,stop -‬המשמשים לקבוע את‬
‫מספרם של ה‪ stop -‬ביטים ‪.‬‬
‫הטבלה הבאה מראה את רמת הלוגיקה של בחירת ביטים של ‪ stop‬ואת המספר‬
‫המתאים של ביטים ל‪.stop -‬‬
‫מ"ס ביטים ל‪stop -‬‬
‫‪S1‬‬
‫‪S2‬‬
‫אסור‪ ,‬לא תקף‬
‫‪1‬‬
‫‪1.5‬‬
‫‪2‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫בעבודה מסונכרנת‪:‬‬
‫פקטור קצב הבאוד )מהירות עבודה(‪:‬‬
‫כאשר התכנות הוא לעבודה מסונכרנת‪ ,‬פקטור קצב הבאוד של ה‪ mir -‬הוא תמיד‬
‫לוגיקה נמוכה ) ביטים ‪ 0‬ו‪.(1 -‬‬
‫בחירת אורך מילה‪:‬‬
‫ביטים ‪ 2‬ו‪ ,(l2 ,l1) 3 -‬של ה‪ mir -‬הם הביטים הבוחרים את אורך המילה‪ ,‬ומשמשים‬
‫לבחירת אורך המילה של מילת הנתונים‪ .‬ביטים אלה פועלים באופן זהה כאשר‬
‫התכנות הוא לעבודה סינכרונית או אסינכרונית‪.‬‬
‫בורר שוויון )‪:(parity‬‬
‫ביטים ‪ 4‬ו‪ (pen ,ep ) 5 -‬של ה‪ mir -‬הם הביטים הבוחרים את ה‪ , parity -‬ביטים‬
‫אלה פועלים באופן זהה כאשר התכנות הוא לעבודה סינכרונית ו‪/‬או אסינכרונית‪.‬‬
‫זיהוי אות סנכרון חיצוני‪:‬‬
‫כאשר ביט ‪ ,(esd) 6‬של ה‪ mir -‬הוא גבוה‪ ,‬זיהוי סנכרון חיצוני משמש את ה‪-‬‬
‫‪.a8251‬‬
‫אחרת המקלט אחראי לזיהוי הסנכרון‪.‬‬
‫סנכרון ע"י אות בודד‪:‬‬
‫כאשר ביט ‪ (scs) 7‬של ה‪ mir -‬גבוה‪ ,‬המקלט מחפש אות סנכרון בודד לפני‬
‫שיתחיל בתהליך הסנכרון‪ .‬אחרת המקלט מחפש אחר ‪ 2‬אותות סנכרון‪.‬‬
‫רגיסטר הוראת פקודה‪:‬‬
‫רגיסטר זה שולט בפעולות המשדר‪/‬מקלט‪.‬‬
‫טבלה זו מראה את הפורמט‪ ,‬שם האות‪ ,‬והפונקציה של הביטים בנתוני רגיסטר‬
‫הוראת הפקודה‪:‬‬
‫ביט‬
‫שם‬
‫פונקציה‬
‫‪0‬‬
‫‪txen‬‬
‫‪1‬‬
‫‪dtr‬‬
‫‪2‬‬
‫‪rxe‬‬
‫‪3‬‬
‫‪sbrk‬‬
‫לוגיקה גבוהה מאפשרת את‬
‫המשדר‪.‬‬
‫לוגיקה גבוהה מאלצת את אות‬
‫ה‪ ndtr -‬לרדת‪.‬‬
‫לוגיקה גבוהה מאפשר את‬
‫המקלט‪.‬‬
‫לוגיקה גבוהה מאלצת את אות‬
‫‪4‬‬
‫שגיאה ) ‪(er‬‬
‫‪5‬‬
‫בקשה לשליחה ) ‪(rts‬‬
‫‪6‬‬
‫איפוס פנימי )‪(ir‬‬
‫‪7‬‬
‫‪eh‬‬
‫ה‪ txd -‬לרדת נמוך‪.‬‬
‫לוגיקה גבוהה מאפסת את כל‬
‫אותות השגיאה‪(pe,oe,fe).‬‬
‫לוגיקה גבוהה מאלצת את אות‬
‫ה‪ nrts -‬לרדת מטה‪.‬‬
‫לוגיקה גבוהה מאלצת מצב‬
‫איפוס פנימי‪.‬‬
‫לוגיקה גבוהה גורמת למקלט‬
‫"לחפש" אחר אות סנכרון‪.‬‬
‫מתעלמים מפקודת ה‪ eh -‬בזמן‬
‫עבודה מסונכרנת‪.‬‬
‫רגיסטר סטטוס‪:‬‬
‫רגיסטר זה מאפשר למעבד‪ ,‬או להתקני בקרה אחרים ‪ ,‬לבחון את מצבו של ה‪-‬‬
‫‪.a8251‬‬
‫הטבלה בעמוד הבא מראה את הפורמט‪ ,‬שם האות והפונקציה של הביטים‬
‫המתארים את נתוני מצב הרגיסטר‪.‬‬
‫ביט‬
‫שם‬
‫פונקציה‬
‫‪0‬‬
‫משדר מוכן )‪(txrdy‬‬
‫‪1‬‬
‫מקלט מוכן )‪(rxrdy‬‬
‫‪2‬‬
‫משדר ריק )‪(txempty‬‬
‫‪3‬‬
‫שגיאת שוויון )‪(pe‬‬
‫‪4‬‬
‫שגיאת הדבקה‪ ,‬שידור לפני‬
‫קליטה )‪(oe‬‬
‫‪5‬‬
‫שגיאת מסגור )‪(fe‬‬
‫‪6‬‬
‫זיהוי סנכרון או הפסק )‪syn-‬‬
‫‪(brk‬‬
‫מציין שהמשדר מוכן לקבל ביט‬
‫נתונים נוסף‪ .‬בניגוד ליציאה‬
‫המקבילה‪ ,‬הביט הזה אינו תלוי‬
‫בכניסת ה‪ cts -‬וביט הפקודה‬
‫של ‪.txen‬‬
‫ביט ‪ 1‬משקף את מצבו של אות‬
‫ה‪.rxrdy -‬‬
‫ביט ‪ 2‬משקף את מצבו של אות‬
‫ה‪.txempty -‬‬
‫כאשר גבוה‪ ,‬ביט ‪ 3‬מציין שביט‬
‫השוויון שנתקבל בכניסת ה‪-‬‬
‫‪ rxd‬לא מתאים לשוויון‬
‫שחושב ע"י המקלט‪ .‬אם לא‬
‫נבחר מצב שוויון מסוים‪,‬‬
‫שגיאה זו לא תתרחש‪.‬‬
‫ביט ‪ 4‬מציין שהנתונים היו‬
‫מוכנים לכתיבה לתוך ה‪rbr -‬‬
‫לפני שהתוכן הקודם של‬
‫הרגיסטר ניקרא ע"י המעבד‪.‬‬
‫ביט ‪ 5‬נידרך כאשר אות‬
‫שניקלט לא מסתיים במ"ס‬
‫הצפוי של סטופ ביטים ‪ ,‬דבר‬
‫שנגרם בדרך‪-‬כלל עקב שגיאה‬
‫בשידור ‪.‬‬
‫ביט ‪ 6‬משקף את המצב של‬
‫יציאת ה‪.syn-brk -‬‬
‫‪(brk‬‬
‫סידרת נתונים מוכנה )‪(dsr‬‬
‫‪7‬‬
‫ביט ‪ 7‬משקף את ההיפך הלוגי‬
‫של המצב של כניסת ה‪.ndsr -‬‬
‫רגיסטר אות סנכרון אחד‪:‬‬
‫רגיסטר זה מכיל את אות הסנכרון הראשון‪ .‬המידע משמש את המקלט לצורך‬
‫השוואת סינכרון ואת המשדר לצורך שידור אות הסנכרון‪.‬‬
‫רגיסטר אות סנכרון שתיים‪:‬‬
‫מכיל את הערך של אות הסנכרון השני‪ .‬המידע משמש את המקלט לצורך השוואת‬
‫סנכרון ואת המשדר לצורך שידור אות השידור‪.‬‬
‫רגיסטר משדר זיכרון זמני )‪:(Buffer‬‬
‫ה‪ tbr -‬מכיל את נתוני המשדר‪ ,‬שה‪ a8251 -‬מפרמט‪ ,‬מסדר בטור‪ ,‬ומשדר ביציאת‬
‫ה‪ ,txd -‬ברגע שהנתונים הקיימים ברגיסטר ההיסט משודרים במלואם‪ ,‬ה‪ tbr -‬משדר‬
‫נתונים חדשים לתוך רגיסטר ההיסט‪.‬‬
‫רגיסטר מקלט זיכרון זמני‪:‬‬
‫ה‪ rbr -‬מכיל את הנתונים שנתקבלו מרגיסטר ההיסט )‪ .(shift‬לאחר שרגיסטר‬
‫ההיסט קולט מילת נתונים חדשה‪ ,‬הוא מוכן לשלחה ל‪ .rbr -‬אם הנתונים הקיימים‬
‫ב‪ rbr -‬כבר נקראו ע"י המעבד‪ ,‬אז מתרחשת ההעברה‪ .‬אם נתוני ה‪ rbr -‬הקיימים לא‬
‫נקרא ו‪ ,‬מעלים את ביט ה‪ ,oe -‬שגיאת ההדבקה – שידור לפני קליטה‪.‬‬
‫פעולה‪:‬‬
‫פעולת תכנות‪:‬‬
‫את ה‪ a8251 -‬חייבים לתכנת בסדר מסוים ומיד לאחר מצב של איפוס כללי או מצב‬
‫איפוס פנימי‪ .‬ראשית‪ ,‬המעבד כותב ל‪ . mir -‬כאשר בוחרים פעולה סינכרונית ב‪-‬‬
‫‪ , mir‬המעבד כותב באות הסנכרון הראשון‪ .‬אם נבחרים שני אותות סנכרון ב‪,mir -‬‬
‫האות השני נכתב מיד לאחר הראשון‪ .‬אם בוחרים רק אות סנכרון אחד‪ ,‬על השני‬
‫מדלגים‪ .‬אולם‪ ,‬כאשר בוחרים בעבודה סינכרונית קופצים על שני אותות הסנכרון‪.‬‬
‫ברגע שהמעבד כותב ל‪ mir -‬ולאותות הסנכרון‪ ,‬להוראת הפקודה‪ ,‬לסטטוס‪ ,‬ול‪tbr -‬‬
‫וה‪ rbr -‬יש אפשרות לגשת אליהם‪.‬‬
‫טבלה זו מתארת את רצף התכנות של ה‪ a8251 -‬כולל את רמת הלוגיקה של אותות‬
‫הבקרה‪:‬‬
‫‪cnd‬‬
‫‪nrd‬‬
‫‪nwr‬‬
‫‪ncs‬‬
‫פעולה‬
‫הערה‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫מעבד כותב ל‪-‬‬
‫חייב לקרוא מיד‬
‫‪mir‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫מעבד כותב את‬
‫אות הסנכרון‬
‫הראשון‬
‫מעבד כותב את‬
‫אות הסנכרון‬
‫השני‬
‫מעבד כותב‬
‫לרגיסטר‬
‫הוראת הפקודה‬
‫מעבד כותב‬
‫לתוך ה‪tbr -‬‬
‫מעבד קורא את‬
‫רגיסטר‬
‫הסטטוס‬
‫מעבד קורא את‬
‫ה‪rbr -‬‬
‫לאחר איפוס‬
‫כללי או פנימי‬
‫מתעלמים ממנו‬
‫בפעולה‬
‫מסונכרנת‬
‫מדלגים עליו‬
‫בעבודה‬
‫מסונכרנת או‬
‫אם ביט ‪ 7‬של‬
‫ה‪ mir -‬נמצא‬
‫בלוגיקה גבוהה‬
‫)עבודה‬
‫מסונכרנת(‬
‫גישה אקראית‬
‫גישה אקראית‬
‫גישה אקראית‬
‫גישה אקראית‬
‫פעולת מקלט אסינכרונית‪:‬‬
‫כאשר ה‪ a8251 -‬מתוכנת לעבודה אסינכרונית‪ ,‬המקלט כולל את הפונקציות‬
‫הבאות‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫זיהוי ביט התחלה )‪.(start‬‬
‫דיגום נתוני הביטים‪.‬‬
‫זיהוי הביטים של ה‪.parity/stop -‬‬
‫העברת זיכרון זמני של רגיסטר מקלט‪.‬‬
‫זיהוי ‪.break‬‬
‫זיהוי ביט התחלה )‪:(start‬‬
‫ה‪ a8251 -‬מתחיל לקבל נתונים כאשר מזהים ביט ‪ ,start‬הביט הזה הוא לוגי נמוך‬
‫ביציאת ה‪ ,rxd -‬שעובר דגימה עם כל הופעת אות שעון של אות ה‪ .nrxc -‬ברגע‬
‫שה‪ a8251 -‬מזהה לוגי נמוך‪ ,‬הוא מתחיל לספור את מספר הדגימות של לוגי נמוך‬
‫בהתאם לקצב שנקבע‪.‬‬
‫לדוגמא‪ :‬לאחר זיהוי של לוגי נמוך במצב של מחולק ב‪ ,1 -‬ה‪ a8251 -‬מניח‬
‫שהנתונים זמינים עם הופעת האות הבא‪ .‬אולם‪ ,‬לאחר זיהוי של לוגי נמוך במצב של‬
‫מחולק ב‪ ,16-‬ה‪ a8251 -‬סופר ‪ 8‬אותות ‪ nrxc‬ודוגם שוב‪ .‬הנתונים עדיין חייבים‬
‫להיות לוגי נמוך‪ .‬בנקודה זו‪ ,‬ה‪ a8251 -‬מניח שהנתונים והשעון מסונכרנים ודוגם‬
‫נתונים כל ‪ 16‬אותות שעון מכאן והלאה‪ .‬המצב של מחולק ב‪ 64 -‬דומה לזה של ‪,16‬‬
‫כאשר ביט ה‪ start -‬נידגם עם האות העולה הראשון וה‪ 32-‬של ה‪ .nrxc -‬הנתונים‬
‫נידגמים כל ‪ 64‬אותות‪.‬‬
‫דגימת ביט נתונים‪:‬‬
‫לאחר שזיהה את ה‪ start -‬ביט ‪ ,‬ה‪ a8251 -‬דוגם ומזיז את הנתונים לתוך רגיסטר‬
‫בהיסט‪ .‬דגימת הביטים מתרחשת עם כל הופעה במצב של מחולק ב‪ ,1 -‬עם כל ‪16‬‬
‫הופעות במצב של מחולק ב‪ ,16 -‬וכל ‪ 64‬אותות במצב של מחולק ב‪ .64 -‬בכל פעם‬
‫שביט נידגם‪ ,‬מחשבים את השוויון )‪ (parity‬לזיכרון של שגיאות נוספות‪.‬‬
‫זיהוי ביט ‪:parity/stop‬‬
‫ה‪ a8251 -‬סופר את מספר הביטים בנתונים ככל שהוא מסיט‪ .‬כאשר המספר של‬
‫הביטים שנקלטו מתאים למספר שרשום ברגיסטר הבקרה‪ ,‬ה‪ a8251 -‬מצפה לביט‬
‫‪ parity‬או ל‪ .stop -‬אם ‪ parity‬מאופשר ‪ ,‬ה‪ a8251 -‬דוגם את ביט ה‪,parity -‬‬
‫המעובד לצורכי שוויון אך לא מוסט לתוך רגיסטר ההיסט‪ .‬לאחר ביט ה‪ parity -‬או‬
‫לאחר הביט האחרון אם השוויון לא מאופשר ‪ ,‬ה‪ a8251 -‬מצפה לביט סטופ )לוגי‬
‫גבוה(‪ .‬אם דוגמים לוגי נמוך‪ ,‬ביט ה‪ fe -‬נידרך ברגיסטר הסטטוס‪.‬‬
‫ה‪ a8251 -‬מקבל נתונים עם ביט סטופ אחד או שניים‪ .‬אם קובעים סטופ ביט ‪1‬‬
‫ברגיסטר הבקרה‪ ,‬ה‪ a8251-‬ייצפה לביט סטופ אחד לפני שיתחיל בתהליך הסנכרון‪.‬‬
‫באופן דומה‪ ,‬אם קובעים שני ביטים של סטופ ‪ ,‬תהליך הסנכרון יתחיל לאחר זיהוים‬
‫של שני לוגי גבוהים‪.‬‬
‫זיהוי שגיאות‪:‬‬
‫שלוש שגיאות יכולות להופיע כאשר ה‪ a8251 -‬קולט‪ :‬מסגור‪ ,‬הדבקה ושוויון‪.‬‬
‫זיכרון זמני של רגיסטר מעבר‪ :‬ברגע שמקבלים את ביט הסטופ האחרון‪ ,‬או‬
‫שמזהים שגיאות מסגרת‪ ,‬הנתונים ברגיסטר ההיסט מועברים ל‪ .rbr -‬בנקודה זו‪ ,‬כל‬
‫הביטים של הסטטוס הקשורים למילת נתונים זו נידרכים‪ ,‬כולל ביט ה‪.rxrdy -‬‬
‫תהליך הקליטה מסתיים כאשר המעבד קורא נתונים מתוך ה‪.rbr -‬‬
‫זיהוי הפסקה )‪:(break‬‬
‫בעבודה מסונכרנת‪ ,‬אות ה‪ syn-brk -‬מציין שהמקלט זיהה מצב של ‪ .break‬מצב זה‬
‫מוגדר ברגע בו אות ה‪ rxd -‬כל הזמן נמוך‪ ,‬כלומר‪ ,‬עבור רצף שלם כולל‪ ,‬סטרט‪,‬‬
‫סטופ ושוויון‪.‬‬
‫את ביט ה‪ syn-brk -‬אפשר לאפס ע"י פעולת איפוס כוללת או ע"י כך שאות ה‪rxd -‬‬
‫חוזר למצב גבוה‪.‬‬
‫פעולת משדר )אסינכרונית(‪:‬‬
‫כאשר ה‪ a8251 -‬מתוכנת לעבודה מסונכרנת‪ ,‬המשדר כולל את הפונקציות הבאות‪:‬‬
‫‪ .1‬משדר נתוני רגיסטר כתיבה‪/‬העברה‪.‬‬
‫‪ .2‬משדר ביט סטרט‪.‬‬
‫‪ .3‬משדר נתונים‪.‬‬
‫‪ .4‬משדר ביט ‪.parity‬‬
‫‪ .5‬משדר ביט סטופ‪.‬‬
‫משדר נתוני רגיסטר כתיבה‪/‬העברה‪:‬‬
‫לאחר פעולת איפוס כללי וכאשר ביט ‪ (txen) 1‬של רגיסטר הוראת הפקודה גבוה‪,‬‬
‫מתחילה פעולת שידור כאשר מופיע אות ה‪ .ncts -‬בנקודה זו‪ ,‬ניתן לכתוב ביט‬
‫נתונים ב‪ ,tbr -‬אולם‪ ,‬אם לא נכתבו שום נתונים‪ ,‬אות ה‪ txd-‬נעצר במצב של לוגי‬
‫גבוה‪.‬‬
‫בפעולת הכתיבה הראשונה‪ ,‬אם רגיסטר ההיסט ריק ‪ ,‬הנתונים מועברים מיידית‬
‫ופעולת מתחילה‪ .‬אם פעולת ההיסט מתרחשת‪ ,‬המעבד יכול לכתוב ל‪ , tbr -‬אולם‪,‬‬
‫הנתונים לא מועברים אל רגיסטר ההיסט עד שפעולת ההיסט הפעילה מסתיימת‪.‬‬
‫כאשר ה‪ tbr -‬מכיל נתונים שלא הועברו לרגיסטר ההיסט‪ ,‬אות ה‪ txrdy -‬וביט‬
‫הסטטוס המתאימים יורדים לנמוך‪ .‬ברגע שהנתונים מועברים לרגיסטר ההיסט וה‪-‬‬
‫‪ tbr‬ריק‪ ,‬אות ה‪ txrdy -‬וסטטוס הביט המתאים נדרכים‪ ,‬אם רגיסטר ההיסט וה‪-‬‬
‫‪ tbr‬מתרוקנים‪ ,‬אות ה‪ txempty -‬וביט הסטטוס המתאים נדרכים‪.‬‬
‫סטרט ביט של המשדר‪:‬‬
‫כאשר הנתונים מועברים לרגיסטר ההיסט ‪ ,‬סטרט ביט )לוגי נמוך( מוצב באות ה‪-‬‬
‫‪ txd‬עם ירידת אות ה‪ ntxc -‬הבאה‪ .‬ערך ביט הסטרט נותר אקטיבי עבור מספר‬
‫מחזורי השעון שנקבע ב‪.mir -‬‬
‫ביט ה‪ parity -‬של המשדר‪:‬‬
‫אם מאפשרים את השוויון‪ ,‬הביט שבא לאחר ביט הנתונים האחרון הוא ביט‬
‫השוויון‪ .‬לביט השוויון יש ערך המאלץ את כל מילת הנתונים שיהיה לה השוויון‬
‫הנכון לדוגמא‪,‬אם ה‪ parity -‬נקבע לאי‪-‬זוגי ב‪ ,mir -‬אז ביט השוויון מבטיח שלא‬
‫יהיו מספר אי‪-‬זוגי של אחדים‪ .‬אם הביט נקבע לזוגי‪ ,‬אז ביט השוויון מבטיח שיהיה‬
‫מספר זוגי של אחדים‪.‬‬
‫ביט הסטופ של המשדר‪:‬‬
‫לאחר שידור ביט השוויון‪ ,‬או שלא מאפשרים את ביט הנתונים האחרון‪ ,‬או‬
‫שמשדרים אחד או שניים ביט של סטופ ביציאת ה‪ .txd -‬היציאה נשארת אז גבוהה‬
‫עד לתחילת שידורה של מילת הנתונים הבאה‪.‬‬
‫פעולת המקלט )סינכרונית(‪:‬‬
‫כאשר ה‪ a8251 -‬מתוכנת לעבודה מסונכרנת‪ ,‬הביטים של הסטרט או הסטופ לא‬
‫נוספים למילת הנתונים‪ .‬במקום זאת אות ה‪ rxd -‬הוא סינכרוני לשעון הנקלט‬
‫)אות ה‪ , (nrxc -‬וזרימת הנתונים מסונכרנת לפי ה‪ a8251 -‬הקולט ע"י הכרה באות‬
‫סינכרון‪.‬‬
‫סנכרון מתרחש בצורה פנימית או חיצונית‪ .‬כאשר זיהוי סנכרון חיצוני נבחר‪ ,‬תהליך‬
‫הסנכרון נעשה כך‪:‬‬
‫‪ (1‬המעבד מוציא פקודת חיפוש )‪ (eh‬לרגיסטר הוראת‬
‫הפקודות‪.‬‬
‫‪ (2‬מעגל זיהוי הסנכרון החיצוני מזהה את אות ה‪extsyncd -‬‬
‫הגבוה לפחות במשך מחזור ‪ nrxc‬אחד‪ .‬ה‪ extsynd -‬נידגם‬
‫עם ירידת אות ה‪ ,nrxc -‬שמאלץ את ה‪ a8251 -‬להפסיק‬
‫לחפש אחר אותות סנכרון‪ .‬בנקודה זו‪ ,‬ה‪ a8251 -‬מתחיל‬
‫לדגום את ה‪ rxd -‬עם הופעת ה‪ nrxc -‬הבא‪ .‬אות ה‪syn- -‬‬
‫‪ brk‬וביט הסטטוס המתאים מועלים ומתאפסים באופן‬
‫אוטומטי כאשר המעבד קורא את נתוני הסטטוס‪ .‬כאשר‬
‫בוחרים באופציית חיפוש הסנכרון הפנימי‪ ,‬המקלט אחראי‬
‫לזיהויים של אותות הסנכרון באות ה‪ , rxd -‬הסדר הוא כזה‪:‬‬
‫‪ .1‬המעבד מוציא הוראת חיפוש )‪ (eh‬לרגיסטר הוראת‬
‫הפקודות‪.‬‬
‫‪ .2‬קטע המקלט מתחיל לדגום אחר ‪ rxd‬עם הופעת ה‪.nrxc -‬‬
‫כניסת ה‪ rxd -‬מושוות עם סימני הסנכרון‪.‬‬
‫‪ .3‬עם זיהוי סימן הסנכרון‪ ,‬ה‪ a8251 -‬מתחיל לדגום אחר אות‬
‫ה‪ rxd -‬עם הופעת ה‪ nrxc -‬הבא‪ .‬יציאת ה‪syn-brk -‬‬
‫וביט הסטטוס המתאים מועלים ומתאפסים אוטומטית‬
‫ברגע המעבד קורא את נתוני הסטטוס‪.‬‬
‫שגיאות שוויון והדבקה מזוהות כמו במצב פעולה‬
‫אסינכרוני‪ .‬פעולה סינכרונית נמשכת עד שהמעבד מוציא‬
‫פקודת ‪ eh‬נוספת‪.‬‬
‫פעולת משדר )סינכרונית(‪:‬‬
‫פעולת משדר מתחילה כאשר המעבד כותב את הסימן הראשון ) בדרך‪-‬כלל אות‬
‫סנכרון( ל‪.tbr -‬‬
‫ברגע שאות ה‪ ncts -‬מועלה ‪ ,‬ה‪ a8251 -‬מתחיל להסיט את הנתונים החוצה עם‬
‫‪ .ntsc‬שידור הנתונים מסונכרן לפי שעון ה‪ .ntxc -‬כמו בפעולה‬
‫סיום אות ה‪-‬‬
‫‪ (parity‬לכל מילת נתונים )בית( כדי לקבוע את ה‪-‬‬
‫אסינכרונית ‪,‬מוסיפים ביט שוויון )‬
‫‪ .parity‬אותות ה‪ txrdy -‬וה‪ txempty -‬פועלים‬
‫באופן זהה כאשר הם מתוכנתים לעבודה סינכרונית או אסינכרונית‪ .‬אולם‪ ,‬כאשר המשדר‬
‫מתרוקן‪ ,‬ה‪ 18251 -‬מחדיר באופן אוטומטי סימן סנכרון לתוך זרם הנתונים‪ .‬אם אות ה‪-‬‬
‫‪ scs‬גבוה‪ ,‬אות סנכרון בודדת מוחדרת‪ .‬אחרת‪ ,‬שני אותות סנכרון מוחדרים‪.‬‬
‫פעולת איפוס )‪:(reset‬‬
‫את ה‪ a8251 -‬ניתן לאפס בשני אופנים‪:‬‬
‫‪ .1‬מצב איפוס כללי‪.‬‬
‫‪ .2‬מצב איפוס פנימי‪.‬‬
‫איפוס כללי הוא פעולה אסינכרונית המושגת ע"י הפעלת כניסת האיפוס‪ .‬כל‬
‫הרגיסטרים הפנימיים ולוגיקת הבקרה מתאפסים באופן אסינכרוני למצבם‬
‫ההתחלתי‪.‬‬
‫איפוס פנימי מושג ע"י כתיבת גובה לוגי לביט ‪ (ir) 6‬של רגיסטר הוראות הפקודה‪,‬‬
‫המאפס את כל הרגיסטרים הפנמיים ואת לוגיקת הבקרה למצבם ההתחלתי‪ .‬איפוס‬
‫פנימי מתרחש באופן סנכרוני עם הופעת אות ה‪ .clk-‬אות השעון הראשי )‪ (clk‬חייב‬
‫לפעול כדי לקבל איפוס פנימי‪.‬‬
‫הבהרות‪:‬‬
‫המאפיינים הבאים מבדילים את ה‪ Altera-a8251 -‬מהתקן ה‪ 8251A -‬של חברת‬
‫"אינטל"‪.‬‬
‫‪ .1‬ל‪ a8251-‬יש ערוצי נתוני כניסה ויציאה נפרדים‪ ,‬בזמן שלהתקן ה‪8251A-‬‬
‫יש ערוץ נתונים דו כיווני‪.‬‬
‫‪ .2‬ל‪ a8251 -‬יש אותות ‪ extsyncd‬ו‪ syn-brk -‬נפרדים‪ ,‬בזמן שלאינטל יש אות‬
‫‪ brket/syndet‬דו‪ -‬כיווני‪.‬‬
‫‪ .3‬במחזור הכתיבה ל‪ ,a8251 -‬כניסת ה‪ din[7..0] -‬חייבת להיות תפוסה עבור‬
‫מחזור שעון אחד של ‪ ,ntxc‬לאחר הופעת אות ה‪.nwr -‬‬
‫‪ .4‬ל‪ a8251 -‬יש כניסת איפוס פעילה‪-‬נמוכה‪ .‬לאינטל יש כניסת איפוס פעילה‪-‬‬
‫גבוהה‪.‬‬