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

משחק פונג: 6 שלבים
משחק פונג: 6 שלבים

וִידֵאוֹ: משחק פונג: 6 שלבים

וִידֵאוֹ: משחק פונג: 6 שלבים
וִידֵאוֹ: משחקים במרתף של דותן בפינג פונג לנצח!!! 2024, יולי
Anonim
משחק פונג
משחק פונג

חומרים:

לוח FPGA Basys3

כבל VGA

ויוואדו

מטרת ההנחיה היא לפתח משחק פונג שיוצג על צג. הפרויקט ישתמש ב- VHDL לתכנות ושימוש ב- Basys3 FPGA לביצוע הקוד והעברת התמונה באמצעות ממשק VGA. הדרכה זו מיועדת לאנשים שיש להם מעט ידע קודם ב- VHDL. ההדרכה תחולק ל -6 חלקים שונים: סקירה כללית, תהליך, מטפל בציונים, יצירת תמונות, משחק פונג ו- VGA.

שלב 1: סקירה כללית

סקירה כללית
סקירה כללית

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

מטרת המשחק:

המשחק מורכב מתצוגה עם משוט הזזה שניתן לשלוט בו על ידי המשתמש, וקיר קבוע הפועל כגבול העליון. כאשר המשתמש לוחץ על כפתור ההתחלה, שהוא כפתור העלייה, הכדור יתחיל לקפוץ למעלה, ויקפיץ מהקיר וינסה לפגוע בחבטה. אם הכדור פוגע בהנעה, הוא קופץ שוב וממשיך להקפיץ עד שהוא מחמיץ את ההנעה. המשחק נגמר כשהכדור לא מצליח לפגוע בחבטה. המשתמש יוכל להשתמש בכפתורי שמאל וימין כדי לקבוע את תנועת ההנעה. על מנת לאפס את המשחק, על המשתמש ללחוץ על הכפתור המרכזי. זמן הריצה יירשם בתצוגה של 7 קטעים. ישנן חמש רמות, וכל עשר שניות הרמה עולה, עד שתגיע לרמה 5 שבה היא נשארת עד שהמשתמש יפסיד. הרמות נקבעות לפי מהירות הכדור; המשמעות היא שכל עשר שניות מהירות הכדור עולה ובכך מגדילה את קושי המשחק.

ארכיטקטורת מערכת:

התרשים שלהלן הוא תרשים הבלוק הבסיסי הכולל ברמה העליונה של המערכת. למערכת ארבע כניסות: לחצן R, לחצן L, התחלה ואיפוס ושעון. יש לו יציאות סינכרון אופקיות ואנכיות, RBG (המתייחס לצבע הפיקסל במיקום מסוים) ו- Score (המשמש כאוטובוס לתצוגת 7 המקטעים). לחצן העלה ישמש כנקודת ההתחלה כפתור, ולחצני הלחיצה השמאלית והימנית ישמשו להנעת ההנעה לכיוונם. תצוגת 7 הקטעים תשמש לרישום הניקוד, שהוא מספר השניות שהמשתמש שיחק מבלי להפסיד במשחק. המספר יוצג כמספר עשרוני.

ארכיטקטורת מעגלים: נבנה את הגיזמו שלנו באמצעות FSM אחד המכיל FSM קטן יותר, תת-FSM ישלוט בקושי המשחק ואילו ה- FSM הראשי ישלוט על הזרימה הכוללת של המשחק. הגיזמו שלנו ישתמש לפחות בשלושה מחיצות שעון, אחת לציון (זמן), אחת לקצב הרענון של התצוגה ואחת המחוברת לפלט של DeMux, כך שנוכל לשלוט על מהירות המשחק ימשיך עם כמויות קושי הולכות וגדלות. המשחק יזוז הרבה יותר מהר ככל שתשחק יותר. תהיה לנו קלט הבקרה של ה- DeMux במצב הנוכחי של תת-FSM כך שנוכל לשלוט כמה מהר המשחק יעבור תוך כמה זמן תשחק אותו. נשתמש בכמה מונים, אחד לרענון התצוגה ואחד לספור את הניקוד במהלך המשך המשחק. לפרויקט זה שני מודולים עיקריים ומערך של תת מודולים שיפעלו את נתוני הקלט. שני מודולי המשנה העיקריים הם מנהל התקן VGA, כמו גם מודול ההיגיון בכפתורים. מנהל התקן VGA יכלול זיכרון הניתן לתכנות, מחלק שעונים והיגיון שיפעל את הפלט לצבע. מודול ההיגיון בכפתורים יכלול גם מחלק שעונים וזיכרון הניתן לתכנות, וכן ממיר בינארי לעשרוני לתצוגת 7-פלחים עם מחלק השעונים המתאים לו.

שלב 2: תהליך תמונה

עבור החלק של תהליך התמונה בפרויקט, נקבע את תנועת הכדור והכדור. לתוכנית יש יציאות הכוללות את לחצני הלחיצה השמאלית, הימנית, העליונה והמרכזית, המצב הנוכחי, שעון, מיקומי ה- X וה- Y של הכדור, הקצה השמאלי והימני של ההנעה וכישלון. המצב הנוכחי משמש לקביעת אות ההפעלה. הקוד עובר על המקרים המרובים שהכדור יכול להזיז, וקבע תנאים לקביעת נתיב הכדור. בלוק התהליכים הבא קובע את הכיוון שהנעה נעה על סמך איזה כפתור נלחץ על ידי המשתמש. הקוד לחלק זה של הפרויקט מצורף עם הערות מפורטות המתארות מה כל חלק עושה.

שלב 3: מטפל בציונים

מטפל ציונים
מטפל ציונים

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

מחלק שעון:

מחלק השעון כולל כניסות Clk (שעון), CEN (אפשר פנימה) ו- Div (מחלק) ופלט Clk_out. אם אות ההפעלה מופעל, השעון יחשב על הקצה העולה.

מונה ציונים

לדלפק הציון יש כניסות Clk (שעון) ו- RST (איפוס) ויציאות Clk_Out ו- Q אשר למעשה פועל כפלט הציון.

נהג פלח

לנהג הקטע יש כניסות D1, D10, D100, D1000 ושעון. המספרים אחרי "D" מתייחסים למקום העשרוני בתצוגת 7 הקטעים. היציאות הן האנודות והספרה. השעון סופר ומקצה את המספרים ואת מיקומו. לדוגמה, "9" יוצג במקומות אלה עם "0" באלפים, מאות ועשרות. כאשר הוא עובר ל- "10", המספר יכלול כעת "1" במקום עשרות ו- "0" באלפים, מאות ואחד.

מטפל פלחים

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

מטפל ציונים

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

שלב 4: יצירת תמונות

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

אנימציה

לקובץ האנימציה יש קלטים Clk (אות השעון), CEN (הפעלת ספירה), RST (איפוס אות), B_X (מיקום הכדור X), B_Y (מיקום Y של הכדור), P_L (מיקום ההנעה השמאלית) ו- P_R (מיקום ההנעה הימני). הפלט הוא WA (הכתובת שאליה אנו כותבים את הצבע) ו- WD (הצבע שנכתב בכתובת שנקבעה). לקובץ יש Play_Counter שהוא מונה שישמש כקלט שליטה ל- MUX, מקודד שיכול להוציא את הצבעים הנכונים במקומות הנכונים, ולבסוף מרבב שמציג את הצבע הנכון על סמך מיקום החבטה ו כַּדוּר.

רענן את התמונה

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

התחל מונה

מונה ההתחלה משתמש בכניסות Clk, RS ו- CEN ויציאות WA ו- WD. הוא משתמש במונה והמרה כדי לקבוע את קלט הבקרה של ה- MUX. מרב הכפול משתמש אז בקלט כדי לקבוע כתובות צבע נכונות ושולח נתונים אלה למנהל ההתקן VGA. זה משמש להצגת "פונג" כאשר המשתמש מתחיל את המשחק.

מונה נכשל

מונה הכישלון משמש להצגת "Game Over" כאשר המשתמש מפסיד את המשחק. יש לו אות Clk, RST ו- CEN. הוא משתמש במונה ונוסחת המרה כדי לקבוע את קלט הבקרה של ה- MUX. מרב הכפול משתמש אז בקלט כדי לקבוע כתובות צבע נכונות ושולח נתונים אלה למנהל ההתקן VGA.

שלב 5: משחק פונג

משחק פונג
משחק פונג

חלק זה של הפרויקט כולל את קובצי ה- Pong Master, Finite State Machine (FSM), טיימר וקבצי Start Debounce.

שָׁעוֹן עֶצֶר

הטיימר כולל כניסות Clk (שעון) ו- PS (מצב הווה) וטיימר ו- Clk_out כפלט. הטיימר משמש לשינוי מהירות המשחק בערך כל חמש שניות.

זרימת FSM

ל- FSM Flow יש כניסות Clk, Fail, Timer, Bttn_S (לחצן התחלה) ו- Buttn_RST (כפתור איפוס) ופלט Pres_S (פלט מצב הווה). ה- FSM משתמש בטיימר כדי לעדכן את המצב הנוכחי למצב הבא וממשיך לעדכן את המצב הבא עד שהמשחק יגיע לרמה 5 שם הוא נשאר עד לסיום המשחק.

התחל Debounce

Start Debounce הוא ההקפצה ההתחלתית של הכדור. יש לו כניסות S_in ו- Clk ופלט S_out.

פונג מאסטר קובץ זה משתמש בכל הרכיבים הקודמים והופך אותו כך שכל הרכיבים יהיו מיידיים. קובץ האב הוא זה שמרכיב את כל הרכיבים הקודמים שבנינו יחד.

שלב 6: מנהל התקן VGA

מנהל ההתקן VGA (Visual Graphics Array) הוא תוכנה המשמשת לקבלת פקודות או נתונים הנשלחים למסך התצוגה. הנהג ניתן לנו על ידי הפרופסור שלנו. השתמש במנהל ההתקן ובכבל VGA לחיבור לוח Basys3 לצג.

כעת אתה צריך להיות מוכן להכין משחק פונג משלך באמצעות VHDL!

מוּמלָץ: