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

משחק אסטרואיד FPGA: 7 שלבים (עם תמונות)
משחק אסטרואיד FPGA: 7 שלבים (עם תמונות)

וִידֵאוֹ: משחק אסטרואיד FPGA: 7 שלבים (עם תמונות)

וִידֵאוֹ: משחק אסטרואיד FPGA: 7 שלבים (עם תמונות)
וִידֵאוֹ: אסטרואיד ענק נופל לבית של הסים שלי בסימס3 Astroid falls- SIMS3 2024, נוֹבֶמבֶּר
Anonim
משחק אסטרואיד FPGA
משחק אסטרואיד FPGA

עבור פרויקט הגמר של CPE 133 שלנו, החלטנו ליצור משחק אסטרואידים ב- FPGA שלנו באמצעות שני מתגי לחיצה ותצוגה בת 7 פלחים. המשחק פועל כך שאסטרואיד משריץ באחת משלוש שורות שנבחרו באופן אקראי, ומגיע כואב לעבר הספינה בצד השני של התצוגה של 7 פלחים. ניתן להשתמש בכפתור העליון והכפתור התחתון כדי להזיז את הספינה שלך מהאסטרואיד. אם לא תעשה זאת, התצוגה תראה 'BAnG' לרגע ואז תפעיל מחדש את המשחק במהירות כך שהמשתמש יוכל לנסות שוב. להלן תיאור קצר של אופן ביצוע הפרויקט כך שכל משתמש יוכל לשכפל או לשפר את העיצוב שלנו.

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

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

הפרויקט מורכב ברובו ממכונות Finite State (FSMs), המשתמשות בהיגיון להעברת ה- FPGA בין מדינות המאחסנות ומציגות ערכים שונים של עמדות ספינות וסלעים. שני המודולים העיקריים הם FSM של המשחק לסלע ולספינה, ומפענח התצוגה הבינארי ל- 7 פלחים FSM, המשתלבים יחד באמצעות מודל מבני פשוט מאוד ב- VHDL.

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

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

ה- FSM למפענח התצוגה בן 7 הקטעים שימש לא רק להציג את הספינה והסלע אלא גם להציג "BAnG" כאשר מיקום הספינה ומיקום הסלע זהים.

שלב 2: חומרים

החומרים ששימשו בפרויקט היו:

  • מועצת הפיתוח Basys3 של Digilent, Inc.
  • סוויטת עיצוב Vivado
  • sseg_dec.vhd (קובץ זה נמסר לנו ב- Polylearn ונכתב על ידי בריאן מיילי)
  • Clk_div.vhd (קובץ זה נמסר לנו ב- Polylearn ונכתב על ידי בריאן מיילי)
  • שלוש מכונות מדינה סופיות (FSM)

שלב 3: הכנת המשחק

הכנת המשחק
הכנת המשחק
הכנת המשחק
הכנת המשחק
הכנת המשחק
הכנת המשחק
הכנת המשחק
הכנת המשחק

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

מצבי הסלע נעשו באמצעות מחולל מספר אקראי פסאודו למיקום הראשון של הסלע. כדי להשיג זאת, נתנו לגנרטור שעון משלו שהיה מהיר במיוחד ביחס למהירות המשחק. בכל קצה עולה עולה מספר סיביות, וכל ערכיו תואמים לאחד משלוש מצבי התחלה של הספינה. לכן שלושה ערכים תואמים את מיקום 3 (הימנית העליונה), שלושה תואמים את המיקום 7 (המרכז), ושניים מתאימים למיקום 11 (הימני התחתון).

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

0 ← 1 ← 2 ← 3

4 ← 5 ← 6 ← 7

11 ← 10 ← 9 ← 8

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

ההיגיון של הספינה פועל על ידי אתחול למיקום המרכזי (עמדה 4) בצד השמאלי הרחוק. אם לוחצים על הכפתור העליון או הכפתור התחתון, הספינה תנוע למעלה ולמטה למיקום 0 ו -11 המתאים לכפתור שנלחץ.

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

שלב 4: הצגת התוצאה

מפענח הבינארי ל -7 קטע לוקח את משתני המיקום של 4 סיביות עבור הספינה והאסטרואיד ומציג את התמונה המתאימה (או הספינה והסלע או ההודעה "BAnG").

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

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

שלב 5: הרכבת הכל ביחד

לשים את הכל ביחד
לשים את הכל ביחד

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

קלט ותפוקות אלה יראו בקובץ האילוצים שבו הם ממופים ביציאות.

שלב 6: שינויים עתידיים

בעתיד, הוספת פונקציונליות של תנועת ספינות לפרויקט תהיה שיפור. ניתן להשיג זאת פשוט על ידי מתן עוד 2 כניסות לחצנים ומאפשר לספינה לתפוס עמדות (מצבים) שאינן 0, 4 ו -8. שינוי אפשרי נוסף יכול להיות שליטה על תזמון המצב הבא של האסטרואיד כך שתתחיל לאט ותגדיל את המהירות על ידי פי 1.5 בכל פעם שהיא מחמיצה את הספינה עד שתקבל מכה, שם היא תתחיל מחדש ותאט שוב. זה יגדיל את הקושי של המשחק ויהפוך אותו למהנה יותר עבור המשתמש אם הוא ייושם, וניתן לעשות זאת על ידי יצירת משתנה לספירה המקסימלית של שעון המצב הבא של הסלע, הכפלת המשתנה הזה ב- 1.5 בכל פעם שהאסטרואיד אינו עושה זאת אל תפגע, ותאפס אותו לערכו ההתחלתי בכל פעם שהרוק יכה.

שלב 7: סיכום

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

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

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

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

מוּמלָץ: