מבנים רגו ריים ורכיבים מתוכנתים

‫פרק ‪ - 7‬מבנים רגולריים ורכיבים מתוכנתים‬
‫מוטיבציה‪ :‬מימוש של פונקציות בעלות מספר גדול של משתנים‪.‬‬
‫למשל‪ ,‬עבור ‪ 8‬משתנים יש צורך ב ‪ Selector‬בעל ‪ 8‬כניסות בקרה ו ‪= 256‬‬
‫כניסות נתונים ואלו כבר רכיבים שקשה לבנותם בגלל שיקולי טכנולוגיה !‬
‫‪189‬‬
‫‪Three-State Bus‬‬
‫'‪' 1‬‬
‫הגדרה של מבנה באמצעות מתגים ‪:‬‬
‫כאשר ‪ Enable=1‬השער פועל‬
‫כשער ‪ . NOT‬כאשר ‪Enable=0‬‬
‫היציאה ‪ B‬מנותקת‪ ,‬כלומר לא ניתן‬
‫לכתוב ערך לוגי על היציאה ‪.‬‬
‫מצב זה בו היציאה איננה ‘‪ ’0‬ואיננה ‘‪’1‬‬
‫‪B‬‬
‫נקרא “מצב שלישי” והשער קרוי‬
‫“ ‪ NOT‬עם יציאה מסוג ‪“ 3- state‬‬
‫או גם “ ‪ NOT‬עם יציאה ‪" High-Z‬‬
‫‪P‬‬
‫‪P‬‬
‫‪A‬‬
‫‪N‬‬
‫‪Enable‬‬
‫‪N‬‬
‫'‪' 0‬‬
‫‪190‬‬
‫‪1‬‬
‫מתג ‪ '0' - N‬מנותק‬
‫'‪ '1‬מחובר‬
‫מתג ‪ '0' - P‬מחובר‬
‫'‪ '1‬מנותק‬
‫‪28‬‬
‫השער מצוין על ידי הסמל ‪:‬‬
‫‪Enable‬‬
‫‪IN‬‬
‫‪OUT‬‬
‫היתרון של מבנה זה הוא שניתן לחבר יחד יציאות של מספר שערים כאלו‪,‬‬
‫בתנאי שלכל היותר רק שער אחד יורשה לכתוב בו זמנית על היציאה‬
‫המשותפת‪ .‬היציאה המשותפת נקראת ‪ ) BUS‬עורק ( ‪ .‬על מנת להבטיח‬
‫שלכל היותר רק אחד מן השערים יכתוב על ה ‪ BUS -‬בו זמנית כדאי‬
‫להשתמש במפענח ) ‪ . ( Decoder‬כזכור‪ ,‬רק יציאה אחת של המפענח‬
‫הינה ‘‪ ’1‬וכל השאר הן ‘‪ . ’0‬בנוסף ‪ ,‬אם יש למפענח כניסת ‪ Enable‬אזי אם‬
‫’‪ Enable=‘0‬כל יציאות המפענח הן ‘‪ ’0‬ואף שער אינו כותב על ה‪. BUS -‬‬
‫‪191‬‬
‫המערכת כולה )אוסף השערים ‪,‬‬
‫ה ‪ BUS‬והמפענח ( שקולה לבורר‪.‬‬
‫‪Enable‬‬
‫‪S0‬‬
‫‪2 →4 Decoder‬‬
‫‪S1‬‬
‫‪D3 D2 D1 D0‬‬
‫הכניסות ‪ S0 , S1‬שולטות על אילו מן‬
‫הכניסות תעבור הלאה‪,‬‬
‫‪ IN2 , IN1 , IN0‬או ‪IN3‬‬
‫‪IN0‬‬
‫‪IN1‬‬
‫‪BUS‬‬
‫‪IN2‬‬
‫‪IN3‬‬
‫‪192‬‬
‫‪2‬‬
: ‫מימוש המערכת בעזרת בורר מבוזר‬
S1
S0
Enable
IN0
IN1
BUS
IN2
IN3
193
‫' מנותק‬0' - N ‫מתג‬
‫' מחובר‬1'
‫' מחובר‬0' - P ‫מתג‬
‫' מנותק‬1'
Wired-AND Bus, Wired-OR Bus
: pull-down -‫ ו‬pull-up , ‫נגדיר שני מבנים נוספים‬
' 1'
IN
‫' גורר‬0'
‫' ביציאה‬0'
OUT
IN
P
N
‫' גורר‬1'
‫' ביציאה‬1'
OUT
' 0'
OUT
IN
OUT
IN
OUT
Pull-Down
IN
IN
OUT
Pull-Up
194
3
‫נשים לב שהכניסה לכל אחד מן השערים יכולה לבוא מימין או משמאל ‪ ,‬על גבי‬
‫‪ Bus‬או חוט שעובר דרך השער מצד אל צד‪ .‬היציאה מחוברת ל ‪ Bus -‬בכיוון‬
‫מעלה‪-‬מטה ‪.‬‬
‫‪ Bus‬המורכב כולו משערי ‪ pull-down‬פועל כלהלן‪:‬‬
‫ אם יש '‪ '0‬בכניסה של שער אחד או יותר‪ ,‬ערכו של ה ‪ Bus‬הוא ‘‪.’0‬‬‫אחרת ) כל הכניסות '‪ , ( '1‬ערכו של ה‪ Bus -‬הוא ‘‪ ) ’1‬התקן מיוחד‪ ,‬המסומן‬‫כקופסה מרובעת בציור‪ ,‬מחובר אל ה‪ Bus -‬ומבטיח את קיום ברירת המחדל (‪.‬‬
‫לכן ניתן לאמר ש ‪ pull-down bus‬מממש פונקציה של שער ‪ AND‬או‬
‫‪ NOR‬של היפוכי הכניסות ) לפי דה‪-‬מורגן ( ‪ ,‬ולכן יש המכנים אותו‬
‫‪. Wired-AND Bus‬‬
‫)’‪AND(IN0,IN1,…,INk)=NOR(IN0’,IN1’,…,INk‬‬
‫‪195‬‬
‫מתג ‪ '0' - P‬מחובר‬
‫'‪ '1‬מנותק‬
‫‪collector in a Transistor‬‬
‫’‪‘1‬‬
‫‪OUT‬‬
‫‪P‬‬
‫‪IN3‬‬
‫‪P‬‬
‫'‪OUT '0‬‬
‫'‪' 0‬‬
‫‪IN0‬‬
‫‪IN1‬‬
‫‪IN2‬‬
‫‪196‬‬
‫‪4‬‬
‫‪IN2‬‬
‫‪IN3‬‬
‫‪P‬‬
‫‪IN1‬‬
‫‪P‬‬
‫'‪' 0‬‬
‫אם אחת מכניסות אלו '‪, '0‬‬
‫’‪. OUT=‘0‬‬
‫‪IN0‬‬
‫'‪' 0‬‬
‫בדומה ‪ Bus ,‬המורכב כולו משערי ‪ Pull-up‬פועל כלהלן‪:‬‬
‫ אם יש ‘‪ ’1‬בכניסה של שער אחד או יותר‪ ,‬ערכו של ה ‪ Bus‬הוא ‘‪.’1‬‬‫ אחרת ) כל הכניסות '‪ ,( '0‬ערכו של ה ‪ Bus‬הוא ‘‪ ) ’0‬התקן מיוחד‪ ,‬המסומן‬‫כקופסה מרובעת בציור‪ ,‬מחובר אל ה ‪ Bus‬ומבטיח את קיום ברירת המחדל(‪.‬‬
‫לכן ניתן לאמר ש‪ pull-up bus -‬מממש פונקציה של שער ‪ , OR‬או‬
‫‪ NAND‬של היפוכי הכניסות ) לפי דה‪-‬מורגן ( ולכן יש המכנים אותו‬
‫‪Wired-OR Bus‬‬
‫)’‪OR(IN0,IN1,…,INk)=NAND(IN0’,IN1’,…,INk‬‬
‫‪197‬‬
‫'‪' 1‬‬
‫‪N‬‬
‫'‪' 1‬‬
‫‪IN3‬‬
‫‪N‬‬
‫'‪' 1‬‬
‫‪IN2‬‬
‫‪N‬‬
‫'‪' 1‬‬
‫‪IN1‬‬
‫‪IN0‬‬
‫‪N‬‬
‫'‪' 1‬‬
‫‪OUT‬‬
‫’‪‘0‬‬
‫‪OUT‬‬
‫‪IN0‬‬
‫אם אחת מכניסות אלו '‪, '1‬‬
‫’‪. OUT=‘1‬‬
‫‪IN1‬‬
‫‪IN2‬‬
‫‪198‬‬
‫‪5‬‬
‫‪IN3‬‬
‫מתג ‪ '0' - N‬מנותק‬
‫'‪ '1‬מחובר‬
‫) ‪Programmable Logic Array ( PLA‬‬
‫ניתן להשתמש במערכים מבוססי ‪ Buses‬למימוש יעיל של מספר פונקציות‬
‫לוגיות התלויות באותם משתני כניסה ושיש להן גם מספר מכפלות משותפות‪.‬‬
‫‪) Wired-AND Buses‬המאורגנים ב”מישור ‪ ( " AND‬משמשים לחישוב‬
‫המכפלות ליצירת הפונקציות‪ .‬למשל‪ f=AB+CD ,‬ייראה כלהלן ‪:‬‬
‫‪CD‬‬
‫‪AB‬‬
‫‪AB+CD‬‬
‫‪199‬‬
‫‪C‬‬
‫‪D‬‬
‫‪Wired OR‬‬
‫‪A‬‬
‫‪B‬‬
‫‪Wired AND‬‬
‫בדרך כלל משתמשים במערך ‪ PLA‬מוכן הכולל מערכי שערים מוכנים מראש‪,‬‬
‫ויש רק לבחור אילו שערים משתתפים במימוש‪ .‬בחירה זו נקראת “תכנות ”‬
‫של ה ‪ . PLA‬לפשטות הסימון מסמנים רק את המקומות של השערים‬
‫המשתתפים‪ .‬הפונקציה הקודמת יכולה להיות מתוארת במערך כללי כזה באופן‬
‫הבא ‪:‬‬
‫‪AND plane‬‬
‫‪OR plane‬‬
‫’‪C’E‬‬
‫‪CD‬‬
‫‪AB‬‬
‫’‪AB+CD AB+C’E‬‬
‫‪200‬‬
‫‪6‬‬
‫‪E‬‬
‫‪D‬‬
‫‪C‬‬
‫‪B‬‬
‫‪A‬‬
‫הציור הסמלי מסתיר את כל הפרטים המדויקים שהופיעו בציור הקודם ‪.‬‬
‫יש תוספת של מכפלה ושל פונקציה‪ .‬שתי הפונקציות מבוססות על אותה‬
‫קבוצת משתנים ועל שלוש מכפלות ‪ ,‬מהן אחת משותפת לשתי הפונקציות ‪.‬‬
‫המערך שבציור מאופיין על ידי מספר משתני הכניסה ‪ , 5‬מספר המכפלות‬
‫האפשריות ‪ , 6‬ומספר היציאות האפשריות ‪. 3‬‬
‫דוגמא מעשית‪:‬‬
‫‪ 14‬כניסות‬
‫‪ 96‬מכפלות‬
‫‪ 6‬יציאות‬
‫מישור ‪AND‬‬
‫רכיבי ‪ :PLA‬מישור ה ‪ AND‬ניתן לתכנות‬
‫מישור ה ‪ OR‬קבוע !‬
‫יתרון ‪ :‬זול יותר‬
‫חיסרון‪ :‬מגביל את המשתמש‬
‫מישור ‪OR‬‬
‫מחייב את היצרן למספר גדול של סוגי רכיבים‬
‫‪201‬‬
‫תרגיל‪:‬‬
‫ממשו מכפל המקבל שני מספרים בני שתי סיביות ומוציא את מכפלתם‪.‬‬
‫‪ – AB‬מספר אחד‪.‬‬
‫‪ - CD‬מספר שני‪.‬‬
‫מימוש‪:‬‬
‫‪B‬‬
‫‪D‬‬
‫‪BD‬‬
‫‪S‬‬
‫‪202‬‬
‫‪7‬‬
‫‪A‬‬
‫‪C‬‬
‫‪AD‬‬
‫‪AC BC‬‬
‫‪P Q R‬‬
‫‪X‬‬
3
S = BD
4
7
5
2
R = AD ⊕ BC = A’BC + BCD’ + AB’D + AC’D
6
1
Q = AC ⊕ ABCD = AB’C + ACD’
8
P = AC · ABCD = ABCD
3
6
5
7
NZ = S+R+Q+P = BD + AB’C + AB’D + BCD’
(A+B)( C+D) ‫במקום למשל‬
1
2
3
4
5
6
7
8
ACD’
AC’D
BD
A’BC
AB’D
AB’C
BCD’
ABCD
203
AND plane
OR plane
1
2
3
4
5
6
7
8
A
B
C
D
S R
Q P NZ
204
8
‫‪ROM - Read Only Memory‬‬
‫ראינו שניתן לממש פונקציה על ידי ‪ . selector‬אולם‪ ,‬לשיטה זו יש מגבלות‪.‬‬
‫לדוגמא‪ ,‬אם לפונקציה ‪ f‬יש ‪ 8‬משתנים‪ ,‬יש צורך ב ‪ 8‬כניסות בקרה וב‬
‫‪ 28 = 256‬כניסות של מידע ) ‘‪ ’0‬או ‘‪ , ( ’1‬כניסה לכל שורה בטבלת האמת‬
‫של ‪.f‬‬
‫מבחינה טכנולוגית‪ ,‬לבנות יחידות ‪ selector‬עם מספר רב של כניסות זו בעיה‬
‫שנעשיית קשה ככל שמספר הכניסות גדל‪ .‬כמובן שניתן גם לחבר כמה ‪selectors‬‬
‫ביחד כדי ליצור ‪ selector‬גדול יותר‪ ,‬אך כדי לממש פונקציה על ידי ‪selectors‬‬
‫יש אלטרנטיבות טובות יותר ‪.‬‬
‫נניח שבמקום לספק את הקבועים ‘‪ ’0‬ו ‘‪ ’1‬לכניסות‪ ,‬מתכנתים את הקבועים בתוך‬
‫הרכיב ועל ידי צירוף כניסות הבקרה בוחרים איזה ערך להוציא כיציאה של הרכיב ‪.‬‬
‫רכיב כזה שבו לאחר תכנות ערכים פנימה לא ניתן יותר לשנותם קוראים‬
‫‪. ROM - Read Only Memory‬‬
‫‪205‬‬
‫‪ ROM‬הוא אם כן רכיב זיכרון הכולל קווי כניסה ) הקרויים גם “קווי כתובת” (‬
‫לבחירת תא זיכרון מסוים וקו יציאה לקריאת ערכו של תא הזיכרון שנבחר ‪.‬‬
‫יתרונו העיקרי ‪ :‬המידע שבו אינו נמחק עם כיבוי המתח החשמלי‪ ,‬ולכן ה ‪ROM -‬‬
‫משמש לאחסון מידע קבוע ) כגון התוכנה שמסייעת להתחלת הפעולה של מחשב‪,‬‬
‫מייד לאחר שמדליקים אותו ( ‪.‬‬
‫כאמור‪ ,‬ניתן גם לראות את ה ‪ ROM‬כרכיב המממש טבלת אמת של פונקציה ‪:‬‬
‫משתני הפונקציה מוכנסים על קווי הכתובת וערך הפונקציה מופיע במוצא ‪.‬‬
‫נזכיר שוב‪ ,‬במימוש לדוגמא של פונקציה של ‪ 4‬משתנים בעזרת ‪selector‬‬
‫‪ 16 → 1‬למעשה השתמשנו ב ‪ selector‬כאילו היה ‪ , ROM‬כאשר ערכי‬
‫הזיכרון לא היו אגורים ברכיב אלה חוברו אליו בכניסות המידע שלו ‪.‬‬
‫‪206‬‬
‫‪9‬‬
‫רכיבי ‪ ROM‬מחולקים לשלושה סוגים בהתאם לאופן שבו מידע מתוכנת אליהם‪:‬‬
‫‪ - ROM‬מיוצר עם תוכן מקודד שאינו ניתן לשינוי‪.‬‬
‫) ‪ - Programmable ROM ( PROM‬ניתן לתכנות חד פעמי על ידי המשתמש‬
‫על ידי הזנת אותות תכנות מסוימים לכניסות מסוימות‪ .‬בטכנולוגיה הנפוצה כיום‬
‫אותות התכנות “שורפים” חיבורים ברכיב ולכן התכנות הוא חד פעמי ובלתי‬
‫הפיך‪.‬‬
‫)‪ Erasable PROM ( EPROM‬אלמנטי הזיכרון ניתנים להחזרה למצבם‬
‫המקורי על ידי חשיפה לאור אולטרא‪-‬סגול או על ידי חיבור למתח חשמלי‬
‫גבוה‪ ,‬ואז לתכנות מחדש ‪.‬‬
‫‪207‬‬
‫תהליכי הכתיבה והמחיקה של ‪ PROM‬ו ‪ EPROM‬הם בסדרי גודל יותר‬
‫איטיים מאשר תהליך הקריאה ואינם מיועדים לשימוש כתיבה שוטף‪ .‬בדרך‬
‫כלל רכיבים כאלה משמשים כ ‪ ROM‬לכל דבר‪ .‬לעיתים משתמשים‬
‫ברכיבי ‪ ) EPROM‬או רכיבים דומים הקרויים ‪ ( Flash memory‬לאחסון‬
‫תוכנה ונתונים המעודכנים‪ /‬מוחלפים אחת לכמה חדשים ‪.‬‬
‫‪208‬‬
‫‪10‬‬
‫נתבונן על מימוש של ‪ ROM‬בעזרת ‪ Decoder ,Selector‬ומטריצה המורכבת‬
‫מ ‪ . Wired AND Buses‬ל ‪ ROM‬יש ‪ n+m‬קווי כתובת הבוחרים "תא" מתוך‬
‫המטריצה שבה יש ‪ 2n x 2m‬תאי זכרון‪.‬‬
‫‪2n wires‬‬
‫‪2n x 2m‬‬
‫‪array of‬‬
‫‪pulldowns‬‬
‫‪ '0' - Pull down‬בכניסת ‪IN‬‬
‫גורר '‪! '0‬‬
‫בוחר שורה‬
‫‪Decoder‬‬
‫‪2m wires‬‬
‫‪n address‬‬
‫‪bits‬‬
‫‪Selector‬‬
‫‪209‬‬
‫‪m address‬‬
‫‪bits‬‬
‫בוחר עמודה‬
‫‪output‬‬
‫במבנה זה יש רכיב ‪ pull-down‬בכל צומת השייכת לכתובת בה אגור ‘‪ ’0‬ואין‬
‫רכיב בכל צומת השייכת לכתובת בה אגור ‘‪ . ’1‬הכתובת מחולקת לשני חלקים‪,‬‬
‫כלהלן ‪:‬‬
‫‪m‬‬
‫‪n‬‬
‫לדוגמא‪ ,‬רכיב הזיכרון בשקף הבא מכיל את פונקצית הראשוניות של מספרים‬
‫בני ‪ 6‬סיביות ‪.‬‬
‫יש ‪ 26 = 64‬כתובות בזיכרון‪ .‬למשל‪ ,‬המספר ‪ 11‬עשרוני מיוצג על ידי ‪:001011‬‬
‫שלוש הסיביות השמאליות ) ‪ ( 001‬מצביעות על שורה ‪ 1‬ושלוש הסיביות‬
‫הבאות )‪ ( 011‬בוחרות את עמודה ‪ .3‬המספר ‪ 11‬עשרוני )‪ ( 001011‬נמצא בשורה‬
‫‪ , 1‬עמודה ‪. 3‬‬
‫‪210‬‬
‫‪11‬‬
‫היציאה של ה‪ selector -‬היא ‘‪ ’1‬אם המספר שנבחר ראשוני ‪.‬‬
‫ה ‪ decoder‬מוציא '‪ ’0‬בשורה שנבחרה ו '‪ ’1‬באחרות ‪.‬‬
out
out
0
0
out
1
8
1
out
2
out
out
3
4
11
12
out
5
out
6
7 in
in
in
2
in
3
Decoder
100 101 (37)
in
4
in
5
in
6
in
7
Address
input
0
1
2
3 selector 4
5
6
211
7
. 64 → 1 ‫ שבשקף הקודם הוא‬ROM ‫ה‬
Decoder Selector
x1x2x3 x4x5x6 f
0 000 000 0
1 000 001 1
2 000 010 1
3 000 011 1
4 000 100 0
5 000 101 1
6 000 110 0
7 000 111 1
8 001 000 0
-----------------------63 1 1 1 1 1 1 0
‫מספר‬
‫מספר‬
‫היציאות תאי זיכרון‬
212
12
‫‪2m‬‬
‫‪E‬‬
‫‪2n+m‬‬
‫‪D‬‬
‫‪S selector‬‬
‫‪2m →1‬‬
‫‪D‬‬
‫‪S Selector E‬‬
‫‪2n+m →1‬‬
‫‪m‬‬
‫‪n+m‬‬
‫‪n‬‬
‫‪1‬‬
‫‪1‬‬
‫‪Decoder E‬‬
‫‪n → 2n‬‬
‫‪2n‬‬
‫ההבדלים במימוש של ‪ ROM‬בעזרת ‪ selector‬בעל ‪ n+m‬כניסות בקרה ו ‪n+m‬‬
‫‪2‬‬‫כניסות מידע לבין המימוש שראינו בעזרת ‪ selector‬בעל ‪ m‬כניסות בקרה ו‬
‫‪ 2m‬כניסות מידע‪ ,‬ו ‪ decoder‬בעל ‪ n‬כניסות בקרה ו ‪ 2 n‬יציאות הם כלהלן ‪:‬‬
‫‪213‬‬
‫א‪ .‬ב ‪ selector‬עם ‪ n+m‬כניסות יש סדר גודל של ‪(n+m) 2n+m=(n+m)2n• 2m‬‬
‫שערים בעוד שבמבנה הכולל ‪ Decoder‬בעל ‪ n‬כניסות ובורר בעל ‪ m‬כניסות‬
‫יש רק סדר גודל של ‪ m2m+n2n‬שערים ) כל זאת‪ ,‬בנוסף ל ≈ ‪ 2n+m‬שערי‬
‫ה ‪ pull-down‬בצמתים( ‪.‬‬
‫ב‪ .‬מבחינה גיאומטרית קל יותר לממש שני התקנים )‪ Selector‬ו ‪( Decoder‬‬
‫מאשר בורר אחד גדול‪ (m+n)(2n+m) .‬לעומת ‪. 2n+m+m2m+n2n‬‬
‫ג‪ .‬מבנה של ‪ Selector‬ו‪ Decoder -‬מאפשר קריאת כתובות זיכרון עוקבות‬
‫במהירות רבה‪ ,‬כאשר משנים רק את כניסות הבקרה של ה ‪. selector‬‬
‫למעשה ‪ ,‬ניתן אף לצרף מספר ‪ Selectors‬ולבצע קריאות בו זמניות ‪.‬‬
‫החיסרון ב‪ : RO M -‬אין פישוט של הפונקציה !‬
‫החיסרון ב‪ : PLA -‬מספר המכפלות חסום ועלול שלא לכסות את כל‬
‫האפשרויות !‬
‫‪214‬‬
‫‪13‬‬
‫שקף ריק‬
‫‪215‬‬
‫שקף ריק‬
‫‪216‬‬
‫‪14‬‬
‫שקף ריק‬
‫‪217‬‬
‫שקף ריק‬
‫‪218‬‬
‫‪15‬‬
‫שקף ריק‬
‫‪219‬‬
‫‪16‬‬