sopc booklet
TRANSCRIPT
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] –או לאינה
212/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 ,אנונימי באופן ממולא הטופס .
.חלשב גם כמו ולשפר לתקן מנת על לתגובותיכם זקוקים אנו
312/3/09
:ייניםתוכן ענ
4..........................................................הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיותהנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות6 ....................................................................................................... תאור סביבת הניסוי.1
6...........................................................................................רכיבים מתכנתים.1.1
7.......................................................................................הרכיב שאיתו נעבוד.1.2
7......................................................................................תאור חומרת הכרטיס.1.3
8.....................................................................................תיאור סביבת הפיתוח.1.4
VHDL ..................................................................................................... 9מבוא לשפת .216 ......................................................................................................... 'ח מכין חלק א"דו.319 ......................................................................... ביצוע הניסוי במעבדה –מפגש ראשון .4
19.................................................................................'חלק א –מפגש ראשון .4.1
20...............................................................1שלב –' חלק א –מפגש ראשון .4.1.1
29...............................................................2שלב –' חלק א –מפגש ראשון .4.1.2
33...............................................................3שלב –' חלק א –מפגש ראשון .4.1.3
47.................................................................................'חלק ב –מפגש ראשון .4.252 ...................................................................................................... 'ח מסכם חלק א"דו.555 ..................................................................... .עיבוד מקבילי ושיתוף זכרון –מפגש שני .6
55...................................................................................................מוטיבציה6.1
55...............................................ניהול זיכרון ותקשורת במערכת מרובת מעבדים6.2
57.............................................................................................שיטות סנכרון6.3
57.............................................................................................מבנה המערכת6.462 ......................................................................................................... 'ח מכין חלק ב"דו.762 ................................................................................ 'מסכם חלק ב ח"מהלך הניסוי ודו.8
412/3/09
מכון טכנולוגי לישראלמכון טכנולוגי לישראל -הטכניון -הטכניון
הפקולטה להנדסת חשמלהפקולטה להנדסת חשמל
מעבדות ההוראה מעבדות ההוראה
הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות הנחיות בטיחות לסטודנטים בניסוי מערכות ספרתיות
::עשה ואל תעשהעשה ואל תעשה
. . בקורס הדרכת בטיחות בחשמלבקורס הדרכת בטיחות בחשמלעובר עובר לבצע ניסוי במעבדה ללא קבלת ציוןלבצע ניסוי במעבדה ללא קבלת ציון" " איןאין"" ..11
..כפי שנלמדו בקורס בטיחותכפי שנלמדו בקורס בטיחותלקיים את הוראות הבטיחות לקיים את הוראות הבטיחות במעבדה על הסטודנטיםבמעבדה על הסטודנטים ..22
..ביחידותביחידות אין לבצע פעילות במעבדהאין לבצע פעילות במעבדה ..33
..יש לידע את המדריך על מצב מסוכן וליקויים במעבדה או בסביבתהיש לידע את המדריך על מצב מסוכן וליקויים במעבדה או בסביבתה ..44
בטיחות חשמלבטיחות חשמל
ים בטחון מלא נגד ים בטחון מלא נגד המעבדה מצוידת במגיני זרם פחת אך זכור שהם אינם מקנהמעבדה מצוידת במגיני זרם פחת אך זכור שהם אינם מקנ ..11
. . התחשמלותהתחשמלות
כל הכבלים בניסוי כל הכבלים בניסוי . . הניסוי כולל מחשב ומדגם ניסוי המורכב מכרטיס הדגמה ומסךהניסוי כולל מחשב ומדגם ניסוי המורכב מכרטיס הדגמה ומסך ..22
(.(.לא של המחשב ולא של המדגםלא של המחשב ולא של המדגם))או לנתקם או לנתקם //וו ואין לשנותםואין לשנותםמחוברים מחוברים
..במידה ואחד החיבורים מנותק יש לקרוא למדריךבמידה ואחד החיבורים מנותק יש לקרוא למדריך ..33
..לקרוא למדריךלקרוא למדריךאו המחשב אלא או המחשב אלא //אין לנסות לתקן תקלה כלשהי במערכת הניסוי ואין לנסות לתקן תקלה כלשהי במערכת הניסוי ו ..44
!!אסור לפרק את המחשב או את מערכת הניסויאסור לפרק את המחשב או את מערכת הניסויבשום מקרה בשום מקרה ..55
. . מפסק זרם ראשי בארון חשמל נעול במסדרון ליד דלת הכניסה למעבדהמפסק זרם ראשי בארון חשמל נעול במסדרון ליד דלת הכניסה למעבדה - -315315חדר חדר ..66
..מפתח בקופסה ליד דלת הכניסהמפתח בקופסה ליד דלת הכניסה
..מפסק זרם ראשי בארון חשמל שליד דלת כניסה למעבדהמפסק זרם ראשי בארון חשמל שליד דלת כניסה למעבדה - -1-1-315315חדר חדר
זרם החשמלזרם החשמל קקניתוניתו –– םםלחצן חירולחצן חירו
..זהה את מקומוזהה את מקומו ––החשמל החשמל קקכפתור אדום לניתוכפתור אדום לניתו –– םםליד דלת הכניסה יש לחצן חירוליד דלת הכניסה יש לחצן חירו 315315ר ר בחדבחד
בטיחות אש ועזרה ראשונהבטיחות אש ועזרה ראשונה
. . בכניסה למעבדה ממוקם מטף כבוי אשבכניסה למעבדה ממוקם מטף כבוי אש ..11
. . 308308מטף נוסף בהמשך הפרוזדור לעבר מעבדה כללית מטף נוסף בהמשך הפרוזדור לעבר מעבדה כללית
..אצל אינה או ברוריהאצל אינה או ברוריה 318318תיק עזרה ראשונה נמצא בחדר תיק עזרה ראשונה נמצא בחדר ..22
512/3/09
םםיציאותחירויציאותחירו
זהה אותןזהה אותן –– םםשנן דלתות יציאת חירושנן דלתות יציאת חירובקומה יבקומה י ..11
םםלפתיחתן ניתן להיעזר במפתחות החירולפתיחתן ניתן להיעזר במפתחות החירו. . שאינן בשימוש שוטף נעולותשאינן בשימוש שוטף נעולות םםדלתות החירודלתות החירו ..22
..שימוש במפתחות יגרום להפעלת צופרשימוש במפתחות יגרום להפעלת צופר. . הממוקמים בקופסא הצמודה לדלתהממוקמים בקופסא הצמודה לדלת
יש להתפנות מיד מהמעבדה דרך פתח יש להתפנות מיד מהמעבדה דרך פתח , , כגון שריפהכגון שריפה, , חירום הדורש פינויחירום הדורש פינוי עעבאירובאירו ..33
..החירום הנגיש ביותרהחירום הנגיש ביותר
םםדיווחבעתאירועחירודיווחבעתאירועחירו
. . ראה לוח בטיחות במעבדהראה לוח בטיחות במעבדה
612/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תאורכללישל
712/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.
4LEDs.
4מתגים.
5כפתורילחיצה.
100גבישהמייצראותשעוןבתדרMHz.
2למחברטורימסוגותכניסPS2(.עכבר/מקלדת)
חיבורJTAGלצריבתהרכיבים.
10/100רכיב Ethernet PHY.
:ניתןגםלהתבונןבאיור.ורכיביםנוספים
812/3/09
. תיאור סביבת הפיתוח .4.1
. EDK (Embedded Development Kit)-כליהפיתוחהעיקרישלנוהינוה
מערכתהמכילהמעבד Embedded (לתכנוןמערכתXilinxהינוכליהפיתוחשלחברתEDK-ה
.XilinxשלחברתFPGAברכיביםהניתנתליישו(ומשלבתחומרהותוכנהםוהתקניםהיקפיי
כמוגםאת,EmbeddedוהקומפוננטותהבסיסיותלפיתוחמערכתמכילאתכלהכליםEDK-ה
מאפשראינטגרציהקלהEDK-ה.שהמשתמשיוצרבעצמוהאפשרותלהוספהקלהשלקומפוננטות
.תהשלמהשלחומרהותוכנהשיוצריםאתהמערכביןהמרכיביםהשונים
תוכלולזהותבואתתהליך.התבוננובציורהבא,משתלבבתכנוןEDK-כיצדהכדילהביןטוביותר
סגול)EDK-ושילובםדרךה(ירוקמשמאל) תהליךיצירתהתוכנה,(כחולמימין)יצירתהחומרה
(.במרכז
Debugזהולמעשהכלי.ChipScope Pro-מקושרלכלינוסףבונשתמשבניסויזהוהואהEDK-ה
נוכללדגוםסיגנליםולראותאותםבזמןאמתעלוב,שלחומרהותוכנהמשולבdebuggingהמאפשר
.המסך
. הסבר נוסף על כלים אלה וסביבת הפיתוח יינתן במהלך הניסוי
912/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-המבנההפנימישלה\תיאורההתנהגות
שימושבבלוקים)וגםתאורמבני(הפונקציהעצמהמימוש)ארכיטקטורהיכולהלהכילתאורהתנהגותי
.(אחרים
1012/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_muxENTITY-העבור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
1112/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תהליכיםהם.סדרתיות
.וסידרתיזואחרז
בתום התהליךעדכוןהערךהחדשמבוצעפיזיתרק,אםבתוךהתהליךמבוצעותהשמות .
1212/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התהליךמופעלבעתשינויערך
.רקהאחרונההיאזושתבוצעבפועל,אםהיומספרהשמותלאותוסיגנל.התהליך
1312/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סוגנתוניםשיכוללקבלאתהערכיםהבאים:
1412/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;
1512/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)ברירתמחדלהשמות
1612/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
_________________________________________________________
_________________________________________________________
_________________________________________________________
1712/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
1812/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
_________________________________________________________
_________________________________________________________
_________________________________________________________
1912/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כולל)הלתכנוןקומפוננטהתוךכדיהוספתאנונלמדעלכל
.(נראותבציור
2012/3/09
1שלב –' חלק א –מפגש ראשון .1.1.4
:ילחיצהכפולהעלאייקוןהתוכנה"עEDK-הנפתחאתתוכנתתחילה
:נקבלאתהמסךהבא
.OKונלחץ(בתמונהכמו)Base System Builder wizard נבחר
ישימוש"עX:\part1להיותונצייןאתמיקומו,system-כהחדששלנוהפרויקטנקבעאתשםכעת
…Browse-באופצייתה
.ונצביעעלמיקוםהקבציםעםהגדרותהכרטיסUse Repository paths-בחלוןה vנסמן
.OKנלחץ
.NEXTיצירתתכנוןחדשונלחץעלבחלוןהבאנבחרבאופציהשל
2112/3/09
:נמלאאתהשדותבחלוןהבאבהתאםלציור.עליונעבודBoard-כעתנבחראתה
.כעתעלינולבחוראתסוגהמעבדעבורהמערכתשלנו.NEXTנלחץעל
:סוגימעבדים2ישנםSystem On Chipבמסגרת
1. Soft CoreכדוגמתMicroBlaze
2. Hard CoreכדוגמתPowerPC405.
:בהתאםלציורPowerPC-אנונבחרב
2212/3/09
:נבצעזאתבהתאםלציורהבא.כעתעלינולקנפגאתהמעבד.NEXTנלחץעל
2312/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:
2412/3/09
:לדוגמאבמסךהבא,בשארהקומפוננטותv-אלתשכחולהורידאתה
2512/3/09
לבסוףנוסיףאת.שאחריוכיםובמס
Plb_bram_if_cntlr64רוןשלזיכבקר–KBוהואיחוברל,-PLB:
2612/3/09
.במסכיםשיופיעו,בקוביותשלהםV-הרכיביםנבטלאתהלגביכלשאר
יהציור"עפRS232_UART_1שלנולהיותStandard Output-ואתהStandard Input-נקבעאתה
:הבא
:עדשנגיעלחלוןהאחרוןשיציגלנואתנתוניהמערכתשיצרנוNEXTנלחץעל
2712/3/09
(.ולשנותבמידתהצורךBackאםלאתוכלוללחוץעל,ערכתאצלכםזההוודאושאכןהמ)
.המערכתהראשוניתשלנונוצרה.FINISH-וGENERATEנלחץעל
.כדילהתחילולעבודעלהמערכתשיצרנוOKנלחץעל
.לסביבתהעבודהשלנועקצת
:בצדשמאלשלהמסךנראהאתהחלוןהבא
2812/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-אנוניגעב
2912/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.
3012/3/09
(.Filters-מתחתל,לחיצהעלהעיגולהמתאיםבכותרת)Ports-נעבורל
נמצא,לכן.OPB_CLK-אלהקומפוננטהשלנובתורהsys_clk_sצהלחבראתהשעוןשלהמערכתנר
עלמנתלראותאתכלהפורטיםשל(.לחיצהעלהריבועלידהשם)ונרחיבאותהdip_pushאת
:כפישניתןלראותבציורהמצורף,AllונלחץעלFilters (Applied)הקומפוננטהנלחץעל
,sys_clk_sונחפשאתNetבעמודהנלחץשתילחיצותנפרדות OPB_CLKרהשלבאותההשו
:כמתוארבציורהבא
3112/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תואמותלבאותעבור
3212/3/09
.ראושאתםמזהיםאתהקומפוננטות.FiltersתחתAddresses-נעבורעכשיול
.מקבלתמרחבכתובותdip_pushונראהשהקומפוננטהGenerate Addressesנלחץעל
(.Ignoreליחצועל,אםתופיעלכםהודעתאזהרה)
.חהמסכםשבסוףהחוברת"שבדו4-ו3ענועלהשאלות
3312/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נלחץעלו
3412/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
:כפישניתןלראותמהציורהבא
3512/3/09
נגדיר.יתוכנהואתגודלם"הרגיסטריםהניתניםלגישהע'עלינולהגדיראתמסכעת.Nextנלחץעל
:כמתוארבציורהבא,ביט32רגיסטראחדברוחב
שנממשUser Core-בחלוןהבאמתואריםלנוכלהסיגנליםשישמשולממשקביןה.NEXTנלחץעל
.( OPB BUS-ודרכול)IPIF-לביןה
3612/3/09
:דאגושהחלוןהבאיראהכך.פעמייםNEXTעלאלתשנודברולחצו
.NEXT לחצועל.מהשורההאמצעיתV-דאגולהורידאתה,כלומר
.החדש IP-המודיעעליצירתה,כעתנקבלאתהמסךהמסכם
3712/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עבורהקובץ
3812/3/09
החדששהעתקתםומצאואתuser_logic.vhdפתחואתהקובץ,עלידיגרירהלסרגלבסביבתהעבודה
.חהמסכם"בדו5ענועלשאלה.קטעהקודשבאיור
.סגרואתהקובץ
.כדישנוכללהוסיףאותהלתכנוןשלנו,IP Catalog-כעתנוסיףאתהקומפוננטהל
,אךכעת,Create or Import Peripheral WizardבסרגלהעליוןושםנבחרHardware-נלךשובל
.כדילהוסיףאתהקומפוננטהשיצרנוImport existing peripheralנבחראתהאופציה,בחלוןהשני
.שלנונבחראתהפרויקט.NEXTנלחץעל
3912/3/09
:ואתהגרסאהראשונהmy_led:בחלוןהבאנבחראתשםהקומפוננטה.NEXTנלחץעל
:VHDLקבציבחלוןהבאנבחראתהאופציהשל.Yesואזעל.NEXTנלחץ
4012/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-הממשקלבחלוןהנוכחיאנוצריכיםלקבועאת
4112/3/09
.NEXTנלחץעל
.בחלוןהבאמופיעיםכלהפורטים
.interruptsנבטלאתהאופציהשל.interrupt signalsונגיעלחלוןלגבי,פעמייםNEXTנלחץעל
.FINISHעדשנגיעלחלוןהאחרוןואזנלחץעלNEXTעלנלחץ
נרצהלזהותאותהולהוסיףאותהלפרויקט.IPs-לרשימתהmy_ledכעתנוספההקומפוננטההחדשה
.שלנו
עלCLICK)Project RepositoryונרחיבאתהשורהIP CATALOGניגשבחלוןהשמאלילתווית
DOUBLEי"ע)ונוסיףאותהלפרויקטmy_ledנמצאשםאתהקומפוננטה(.הריבועלידהשם
CLICKאוגרירהלחלוןהימני.)
4212/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-שמימיןל
4312/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 י"תוכלולהסתכלעלהקבציםהללוע
4412/3/09
בסרגלהעליוןביותרנבחר,לתוכנהיצוראתהספריותהדרושותלדברראשוןבכדי
.SoftwareGenerate Libraries and BSPs
מ.TestApp_MemoryנעתיקאתהקובץTestApp_Memory.cבמקוםהקובץ,כעת
Q:\VirtexII PRO\expעלהקובץהקייםבסיפרייהTestApp_Memory\src\
עליובחלוןDOUBLE CLICKי"עTestApp_Memory.cנחזורלסביבתהעבודהונפתחאתהקובץ
:בחלוןהימנינקבלאתהתוכןהבא.השמאלי
4512/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רשמובחלוןשיפתח
4612/3/09
.דרכונוכללראותאתההדפסותלגבימצבהמתגיםוהכפתורים.מוכן Hyper Terminal-כעתה
התבוננו.סיימולענותעלהשאלותשהוצגובמהלךחלקזהשלהניסוי,עינהזמןשנותרעדלסיוםהטב
-תוכלולהיעזרב.וודאושאתםיודעיםאתמהתפקידם,בכלהקבציםשנוצרותחתהפרוייקטשלכם
HELPלמידענוסף.
HyperTerminal-שימולבלשינויבפלטשב.שנואתמצבהכפתוריםוהמתגים,לאחרשהרכיבטעון
?האםהפעולהתקינה?מהאתםרואים.LEDS-נויבולשי
4712/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-כלומרחוברכ,וודאושאכןהעיגולנצבעבירוק
4812/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.
4912/3/09
.Select new fileונלחץעלFile Importניגשל
שתחתהספרייהcs_coregen_chipscope_opb_iba_0.cdcונמצאאתהקובץBrowser-נשתמשב
implementation\chipscope_opb_iba_0_wrapper\קובץזהנוצרעבורנולמעשה.בפרויקטשלנו
.chipscope-כאשרהוספנואתהקומפוננטותהקשורותב
יכוללהיותשתצטרכולשנותאתגודל)כעתנשנהאתההגדרותבחלונותכדילקבלאתהסידורהבא
:(החלונותכדילקבלאתהתצוגההבאה
5012/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אכןזובחלוןה
5112/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ענועלשאלות
5212/3/09
'ח מסכם חלק א"דו .5
היאBUSפרטולגביכלאחתמהןלאיזה,אתכלהקומפוננטותהמופיעותבחלוןזהרישמו .1
שימולבשישנןמספרקומפוננטותשנוספו(.Master/Slave/Target)מחוברתובאיזהחיבור
האםבאמתאינןמחוברותבמערכתכמושנראה?למההןמשמשות?מהן,באופןאוטומטי
?בציור
-עלכלקומפוננטהולקבלעודמידעוכןאתה DOUBLE CLICKשימולבשניתןלבצע
DATA SHEETהמלא.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
______________________________________________________________
לאילוכתובות?היאעובדת(Baud Rate)באיזהקצבRS232_UART : לגביהקומפוננטה .2
?היאממופה
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
5312/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
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
5412/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-העובריםב
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
5512/3/09
. עיבוד מקבילי ושיתוף זכרון –מפגש שני .6
מוטיבציה יזיהוישל"שנועדהלהגביראתביצועיהמערכתע,שהבארכיטקטורתמחשביםעיבודמקביליהיאגי
.חלקיםמקביליםבאלגוריתםוחלוקתםלמשימותהמוקצותלמספרמעבדיםשוניםשפועליםבמקביל
Nיכוליםלהשיגהאצתביצועיםעדכדיפי(ליבותNאומעבדבעל)מעבדיםNמערכתבעלת
וזאתבהנחהכיהתוכניתהמורצתעלהמעבדהיאמקביליתטהורה,מאשרמערכתבעלתמעבדיחיד
.כלומראיןבתוכהתלויותהמאלצותחלקיםממנהלהתבצעבאופןסדרתי-
.אםישכזאת,וזיהויהמקביליותשלה,חלקחשובבעיבודמקביליהואניתוחאלגוריתמישלהבעיה
אתהתלויות.קביליאםאיןתלותביניהםחלקיםנפרדיםבבעיהנתונהיכוליםלהתבצעבאופןמ
:הקיימותבתוכניתניתןלחלקלשניסוגיםעיקריים
וניתןלהבחיןבהן,אלהנקבעותמתוךהגדרתהאלגוריתםללאתלותבנתונים-תלויותסטטיות .1
.לפניהרצתהתוכנית
.כפונקציהשלהקלט,אלהנקבעותבזמןריצתהתוכנית-תלויותדינאמיות .2
בזמן,אולחלופין)ניתןלנצלאיתלותסטטיתבזמןכתיבתהתוכנה,רכתמרובתמעבדיםבמע
זיהוישלאיתלויותדינאמיותקשהיותרודורשמנגנונים.מלבצעפעולותבמקביל"ע,(קומפילציה
אנונתמקדבזיהוישלאיתלויותאלהמתוךהתבוננותבקוד.בחומרהותוכנהשלאנדוןבהםכאן
.מלהעבירקודזהלקודמקבילישמבצעאתאותההפונקציהבדיוק"וניצולןע,סדרתי
והתקניקלט,BUS,זיכרון:נכירמערכתבעלתשנימעבדיםהמשתפיםמשאביםביניהם,בניסויזה
.פלטפשוטים
ניהול זיכרון ותקשורת במערכת מרובת מעבדים למערכתהזיכרוןשלאקיימיםבמערכתבמערכתמרובתמעבדיםישנםעקרונותחשוביםבניהו
.שהואמרכיבחיוניבעיבודמקבילי,כמוכןקייםהנושאשלתקשורתביןהליבות;בעלתמעבדיחיד
:ניתןלממשיחידותזיכרוןבשתיגישותשונות
למשמשאךורקאתאחדמהמעבדיםלאיחסוןשל"הזיכרוןהנ.שלכלמעבדפרטיזיכרון
.ניםאונתו/פקודותו
זיכרוןמשותףלשנימעבדיםאויותר.
להקצותערוץתקשורתבין,לדוגמא,ניתן.תקשורתביןמעבדיםיכולהלהתבצעבמספרשיטות
.המעבדיםשנועדאךורקלמטרהזו
מעבד מעבד
ניתוב
תקשורת
מעבדמעבד
.התקשורתביןהמעבדיםהיאמחדפשוטהמאודלכותבהתוכנה.לשיטהזויתרונותוחסרונות
משאבזהיכול;ערוץתקשורתשלם:ושביםעלמשאביקרשלהמעבדערוציהתקשורתי,מאידך
חיסרוןנוסףשלשיטהזוהיאמורכבותו.'לרכיביפריפריהוכו,לשמשאותולהעברתנתוניםלזיכרון
.שלהניתובושלכלמערךהחומרההמחברתאתהמעבדים
5612/3/09
שיטהאחתדומה.ותמספרשיטותכאןקיימ.בניסויזהאנונדוןבעיקרבתקשורתדרךזיכרוןמשותף
לנקודהביןהמעבדיםאנומצמצמיםאת-אולםבמקוםלנתבתקשורתנקודה,לשיטההקודמת
.המשימהלמשימהשלבוררותביןהמעבדיםעלגישהלזיכרוןיחיד
מעבד מעבד
מעבדמעבד
בורר זיכרון
זיכרון משותף
מי"אךכלניהולהתקשורתברמת,בשיטהזוישנוערוץתקשורתשמיועדלתקשורתביןמעבדים
כךהורדנומשמעותיתאתמורכבותהחומרההמחברתבין.נעשהברמתהתוכנה,"ולמישלחמה
.לאפתרנוכללאתבעיתתפיסתמשאבערוץהתקשורת,עםזאת.המעבדים
ובעקיפיןעם)שיטהחלופיתהיאניצולערוץתקשורתקייםלצורךהתקשורתעםהזיכרוןהמשותף
(.המעבדיםהאחרים
מעבד מעבד
מעבדמעבד
(BUS)ערוץ תקשורת משותף BUSבורר
התקנים
חיצוניים
זיכרון משותף
שיטהזוגםמאפשרתניהול.bus-כברקיימתעלה,הבורר,שמנהלתאתהגישותגםאותהחומרה
busיחידלכלהמעבדיםובכךלחסוךחומרהעלהשבב.
ישלשים;ניהולשלזיכרוןמשותףמציגבפניהמתכנןבעיותמימוששלאנתקליםבהםבזיכרוןפרטי
המעבדיםיכוליםלבקש,יתרהמזו;ןלבכיתתכננהגישותבוזמניותמצדשניהמעבדיםלזיכרו
תרחיששכזהיכול.בוזמנית,(לגשתלאותההכתובת:כלומר)לקרואאתאותהפיסתמידע/לכתוב
הזיכרוןחייבלספקמידעעדכנילכלאחד:אועיקביות,coherencyלעוררבעיהשנקראת
קיימות,בפרט.ירביתותוךמתןמענהבתפוקהמ,מהמעבדיםעלאףהעבודההמקביליתשלהם
הפעולהמתבצעתמתחילתהועדסופהללא:כלומר;פעולותשחייבותלהתבצעבצורהאטומית
.פעולותכאלונקראותטרנסאקציות.הפרעותאושאינהמתבצעתכלל
.קיימותדוגמאותרבותלבעיותשנובעותמחוסרסינכרוןבקטעיםקריטיים
5712/3/09
ניתןלתאראת.אקציההיאפעולתהמשיכהבכספומטדוגמאלפעולהשחייבתלהתבצעכטרנס
המערכתכאילוכלכספומטהואמחשבבעודשבמחשבהמרכזישלהבנקקייםזיכרוןמשותףעליו
נניחכיהמכונהצריכהלבצעאת,כאשרמישהומושךכסףמהמכונה.רשומיםנתוניהחשבון
:הפעולותהבאות
.לקרואאתהיתרהמהמחשבהמרכזי 1
.רממנואתהסכוםשנמשךלהחסי 2
.לכתובחזרהלמחשבהמרכזי 3
.למסוראתהכסףלמושך 4
לתתהוראהלמשיכת,אדםיכוללהגיעלכספומט".חורבמערכת"בעיוןבשיטהזונוכלמידלזהות
בשיטהכזואדםיכוללאבד.היאיכולהלהיקטעבכלשלב,כסףאךמאחרוהפעולהאיננהאטומית
עלידימשיכהבשני"כסףקל"אולחלופיןלהשיג,(4-ל3פעולהנקטעתביןאםה)אתהכסףשמשך
.3לפנישכלאחדאחרמבצעאתפעולה1כספומטיםבוזמניתכךששניהםמבצעיםאתפעולה
ברורכיהדרךהנכונהלבצעפעולהזוחייבתלכלולבתוכהאיאפשרותלבצעמספרפעולותבו
.זמניתעלאותוהחשבון
עלידיהגדרתפעולות?כיצדשומריםעלעיקביות:גיותבניהולזיכרוןמשותףהןדומותהסו
זוהימשימהשעומדתבפנימתכנןמערכתמרובת?כיצדמבצעיםפעולותאטומיות.אטומיות
.מעבדים
שיטות סנכרון
שלמלאפשרביצוע"ע,במערכתשלפניכםממומשותשתישיטותשונותלתקשורתביןהמעבדים
:עיבודמקבילי
שהמתכנת,יסדרתפעולותמוגדרתמראש"ניהולהטרנסקציהמתבצעע-סנכרוןמבוססתוכנה .1
ישינוי"ע.חייבלבצעתוךשימושבמבנינתוניםהנמצאיםבכתובותקבועותבזיכרוןהמשותף
לסנכרוןיכוליםהמעבדיםלהעבירביניהםהודעותהנוגעות,ל"שדותמסוימיםבמבניהנתוניםהנ
כדילאפשראת.תוךשימורשלעקביותהמידעהנגישלהםהנמצאבזיכרוןהמשותף,ביניהם
.נדרשכיכלמעבדידגוםבאופןסדירתאיםמסוימיםבזיכרון,ל"פעולתהמנגנוןהנ
ישליחתאיתותיםביןשני"ניהולהטרנסקציהמתבצעע-סנכרוןמבוסספסיקותבחומרה .2
אלאשכאןאיןדגימהשלתאים,מתבצעתבדומהלמנגנוןהקודםידעעצמוהמהעברת.המעבדים
יסיגנלהיוצרפסיקתחומרהבמעבד"ימעבדמסויםמתבצעע"ייזוםהטרנסקציהע-בזיכרון
.הרלוונטי
מבנה המערכת
PowerPCהמכילשנימעבדי,XilinxשלחברתVirtex II Proהמערכתבנויהעלבסיסרכיב
ממומשיםעלגביכלומרהם,Hard Cores-שניהמעבדיםנמצאיםעלהרכיבכ.IBMמתוצרת
Soft)שנוצריםבכלפעםשהרכיבמתוכנת,שארחלקיהמערכתבניגודל,הרכיבבעתהייצור
Coresשניהמעבדיםחולקיםאתאותו(.BUSואתשארהמשאביםכפישמתוארבסכמתהבלוקים
:שלהמערכת
5812/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
5912/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;
}
6012/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-מנגנוןההמכילאת
(:המצורפיםלחוברתזו
.ורקהמימוששונה,שימולבכיהדוגמאזהה
6112/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;
}
6212/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בחלקזהשלהניסויתתנסובמערכת
מטרתושלחלקזההיאלהתנסותבהרצתתוכניתעלגבימערכתבעלתשני.'הפיתוחבחלקא
ענועלכל;עליכםלבצעאותה-חהמכיןתקבלומשימהמהמדריך"לאחרהגשתהדו.מעבדים
.חהמסכם"השאלותבדו
במידה . י כלשהו בחומרה של הפרויקטאין לבצע שינו, כדי למנוע עיכובים מיותרים:שימולב
.של ספק יש לקרוא למדריך