sopc booklet

62
Technion Israel Institute of Technology High Speed Digital Systems Laboratory Department of Electrical Engineering http://diglab.technion.ac.il High Speed Digital Systems Laboratory, EE department, Technion city, Haifa 32000, Israel Tel. 04-8294664/789/794 מעבדות2 , 3 המעבדה הספרתית ניסויSystem on Programmable Chip גרסה2.4 מרץ2009 הערות לחוברת נא לשלוח ל אורלי- [email protected] או לאינה[email protected]

Upload: muminaba

Post on 07-Apr-2015

75 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Sopc Booklet

Technion – Israel Institute of Technology High Speed Digital Systems Laboratory

Department of Electrical Engineering http://diglab.technion.ac.il

High Speed Digital Systems Laboratory, EE department, Technion city, Haifa 32000, Israel

Tel. 04-8294664/789/794

‏‏

3, 2מעבדות הספרתיתהמעבדה

ניסוי

System on Programmable Chip

2.4גרסה 2009 מרץ

הערות לחוברת נא לשלוח [email protected] -אורליל

[email protected] –או לאינה

Page 2: Sopc Booklet

‏2‏12/3/09‏‏

:System On Chip -מטרת הניסוי

תכנוןsystem המכיל בתוכו אלמנטים של חומרה ותוכנה, ב מתכנתמלא על רכי.

רה ויישום הכflow של חומרה ותוכנה ושילובם.

של חברת רכיב מתכנת מבוסס עלכרטיס חומרה ה והרצת התכנון עלטעינהXilinx

. PowerPC ימעבד המכיל בתוכו, Virtex II proמסוג

:אופן ביצוע הניסוי

חוברת הדרכה את ,(4,5עמודים ) הנחיות הבטיחותא את לפני תחילת הניסוי חובה לקר

. דפי נתונים של הרכיבואת

שעות במעבדה 4 יםלכל חלק מוקצ, נפרדים( 'ב –ו ' א)הניסוי מתחלק לשני חלקים.

ח מכין לא "דו ללא, בחוברת 3בפרק כמפורט הכנהח "של הניסוי יש להכין דו' לחלק א

.יתבצע הניסוי

ח מכין לא "דו ללא, בחוברת 6 פרקהכנה כמפורט בח "יש להכין דושל הניסוי ' בלחלק

.יתבצע הניסוי

לממש יהיה עליהשל הניסוי כל קבוצה תקבל משימה מהמדריך אותה ' בחלק ב.

ח מסכם"דו למדריך של הניסוי יש להגיש' תוך שבועיים מביצוע חלק ב.

. טיםרסברים מפושבוצעו במעבדה וה כל המשימותשל תדפיס ח המסכם יכלול"הדו

315-1הניסוי מתקיים בבנין פישבך חדר.

-בקישור הנמצא האלקטרוני המשוב טופס את למלא יםמתבקש יםסטודנט/http://www2.ee.technion.ac.il/Labs/EELabs ,אנונימי באופן ממולא הטופס .

.חלשב גם כמו ולשפר לתקן מנת על לתגובותיכם זקוקים אנו

Page 3: Sopc Booklet

‏3‏12/3/09‏‏

:ייניםתוכן ענ

‏4‏..........................................................‏הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיותהנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות‏6 ....................................................................................................... תאור סביבת הניסוי‏.1

‏6‏..........................................................................................‏.רכיבים מתכנתים‏.1.1

‏7‏.......................................................................................‏הרכיב שאיתו נעבוד‏.1.2

‏7‏......................................................................................תאור חומרת הכרטיס‏.1.3

‏8‏....................................................................................‏.תיאור סביבת הפיתוח‏.1.4

‏VHDL ..................................................................................................... 9מבוא לשפת ‏.2‏16 ......................................................................................................... 'ח מכין חלק א"דו‏.3‏19 ......................................................................... ביצוע הניסוי במעבדה –מפגש ראשון ‏.4

‏19‏.................................................................................‏'חלק א –מפגש ראשון ‏.4.1

‏20‏...............................................................‏1שלב –' חלק א –מפגש ראשון ‏.4.1.1

‏29‏...............................................................‏2שלב –' חלק א –מפגש ראשון ‏.4.1.2

‏33‏...............................................................‏3שלב –' חלק א –מפגש ראשון ‏.4.1.3

‏47‏.................................................................................‏'חלק ב –מפגש ראשון ‏.4.2‏52 ...................................................................................................... 'ח מסכם חלק א"דו‏.5‏55 ..................................................................... .עיבוד מקבילי ושיתוף זכרון –מפגש שני ‏.6

‏55‏...................................................................................................‏מוטיבציה‏6.1

‏55‏...............................................‏ניהול זיכרון ותקשורת במערכת מרובת מעבדים‏6.2

‏57‏.............................................................................................‏שיטות סנכרון‏6.3

‏57‏.............................................................................................‏מבנה המערכת‏6.4‏62 ......................................................................................................... 'ח מכין חלק ב"דו‏.7‏62 ................................................................................ 'מסכם חלק ב ח"מהלך הניסוי ודו‏.8

Page 4: Sopc Booklet

‏4‏12/3/09‏‏

מכון טכנולוגי לישראלמכון טכנולוגי לישראל -הטכניון -הטכניון

הפקולטה להנדסת חשמלהפקולטה להנדסת חשמל

מעבדות ההוראה מעבדות ההוראה

‏‏הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות

::עשה ואל תעשהעשה ואל תעשה

. . בקורס הדרכת בטיחות בחשמלבקורס הדרכת בטיחות בחשמלעובר עובר לבצע ניסוי במעבדה ללא קבלת ציוןלבצע ניסוי במעבדה ללא קבלת ציון" " איןאין"" ..11

..כפי שנלמדו בקורס בטיחותכפי שנלמדו בקורס בטיחותלקיים את הוראות הבטיחות לקיים את הוראות הבטיחות במעבדה על הסטודנטיםבמעבדה על הסטודנטים ..22

..ביחידותביחידות אין לבצע פעילות במעבדהאין לבצע פעילות במעבדה ..33

..יש לידע את המדריך על מצב מסוכן וליקויים במעבדה או בסביבתהיש לידע את המדריך על מצב מסוכן וליקויים במעבדה או בסביבתה ..44

בטיחות חשמלבטיחות חשמל

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

. . התחשמלותהתחשמלות

כל הכבלים בניסוי כל הכבלים בניסוי . . הניסוי כולל מחשב ומדגם ניסוי המורכב מכרטיס הדגמה ומסךהניסוי כולל מחשב ומדגם ניסוי המורכב מכרטיס הדגמה ומסך ..22

(.(.לא של המחשב ולא של המדגםלא של המחשב ולא של המדגם))או לנתקם או לנתקם //וו ואין לשנותםואין לשנותםמחוברים מחוברים

..במידה ואחד החיבורים מנותק יש לקרוא למדריךבמידה ואחד החיבורים מנותק יש לקרוא למדריך ..33

..לקרוא למדריךלקרוא למדריךאו המחשב אלא או המחשב אלא //אין לנסות לתקן תקלה כלשהי במערכת הניסוי ואין לנסות לתקן תקלה כלשהי במערכת הניסוי ו ..44

!!אסור לפרק את המחשב או את מערכת הניסויאסור לפרק את המחשב או את מערכת הניסויבשום מקרה בשום מקרה ..55

. . מפסק זרם ראשי בארון חשמל נעול במסדרון ליד דלת הכניסה למעבדהמפסק זרם ראשי בארון חשמל נעול במסדרון ליד דלת הכניסה למעבדה - -315315חדר חדר ..66

..מפתח בקופסה ליד דלת הכניסהמפתח בקופסה ליד דלת הכניסה

..מפסק זרם ראשי בארון חשמל שליד דלת כניסה למעבדהמפסק זרם ראשי בארון חשמל שליד דלת כניסה למעבדה - -1-1-315315חדר חדר

זרם החשמלזרם החשמל קקניתוניתו –– םםלחצן חירולחצן חירו

..זהה את מקומוזהה את מקומו ––החשמל החשמל קקכפתור אדום לניתוכפתור אדום לניתו –– םםליד דלת הכניסה יש לחצן חירוליד דלת הכניסה יש לחצן חירו 315315ר ר בחדבחד

בטיחות אש ועזרה ראשונהבטיחות אש ועזרה ראשונה

. . בכניסה למעבדה ממוקם מטף כבוי אשבכניסה למעבדה ממוקם מטף כבוי אש ..11

. . 308308מטף נוסף בהמשך הפרוזדור לעבר מעבדה כללית מטף נוסף בהמשך הפרוזדור לעבר מעבדה כללית

..אצל אינה או ברוריהאצל אינה או ברוריה 318318תיק עזרה ראשונה נמצא בחדר תיק עזרה ראשונה נמצא בחדר ..22

Page 5: Sopc Booklet

‏5‏12/3/09‏‏

‏‏םםיציאות‏חירויציאות‏חירו

זהה אותןזהה אותן –– םםשנן דלתות יציאת חירושנן דלתות יציאת חירובקומה יבקומה י ..11

םםלפתיחתן ניתן להיעזר במפתחות החירולפתיחתן ניתן להיעזר במפתחות החירו. . שאינן בשימוש שוטף נעולותשאינן בשימוש שוטף נעולות םםדלתות החירודלתות החירו ..22

..שימוש במפתחות יגרום להפעלת צופרשימוש במפתחות יגרום להפעלת צופר. . הממוקמים בקופסא הצמודה לדלתהממוקמים בקופסא הצמודה לדלת

יש להתפנות מיד מהמעבדה דרך פתח יש להתפנות מיד מהמעבדה דרך פתח , , כגון שריפהכגון שריפה, , חירום הדורש פינויחירום הדורש פינוי עעבאירובאירו ..33

..החירום הנגיש ביותרהחירום הנגיש ביותר

‏‏םםדיווח‏בעת‏אירוע‏חירודיווח‏בעת‏אירוע‏חירו

. . ראה לוח בטיחות במעבדהראה לוח בטיחות במעבדה

Page 6: Sopc Booklet

‏6‏12/3/09‏‏

סביבת הניסויתאור .1

תכנתים ים מרכיבי .1.1‏

י‏שליטה‏"שעלוגיות‏מיחידות‏בנויים‏רכיבים‏אלה‏.‏ניתנים‏לתכנותהתכנתים‏הם‏רכיבים‏ירכיבים‏מ

.‏ניתן‏ליצור‏פונקציות‏שונות‏ןבחיבוריות‏ביניה

‏‏

‏-האחד‏מבוסס‏על‏זיכרון‏מחיק‏והשני‏על‏זיכרון‏קבוע‏ .כיבים‏מתוכנתיםקיימים‏שני‏סוגים‏עיקריים‏של‏ר

בוסס‏זיכרון‏מהלעומת‏רכיב‏, ברגע‏כיבוי‏המתח‏בושמבוסס‏זיכרון‏מחיק‏יאבד‏את‏המידע‏‏רכיב. לא‏מחיק

רכיבים‏מבוססי‏זיכרון‏קבוע‏כוללים‏פחות‏‏,לרוב. גם‏לאחר‏כיבוי‏המתחבו‏שקבוע‏השומר‏על‏המידע‏

אך‏לעיתים‏קיימת‏חפיפה‏ביניהם‏כאשר‏מדובר‏בכמות‏, לעומת‏רכיבי‏זיכרון‏מחיק,‏יותפנימ‏יחידות

.‏נמוכה

שהוא רכיב מתוכנת בעל , FPGA (Field Programmable Gate Arrays) נתמקד ברכיב, עתה

‏:קיבולת גבוהה

פסקים‏היחידות‏מחוברות‏ביניהן‏בעזרת‏מטריצת‏חיבורים‏ומ.‏מורכב‏מיחידות‏בסיסיות‏FPGAרכיב‏

‏‏.הניתנים‏לשינוי‏מספר‏רב‏של‏פעמים

:‏היחידות‏הבסיסיות‏הן.‏סוגי‏היחידות‏וכמותן‏תלויות‏ביצרן‏ובסוג‏הרכיב

יחידות‏לוגיקה‏‏

זיכרון‏יחידות‏‏

‏(פלט‏/קלט‏)‏I/Oיחידות‏‏

מטריצת‏חיבורים‏

עים‏את‏אנו‏קוב‏LUT-י‏טעינת‏ערכים‏ל"ע.‏LUT (Lookup table)כ‏על‏"יחידות‏לוגיקה‏מבוססות‏בד

וכך‏ליצור‏פונקציות‏(‏FF)ניתן‏לחבר‏לדלגלגים‏‏LUT-את‏היציאות‏של‏ה.‏שתבוצעהלוגית‏הפונקציה‏

‏.סינכרוניות

כאשר‏את‏,‏(למעשה‏שני‏מעבדים‏כאלה)‏PowerPCהמכיל‏בתוכו‏מעבד‏מסוג‏‏FPGAאנו‏נתכנת‏רכיב‏

.‏Cואת‏המעבד‏בשפה‏כדוגמת‏‏VHDLהרכיב‏עצמו‏מתכנתים‏בשפה‏כדוגמת‏

טעינת‏מטריצת‏החיבורים‏שקובעת‏את‏החיבוריות‏של‏,‏LUT's -ת‏הרכיב‏פירושו‏טעינת‏ערכים‏לתכנו

(.‏במידה‏וקיימים)הפנימיים‏‏הזיכרונותהיחידות‏בתוך‏הרכיב‏וטעינת‏

‏FPGAתאור‏כללי‏של‏

Page 7: Sopc Booklet

‏7‏12/3/09‏‏

? FPGAרכיב קובץ לטעינת כיצד נוצר

תוכנות‏‏נכתבו,‏לשם‏כך.‏א‏משימה‏מסובכתיצירת‏חיבורים‏מתאימים‏למימוש‏תכנון‏מסוים‏הי

התוכנות‏מאפשרות‏‏.למימוש‏פיזי‏ברכיב‏HDL))קוד‏בשפה‏עילית‏מתרגמות‏‏מיוחדות‏אשר

.‏‏יאופטימאללמשתמש‏גמישות‏בהתאמת‏הרכיב‏לצרכיו‏לשם‏ביצוע‏

הרכיב שאיתו נעבוד .2.1

‏.xc2vp30ff896-7ומספרו‏‏Virtex2Proממשפחת‏‏Xilinxהרכיב‏עימו‏נעבוד‏הוא‏רכיב‏של‏חברת‏

ברגע‏שננתק‏.‏ימפלמנטציה‏מחדשאי‏המשתמש‏בכל‏"הנטען‏ע‏SRAMזיכרון‏מסוג‏‏עלמבוסס‏‏רכיב‏זה‏

‏.ת‏אספקת‏המתח‏לרכיב‏המימוש‏שצרוב‏בו‏ימחקא

‏תאור חומרת הכרטיס .3.1

‏Xilinxשל‏חברת‏XUP Virtex-II Pro Development Boardהניסוי‏יבוצע‏על‏כרטיס‏

‏:הבאים‏הכרטיס‏כולל‏את‏הרכיבים

רכיב‏FPGA‏‏:Virtex-II Proמעבדי‏‏2עם‏‏PowerPC 405.

2GBזכרון‏‏DDR SDRAM.

4‏LEDs.

4מתגים‏.

5כפתורי‏לחיצה‏.

100גביש‏המייצר‏אות‏שעון‏בתדר‏MHz.

2למחבר‏טורי‏מסוג‏‏ותכניס‏PS2(.עכבר/מקלדת)‏

חיבור‏JTAGלצריבת‏הרכיבים‏.

10/100רכיב‏ Ethernet PHY.

:‏ניתן‏גם‏להתבונן‏באיור.‏ורכיבים‏נוספים

Page 8: Sopc Booklet

‏8‏12/3/09‏‏

‏. תיאור סביבת הפיתוח .4.1

. EDK (Embedded Development Kit)‏-כלי‏הפיתוח‏העיקרי‏שלנו‏הינו‏ה

מערכת‏המכילה‏מעבד‏ Embedded (‏לתכנון‏מערכת‏Xilinxהינו‏כלי‏הפיתוח‏של‏חברת‏‏EDK-ה

.‏Xilinxשל‏חברת‏‏FPGAברכיבי‏‏םהניתנת‏ליישו(‏ומשלבת‏חומרה‏ותוכנה‏‏םוהתקנים‏היקפיי

כמו‏גם‏את‏,‏Embeddedוהקומפוננטות‏הבסיסיות‏לפיתוח‏מערכת‏מכיל‏את‏כל‏הכלים‏‏EDK-ה

מאפשר‏אינטגרציה‏קלה‏‏EDK-ה.‏שהמשתמש‏יוצר‏בעצמוהאפשרות‏להוספה‏קלה‏של‏קומפוננטות‏

.‏ת‏השלמהשל‏חומרה‏ותוכנה‏שיוצרים‏את‏המערכבין‏המרכיבים‏השונים‏

תוכלו‏לזהות‏בו‏את‏תהליך‏.‏התבוננו‏בציור‏הבא,‏משתלב‏בתכנון‏EDK-כיצד‏הכדי‏להבין‏טוב‏יותר‏

סגול‏)‏EDK-ושילובם‏דרך‏ה(‏ירוק‏משמאל)‏ תהליך‏יצירת‏התוכנה,‏(כחול‏מימין)יצירת‏החומרה‏

(.‏במרכז

‏‏

‏Debugזהו‏למעשה‏כלי‏.‏ChipScope Pro‏-מקושר‏לכלי‏נוסף‏בו‏נשתמש‏בניסוי‏זה‏והוא‏ה‏EDK-ה

נוכל‏לדגום‏סיגנלים‏ולראות‏אותם‏בזמן‏אמת‏על‏‏וב,‏של‏חומרה‏ותוכנה‏משולב‏debuggingהמאפשר‏

.‏המסך

. הסבר נוסף על כלים אלה וסביבת הפיתוח יינתן במהלך הניסוי

Page 9: Sopc Booklet

‏9‏12/3/09‏‏

VHDLמבוא לשפת .2

.‏חומרהעילית‏‏לתיאור‏‏ת‏תכנותהיא‏שפ‏VHDLשפת‏

מגבלות‏מסוימות‏ניתן‏לתרגם‏את‏ב.‏השפה‏מאפשרת‏לתכנן‏ולבצע‏סימולציה‏של‏מערכות‏מורכבות

קוד‏הכתוב‏בהתאם‏לחוקי‏סינתזה‏נקרא‏.לסכמה‏חשמלית‏באמצעות‏כלי‏סינתזה‏VHDL-התיאור‏ב

RTL.‏

אתם‏יכולים‏לדלג‏על‏חלק‏זה‏ולחזור‏.‏VHDLבדפים‏הבאים‏תוכלו‏למצוא‏הסבר‏קצר‏על‏תכנות‏בשפת‏

.‏אליו‏כאשר‏הדבר‏יהיה‏רלוונטי

ENTITY

יש‏הגדרה‏של‏המנשק‏שלו‏לשאר‏חלקי‏‏ENTITYלכל‏.‏ENTITYנקרא‏‏VHDL‏-בלוק‏בסיסי‏‏ב

.‏Ports))‏פורטים‏מנשק‏זה‏נקרא‏.‏המערכת

‏-יכול‏להכיל‏בלוקים‏פנימיים‏‏ENTITY‏-בו‏כל‏בלוק‏,‏תומכת‏במימוש‏היררכי‏ VHDLשפת‏

ENTITIES‏נוספים‏.

:‏פורטיםסוגי‏

port‏כניסה‏IN‏

port‏יציאה‏OUT‏

portכיווני‏-דו‏INOUT‏‏

portמסוג‏‏ BUFFERפורט‏יציאה‏שהדגימה‏שלו‏נכנסת‏חזרה‏לEntity‏.

ENTITY ‏לדוגמא‏:

1 ENTITY registered_mux IS

2 PORT (

3 In1 : IN std_logic_vector (3 DOWNTO 0);

4 In2 : IN std_logic_vector (3 DOWNTO 0);

5 sel : IN std_logic;

6 rst : IN std_logic;

7 clk : IN std_logic

8 mux_out : OUT std_logic_vector (3 DOWNTO 0);

9 );

סיגנלי‏‏-הפורטים‏‏מוגדרים‏3-8בשורות‏.‏registered_mux‏ בשם‏ENTITYמוגדר‏‏1‏הבשור

.‏םשלה‏יםהטיפוסו‏OUT‏‏-ו‏‏INסוג‏מ‏ENTITY‏‏-כניסה‏ויציאה‏של‏ה

ARCHITECTURE

.‏‏ארכיטקטורה‏‏–architectureנקרא‏‏‏ENTITY-המבנה‏הפנימי‏של‏ה\תיאור‏ההתנהגות

שימוש‏בבלוקים‏)וגם‏תאור‏מבני‏‏(הפונקציה‏עצמהמימוש‏)ארכיטקטורה‏יכולה‏להכיל‏תאור‏התנהגותי‏

.‏(אחרים

Page 10: Sopc Booklet

‏10‏12/3/09‏‏

‏להגדיר‏בתוכה‏ניתןכמו‏כן‏‏,ENTITYלהשתמש‏בסיגנלים‏שהוכרזו‏ב‏ניתןארכיטקטורה‏במימוש‏ה

.‏או‏קומפוננטות‏פנימיות\יכולים‏לקשר‏בין‏תהליכים‏פנימיים‏וסיגנלים‏פנימיים‏אשר‏

:‏לארכיטקטורה‏התנהגותית‏דוגמא

1 ARCHITECTURE mux_arch OF registered_mux IS

2 signal tmp : std_logic_vector (3 DOWNTO 0);

3 begin

4 tmp <= in1 when sel = '0' else

5 in2;

6 process (clk)

7 begin

8 if clk'event and clk = '1' then

9 if rst = '1' then mux_out <="0000";

10 else mux_out<=tmp;

11 end if;

12 end if;

13 end process;

14 END ARCHITECTURE mux_arch;

.‏registered_mux‏ENTITY‏‏-ה‏עבור‏mux_arch‏בשםמוכרזת‏הארכיטקטורה‏‏1בשורה‏

.‏tmpשל‏הארכיטקטורה‏בשם‏מוגדר‏סיגנל‏פנימי‏‏2בשורה‏

.‏ mux-המימוש‏של‏ה‏‏מוגדר‏4-5‏ות‏בשור

.‏סינכרוני‏Reset))מוגדר‏המימוש‏של‏הרגיסטר‏עם‏אתחול‏‏6-13‏ותבשור

COMPONENT

.‏פעילות‏ההתקן‏של‏מבני‏תיאורל‏מוגדר‏בתוך‏ארכיטקטורה‏ומשמש

.‏ביניהם‏הפנימיים‏הקשריםתוך‏ארכיטקטורה‏ואת‏ב‏קיימיםה‏בלוקיםה‏את‏מתאר‏

.‏אחרים‏ENTITY'Sב,‏מסוים‏ENTITYלהשתמש‏בתוך‏‏מאפשר

:‏HALFADDERבעזרת‏‏FULLADDERשל‏‏‏מבני מימוש‏לדוגמא‏

1 architecture STRUCT of FULLADDER is

2.component HALFADDER

3.port (A, B : in std_logic;

MUX IInn11

IInn22

SSEELL

TTMMPP Register MMUUXX__OOUUTT

RRSSTT

Page 11: Sopc Booklet

‏11‏12/3/09‏‏

4. SUM, CARRY : out std_logic);

5. end component;

6. component ORGATE

7. port (A, B : in std_logic;

8. RES : out std_logic);

9. end component;

10. signal W_SUM, W_CARRY1, W_CARRY2: std_logic;

11. begin

12 MODULE1: HALFADDER

13 port map(A, B, W_SUM, W_CARRY1 );

14 MODULE2: HALFADDER

15 port map (W_SUM, CARRY_IN,

16. SUM, W_CARRY2 );

17. MODULE3: ORGATE

18 port map ( W_CARRY2, W_CARRY1, CARRY );

19. end STRUCT;

.‏‏ORושער‏‏ Half adderבאמצעות‏שני‏‏Full adderארכיטקטורה‏מבנית‏זו‏מממשת‏

.‏CARRY-ו‏SUMן‏והיציאות‏ה‏B-ו‏Aסיגנלי‏הכניסה‏הם‏

‏W_CARRY2-ו W_SUM, W_CARRY1 ‏‏הםשמקשרים‏בין‏בלוקים‏פנימיים‏הם‏גנלייהס‏

(.‏10מוגדרים‏בשורה‏)

.‏כולה(‏מודול)או‏בחבילה‏שהוצהרו‏בארכיטקטורה‏‏Components-ניתן‏להשתמש‏ב

בדוגמא‏)ניתנים‏שמות‏ייחודיים‏(‏12,14,17)שורות‏‏‏–instantiations-בחלק‏ה

.‏(- 2,6בשורות‏)בנוסף‏לשמות‏שנקבעו‏בהצהרה‏(‏ MODULE1, MODULE 2שלנו

:‏דרך‏נוספת‏לכתוב‏היא‏12-13את‏שורה‏:‏הערה

MODULE1: HALFADDER

port map (A => A,

SUM => W_SUM,

B => B,

CARRY => W_CARRY1 );

.במקרה‏זה‏לא‏חייבים‏לשמור‏על‏סדר‏הפורטים‏כפי‏שהם‏מופעים‏בהצהרה

( PROCESS)תהליך

‏.תהליך‏מוגדר‏בתוך‏ארכיטקטורה‏ומייצג‏יחידת‏ביצוע‏בסיסית‏בשפה

מממש‏מתורגמת‏לפקודות‏‏התהליךהפונקציה‏ש.‏התנהגות‏של‏רכיב\תיאור‏הפעולה‏מאפשר‏תהליך

ואילו‏הפקודות‏בתוכן‏מבוצעות‏באופן‏,‏שמבוצעים‏במקביל‏זה‏לזה‏statementsתהליכים‏הם‏.‏סדרתיות

.‏וסידרתי‏זו‏אחר‏ז

בתום התהליךעדכון‏הערך‏החדש‏מבוצע‏פיזית‏רק‏,‏אם‏בתוך‏התהליך‏מבוצעות‏השמות .

Page 12: Sopc Booklet

‏12‏12/3/09‏‏

רשימת‏המשתנים‏המופיעה‏בסוגריים‏לאחר‏)לתהליכים‏יכולה‏להיות‏רשימת‏רגישויות‏

.‏התהליך‏מופעל‏ברגע‏שחל‏שינוי‏בסיגנל‏המופיע‏ברשימת‏הרגישויות(.‏Processהמילה‏

ויוכל‏,‏ועל‏כותב‏הקוד‏להחליט‏מי‏ישתייך‏ומי‏לא,‏ותכל‏אות‏יכול‏להוות‏משתנה‏רגיש

אחד‏מהאותות‏שמשתנים‏‏את‏במידה‏ונשים‏ברשימת‏הרגישויות.‏את‏התהליך"‏להפעיל"

שוב מה‏שיגרום‏לתהליך‏להתחיל‏מחדש‏‏–הערך‏‏יעודכןבתום‏התהליך‏,‏אותו‏תהליך‏בתוך

.ושוב

היא‏בעזרת‏משפטי‏,‏תמלבד‏רשימת‏רגישויו,‏לעצור‏ריצת‏תהליך\דרך‏נוספת‏להפעילwait‏

.‏שנראה‏בדוגמא

(.‏כמו‏בלולאה)‏כל הזמןתהליכים‏ללא‏רשימת‏רגישויות‏מתבצעים‏

או‏רק‏.‏)כלומר‏אחד‏ממשתני‏רשימת‏הרגישויות‏הוא‏השעון,‏ישנם‏תהליכים‏מסונכרנים

‏(.הוא

‏כל‏התהליכים‏במערכת‏רצים‏במקביל.

:דוגמא -תהליך סינכרוני

:‏תהליך‏סינכרוניישנן‏שתי‏שיטות‏לתיאור‏

:‏waitבאמצעות‏משפט‏ .1

Process

Begin

Wait until CLK’ event and CLK=’1’;

--statements

end process

:‏ifבאמצעות‏מבנה‏ .2

.‏הראשי‏if‏–מחוץ‏למבנה‏ה‏‏statementsהראשי‏ואסור‏שיהיו‏עוד‏‏ if-ל‏ elseבמקרה‏זה‏אין‏‏‏

process (CLK, rst)

begin

if (rst = ‘1’) then

Q <= ‘0’;

elsif (CLK’event and CLK = ‘1’) then

Q <= D;

end if;

end process;

אשר‏מהווה‏סיגנל‏‏Rstוגם‏משתנה‏בשם‏(‏אות‏השעון)‏‏CLK:‏ברשימת‏הרגישויות‏‏נמצאים‏2בדוגמא‏

RESETשמאפס‏את‏‏Q‏ -כלומר‏סיגנל‏ה,‏באופן‏אסיכנרוני‏Rst בנוסף‏,‏להפעיל‏את‏התהליך‏יכול‏

.‏לעליית‏השעון

.‏מתבצעת‏בתום‏התהליך‏Q ‏-השמת‏הערך‏החדש‏ל‏,‏בכל‏מקרה

: דוגמא –תהליך אסינכרוני

process (A, B)

begin

int1<= A xor B;

int2<= A and B;

end process;

בתום ‏במקבילצעות‏מבו‏int2‏-ול‏‏int1‏-ההשמות‏ל‏.‏Bאו‏\ו‏Aהתהליך‏מופעל‏בעת‏שינוי‏ערך‏

.‏רק‏האחרונה‏היא‏זו‏שתבוצע‏בפועל,‏אם‏היו‏מספר‏השמות‏לאותו‏סיגנל.‏התהליך

Page 13: Sopc Booklet

‏13‏12/3/09‏‏

-caseו ifמשפטי

אשר‏‏Cבדומה‏לשפת‏‏case-ו‏If-elseלהשתמש‏במשפטי‏,‏ניתן‏לשם‏תיאור‏התנהגות‏בתוך תהליך

.‏מבוצעים‏באופן‏סידרתי

IF-Else‏:

if condition then

sequential statements

[elsif condition then

sequential statements ]

[else

sequential statements ]

end if; לכן‏חשוב‏‏trueעד‏שמגיעים‏לערך‏‏לפי סדר כתיבתםים‏נבדקים‏if‏-תנאיי‏ה‏.‏התנאי‏הוא‏ביטוי‏בוליאיני

.‏‏הוא‏זה‏שיבוצע(‏דאם‏יש‏יותר‏מאח)מבין‏הנכונים‏‏הראשוןכי‏,‏מאוד‏הסדר‏בו‏נכתבו

‏דוגמא‏

process (A)

begin

If A = '1' then

B <= '0;'

Else

B <= '1;'

end if;

;End process‏‏.‏Aלהיות‏ההפך‏מסיגנל‏‏Bזה‏יגרום‏לסיגנל‏‏אסינכרוני‏תהליך

CASE‏:

case expression is

when choices =>

sequential statements

when choices =>

sequential statements

-- branches are allowed

[ when others => sequential statements ]

end case;

‏statement-אסור‏ששני‏תנאים‏יחפפו‏וה.‏המתאים‏statement-יופעל‏ה‏‏expressionבהתאם‏לערך‏ה

.‏‏מתקיימיםיבוצע‏רק‏כשכל‏השאר‏לא‏'‏when others'אחרי‏

( Data Types)נתונים סוגי

:‏הבאים‏סוגי‏נתוניםאנו‏נשתמש‏בבניסוי‏

Integer, unsigned, std_logic, std_logic_vector‏.

Integer(‏הטווח‏ניתן‏לשליטה‏על‏ידי‏המשתמש)‏32^0-2בתחום‏‏מספר‏שלם‏

‏Integerדוגמה‏לסיגנל‏מסוג‏

signal int: integer range 0 to 15‏

Std_logic‏סוג‏נתונים‏שיכול‏לקבל‏את‏הערכים‏הבאים‏:

Page 14: Sopc Booklet

‏14‏12/3/09‏‏

type STD_LOGIC is (

‘U’, -- uninitialized

‘X’, -- forcing unknown

‘0’, -- forcing 0

‘1’, -- forcing 1

‘Z’, -- high impedance

‘W’, -- weak unknown

‘L’, -- weak 0

‘H’. -- weak 1

‘-‘); -- don’t care

‏Z,0,1הם‏רק‏במקרה‏של‏כתיבה‏לסינתזה‏הערכים‏הרלוונטיים‏

‏Std_logicדוגמה‏לסיגנל‏מסוג‏

signal tmp : std_logic;

Std_logic_vectorוקטור‏של‏‏std_logic‏(.‏אורכו‏נקבע‏על‏ידי‏המשתמש)‏

‏Std_logic_vectorדוגמה‏לסיגנל‏מסוג‏

signal tmp : std_logic_vector (15 DOWNTO 0);

‏‏Std_logic_vector -ו‏Std_logicלא‏ניתן‏לבצע‏פעולות‏אריתמטיות‏על‏

Unsignedמסוג‏וקטור‏בינארי‏כמו‏‏טיפוס‏Std_logic_vectorאשר‏ניתן‏לעשות‏עליו‏פעולות‏‏‏

נוחות‏ (ב"קטן‏מ‏וכיו\גדול‏מ)והבדיקות‏עליו‏(‏ואורכו‏גם‏ניתן‏לשליטה‏על‏ידי‏המשתמש)אריתמטיות‏

.‏קטוריםאולם‏ההצבות‏לתוכו‏הן‏בוו,‏להסתכל‏עליו‏כעל‏מספר‏דצימליתן‏שכן‏ני

:‏Unsignedדוגמה‏לסיגנל‏מסוג‏

;SIGNAL tmp : unsigned(7 DOWNTO 0)‏‏‏

ספריות וחבילות

VHDL Package‏אוסף‏של‏סוגי‏נתונים‏ופונקציות‏שימושיות‏מגדיר‏.

.‏‏‏ieee.std_logic_1164‏בשםבחבילה‏‏ieeeבספרית‏‏מוגדר‏std_logicלמשל‏

‏:שלנו‏VHDLלהשתמש‏בטיפוס‏זה‏עלינו‏להצהיר‏בתחילת‏קובץ‏‏מ"עלכן‏

library ieee;

use ieee.std_logic_1164.all;

:חבילות‏נוספות‏שימושיות‏לנו

מכילה‏פונקציות‏אריתמטיות‏‏- std_logic_arith

.‏integer-ו‏std_logic,‏unsignedלטיפוסים‏כמו‏,‏המרות‏והשוואות

std_logic_unsigned‏חבילה‏נוספת‏שימושית‏בדומה‏לקודמת‏.

‏:ל‏בראש‏קובץ‏נרשום"כדי‏להשתמש‏בחבילות‏הנ

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

Page 15: Sopc Booklet

‏15‏12/3/09‏‏

אופרטורים

.‏משתנים‏וקבועים,‏לים‏על‏סיגנליםהפוע,‏קיימות‏מספר‏מחלקות‏אופרטורים

Class

1. Logical operators and or nand nor xor xnor

2. Relational

operators = /= < <= > >=

3. Shift operators sll srl sla sra rol ror

4.Addition operators + = &

5. Unary operators + -

6. Multiplying op. * / mod rem

7. Miscellaneous op. ** abs not

.‏1ומשתנה‏בסדר‏יורד‏עד‏מחלקה‏‏7הקדימות‏הגבוהה‏ביותר‏היא‏למחלקה‏

‏הערות נוספות‏

יש‏לדאוג‏שרשימת‏,‏בכתיבה‏לתיאור‏לוגיקה‏קומבינטורית,‏על‏מנת‏למנוע‏שגיאות‏בסינתזה

את‏הערך‏שלו‏‏כל‏משתנה‏שקוראים,‏משמע‏‏–מלאהתהא‏,‏רונייםכרגישויות‏של‏תהליכים‏אסינ

סות‏יגרום‏מיידית‏הדבר‏מבטיח‏שכל‏שינוי‏בכני.‏יופיע‏ברשימת‏הרגישויות,‏בתוך‏התהליך

.‏לשינוי‏ביציאות

משפטי‏if, case, for שהם‏‏‏statementsרק‏בתוך‏תהליכיםאך‏ויופיעו‏,‏סדרתיים‏.

בקוד‏שכתבנו‏יש‏מספר‏ענפים‏ו‏מידהב(למשל‏if-elsif‏)...ובכל‏ענף‏מבוצעות‏השמות‏שונות‏

‏–במקרה‏שלא‏.‏תהיה‏השמה‏לכל‏סיגנלי‏היציאהיש‏לדאוג‏שאכן‏בכל‏ענף‏,‏לאותם‏סיגנלים

‏יםlatch-ה‏עבור‏אותם‏סיגנלים‏שלא‏קיבלו‏השמה‏בכל‏ענף‏וענף‏תפקידים‏latch‏יוצרובסינתזה‏

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

.‏סיגנלי‏היציאהלכל‏ (default assignments)ברירת‏מחדל‏השמות‏

Page 16: Sopc Booklet

‏16‏12/3/09‏‏

'ח מכין חלק א"וד .3

.‏אנו‏נרצה‏לעבור‏על‏החלקים‏העיקריים‏איתם‏נעבוד‏בניסוי‏זה

בי‏כל‏אחד‏ולענות‏על‏השאלות‏לג,‏לשם‏כך‏אתם‏מתבקשים‏לקרוא‏את‏דפי‏המידע‏המצורפים

.‏מהרכיבים

?FPGAמאילו‏יחידות‏בסיסיות‏מורכב‏רכיב‏מסוג‏ .1

‏_________________________________________________________________

_‏________________________________________________________________

עשות‏על‏מנת‏למחוק‏את‏מה‏עלינו‏ל?‏בו‏נשתמש‏בניסוי‏FPGA-על‏איזה‏סוג‏זיכרון‏מבוסס‏ה .2

?המימוש‏הצרוב‏בו

_____‏____________________________________________________________

________‏_________________________________________________________

_________________________________________________________________

:על‏שאלות‏הבאות‏ווענ‏XUPV2P_User_Guideצורפים‏המ‏מידעי‏הדפעיינו‏ב .3

:15-16בעמודים‏‏1-1י‏טבלה‏"עפ .1.3

(.XC2VP30שימו‏לב‏כי‏אנו‏מדברים‏על‏)?‏FPGA-מכיל‏ה‏Slicesכמה‏ .1.1.3

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________

?Multiplier Blocksכמה‏ .2.1.3

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?מה‏גודל‏הזיכרון‏שהוא‏מכיל .3.1.3

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?PowerPCכמה‏מעבדי‏ .4.1.3

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?למה‏משמש‏כל‏סוג?‏קיימים‏Serial Portsאילו‏סוגים‏של‏,‏17י‏עמוד‏"עפ .2.3

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_____________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏____________________________

Page 17: Sopc Booklet

‏17‏12/3/09‏‏

עבור‏כל‏?‏כמה‏ישנם‏מכל‏סוג?‏אילו‏שלושה‏התקנים‏נוספים‏קיימים,‏למעלה‏18י‏עמוד‏"עפ .3.3

?לוגי‏"0"מהו‏,‏אחד‏מהם

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

עמודים‏,‏PowerPC Processor Reference Guideעיינו‏בפרק‏הראשון‏בדפי‏המידע‏המצורפים‏ .4

:וענו‏על‏השאלות‏הבאות‏25-42

בכמה‏ביטים‏עובדת‏?‏PowerPC‏-בכמה‏ביטים‏עובדת‏הארכיטקטורה‏של‏משפחת‏מעבדי‏ה .1.4

?PPC405-הארכיטקטורה‏של‏ה

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

.על‏כל‏אחד‏,‏במילים‏שלכם,‏מעט‏ופרט?‏ים‏מגדירה‏משפחת‏המעבדיםדברים‏עיקרי‏6אילו‏ .2.4

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

_________________________________________________________

_________________________________________________________

___‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏______________________________________________________

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_______________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏__________________________

:ענו‏על‏השלות‏הבאות.‏PowerPC405מפורטים‏המאפיינים‏של‏‏32-33בעמודים‏ .3.4

?כמה‏רגיסטרים‏כלליים‏ישנם .1.3.4

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?Floating Pointהאם‏תומך‏בחישובי‏ .2.3.4

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?מה‏גודל‏כל‏אחד?‏משותפים‏או‏נפרדים‏Data Cache-ו‏Instruction Cacheהאם‏ .3.3.4

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏______________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏___________

.‏Busesהתקשורת‏במערכת‏שלנו‏תעשה‏באמצעות‏ .5

:ל‏השאלותוענו‏ע‏PLB-עיינו‏בעמוד‏הראשון‏בדפי‏המידע‏המצורפים‏על‏ה .1.5

.PPC405אליו‏יתחבר‏המעבד‏‏BUS-שימו‏לב‏כי‏זהו‏ה?‏PLBמהם‏ראשי‏התיבות‏ .1.1.5

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏

?באילו‏פעולות‏תומך‏וכמה‏מחזורים‏לוקחת‏הבחירה‏בין‏הפעולות,‏ה‏הוא‏מכילמ .2.1.5

Page 18: Sopc Booklet

‏18‏12/3/09‏‏

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

:על‏השאלות‏וענו‏OPB-עיינו‏בעמוד‏הראשון‏בדפי‏המידע‏המצורפים‏על‏ה .2.5

.אליו‏יתחברו‏הרכיבים‏האיטיים‏יותר‏BUS-זהו‏ה?‏OPBמהם‏ראשי‏התיבות‏ .1.2.5

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏

?ואיזו‏פעולות‏לוגיות‏הוא‏בעצמם‏מבצע,‏מה‏הוא‏מכיל .2.2.5

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

:השאלות‏וענו‏על‏PLB to OPB Bridge-עיינו‏בעמוד‏הראשון‏בדפי‏המידע‏המצורפים‏על‏ה .3.5

?וכיצד‏הוא‏מתנהג‏בכל‏קצה‏Bridge-מה‏תפקידו‏של‏ה .1.3.5

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

?תי‏הוא‏הכרחימ .2.3.5

_________________________________________________________

_________________________________________________________

‏______________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏___________________________________________

?OPB‏-ל‏PLBמה‏לדעתך‏ההבדל‏העיקרי‏בין‏ .3.3.5

_________________________________________________________

_________________________________________________________

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_________________________________________________________‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

Page 19: Sopc Booklet

‏19‏12/3/09‏‏

ביצוע הניסוי במעבדה –מפגש ראשון .4‏

נלמד‏להשתמש‏בכלים‏‏.מערכתלצורך‏תכנון‏ומימוש‏‏EDK-בתוכנת‏הבמהלך‏מפגש‏זה‏נלמד‏להשתמש‏

‏.התכנון‏ועד‏הצריבה‏על‏הכרטיס‏עצמו‏שלבנעבור‏צעד‏צעד‏משונים‏שלה‏וה

.‏חלקים‏2-מפגש‏זה‏יחולק‏ל

:‏לחלק‏הראשון‏שלושה‏שלבים

היא‏לבנות‏מערכת‏בסיסית‏המורכבת‏ממספר‏קומפוננטות‏‏המשימה‏שלנובשלב‏הראשון‏

.‏‏מותקיי(‏יחידות)

.‏אותה‏לצרכינו‏ונקנפג,‏(GPIO)בשלב‏השני‏נוסיף‏למערכת‏קומפוננטה‏קיימת‏נוספת‏

.‏משלנו‏VHDLשיכיל‏קוד‏,‏משלנו‏User Peripheralבשלב‏השלישי‏נוסיף‏למערכת‏

-ה,‏חומרה‏של‏המערכת‏שלנו‏בעזרת‏כלי‏חדש‏שנלמד‏DEBUGבחלק‏השני‏של‏מפגש‏זה‏נבצע‏

ChipScope‏.

‏ 'אחלק –מפגש ראשון .1.4

:‏המערכת‏שלנו‏תראה‏כך,‏בסוף‏כל‏השלבים.‏לחלק‏זה‏שלושה‏שלבים

‏ :‏המערכת‏בציור‏מכילה‏

PLB BUS

o מעבד‏PPC405‏‏+(JTAG PPC)

o ‏זיכרון‏‏יבלוק:BRAM CONTROLLER‏‏+BRAM

o PLB2OPB Bridge

OPB BUS

o UART

o GPIO‏

o MY IP

Proc_sys_reset

DCM

שאינן‏,‏הקומפוננטות‏האחרונות‏ברשימה‏2כולל‏)ה‏לתכנון‏קומפוננטה‏תוך‏כדי‏הוספתאנו‏נלמד‏על‏כל‏

.(‏נראות‏בציור

Page 20: Sopc Booklet

‏20‏12/3/09‏‏

‏ 1שלב –' חלק א –מפגש ראשון .1.1.4

‏:י‏לחיצה‏כפולה‏על‏אייקון‏התוכנה"ע‏EDK-הנפתח‏את‏תוכנת‏‏תחילה

‏‏‏‏‏‏‏

:‏נקבל‏את‏המסך‏הבא

‏‏

.‏OK‏ונלחץ‏(בתמונה‏כמו)‏Base System Builder wizard‏ נבחר

י‏שימוש‏"ע‏X:\part1להיות‏‏ונציין‏את‏מיקומו,‏system‏-כ‏החדש‏שלנו‏הפרויקטנקבע‏את‏שם‏‏כעת

‏…Browse-באופציית‏ה

.‏ונצביע‏על‏מיקום‏הקבצים‏עם‏הגדרות‏הכרטיס‏Use Repository paths-בחלון‏ה‏ vנסמן‏

.‏‏OKנלחץ‏

.‏NEXTיצירת‏תכנון‏חדש‏ונלחץ‏על‏בחלון‏הבא‏נבחר‏באופציה‏של‏

Page 21: Sopc Booklet

‏21‏12/3/09‏‏

:‏נמלא‏את‏השדות‏בחלון‏הבא‏בהתאם‏לציור.‏עליו‏נעבוד‏Board-כעת‏נבחר‏את‏ה

‏‏

.‏‏כעת‏עלינו‏לבחור‏את‏סוג‏המעבד‏עבור‏המערכת‏שלנו.‏NEXTנלחץ‏על‏

:‏סוגי‏מעבדים‏2ישנם‏‏System On Chipבמסגרת‏

1. Soft Coreכדוגמת‏‏MicroBlaze‏

2. Hard Coreכדוגמת‏‏PowerPC405.

:‏בהתאם‏לציור‏PowerPC-אנו‏נבחר‏ב

Page 22: Sopc Booklet

‏22‏12/3/09‏‏

‏‏

:‏נבצע‏זאת‏בהתאם‏לציור‏הבא.‏כעת‏עלינו‏לקנפג‏את‏המעבד.‏NEXTנלחץ‏על‏

Page 23: Sopc Booklet

‏23‏12/3/09‏‏

‏‏

(.‏DEBUG-ל‏JTAGבלוק‏)‏+‏PPCנוסיף‏למעשה‏למערכת‏שלנו‏מעבד‏מסוג‏‏ NEXTכאשר‏נלחץ‏על‏

:‏‏ים-Busשני‏,‏רנטיבאופן‏אינה,‏המערכת‏שלנו‏מכילה‏כבר

PLB (Processor Local Bus)זהו‏‏–‏Bus‏אליו‏יתחבר‏המעבד,‏מהיר‏.

OPB (On-chip Peripheral Bus)זהו‏‏–‏Busאליו‏יתחברו‏מרבית‏ה,‏איטי‏יותר‏-Peripherals‏‏.

.‏Peripheralsכעת‏נוסיף‏עוד‏מספר‏

:‏את(‏בקוביות‏המתאימות‏vי‏סימון‏"ע)נדפדף‏במסכים‏הבאים‏ונוסיף‏

RS232_Uart_1‏-זה‏יהיה‏ממשק‏ה.‏‏I/Oוהוא‏יחובר‏ל,‏שלנו‏-OPB:

Page 24: Sopc Booklet

‏24‏12/3/09‏‏

‏‏

:‏לדוגמא‏במסך‏הבא,‏בשאר‏הקומפוננטות‏v-אל‏תשכחו‏להוריד‏את‏ה

Page 25: Sopc Booklet

‏25‏12/3/09‏‏

‏‏

לבסוף‏נוסיף‏את.‏שאחריו‏כיםובמס

Plb_bram_if_cntlr64רון‏של‏זיכ‏בקר‏–‏KBוהוא‏יחובר‏ל,‏-PLB:

Page 26: Sopc Booklet

‏26‏12/3/09‏‏

.‏במסכים‏שיופיעו,‏בקוביות‏שלהם‏V-הרכיבים‏נבטל‏את‏ה‏לגבי‏כל‏שאר

י‏הציור‏"עפ‏RS232_UART_1שלנו‏להיות‏‏Standard Output-ואת‏ה‏Standard Input-נקבע‏את‏ה

:‏הבא

:‏עד‏שנגיע‏לחלון‏האחרון‏שיציג‏לנו‏את‏נתוני‏המערכת‏שיצרנו‏NEXTנלחץ‏על‏

Page 27: Sopc Booklet

‏27‏12/3/09‏‏

‏‏

(.‏ולשנות‏במידת‏הצורך‏Backאם‏לא‏תוכלו‏ללחוץ‏על‏,‏ערכת‏אצלכם‏זההוודאו‏שאכן‏המ)

.‏המערכת‏הראשונית‏שלנו‏נוצרה.‏FINISH-ו‏GENERATEנלחץ‏על‏

.‏כדי‏להתחיל‏ולעבוד‏על‏המערכת‏שיצרנו‏OKנלחץ‏על‏

.‏ל‏סביבת‏העבודה‏שלנועקצת‏

:‏בצד‏שמאל‏של‏המסך‏נראה‏את‏החלון‏הבא

Page 28: Sopc Booklet

‏28‏12/3/09‏‏

.‏IP Catalog-ו‏Applications,‏Project:תוויות‏3לחלון‏זה‏

בתווית‏Projectקובץ‏ת‏הקבצים‏העיקריים‏שנוצרו‏במערכת‏ביניהם‏ניתן‏לראות‏א‏MHS‏,

.‏הקשורים‏בחומרה,‏וכן‏נתונים‏נוספים‏על‏הפרויקט‏UCFקובץ‏ו‏‏MSSקובץ‏

DOUBLE CLICK‏אתם‏מוזמנים‏לפתוח‏ולהעיף‏מבט.‏על‏הקבצים‏יפתחו‏אותם‏בחלון‏מימין‏.

.‏נה‏או‏נתבונן‏בקבצים‏אלה‏בצורה‏מסודרת‏יותרבקרוב‏נש

בתווית‏Applicationsנוכל‏למצוא‏שם‏את‏קבצי‏ה.‏ישנם‏נתונים‏הקשורים‏בתוכנה‏-Source‏

.גם‏בקבצים‏אלה‏נטפל‏בהמשך.‏של‏התוכנה‏שתטען‏לתוך‏המעבד‏header-וה

בתווית‏IP Catalogושאותן‏ניתן‏‏,נוכל‏למצוא‏רשימה‏מלאה‏של‏כל‏הקומפוננטות‏הקיימות‏כבר‏

הם‏ראשי‏תיבות‏של‏‏IP).‏כאן‏תופיע‏גם‏הקומפוננטה‏שנייצר‏בהמשך.‏לצרף‏לפרויקט

Intellectual Propertyוהכוונה‏היא‏לפונקציה‏שנכתבה‏למטרת‏מימוש‏ב,‏-FPGA.)

(:‏‏System Assembly)כרגע‏מופיע‏לנו‏בחלון‏הימני‏תאור‏גרפי‏של‏המערכת‏

‏,‏ים-BUS-הקומפוננטות‏הנמצאות‏במערכת‏ואת‏החיבורים‏שלהם‏ל‏בחלון‏זה‏אנו‏יכולים‏לראות‏את

‏‏.ואחת‏לשנייה

(‏‏בניגוד‏לצורה‏שהיא‏ריקה‏מצבע)י‏צורה‏צבועה‏"מסוים‏מצוינת‏ע‏Bus-חיבור‏ל

ומשולש‏‏Masterריבוע‏משמעותו‏,‏Slaveעיגול‏משמעותו‏‏–הצורה‏מראה‏את‏אופי‏החיבור‏

.‏Targetמשמעותו‏

המסכם‏‏ח"דובש‏2-ו‏1‏הקומפוננטות‏הרשומות‏שם‏וענו‏על‏השאלות‏וודאו‏שאתה‏מזהים‏את‏כל

בסרגל‏‏Project-בחרו‏ב:‏תוכלו‏להיעזר‏בייצוג‏גרפי‏של‏המערכת‏שבנינו‏עד‏כה.‏סוף‏החוברתשב

.‏Generate and View Block Diagram‏-העליון‏ושם‏ב

(.‏Filters-מתחת‏ל,‏ראו‏עיגול‏ירוק‏בכותרת)‏Bus Interfaceבחלון‏זה‏אנו‏מסתכלים‏כרגע‏על‏

.‏‏Addresses-ו‏Ports:‏יש‏עוד‏שתי‏אופציות

.‏של‏כל‏הקומפוננטות‏שבמערכת‏והחיבורים‏ביניים‏Ports-מפורטים‏כל‏ה‏Ports‏-ב

.‏מפורט‏מרחב‏הכתובת‏עבור‏כל‏קומפוננטה‏Addresses-ב

.‏החלונות‏האלה‏בקרוב‏2-אנו‏ניגע‏ב

Page 29: Sopc Booklet

‏29‏12/3/09‏‏

2שלב –' חלק א –מפגש ראשון .2.1.4‏

.‏למערכת‏שלנו(‏IPנקראת‏גם‏)וניינים‏להוסיף‏קומפוננטה‏נוספת‏כעת‏אנו‏מע

ונרצה‏לקנפג‏אותה‏באופן‏,‏GPIO (General Purpose Input/Output)הקומפוננטה‏היא‏מסוג‏

כפתורים‏ומתגים‏)‏DIP Switches-ו‏Push Buttonsי‏"ע‏Board-מה‏Inputשיאפשר‏לנו‏לקבל‏

(.‏בהתאמה

:‏IP Catalogנבחר‏בתווית‏,‏בחלון‏השמאלי

‏‏

י‏"נוכל‏לעשות‏זאת‏ע.‏OPB_GPIO 3.01.bנבחר‏בקומפוננטה‏‏General Purpose IOתחת‏

DOUBLE CLICK ‏גרירה‏שלה‏לחלון‏הימניי‏"עאו‏,‏עליה‏.

.‏opb_gpio_0ונראה‏שאכן‏הקומפוננטה‏נוספה‏תחת‏השם‏,‏נעבור‏לחלון‏הימני

י‏שתי‏לחיצות‏נפרדות‏‏"ע,‏dip_push-ל‏opb_gpio_0‏-של‏הקומפוננטה‏מ‏Instance-נשנה‏את‏שם‏ה

.‏מחיקת‏השם‏הקיים‏ורישום‏השם‏החדש,‏(Nameתחת‏העמודה‏)על‏השם‏

-על‏ה‏Slaveכעת‏היא‏מוגדרת‏להיות‏.‏י‏לחיצה‏על‏העיגול‏המתאים‏לידה"ע‏OPB BUSנחבר‏אותה‏ל‏

OPB BUS.‏‏

Page 30: Sopc Booklet

‏30‏12/3/09‏‏

‏‏

(.‏Filters-מתחת‏ל,‏לחיצה‏על‏העיגול‏המתאים‏בכותרת)‏Ports-נעבור‏ל

נמצא‏,‏לכן.‏OPB_CLK-אל‏הקומפוננטה‏שלנו‏בתור‏ה‏sys_clk_sצה‏לחבר‏את‏השעון‏של‏המערכת‏נר

על‏מנת‏לראות‏את‏כל‏הפורטים‏של‏(.‏לחיצה‏על‏הריבוע‏ליד‏השם)ונרחיב‏אותה‏‏dip_pushאת‏

:‏כפי‏שניתן‏לראות‏בציור‏המצורף,‏Allונלחץ‏על‏‏Filters (Applied)‏הקומפוננטה‏נלחץ‏על

‏,‏sys_clk_sונחפש‏את‏‏Netבעמודה‏נלחץ‏שתי‏לחיצות‏נפרדות‏‏ OPB_CLKרה‏שלבאותה‏השו

:‏כמתואר‏בציור‏הבא

Page 31: Sopc Booklet

‏31‏12/3/09‏‏

‏‏

כדי‏שנוכל‏לחבר‏,‏נרצה‏להגדיר‏את‏הכניסות‏של‏הקומפוננטה‏כמתקבלות‏מחיבורים‏חיצוניים,‏כמו‏כן

:‏הבאיםלכן‏נבצע‏את‏החיבורים‏.‏BOARD-אותם‏למקומות‏המתאימים‏ב

Instance Name Port(s) Net

dip_push GPIO_in

GPIO2_in

PUSH

DIP

‏‏GPIO_inעבור‏‏No Connectionבמקום‏‏PUSHכלומר‏נרשום‏

.‏GPIO2_inעבור‏‏No Connectionבמקום‏‏DIPונרשום‏

.‏כחיבורים‏חיצוניים‏DIP-ו‏PUSHכעת‏נרצה‏להוסיף‏חיבורים‏בשם‏

.‏(על‏הריבוע‏שליד‏לחיצה)‏External Portsנרחיב‏את‏

ים‏חדשים‏תחת‏Portנשים‏לב‏כי‏הצטרפו‏שני‏.‏פעמיים‏Add External Portנלחץ‏על‏הכפתור‏

External Portsעם‏השמות‏‏PortNameוחיבורים‏‏PortConnectorנשנה‏את‏השמות‏להיות‏.‏pushו‏-

dipאת‏החיבורים‏להיות‏,‏PUSH ו‏‏-DIPאת‏הכיוונים‏כ,‏בהתאמה‏-I‏(Input‏)ואת‏ה-RANGE‏-כ‏

:‏ראו‏ציור.‏בהתאמה‏[0:4]‏-ו‏[0:4]

‏‏

כעת‏נחזור‏לInstanceשל‏‏dip_pushנבדוק‏שההגדרות‏.‏יפתח‏חלון.‏ונלחץ‏עליו‏פעמיים‏

:‏כמתואר‏בשלושת‏הציורים‏הבאים‏Common, Channel1, Channel2תואמות‏לבאות‏עבור‏

Page 32: Sopc Booklet

‏32‏12/3/09‏‏

.‏‏ראו‏שאתם‏מזהים‏את‏הקומפוננטות.‏Filtersתחת‏‏Addresses-נעבור‏עכשיו‏ל

.‏‏מקבלת‏מרחב‏כתובות‏dip_pushונראה‏שהקומפוננטה‏‏Generate Addressesנלחץ‏על‏

(.‏Ignoreליחצו‏על‏,‏אם‏תופיע‏לכם‏הודעת‏אזהרה)

.‏ח‏המסכם‏שבסוף‏החוברת"שבדו‏4-ו‏3ענו‏על‏השאלות‏

Page 33: Sopc Booklet

‏33‏12/3/09‏‏

3שלב –' חלק א –מפגש ראשון .3.1.4‏

שאנחנו‏‏ VHDLהחדש‏יכיל‏קוד‏‏IP-ה,‏במילים‏אחרות.‏שאותו‏אנחנו‏ניצור,‏חדש‏IPיף‏כעת‏נרצה‏להוס

ושאנו‏לא‏כתבנו‏ולא‏שינינו‏את‏התוכן‏,‏שבאו‏בצורה‏סגורה,‏בניגוד‏לכל‏הקומפוננטות‏עד‏כה)נכתוב‏

ובעצם‏מייצר‏‏(IP Interface)‏IPIF‏ממשק‏שנקרא‏י"מהסוג‏הזה‏ע‏IPתומך‏בהוספת‏‏EDK-ה(‏שלהן

.‏שניצור‏USER CORE-את‏המעטפת‏ואת‏החיבורים‏עבור‏ה‏עבורנו

הקוד‏.‏עבורנו‏OUTPUT-וישמש‏כ‏BOARD-ים‏שעל‏הLED-שנרצה‏להוסיף‏יתחבר‏אל‏ה IP -ה

.‏ים‏והתנהגותםLED-תאורת‏העל‏שנכתוב‏ישפיע‏

Create orבסרגל‏העליון‏ושם‏נבחר‏‏Hardware-כדי‏לעשות‏זאת‏נלך‏ל‏.חדש‏ IPראשית‏ניצור‏

Import Peripheral Wizard‏

כבר‏)‏Create Templates for a new Peripheral-בחלון‏הבא‏נבחר‏ב.‏NEXTנלחץ‏‏-יפתח‏חלון‏

:‏בחלון‏הבא‏נוודא‏שהספרייה‏היא‏אכן‏של‏הפרוייקט‏שלנו.‏NEXTונלחץ‏(‏לחוץ

‏‏

.‏my_ledנקרא‏לו‏.‏החדש‏שלנו‏IP-ל‏וגירסה‏‏בחלון‏הבא‏נבחר‏שם.‏NEXTנלחץ‏על‏ו

Page 34: Sopc Booklet

‏34‏12/3/09‏‏

‏‏

‏IP-אליו‏עתיד‏ה‏BUS-יש‏משמעות‏לקביעת‏ה)‏OPB-יתחבר‏ל‏IP-נבחר‏שה.‏NEXTעל‏נלחץ‏

(.‏להתחבר‏כבר‏בשלב‏הזה

‏‏

-כלומר‏מה,‏IPIF-כעת‏אנו‏מתבקשים‏לציין‏מהם‏השירותים‏אותם‏נרצה‏לקבל‏מה.‏NEXTנלחץ‏על‏

Interface moduleשה‏-EDK‏השירותים‏הבאים‏2-נבחר‏ב.‏מספק‏לנו‏:

מאפשר‏לאפס‏את‏היחידה‏‏–‏S/W reset and MIR (Module Information Register).‏1

(RESET‏)‏י‏הקצאת‏כתובת‏לכתיבה‏בלבד‏לשימוש‏התוכנה"דרך‏התוכנה‏ע.

.‏הקצאת‏רגיסטרים‏ליחידה‏שניתן‏לפנות‏אליהם‏דרך‏התוכנה‏–‏User logic S/W register support.‏2

:‏כפי‏שניתן‏לראות‏מהציור‏הבא

Page 35: Sopc Booklet

‏35‏12/3/09‏‏

‏‏

נגדיר‏.‏י‏תוכנה‏ואת‏גודלם"הרגיסטרים‏הניתנים‏לגישה‏ע'‏עלינו‏להגדיר‏את‏מסכעת‏.‏Nextנלחץ‏על‏

:‏כמתואר‏בציור‏הבא,‏ביט‏32רגיסטר‏אחד‏ברוחב‏

‏‏

‏ שנממש‏User Core-בחלון‏הבא‏מתוארים‏לנו‏כל‏הסיגנלים‏שישמשו‏לממשק‏בין‏ה.‏NEXTנלחץ‏על‏

‏‏.( OPB BUS-ודרכו‏ל)‏IPIF-לבין‏‏ה

Page 36: Sopc Booklet

‏36‏12/3/09‏‏

‏‏

:דאגו‏שהחלון‏הבא‏יראה‏כך.‏פעמיים‏NEXTעל‏‏אל‏תשנו‏דבר‏ולחצו

.‏‏NEXT לחצו‏על‏.‏מהשורה‏האמצעית‏V-דאגו‏להוריד‏את‏ה,‏כלומר

.‏החדש‏ IP-המודיע‏על‏יצירת‏ה,‏כעת‏נקבל‏את‏המסך‏המסכם

Page 37: Sopc Booklet

‏37‏12/3/09‏‏

‏‏

.‏‏Finishנלחץ‏על‏

‏2‏ותחתיה‏my_led_v1_00_a‏התחתיה‏נוצרה‏הספריי.‏pcoresכעת‏נוצרה‏לכם‏ספרייה‏חדשה‏בשם‏

(.‏איתה‏לא‏נתעסק,‏devlלמעשה‏גם‏ספרייה‏שלישית‏בשם‏)‏data, hdl:‏סיפריות

כלשהוא‏‏ text editorעם‏‏my_led_v2_1_0.mpdופיתחו‏את‏הקובץ‏‏dataכנסו‏לתוך‏הספרייה‏

:‏הוסיפו‏את‏השורה‏הבאה(.‏Notepad,‏לדוגמא)

PORT LED = "", DIR = O, VEC = [0:3]

.(‏פרה‏אפסולא‏הס‏OUTPUTראשונה‏במילה‏האות‏ה,‏‏DIR = O:‏שימו‏לב)

ההגדרה‏הזאת‏הכרחית‏כדי‏שהפורט‏.‏PORT OPB_CLKלפני‏ההגדרה‏של‏‏‏Ports##‏-בחלק‏של‏ה

.‏כשנוסיף‏את‏הקומפוננטה‏שיצרנו‏IP CATALOG-ל‏יופיע‏ב"הנ

.‏שמור‏את‏הקובץ‏וסגור‏אותו

אל‏תוך‏הספרייה‏‏Q:\VirtexII PRO\expמתוך‏‏my_led.vhd user_logic.vhdהעתק‏את‏הקבצים‏

hdl/vhdl‏השוני‏בין‏הקבצים‏שאנו‏מעתיקים‏לקבצים‏שנוצרו‏אוטומטית‏הוא.‏:

.‏LEDנוסף‏הפורט‏‏my_led.vhdעבור‏הקובץ‏

‏‏:וגם‏ישנו‏קטע‏הקוד‏הבא‏LEDנוסף‏הפורט‏‏user_logic.vhdעבור‏הקובץ‏

Page 38: Sopc Booklet

‏38‏12/3/09‏‏

‏‏

החדש‏שהעתקתם‏ומצאו‏את‏‏user_logic.vhdפתחו‏את‏הקובץ‏,‏על‏ידי‏גרירה‏לסרגל‏בסביבת‏העבודה

.‏ח‏המסכם"בדו‏5ענו‏על‏שאלה‏.‏קטע‏הקוד‏שבאיור

.‏סגרו‏את‏הקובץ

.כדי‏שנוכל‏להוסיף‏אותה‏לתכנון‏שלנו,‏IP Catalog-כעת‏נוסיף‏את‏הקומפוננטה‏ל

,‏אך‏כעת,‏Create or Import Peripheral Wizardבסרגל‏העליון‏ושם‏נבחר‏‏Hardware-נלך‏שוב‏ל

.‏כדי‏להוסיף‏את‏הקומפוננטה‏שיצרנו‏Import existing peripheralנבחר‏את‏האופציה‏,‏בחלון‏השני

.שלנונבחר‏את‏הפרויקט‏.‏NEXTנלחץ‏על‏

Page 39: Sopc Booklet

‏39‏12/3/09‏‏

‏‏

:‏ואת‏הגרסא‏הראשונה‏my_led:‏בחלון‏הבא‏נבחר‏את‏שם‏הקומפוננטה.‏NEXTנלחץ‏על‏

:VHDLקבצי‏בחלון‏הבא‏נבחר‏את‏האופציה‏של‏‏.‏Yesואז‏על‏‏.NEXTנלחץ‏

Page 40: Sopc Booklet

‏40‏12/3/09‏‏

Use existing Peripheral Analysis Order file:‏‏בחלון‏הבא‏נבחר‏באופציה.‏ NEXTנלחץ‏על‏

(*.pao) ונשתמש‏ב‏-Browseכדי‏למצוא‏את‏הקובץ‏‏my_led_v2_1_0.paoשנוצר‏לנו‏בתוך‏‏

pcores\my_led_v1_00_a\data\כיצד‏למצוא‏את‏קבצי‏ה‏באופן‏כזה‏אנו‏מציינים.‏‏-VHDL

.‏שקשורים‏לקומפוננטה‏החדשה‏שלנו

.‏‏NEXTנלחץ‏על‏

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

.‏‏נוצרים‏באופן‏אוטומטי

‏‏.NEXTנלחץ‏על‏

.‏OPB SLAVE (SOPB)‏-נבחר‏ב.‏BUS-הממשק‏לבחלון‏הנוכחי‏אנו‏צריכים‏לקבוע‏את‏

Page 41: Sopc Booklet

‏41‏12/3/09‏‏

.‏‏NEXTנלחץ‏על‏

.‏‏בחלון‏הבא‏מופיעים‏כל‏הפורטים

.‏interruptsנבטל‏את‏האופציה‏של‏.‏interrupt signalsונגיע‏לחלון‏לגבי‏,‏פעמיים‏NEXTנלחץ‏על‏

.‏FINISHעד‏שנגיע‏לחלון‏האחרון‏ואז‏נלחץ‏על‏‏NEXT‏עלנלחץ‏

נרצה‏לזהות‏אותה‏ולהוסיף‏אותה‏לפרויקט‏.‏IPs-לרשימת‏ה‏my_ledכעת‏נוספה‏הקומפוננטה‏החדשה‏

.‏שלנו

על‏‏CLICK)‏Project Repositoryונרחיב‏את‏השורה‏‏IP CATALOGניגש‏בחלון‏השמאלי‏לתווית‏

DOUBLEי‏"ע)ונוסיף‏אותה‏לפרויקט‏‏my_ledנמצא‏שם‏את‏הקומפוננטה‏(.‏הריבוע‏ליד‏השם

CLICK‏או‏גרירה‏לחלון‏הימני‏.)

Page 42: Sopc Booklet

‏42‏12/3/09‏‏

י‏"ע)‏OPB-ונחבר‏אותה‏ל‏my_led_0נמצא‏את‏הקומפוננטה‏‏Bus Interface‏-ל‏בחלון‏הימני‏נעבור

(.‏וודאו‏שהוא‏אכן‏נצבע‏בירוק,‏לחיצה‏על‏העיגול‏הירוק‏שבצד‏שמאל

‏ולחצו‏64Kאת‏הגודל‏‏Sizeבחרו‏תחת‏‏.‏my_led_0נזהה‏את‏הקומפוננטה‏,‏Addressesנעבור‏לתווית‏

ענו‏על‏שאלה‏(.‏Ignoreאם‏תקבלו‏הודעת‏אזהרה‏לחצו‏על‏,‏שוב)‏.Generate Addressesעל‏הכפתור‏

.‏ח‏המסכם"בדו‏6

לחיצה‏על‏)‏my_led_0נרחיב‏את‏.‏להגדרת‏הפורטים‏של‏הקומפוננטה‏החדשה‏Portsנעבור‏לתווית‏

:‏ונבצע‏את‏השינויים‏הבאים(‏הריבוע‏ליד

נשנה‏את‏ה-NETשל‏‏OPB_CLK להיות‏‏sys_clk_sלחיצות‏נפרדות‏על‏השם‏‏2)‏

(‏OPB_CLK‏-שמימין‏ל

Page 43: Sopc Booklet

‏43‏12/3/09‏‏

נשנה‏את‏ה-NETשל‏LED להיות‏‏fpga_0_LEDs_4Bit_GPIO_d_outלחיצות‏‏2)‏

‏(.no connectionבמקום‏‏ולרשום‏את‏השם‏החדש‏LED-נפרדות‏על‏השם‏שמימין‏ל

ורט‏ועבור‏הפ‏External Portsנרחיב‏את‏‏‏Add External Portי‏לחיצה‏על‏"נוסיף‏פורט‏חיצוני‏ע

במקום‏‏fpga_0_LEDs_4Bit_GPIO_d_out‏-ו‏PortNameבמקום‏‏led:‏שנוסף‏נרשום

PortConnectorכמו‏כן‏נציין‏את‏ה,‏-range‏‏:[0:3]להיות‏‏

‏‏

.‏מעט‏על‏הקבצים‏שנוצרו

‏(.עד‏כה‏עבדנו‏באופן‏גרפי)קובץ‏זה‏מהווה‏את‏תיאור‏המערכת‏באופן‏טקסטואלי‏‏‏‏-MHS-קובץ‏ה

MHSעל‏‏ DOUBLE CLICKנעשה‏‏Project Filesותחת‏‏Projectלתווית‏‏בחלון‏השמאלי‏נעבור

File: system.mhsעיברו‏על‏החלקים‏השונים‏בקובץ‏וודאו‏שאתם‏מזהים‏.‏הקובץ‏יפתח‏בחלון‏הימני.‏

.‏את‏הקומפוננטות‏השונות

ה‏את‏אנו‏נרצה‏להגדיר‏בקובץ‏ז.‏User Constraint File-זהו‏ה.‏‏UCF-נוסף‏הינו‏קובץ‏ה‏קובץ‏חשוב

‏dip_pushעבור‏הפורטים‏החיצוניים‏שהגדרנו‏עבור‏הקומפוננטות‏‏‏ BOARD-על‏ה‏םהספציפייהפינים‏

‏system.ucfנעתיק‏את‏הקובץ‏.‏dataקובץ‏זה‏יושב‏תחת‏הספרייה‏,‏מבחינת‏סדר‏הקבצים‏.‏my_led-ו

(.‏הקובץ‏הקיים‏שנוצר‏אוטומטית‏את‏סנדרו)‏X:\part1\data\אל‏Q:\VirtexII PRO\expמ

‏.UCF File: system.ucfעל‏‏DOUBLE CLICKבחלון‏השמאלי‏נעשה‏.‏נחזור‏אל‏סביבת‏העבודה

‏‏‏.ח‏המסכם"בדו‏7ענו‏על‏שאלה‏‏.בחלון‏הימניהקובץ‏יפתח‏

.‏וכולי‏Components, Buses, Portsהגדרנו‏:‏פן‏של‏החומרה‏של‏המערכתעד‏כה‏עסקנו‏בעיקר‏ב

של‏‏Coreביותר‏של‏יצירת‏המערכת‏הוספנו‏‏בשלב‏המוקדם.‏כעת‏נרצה‏לעבור‏לפן‏של‏התוכנה

PowerPCכעת‏נרצה‏לשלוט‏על‏התוכנה‏שתרוץ‏עליו‏ונראה‏כיצד‏.‏היינו‏את‏המעבד‏של‏המערכת,‏

.‏בעזרתה‏אנו‏שולטים‏על‏הקומפוננטות‏של‏החומרה

.‏Applicationsבסביבת‏העבודה‏נעבור‏לתווית‏השמאלי‏שבחלון‏

שלמעשה‏נוצרו‏)‏TestApp_Peripheral-ו‏TestApp_Memory:‏Projectsאנו‏יכולים‏לזהות‏שם‏שני‏

שהם‏‏c.נמצאים‏קבצי‏‏Sources-ב,‏פרויקטתחת‏כל‏(.‏הראשוני‏הפרויקטאוטומטית‏בשלב‏של‏יצירת‏

(.‏מלבד‏הדפסות)שהוא‏למעשה‏ריק‏‏main-ו‏includeהגדרות‏'‏וכל‏אחד‏מכיל‏מס‏Templatesלמעשה‏

.‏רוץ‏למעשה‏על‏המעבדבמקומות‏אלה‏אנו‏יכולים‏לרשום‏את‏הקוד‏שי

.‏Double Click‏ י"תוכלו‏להסתכל‏על‏הקבצים‏הללו‏ע

Page 44: Sopc Booklet

‏44‏12/3/09‏‏

‏‏

בסרגל‏העליון‏ביותר‏נבחר‏,‏‏לתוכנה‏יצור‏את‏הספריות‏הדרושותלדבר‏ראשון‏בכדי‏

.‏‏‏SoftwareGenerate Libraries and BSPs‏

מ‏‏.TestApp_Memoryנעתיק‏את‏הקובץ‏‏TestApp_Memory.cבמקום‏הקובץ‏,‏כעת

Q:\VirtexII PRO\expעל‏הקובץ‏הקיים‏בסיפרייה‏‏TestApp_Memory\src\‏

עליו‏בחלון‏‏DOUBLE CLICKי‏"ע‏TestApp_Memory.cנחזור‏לסביבת‏העבודה‏ונפתח‏את‏הקובץ‏

:‏בחלון‏הימני‏נקבל‏את‏התוכן‏הבא.‏השמאלי

Page 45: Sopc Booklet

‏45‏12/3/09‏‏

‏‏

בחלון‏.‏עלינו‏להוסיף‏קובץ‏זה‏לפרוייקט‏."include "my_led.h#נוסף‏‏include-נשים‏לב‏שלהגדרות‏ה

ונחפש‏‏Headersעל‏‏DOUBLE CLICKנעשה‏‏Project: TestApp_Memory-מתחת‏ל,‏השמאלי

.‏Header-כעת‏נוסף‏לנו‏ה./ppc405_0/include בתוך‏הספרייה‏my_led.hאת‏הקובץ‏

.‏ח‏המסכם"בדו‏9-ו‏8ות‏ענו‏על‏שאל

.‏וכנהחומרה‏ות:‏כעת‏המערכת‏שלנו‏שלמה

:‏כעת‏נוכל

‏לקמפל‏את‏התוכנה(compile)‏

ליצור‏Netlistלחומרה‏‏(Generate Netlist)‏

ליצור‏קובץ‏להורדה‏לרכיב‏(Generate Bitstream)‏

להוריד‏את‏קובץ‏ה-Bit‏אל‏הלוח‏רשייווצ‏((Download Bitstream‏.

.‏‏BOARD-הדליקו‏את‏ה

‏..Device Configuration Download Bitstream‏-בסרגל‏העליון‏של‏סביבת‏העבודה‏בחרו‏ב

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

(.‏העליון

. דקות ואולי אף יותר 10-שלב זה עשוי לקחת כ

:‏UART-כדי‏שנוכל‏לראות‏את‏ההדפסות‏שיעברו‏דרך‏ה‏HyperTerminalנפתח‏

.‏StartProgramsaccessoriescommunicationsHyperTerminal‏-נלך‏ל

:‏בחלון‏הבא‏הגדירו‏את‏ההגדרות‏הבאות.‏COM1-בחלון‏הבא‏בחרו‏ב.‏testרשמו‏בחלון‏שיפתח‏

Page 46: Sopc Booklet

‏46‏12/3/09‏‏

‏‏

.‏דרכו‏נוכל‏לראות‏את‏ההדפסות‏לגבי‏מצב‏המתגים‏והכפתורים.‏מוכן‏ Hyper Terminal-כעת‏ה

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

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

HELP‏למידע‏נוסף‏.

‏HyperTerminal-שימו‏לב‏לשינוי‏בפלט‏שב.‏שנו‏את‏מצב‏הכפתורים‏והמתגים,‏לאחר‏שהרכיב‏טעון

?‏האם‏הפעולה‏תקינה?‏מה‏אתם‏רואים.‏LEDS-נוי‏בולשי

‏‏‏

Page 47: Sopc Booklet

‏47‏12/3/09‏‏

'חלק ב –מפגש ראשון .2.4

.‏נראה‏כיצד‏ניתן‏לדבג‏את‏המערכת‏שבנינו‏בחלק‏הראשוןבחלק‏זה‏

:‏בחלק‏הראשון‏של‏המעבדה‏בנינו‏את‏המערכת‏הבאה

‏.‏קלט‏של‏המערכת‏והנורות‏היו‏הפלטהכאשר‏הכפתורים‏והמתגים‏היו‏

דרך‏,‏והדפיסה‏את‏ערכם‏לטרמינל‏–תוכנה‏שכתבנו‏עבור‏המעבד‏קראה‏את‏מצב‏הכפתורים‏והמתגים‏ה

:‏היינו‏במערכת‏שלנו‏המעברים‏היו.‏כמו‏כן‏היא‏שלחה‏את‏ערכם‏של‏המתגים‏אל‏הנורות,‏UART-ה

DIP_SW/PUSH_BTNS GPIO OPB BUS PLB2OPB BRIDGEPLB

BUSPPC

PPCPLB BUSPLB2OPB BRIDGEOPB BUSUARTCABLEPC

(HYPER TERMINAL)‏

PPCPLB BUSPLB2OPB BRIDGEOPB BUSMY_IPLEDS‏

שישמש‏אותנו‏לסימולציה‏‏ChipScopeלשם‏כך‏נעזר‏בכלי‏בשם‏.כעת‏נרצה‏לדבג‏את‏המערכת‏שבנינו

ולמעשה‏הוספתו‏,‏כלי‏זה‏מסופק‏כחלק‏מסביבת‏העבודה‏שלנו(.‏חומרה‏ותוכנה‏ביחד)של‏המערכת‏

:‏אופן‏חיבורו‏מומחש‏באיור‏הבא.‏מערכת‏שקולה‏להוספת‏קומפוננטה‏נוספת‏למערכת‏הכוללת‏שלנול

‏‏

‏chipscope_icon:‏הקומפוננטות‏2-נבחר‏ב‏Debugותחת‏,‏בחלון‏השמאלי‏IP Catalogניגש‏אל‏תווית‏

כן‏נראה‏כי‏הן‏א(.‏כל‏קומפוננטה‏ברשימה‏מופיעה‏פעמיים:‏EDK-באג‏ב.‏)chipscope_opb_iba‏-ו

.‏נוספו‏למערכת‏בחלון‏הימני

.‏י‏לחיצה‏על‏העיגול‏שמשמאל‏לקומפוננטה‏בחלון‏הימני"ע‏OPB-ל‏chipscope_opb_ibaנחבר‏את‏

.‏bus-אל‏ה‏Slave-כלומר‏חובר‏כ,‏וודאו‏שאכן‏העיגול‏נצבע‏בירוק

Page 48: Sopc Booklet

‏48‏12/3/09‏‏

‏‏

:‏ונבצע‏את‏החיבורים‏הבאים‏Portsכעת‏ניגש‏לתווית‏

‏Instance Port Name Net Name

chipscope_icon_0 control0 chipscope_icon_0_control0

chipscope_opb_iba_0 OPB_Clk sys_clk_s

chipscope_opb_iba_0 chipscope_icon_control chipscope_icon_0_control0

:‏ונשנה‏chipscope_opb_ibaנלחץ‏פעמיים‏על‏

extended with edgesלהיות‏‏Match type for OPB control unitאת‏‏opb_controlתחת‏

.‏extended with edgesלהיות‏‏Matching type for OPB dataאת‏‏ opb_dataותחת‏

.‏‏הדליקו‏אותו,‏איננו‏דלוק‏BOARD‏-אם‏ה

.‏כבו‏אותו‏והדליקו‏אותו‏מחדש,‏דלוק‏BOARD‏-אם‏ה

.‏נרצה‏לטעון‏אותו‏מחדש‏עם‏השינויים‏שביצענו

.‏.Device Configuration Download Bitstream‏-בסרגל‏העליון‏של‏סביבת‏העבודה‏בחרו‏ב

(.‏בסרגל‏העליון‏ ניתן‏גם‏ללחוץ‏על‏)

. דקות ואולי אף יותר 10-שלב זה עשוי לקחת כ

,‏שינוי‏כפתורים‏,הדפסות‏לטרמינל)השתנתה‏‏לאבדקו‏כי‏פעולת‏המערכת‏,‏מחדש‏Board-לאחר‏טעינת‏ה

(.‏ריותמתגים‏והשפעה‏על‏הנו

.‏ששתלנו‏במערכת‏chipscope-בעזרת‏קומפוננטות‏ה,‏כעת‏נרצה‏לדבג‏את‏המערכת‏שלנו

‏:‏icon-י‏לחיצה‏כפולה‏על‏ה"ע‏‏ChipScope Pro Analyzer-נפעיל‏את‏תוכנת‏ה

‏‏‏

startProgramsChipscope pro 8.2iChipscope Pro Analyzerי‏"או‏ע

open/search JTAG.‏)שבצידו‏השמאלי‏העליון‏של‏החלון‏‏‏‏‏כאשר‏חלון‏התוכנה‏יפתח‏נלחץ‏על‏‏‏‏‏‏

Cable Iconכדי‏להתחבר‏לכרטיס‏דרך‏ה(‏-JTAG.נקבל‏את‏החלון‏הבא‏ונלחץ‏על‏‏OK‏.

Page 49: Sopc Booklet

‏49‏12/3/09‏‏

‏‏

.‏Select new fileונלחץ‏על‏‏File Importניגש‏ל‏

‏שתחת‏הספרייה‏cs_coregen_chipscope_opb_iba_0.cdcונמצא‏את‏הקובץ‏‏Browser-נשתמש‏ב

implementation\chipscope_opb_iba_0_wrapper\קובץ‏זה‏נוצר‏עבורנו‏למעשה‏.‏בפרויקט‏שלנו‏

.‏chipscope-כאשר‏הוספנו‏את‏הקומפוננטות‏הקשורות‏ב

‏‏

יכול‏להיות‏שתצטרכו‏לשנות‏את‏גודל‏)‏כעת‏נשנה‏את‏ההגדרות‏בחלונות‏כדי‏לקבל‏את‏הסידור‏הבא

:(‏החלונות‏כדי‏לקבל‏את‏התצוגה‏הבאה

Page 50: Sopc Booklet

‏50‏12/3/09‏‏

אך‏אנו‏נרצה‏ליצור‏מעקב‏אחרי‏פעולותיה‏החל‏,‏לת‏באופן‏עצמאי‏ובלתי‏תלוי‏כמקודםהמערכת‏שלנו‏פוע

.‏מרגע‏בו‏נעשית‏פעילות‏מסוימת

-בו‏למעשה‏קובעים‏מהם‏הטריגרים‏שיפעילו‏את‏פעולת‏ה‏Trigger_setup-בחלון‏הימני‏העליון‏ישנו‏ה

chipscope‏טריגרים‏3כעת‏נמצאים‏בו‏.‏:

Trig0: OPB_CTRL

Trig1: OPB_ABUS

Trig2:OPB_DBUS‏‏‏

‏event-אנו‏נגדיר‏את‏ה.‏מסוים‏ eventעל‏הקווים‏האלה‏ומחכה‏שיקרה‏"‏יושב‏ומאזין"‏chipscope-ה

‏TestApp_Memory.cהרי‏שבתוכנה‏שכתבנו‏בקובץ‏,‏זכרויאם‏ת.‏LEDS-כתיבה‏אל‏ההזה‏להיות‏

‏>‏-Project:TestApp_Memory>‏-Applicationsתחת‏תווית‏‏–אתם‏יכולים‏לפתוח‏אותו‏ולהיזכר‏)

Sourcesב‏-EDK)פנינו‏בלולאה‏אינסופית‏אל‏כתובת‏הבסיס‏של‏ה,‏-LEDS וכתבנו‏את‏תוכן‏‏

:‏השורה‏היתה.‏המפסקים

‏MY_LED_mWriteReg(XPAR_MY_LED_0_BASEADDR, 0, dip_check<<27‏)

נו‏את‏התוכן‏שעובר‏דרכם‏בעת‏להקליט‏ולהציג‏ל,‏לדגום‏את‏הקווים‏chipscope-נרצה‏להגדיר‏את‏ה

.‏LEDS-פעולת‏הכתיבה‏אל‏ה

OPBזהו‏ביט‏)‏ '0'להיות‏‏OPB_RNWבביט‏‏OPB_CTRL,‏לשם‏כך‏נגדיר‏את‏הטריגר‏הראשון

Read/write‏מציאת‏הסיגנל,‏י‏לחיצה‏שמאלית‏על‏העיגול‏שליד‏שם‏הסיגנל‏בחלון‏הימני"נעשה‏זאת‏ע(.‏,

ראה‏)בסיגנל‏המקורי‏‏valueמשמאל‏תחת‏‏7-במקום‏ה‏0רות‏ניתן‏גם‏לרשום‏ישי.‏value-ב'‏0'ורישום‏

.‏Don't careכלומר‏'‏X'-שאר‏הביטים‏מוגדרים‏כ(..‏תמונה‏לעיל

י‏לחיצה‏שמאלית‏בשדה‏המתאים‏"ע‏Hexלהיות‏נשנה‏‏OPB_ABUS,‏של‏הטריגר‏השני‏radix-את‏ה

וודאו‏כי‏היא‏).‏0x7D80_0000כתובת‏זו‏היא‏.‏LEDS-להיות‏כתובת‏הבסיס‏של‏ה‏valueונמלא‏את‏,‏לו

.‏‏EDK)-שב‏my_led_0וננטה‏מפעבור‏הקו‏Addressesאכן‏זו‏בחלון‏ה‏

Page 51: Sopc Booklet

‏51‏12/3/09‏‏

.‏נתייםיהשאירו‏את‏הטריגר‏השלישי‏כמו‏שהוא‏ב

.‏נעבור‏לחלון‏הימני‏האמצעי

י‏לחיצה‏שמאלית‏בחלון‏"ע‏M0&&M1&&M2להיות‏‏Trigger Condition Equationנשנה‏את‏

.‏של‏כל‏שלושת‏הטריגרים‏שהגדרנו‏קודם‏לכן‏Enable-מתחת‏ל"‏V"שמתחתיו‏וסימון‏

‏‏

.‏י‏לחיצה‏ימנית‏ובחירה‏של‏האופציה‏הזו"ע‏Pulse(High)להיות‏‏output enableנשנה‏את‏

.256י‏לחיצה‏על‏החלון‏ורישום‏המספר‏"ע‏256להיות‏‏Position-נשנה‏את‏הי‏"ע‏או‏ CTRL-A י"ע)‏נסמן‏את‏כל‏הסיגנלים:‏ונמחק‏את‏כל‏הסיגנלים‏נעבור‏לחלון‏הימני‏התחתון

נבחר‏מתוך‏.‏deleteעל‏‏ונלחץ(‏לחיצה‏שמאלית‏על‏האחרון,‏Shiftהחזקת‏,‏לחיצה‏שמאלית‏על‏הראשון

נבחר‏בדיוק‏את‏הסיגנלים‏ששימשו‏לנו‏.‏waveform-החלון‏השמאלי‏את‏הסיגנלים‏שאנו‏רוצים‏לראות‏ב

י‏"ע‏נבחר‏בהם.‏OPB_CTRL-שב‏OPB_RNW‏-ו‏OPB_ABUS, OPB_DBUS:‏trigger-כ

.גרירה‏שלהם‏לחלון‏הימני‏התחתוןאו‏)‏Run-שבסרגל‏העליון‏וב‏Trigger Setup-נבחר‏ב.‏Chipscope-כעת‏אנו‏מוכנים‏להפעיל‏את‏ה

.‏‏PLAY : -לחילופין‏נלחץ‏על‏כפתור‏ה

‏,‏תוכנו‏יעלם‏ויופיע‏שוב‏כאשר‏תקרה‏הפעולה‏שהגדרנו‏כטריגר.‏waveform-נשים‏לב‏לשינוי‏בחלון‏ה

.‏LEDS-בה‏לכתובת‏הבסיס‏של‏הכלומר‏כתי

לחיצה‏ימנית‏על‏השם‏י‏"ע‏OPB_ABUS, OPB_DBUSשל‏הסיגנלים‏‏Radix-תוכלו‏לשנות‏את‏ה

.‏‏Bus RadixHexשלהם‏בחלון‏ובחירת‏

.‏שבסרגל‏העליוןי‏לחיצה‏על‏"תוכלו‏להגדיל‏את‏הכתוב‏בחלון‏ע

‏.ח‏המסכם"בדו‏11-ו‏10ענו‏על‏שאלות‏

Page 52: Sopc Booklet

‏52‏12/3/09‏‏

'ח מסכם חלק א"דו .5‏

היא‏‏BUSפרטו‏לגבי‏כל‏אחת‏מהן‏לאיזה‏,‏את‏כל‏הקומפוננטות‏המופיעות‏בחלון‏זהרישמו‏ .1

שימו‏לב‏שישנן‏מספר‏קומפוננטות‏שנוספו‏(.‏Master/Slave/Target)מחוברת‏ובאיזה‏חיבור‏

האם‏באמת‏אינן‏מחוברות‏במערכת‏כמו‏שנראה‏?‏למה‏הן‏משמשות?‏מהן,‏באופן‏אוטומטי

?‏בציור

-‏על‏כל‏קומפוננטה‏ולקבל‏עוד‏מידע‏וכן‏את‏ה‏ DOUBLE CLICKשימו‏לב‏שניתן‏לבצע‏

DATA SHEET‏המלא‏.

_______________________________________________________________

_______________________________________________________________

__‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏_____________________________________________________________

_______________________________________________________________

_______________________________________________________________

________________________________________________‏_______________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

______________________________________________________________‏

לאילו‏כתובות‏?‏היא‏עובדת‏‏(Baud Rate)באיזה‏קצב‏RS232_UART : לגבי‏הקומפוננטה‏ .2

?‏היא‏ממופה

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________

_______________________________________________________________‏

Page 53: Sopc Booklet

‏53‏12/3/09‏‏

?מה‏גודלה?‏מה‏מרחב‏הכתובות‏שלה,‏שהוספנוdip_push לגבי‏הקומפוננטה‏ .3

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

?‏באיזה‏מרחב‏כתובות‏היינו‏יכולים‏למקם‏אותה‏OPB-ים‏עוד‏קומפוננטה‏על‏האילו‏היינו‏מוסיפ .4

(plb2opb bridge‏-הסתכלו‏על‏מרחב‏הכתובות‏של‏ה:‏רמז)

_______________________________________________________________

_______________________________________________________________‏

_____________________________________________________‏__________

.הסבירו‏מה‏עושה‏קטע‏הקוד.‏‏ד‏ורשמו‏אילו‏סיגנלים‏משתתפים‏בוהתבוננו‏בקטע‏הקו .5

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

האם‏לפי‏מרחב‏הכתובות‏שהוקצה‏ניתן‏לראות‏?‏my_led-שהוקצה‏למהו‏מרחב‏הכתובות‏ .6

?OPB-שהקומפוננטה‏אכן‏מחוברת‏ל

_______________________________________________________________

_______________________________________________________________‏

______________________________________‏_________________________

כמה‏הגדרות‏ישנן‏לפינים‏מסוג‏.‏והסתכלו‏על‏ההגדרות‏בחלקו‏התחתון‏UCF-פתחו‏את‏קובץ‏ה .7

PUSH?‏DIP? LED?האם‏זה‏תואם‏ל‏-RANGEשהגדרנו‏עבור‏‏EXTERNAL PORTS‏?

.‏הסבירו‏מדוע,‏אם‏לא

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

_______________________________________________________________

___________‏____________________________________________________

_______________________________________________________________‏

_______________________________________________________________

_______________________________________________________________‏

__________‏_____________________________________________________

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

.'של‏חלק‏א‏1-3ים‏הסבירו‏את‏ההבדלים‏בין‏אופני‏הוספת‏הרכיבים‏השונים‏בשלב .8

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏

Page 54: Sopc Booklet

‏54‏12/3/09‏‏

בלולאה‏זו‏.‏‏ו‏לב‏כי‏הוא‏מכיל‏לולאה‏אינסופיתושימ‏TestApp_Memory.cעברו‏על‏הקובץ‏ .9

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

?‏בין‏המתגים‏לנורות?‏האם‏יש‏קשר‏בין‏הכפתורים‏לנורות?‏אילו‏כתיבה?‏קריאה

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

_______________________________________________________________

__‏_____________________________________________________________

_______________________________________________________________‏

_______________________________________________________________

_______________________________________________________________‏

_‏______________________________________________________________

ראו‏כי‏(.‏PLAYלחיצה‏על‏)בין‏שינוי‏לשינוי‏‏chipscope-שנו‏את‏מצב‏המתגים‏והריצו‏את‏ה .01

-ב‏0xC800_0000איזה‏מצב‏מתגים‏יביא‏למידע‏‏.משתנה‏OPB_DBUSאכן‏תוכן‏

OPB_DBUS?‏

-לכו‏אל‏החלון‏הימני‏העליון‏ושנו‏את‏ה:‏‏Trigger_setup-י‏שינוי‏ב"תוכלו‏לעשות‏זאת‏ע‏:רמז

valueשל‏‏M2:Trig2:OPB_DBUSלהיות‏הערך‏הרצוי‏לכם‏‏(C800_0000ב‏-hex‏.)מאחר‏

יעצור‏רק‏כאשר‏ידגום‏את‏‏chipscope-ה‏M1&&M2&&M3ותנאי‏העצירה‏שהגדרנו‏הוא‏

‏ י"ע‏chipscope-הריצו‏כעת‏את‏ה.‏LEDS-בנוסף‏לפנייה‏לכתיבה‏לכתובת‏ה,‏הערך‏שרשמתם

,‏יזהה‏את‏הערך‏הרצוי‏chipscope-ושנו‏את‏מצב‏המתגים‏עד‏שה‏PLAY-לחיצה‏על‏כפתור‏ה

.‏כעת‏תוכלו‏להסתכל‏ולראות‏מה‏מצב‏הנורות‏.waveform-יעצור‏ויציג‏לכם‏אותו‏ב

_______________________________________________________________

_______________________________________________________________‏

_____________________________________‏__________________________

איזה‏מתג‏משפיע‏על‏‏-OPB_DBUS -הסבירו‏את‏הקשר‏בין‏מצב‏המתגים‏לערך‏הנדגם‏על‏ה .11

‏?איזה‏ביט‏בווקטור

‏.chipscope-חישבו‏על‏הייצוג‏הבינארי‏של‏המספרים‏המוצגים‏ב:‏רמז

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

OPB-באופן‏הזה‏נוכל‏להמשיך‏ולדבג‏כתובות‏נוספות‏ולמעשה‏כל‏מידע‏שעובר‏בסיגנלים‏של‏ה .21

BUSנוכל‏לדבג‏בצורה‏הזו‏גם‏סיגנלים‏ש‏נתאיזה‏שינוי‏עלינו‏לבצע‏בתכנון‏המערכת‏על‏מ.‏

‏?PLB BUS-העוברים‏ב

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

_______________________________________________________________

_______________________________________________________________‏

_______________________________________________________________‏

Page 55: Sopc Booklet

‏55‏12/3/09‏‏

. עיבוד מקבילי ושיתוף זכרון –מפגש שני .6‏

מוטיבציה י‏זיהוי‏של‏"שנועדה‏להגביר‏את‏ביצועי‏המערכת‏ע,‏שה‏בארכיטקטורת‏מחשביםעיבוד‏מקבילי‏היא‏גי

.‏חלקים‏מקבילים‏באלגוריתם‏וחלוקתם‏למשימות‏המוקצות‏למספר‏מעבדים‏שונים‏שפועלים‏במקביל

‏Nיכולים‏להשיג‏האצת‏ביצועים‏עד‏כדי‏פי‏(‏ליבות‏Nאו‏מעבד‏בעל‏)מעבדים‏‏Nמערכת‏בעלת‏

וזאת‏בהנחה‏כי‏התוכנית‏המורצת‏על‏המעבד‏היא‏מקבילית‏טהורה‏‏,מאשר‏מערכת‏בעלת‏מעבד‏יחיד

.‏‏כלומר‏אין‏בתוכה‏תלויות‏המאלצות‏חלקים‏ממנה‏להתבצע‏באופן‏סדרתי‏-

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

את‏התלויות‏.‏קבילי‏אם‏אין‏תלות‏ביניהםחלקים‏נפרדים‏בבעיה‏נתונה‏יכולים‏להתבצע‏באופן‏מ

:‏הקיימות‏בתוכנית‏ניתן‏לחלק‏לשני‏סוגים‏עיקריים

וניתן‏להבחין‏בהן‏,‏אלה‏נקבעות‏מתוך‏הגדרת‏האלגוריתם‏ללא‏תלות‏בנתונים‏-תלויות‏סטטיות‏ .1

.‏לפני‏הרצת‏התוכנית

.‏כפונקציה‏של‏הקלט,‏אלה‏נקבעות‏בזמן‏ריצת‏התוכנית‏-תלויות‏דינאמיות‏ .2

בזמן‏,‏או‏לחלופין)ניתן‏לנצל‏אי‏תלות‏סטטית‏בזמן‏כתיבת‏התוכנה‏,‏רכת‏מרובת‏מעבדיםבמע

זיהוי‏של‏אי‏תלויות‏דינאמיות‏קשה‏יותר‏ודורש‏מנגנונים‏.‏מ‏לבצע‏פעולות‏במקביל"ע,‏(קומפילציה

אנו‏נתמקד‏בזיהוי‏של‏אי‏תלויות‏אלה‏מתוך‏התבוננות‏בקוד‏.‏בחומרה‏ותוכנה‏שלא‏נדון‏בהם‏כאן

.‏מ‏להעביר‏קוד‏זה‏לקוד‏מקבילי‏שמבצע‏את‏אותה‏הפונקציה‏בדיוק"וניצולן‏ע,‏סדרתי

והתקני‏קלט‏,‏BUS,‏זיכרון:‏נכיר‏מערכת‏בעלת‏שני‏מעבדים‏המשתפים‏משאבים‏ביניהם,‏בניסוי‏זה

.‏פלט‏פשוטים

ניהול זיכרון ותקשורת במערכת מרובת מעבדים ל‏מערכת‏הזיכרון‏שלא‏קיימים‏במערכת‏במערכת‏מרובת‏מעבדים‏ישנם‏עקרונות‏חשובים‏בניהו

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

:‏ניתן‏לממש‏יחידות‏זיכרון‏בשתי‏גישות‏שונות

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

.‏ניםאו‏נתו/פקודות‏ו

זיכרון‏משותף‏לשני‏מעבדים‏או‏יותר.

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

.‏המעבדים‏שנועד‏אך‏ורק‏למטרה‏זו

מעבד מעבד

ניתוב

תקשורת

מעבדמעבד

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

משאב‏זה‏יכול‏;‏ערוץ‏תקשורת‏שלם:‏ושבים‏על‏משאב‏יקר‏של‏המעבדערוצי‏התקשורת‏י,‏מאידך

חיסרון‏נוסף‏של‏שיטה‏זו‏היא‏מורכבותו‏.‏'לרכיבי‏פריפריה‏וכו,‏לשמש‏אותו‏להעברת‏נתונים‏לזיכרון

.‏של‏הניתוב‏ושל‏כל‏מערך‏החומרה‏המחברת‏את‏המעבדים

Page 56: Sopc Booklet

‏56‏12/3/09‏‏

שיטה‏אחת‏דומה‏.‏ות‏מספר‏שיטותכאן‏קיימ.‏בניסוי‏זה‏אנו‏נדון‏בעיקר‏בתקשורת‏דרך‏זיכרון‏משותף

לנקודה‏בין‏המעבדים‏אנו‏מצמצמים‏את‏-אולם‏במקום‏לנתב‏תקשורת‏נקודה,‏לשיטה‏הקודמת

.‏המשימה‏למשימה‏של‏בוררות‏בין‏המעבדים‏על‏גישה‏לזיכרון‏יחיד

מעבד מעבד

מעבדמעבד

בורר זיכרון

זיכרון משותף

‏מי‏"אך‏כל‏ניהול‏התקשורת‏ברמת‏,‏בשיטה‏זו‏ישנו‏ערוץ‏תקשורת‏שמיועד‏לתקשורת‏בין‏מעבדים

כך‏הורדנו‏משמעותית‏את‏מורכבות‏החומרה‏המחברת‏בין‏.‏נעשה‏ברמת‏התוכנה,‏"ולמישלח‏מה‏

.‏לא‏פתרנו‏כלל‏את‏בעית‏תפיסת‏משאב‏ערוץ‏התקשורת,‏עם‏זאת.‏המעבדים

ובעקיפין‏עם‏)שיטה‏חלופית‏היא‏ניצול‏ערוץ‏תקשורת‏קיים‏לצורך‏התקשורת‏עם‏הזיכרון‏המשותף‏

(.‏‏המעבדים‏האחרים

מעבד מעבד

מעבדמעבד

(BUS)ערוץ תקשורת משותף BUSבורר

התקנים

חיצוניים

זיכרון משותף

‏‏

שיטה‏זו‏גם‏מאפשרת‏ניהול‏.‏bus-כבר‏קיימת‏על‏ה,‏הבורר,‏שמנהלת‏את‏הגישותגם‏אותה‏חומרה‏

bus‏יחיד‏לכל‏המעבדים‏ובכך‏לחסוך‏חומרה‏על‏השבב‏.

יש‏לשים‏;‏ניהול‏של‏זיכרון‏משותף‏מציג‏בפני‏המתכנן‏בעיות‏מימוש‏שלא‏נתקלים‏בהם‏בזיכרון‏פרטי

המעבדים‏יכולים‏לבקש‏,‏יתרה‏מזו;‏ןלב‏כי‏תתכננה‏גישות‏בו‏זמניות‏מצד‏שני‏המעבדים‏לזיכרו

תרחיש‏שכזה‏יכול‏.‏בו‏זמנית,‏(לגשת‏לאותה‏הכתובת:‏כלומר)לקרוא‏את‏אותה‏פיסת‏מידע‏/‏לכתוב‏

הזיכרון‏חייב‏לספק‏מידע‏עדכני‏לכל‏אחד‏:‏או‏עיקביות,‏coherencyלעורר‏בעיה‏שנקראת‏

קיימות‏,‏בפרט.‏ירביתותוך‏מתן‏מענה‏בתפוקה‏מ,‏מהמעבדים‏על‏אף‏העבודה‏המקבילית‏שלהם

הפעולה‏מתבצעת‏מתחילתה‏ועד‏סופה‏ללא‏:‏כלומר;‏פעולות‏שחייבות‏להתבצע‏בצורה‏אטומית

.‏פעולות‏כאלו‏נקראות‏טרנסאקציות.‏הפרעות‏או‏שאינה‏מתבצעת‏כלל

.‏‏קיימות‏דוגמאות‏רבות‏לבעיות‏שנובעות‏מחוסר‏סינכרון‏בקטעים‏קריטיים

Page 57: Sopc Booklet

‏57‏12/3/09‏‏

ניתן‏לתאר‏את‏.‏אקציה‏היא‏פעולת‏המשיכה‏בכספומטדוגמא‏לפעולה‏שחייבת‏להתבצע‏כטרנס

המערכת‏כאילו‏כל‏כספומט‏הוא‏מחשב‏בעוד‏שבמחשב‏המרכזי‏של‏הבנק‏קיים‏זיכרון‏משותף‏עליו‏

נניח‏כי‏המכונה‏צריכה‏לבצע‏את‏,‏כאשר‏מישהו‏מושך‏כסף‏מהמכונה.‏רשומים‏נתוני‏החשבון

:‏הפעולות‏הבאות

.‏לקרוא‏את‏היתרה‏מהמחשב‏המרכזי 1

.ר‏ממנו‏את‏הסכום‏שנמשךלהחסי 2

.לכתוב‏חזרה‏למחשב‏המרכזי 3

.למסור‏את‏הכסף‏למושך 4

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

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

על‏ידי‏משיכה‏בשני‏"‏כסף‏קל"או‏לחלופין‏להשיג‏,‏(4-ל‏3פעולה‏נקטעת‏בין‏אם‏ה)את‏הכסף‏שמשך‏

.‏3לפני‏שכל‏אחד‏אחר‏מבצע‏את‏פעולה‏‏1כספומטים‏בו‏זמנית‏כך‏ששניהם‏מבצעים‏את‏פעולה‏

ברור‏כי‏הדרך‏הנכונה‏לבצע‏פעולה‏זו‏חייבת‏לכלול‏בתוכה‏אי‏אפשרות‏לבצע‏מספר‏פעולות‏בו‏

.‏זמנית‏על‏אותו‏החשבון

על‏ידי‏הגדרת‏פעולות‏?‏כיצד‏שומרים‏על‏עיקביות:‏גיות‏בניהול‏זיכרון‏משותף‏הן‏דומותהסו

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

.‏מעבדים

‏שיטות סנכרון

של‏מ‏לאפשר‏ביצוע‏"ע,‏במערכת‏שלפניכם‏ממומשות‏שתי‏שיטות‏שונות‏לתקשורת‏בין‏המעבדים

:‏עיבוד‏מקבילי

שהמתכנת‏,‏י‏סדרת‏פעולות‏מוגדרת‏מראש"ניהול‏הטרנסקציה‏מתבצע‏ע‏-סנכרון‏מבוסס‏תוכנה‏ .1

י‏שינוי‏"ע.‏חייב‏לבצע‏תוך‏שימוש‏במבני‏נתונים‏הנמצאים‏בכתובות‏קבועות‏בזיכרון‏המשותף

לסנכרון‏יכולים‏המעבדים‏להעביר‏ביניהם‏הודעות‏הנוגעות‏,‏ל"שדות‏מסוימים‏במבני‏הנתונים‏הנ

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

.‏נדרש‏כי‏כל‏מעבד‏ידגום‏באופן‏סדיר‏תאים‏מסוימים‏בזיכרון,‏ל"פעולת‏המנגנון‏הנ

י‏שליחת‏איתותים‏בין‏שני‏"ניהול‏הטרנסקציה‏מתבצע‏ע‏-סנכרון‏מבוסס‏פסיקות‏בחומרה‏ .2

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

י‏סיגנל‏היוצר‏פסיקת‏חומרה‏במעבד‏"י‏מעבד‏מסוים‏מתבצע‏ע"ייזום‏הטרנסקציה‏ע‏-בזיכרון‏

.הרלוונטי

מבנה המערכת

‏PowerPCהמכיל‏שני‏מעבדי‏,‏Xilinxשל‏חברת‏‏Virtex II Proהמערכת‏בנויה‏על‏בסיס‏רכיב‏

ממומשים‏על‏גבי‏כלומר‏הם‏,‏Hard Cores-שני‏המעבדים‏נמצאים‏על‏הרכיב‏כ.‏IBM‏מתוצרת

Soft)שנוצרים‏בכל‏פעם‏שהרכיב‏מתוכנת‏,‏שאר‏חלקי‏המערכתבניגוד‏ל,‏הרכיב‏בעת‏הייצור

Coresשני‏המעבדים‏חולקים‏את‏אותו‏(.‏BUSואת‏שאר‏המשאבים‏כפי‏שמתואר‏בסכמת‏הבלוקים‏‏

:‏של‏המערכת

Page 58: Sopc Booklet

‏58‏12/3/09‏‏

PLBPLB

Arbiter

OPB PLB 2 OPB

Bridge

OPB

Arbiter

UART

Interface

PLB BRAM

Controller

First

PPC Core

IOCM

Controller

BRAMs

64 KB

DOCM

Controller

BRAMs

32 KB

BRAMs

16 KB

Second

PPC Core

IOCM

Controller

DOCM

Controller

BRAMs

16 KB

BRAMs

16 KB

Board

LEDs

PUSH

Buttons

ppc0_trigger ppc1_trigger

‏‏

:‏קיימים‏במערכת‏חמישה‏בלוקי‏זיכרון‏ראשיים,‏לראות‏בסכמת‏הבלוקיםכפי‏שניתן‏

IOCM-והוא‏,‏קיים‏בלוק‏כזה‏לכל‏אחד‏משני‏המעבדים.‏בלוק‏זיכרון‏הפקודות‏של‏המעבד‏‏

(.לא‏משותף‏לשני‏המעבדים)נפרד‏‏BUSיושב‏על‏

DOCM-הוא‏ו,‏קיים‏בלוק‏כזה‏לכל‏אחד‏משני‏המעבדים.‏בלוק‏זיכרון‏הנתונים‏של‏המעבד‏‏

(.לא‏משותף‏לשני‏המעבדים)נפרד‏‏BUSיושב‏על‏

PLB BRAM-כלומר‏הוא‏יושב‏על‏ה,‏זהו‏בלוק‏זיכרון‏משותף‏‏-BUSהמשותף‏לשני‏‏

.זהו‏הערוץ‏דרכו‏יכולים‏המעבדים‏לשתף‏מידע‏ולתקשר‏ביניהם.‏המעבדים‏ונגיש‏עבור‏שניהם

:‏BUSESבמערכת‏קיימים‏שני‏

Processor Local Bus (PLB)-זהו‏‏‏BUSומקשר‏בינם‏לבין‏,‏המחובר‏ישירות‏למעבדים‏

.בלוק‏הזיכרון‏המשותף

On Chip Peripheral Bus (OPB)-זהו‏‏‏BUSהמחובר‏ל‏-PLBדרך‏‏Bridgeולכן‏,‏

‏PLB-זה‏באופן‏עקרוני‏איטי‏יותר‏מאשר‏ה‏BUS.‏לכל‏אחד‏מהמעבדים‏יש‏גישה‏גם‏אליו

זה‏‏BUSעל‏.‏ריאליים‏נוספיםפלט‏והתקנים‏פריפ-מכיוון‏שהוא‏מיועד‏לשמש‏התקני‏קלט

עליהם‏נרחיב‏,‏ppc1_trigger-ו‏ppc0_trigger,‏נמצאים‏גם‏התקני‏הסנכרון‏בין‏המעבדים

.בהמשך

(:‏מנקודת‏מבט‏של‏כל‏מעבד)הקצאת‏הכתובות‏במערכת‏

PPC0 PPC1 Base Address Size Base Address Size

Data side OCM 0x2180_0000 16KB 0x2180_0000 16KB

Instruction side OCM 0xFFFF_8000 32KB 0xFFFF_C000 16KB

Processor Local Bus (PLB)

Shared Memory 0x0000_0000 64KB 0x0000_0000 64KB

On chip Peripheral Bus (OPB)

OPB Address Range 0x4000_0000 1GB 0x4000_0000 1GB

PPC0 Interrupt Trigger 0x4070_0000 1KB 0x4070_0000 1KB

PPC1 Interrupt Trigger 0x4080_0000 1KB 0x4080_0000 1KB

PUSH Buttons 0x4090_0000 64KB 0x4090_0000 64KB

Board LEDs 0x4000_0000 64KB 0x4000_0000 64KB

UART Interface 0x4060_0000 64KB 0x4060_0000 64KB

Page 59: Sopc Booklet

‏59‏12/3/09‏‏

מתעורר‏צורך‏לתאם‏בין‏,‏על‏שני‏המעבדים‏במקביל‏כאשר‏מריצים‏תוכנה‏כך‏ששני‏חלקים‏שלה‏רצים

לא‏יכול‏לבצע‏קטע‏קוד‏התלוי‏בתוצאת‏חישוב‏של‏'‏מעבד‏א,‏לדוגמא.‏פעולותיהם‏של‏שני‏המעבדים

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

:‏בין‏שני‏המעבדים

Software Managed Semaphores (SWMS): 1מנגנון

נתונים‏)מעוניין‏להעביר‏מידע‏'‏כאשר‏מעבד‏א.‏י‏התוכנה"בשיטה‏זו‏הסנכרון‏בין‏שני‏המעבדים‏מושג‏ע

ולאחר‏מכן‏,‏הוא‏כותב‏מידע‏זה‏לכתובת‏כלשהי‏בזיכרון‏המשותף‏בצורה‏רציפה',‏למעבד‏ב(‏או‏הודעות

והיא‏חייבת‏,‏Transaction Data Structure (TDS)הודעה‏זו‏נקראת‏.‏'כותב‏הודעה‏למעבד‏ב

:‏מכיל‏TDS-ה .בין‏שני‏המעבדים‏קבועה מראשלהיכתב‏בכתובת‏

base-מצביע‏לכתובת‏הראשונה‏של‏מבנה‏הנתונים‏שמועבר‏למעבד‏השני‏‏.

size-מספר‏שלם‏המשמש‏להעברת‏גודל‏מבנה‏הנתונים‏אליו‏מצביע‏‏‏base.

signal-משתנה‏בוליאני‏המשמש‏לתיאום‏ה‏‏-Transactionזהו‏למעשה‏ה.‏-Semaphore‏.

חייב‏להבטיח‏סדר‏נכון‏בביצוע‏‏TDS-ה‏SWMSבשיטת‏,‏TDS-בנוסף‏למידע‏אותו‏מעבירים‏ב

:‏זה‏מתבצע‏באמצעות‏הפרוטוקול‏הבא.‏הטרנסקציה

.‏מחכים,‏אם‏לא.‏signal == 0יש‏לבדוק‏כי‏,‏על‏מנת‏להתחיל‏טרנסקציה -

signalמבלי‏לשנות‏את‏ערכו‏של‏‏TDS-בניתן‏לשנות‏את‏ערכי‏השדות‏,‏לאחר‏שבדקנו‏זאת -

.1-ל‏signalנקבע‏את‏ערכו‏של‏,‏לאחר‏שכל‏המידע‏ערוך‏בזיכרון -

:‏הצד‏המקבל‏ימלא‏אחר‏הפרוטוקול‏הבא

(‏signal == 1‏-מחכים‏עד‏ש,‏כלומר)הטרנסקציה‏לא‏החלה‏ויש‏לחכות‏,‏signal == 0כל‏עוד‏ -

.עותק‏מקומיומעבירים‏ל‏TDS-קוראים‏את‏שדות‏ה,‏signal == 1כאשר‏ -

.כדי‏להודיע‏לצד‏המשדר‏שהטרנסקציה‏הסתיימה‏וניתן‏להתחיל‏חדשה‏signal = 0כותבים‏ -

‏-ל‏1בו‏לאותו‏מעבד‏מותר‏לכתוב‏רק‏את‏הערך‏,‏טרנסקציות‏פתיחתהמוקדש‏ל‏TDSלכל‏מעבד‏ישנו‏

signal‏-ל‏0ולמעבד‏השני‏מותר‏לכתוב‏רק‏את‏הערך‏‏signal‏.

‏–‏semaphore_util.hמסומנות‏פונקציות‏הממשק‏של‏הקובץ‏באדום‏)‏SWMS‏-דוגמא‏לשימוש‏ב

‏semaphore_util.c כמו‏גם‏במימוש‏שלו‏בקובץ‏,‏ניתן‏לעיין‏בקובץ‏זה.‏SWMS-המכיל‏את‏מנגנון‏ה

(.‏המצורפים‏לחוברת‏זו

.‏לאחר‏קטעי‏הקוד‏–הסבר‏הדוגמא‏

‏// PPC0's program

#include "semaphore_util.h"

#include "stdio.h"

#define ARR_SIZE 2000

int dot(int *a, int *b, unsigned int size);

// performs dot product of integer arrays a and b

int main (void) {

int res_alone, res_together, i;

int *a, *b;

TDS ad;

ppc0_init_semaphore();

print("-- PPC0: Entering main() --\r\n");

// arrays are initialized here //

ppc0_pass_var(a,ARR_SIZE); // PPC1 begins its calculation

res_alone = dot(a + ARR_SIZE/2,b + ARR_SIZE/2,ARR_SIZE/2);

ppc0_get_var(&ad); // Wait for PPC1's result

res_together = *((int *)(ad.base)) + res_alone;

xil_printf("DONE, result: %d\n\r",res_together);

return 0;

}

Page 60: Sopc Booklet

‏60‏12/3/09‏‏

// PPC1's program

#include "semaphore_util.h"

int dot(int *a, int *b, unsigned int size);

// performs dot product of integer arrays a and b

int main (void) {

int *a,*b, res;

TDS ad;

ppc1_init_semaphore();

ppc1_get_var(&ad); // wait for array to be ready

a=(int *)ad.base;

b=a + ad.size;

res = dot(a,b,ad.size/2);

a[0] = res;

ppc1_pass_var(a,1); // return the result to PPC0

return 0;

}

.‏ומדפיסה‏את‏התוצאה‏a,bפלה‏סקלרית‏בין‏שני‏וקטורים‏הנתונים‏במערכים‏הדוגמא‏מבצעת‏מכ:‏הסבר

‏1'‏ומעבד‏מס(‏כתובות‏גבוהות)מחשב‏את‏סכום‏המכפלות‏של‏החצי‏העליון‏של‏המערכים‏‏0'‏מעבד‏מס

התוצאה‏הסופית‏היא‏(.‏כתובות‏נמוכות)מחשב‏את‏סכום‏המכפלות‏של‏החצי‏התחתון‏של‏המערכים‏

‏2-לאחר‏ש,‏0'‏י‏התוכנה‏שרצה‏על‏מעבד‏מס"דים‏והיא‏מודפסת‏עהמעב‏2סכום‏התוצאות‏של‏

.‏המעבדים‏מסיימים‏את‏חישובי‏המכפלות‏שלהם

Hardware Interrupts Mechanism (HWIM):2מנגנון

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

,‏EICC405EXTINPUTIRQבסיגנל‏‏`1`‏-ל‏`0`‏-מפסיקת‏חומרה‏מתרחשת‏כאשר‏מתגלה‏עליה‏

.‏PPC405-למעבד‏ה‏inputשהוא‏

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

interruptרכיב‏זה‏מחובר‏ל.‏שלו‏-BUSה‏-OPBוקיימת‏כתובת‏על‏ה,‏המשותף‏-BUSשגישה‏אליה‏‏

הרכיב‏מייצר‏פולס‏על‏',‏1'שלו‏הוא‏‏MSB-כותבים‏לכתובת‏זו‏ערך‏שהכאשר‏;‏מהווה‏גישה‏לרכיב

.‏של‏המעבד‏interrupt‏-כניסת‏ה

‏trigger0)‏trigger1‏-ו‏trigger0שמם‏.‏אחד‏לכל‏מעבד,‏קיימים‏שני‏רכיבים‏כאלו‏OPB-ה‏BUSעל‏

חת‏ראה‏גם‏שרטוט‏ת(.‏בהתאמה‏trigger1;‏כותב‏אליו‏PPC1,‏כלומר‏‏-PPC0‏-ל‏interruptנותן‏

.‏למעלה‏1.2.1סעיף‏

.‏שהוגדרה‏בסעיף‏הקודם‏TDSגם‏שיטה‏זו‏משתמשת‏בהודעת‏

:‏ביצוע‏טרנסקציה‏בין‏שני‏המעבדים‏תהיה‏לפי‏התהליך‏HWIM‏-בשיטת‏ה

.‏אם‏לא‏המתן,‏signal==0‏-בדוק‏ש -

.1-ל‏signalקבע‏את‏.‏בהתאם‏לדרוש‏TDS‏-קבע‏את‏ערכי‏ה -

.המתאים‏trigger-כתוב‏לכתובתו‏של‏ה -

הוא‏יגדיר‏.‏אשר‏יאותחל‏לאפס‏‏-private_flagנסמנו‏‏(‏-פרטי)בל‏יחזיק‏משתנה‏גלובלי‏הצד‏המק

‏interrupt‏-שגרת‏ה.‏כאשר‏קוראים‏לה‏1-שגרה‏לטיפול‏בפסיקה‏אשר‏תעלה‏את‏ערך‏המשתנה‏ל

:‏תבצע‏את‏הפעולות‏הבאות

.‏1-ל‏private_flagקבע‏את‏ערך‏ -

:‏בתוך‏התוכנית‏יבוצעו‏הפעולות‏הבאות

.‏private_flag==1תקבל‏המתן‏עד‏שי -

.0-ל‏private_flagקבע‏את‏ערך‏ -

.ושמור‏עותקים‏מקומיים‏TDS‏-קרא‏את‏שדות‏ה‏ -

.על‏מנת‏להודיע‏לצד‏השני‏שניתן‏להתחיל‏טרנסקציה‏חדשה‏0-ל‏signalקבע‏את‏ערך‏ה‏ -

‏–‏interrupt_util.hבאדום‏מסומנות‏פונקציות‏הממשק‏של‏הקובץ‏)HWIM ‏-דוגמא‏לשימוש‏ב

‏interrupt_util.c כמו‏גם‏במימוש‏שלו‏בקובץ‏,‏ניתן‏לעיין‏בקובץ‏זה.‏HWIM-מנגנון‏ה‏המכיל‏את

(:‏המצורפים‏לחוברת‏זו

.‏ורק‏המימוש‏שונה,‏שימו‏לב‏כי‏הדוגמא‏זהה

Page 61: Sopc Booklet

‏61‏12/3/09‏‏

‏// PPC0's program

#include "interrupt_util.h"

#include "stdio.h"

#define ARR_SIZE 2000

int dot(int *a, int *b, unsigned int size);

// performs dot product of integer arrays a and b

int main (void) {

int res_alone, res_together, i;

int *a, *b;

TDS ad;

enable_interrupts();

print("-- PPC0: Entering main() --\r\n");

// arrays are initialized here //

ppc0_pass_var_interrupt(a,ARR_SIZE); // PPC1 begins its calculation

res_alone = dot(a + ARR_SIZE/2,b + ARR_SIZE/2,ARR_SIZE/2);

ppc0_get_var_interrupt(&ad); // Wait for PPC1's result

res_together = *((int *)(ad.base)) + res_alone;

xil_printf("DONE, result: %d\n\r",res_together);

return 0;

}

// PPC1's program

#include "interrupt_util.h"

int dot(int *a, int *b, unsigned int size);

// performs dot product of integer arrays a and b

int main (void) {

int *a,*b, res;

TDS ad;

enable_interrupts();

ppc1_get_var_interrupt(&ad); // wait for array to be ready

a=(int *)ad.base;

b=a + ad.size;

res = dot(a,b,ad.size/2);

a[0] = res;

ppc1_pass_var_interrupt(a,1); // return the result to PPC0

return 0;

}

Page 62: Sopc Booklet

‏62‏12/3/09‏‏

' ח מכין חלק ב"דו .7התייחסו‏בתשובתכם‏לחמשת‏הבלוקים‏.‏רון‏שרואים‏המעבדיםתארו‏את‏מבנה‏מערכת‏הזיכ .1

מי‏,‏מה‏סוג‏המידע‏שנשמר‏בו,‏מה‏גודלו:‏עבור‏כל‏אחד‏מהם‏ציינו.‏ההמופיעים‏בדיאגראמ

.מהמעבדים‏עשוי‏לגשת‏אליו‏ומתי

,‏אם‏כן.‏הסבירו,‏אם‏לא?‏האם‏תיתכן‏התנגשות‏בין‏גישות‏של‏שני‏המעבדים‏לקריאת‏פקודות .2

.ה‏בו‏קיימת‏התנגשותהביאו‏דוגמא‏למקר

,‏אם‏כן?‏ויוצרים‏התנגשות‏PLB-האם‏התוכנה‏מונעת‏מצב‏בו‏שני‏המעבדים‏ניגשים‏בו‏זמנית‏ל .3

.ציינו‏מהו‏המנגנון‏שדואג‏לכך,‏אם‏לא.‏הסבירו‏כיצד‏היא‏עושה‏זאת

?שיטות‏התקשורת‏בין‏מעבדים‏נעשה‏שימוש‏במערכת‏שלנומבאיזו‏ .4

.‏(רנטיותקוה)סנכרון‏ועקביות‏‏:המקביליות‏של‏שני‏היבטי‏בעיית‏הסבירו‏את‏משמעותם .5

ים‏-TDSלכמה‏‏?ים‏יש‏במערכת‏שלנו-TDSכמה‏‏.ולשם‏מה‏הוא‏נחוץ‏TDS-הסבירו‏מהו‏ה .6

משתמש‏אחד‏קורא‏והשני‏)סיטרית‏-בה‏התקשורת‏היא‏חד,‏נזדקק‏במערכת‏בת‏שני‏משתמשים

.נמקו‏?(כותב

?כניתבמהלך‏ריצת‏התו‏TDS-מבנה‏הכתובת‏את‏מדוע‏לא‏ניתן‏לקבוע‏ .7

.‏תנו‏דוגמא‏למצב‏בו‏שינוי‏זה‏היה‏גורם‏לשגיאה.‏היה‏מושמט‏TDS-ב‏signalנניח‏כי‏השדה‏ .8

?פותר‏בעיה‏זו‏signal-כיצד‏קיום‏ה

(:Semaphores, Interrupts)מנגנוני‏הסנכרון‏מ‏כל‏אחד‏ענו‏עבור .9

?(חומרה‏או‏תוכנה)‏המנגנוןעל‏מה‏מבוסס‏ .א

?במקביל‏להמתנה,‏נוספות‏האם‏המעבד‏הממתין‏למידע‏יכול‏לבצע‏פעולות .ב

?ולהיפך,‏Semaphores-עדיף‏על‏הInterrupts -מתי‏מנגנון‏ה .ג

היא‏מציינת‏למהדר‏שהמשתנה‏.‏מקדימה‏הגדרות‏של‏משתנים‏cבשפת‏‏volatileהמילה‏השמורה‏ .01

המהדר‏לא‏יכול‏להניח‏שהמשתנה‏נשאר‏קבוע‏כאשר‏אינו‏,‏כלומר‏–"‏נדיף"אותו‏מגדירים‏הוא‏

‏-ו‏PPC0_TDS‏םהמשתנים‏הגלובליי.‏semaphore_util.c‏-בהתבונן‏.‏ניגש‏אליו

PPC1_TDSמדוע‏נחוצה‏המילה‏.‏0‏הם‏מבני‏הנתונים‏הקבועים‏בזיכרון‏עליהם‏דּנו‏בפרק‏‏

?בהגדרת‏המשתנים‏הללו‏volatileהשמורה‏

כל‏;‏ת‏את‏אותה‏הפעולהבשני‏המקרים‏התוכנות‏מממשו.‏התבוננו‏בתוכנות‏לדוגמא‏שניתנו‏לעיל .11

תוכנה‏,‏כלומר‏–כתבו‏את‏התוכנה‏ללא‏מקביליות‏.‏אחת‏עושה‏זאת‏בשיטת‏סנכרון‏אחרת

אשר‏חתימתה‏מוגדרת‏‏()dotניתן‏להשתמש‏בפונקציה‏.‏סדרתית‏פשוטה‏שרצה‏על‏מעבד‏אחד

.‏לעיל

' ח מסכם חלק ב"ודו מהלך הניסוי .8‏

תוך‏ניצול‏הידע‏שרכשתם‏בכלי‏,‏ילהמתוארת‏לע‏SoPCבחלק‏זה‏של‏הניסוי‏תתנסו‏במערכת‏

מטרתו‏של‏חלק‏זה‏היא‏להתנסות‏בהרצת‏תוכנית‏על‏גבי‏מערכת‏בעלת‏שני‏.'הפיתוח‏בחלק‏א

ענו‏על‏כל‏;‏עליכם‏לבצע‏אותה‏-ח‏המכין‏תקבלו‏משימה‏מהמדריך‏"לאחר‏הגשת‏הדו.מעבדים

.‏ח‏המסכם"השאלות‏בדו

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

.של ספק יש לקרוא למדריך