תוכן עניינים:
- שלב 1: סקירה כללית
- שלב 2: חומרים
- שלב 3: הכנת המשחק
- שלב 4: הצגת התוצאה
- שלב 5: הרכבת הכל ביחד
- שלב 6: שינויים עתידיים
- שלב 7: סיכום
וִידֵאוֹ: משחק אסטרואיד FPGA: 7 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
עבור פרויקט הגמר של 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".
מוּמלָץ:
ילד משחק משחק רטרו חיצוני חיצוני: 3 שלבים
רטרו חיצוני משחק כונן משחקים: מאמר זה יכול להציג את עצמך במועדון חיצוני או ייחודי (du moins à ma connaissance). תחילת כריכה עם ממשק USB-SATA דה מונ דיסקה במהלך חיצוניים. לאחר שעות מסוימות מעבר לתפקיד
משחק סיימון - משחק מהנה !: 5 שלבים
משחק סיימון - משחק מהנה !: הפניה: כאן לאחר סוף שבוע ארוך, אתה חייב באמת להשתדל להשלים את כל המשימות והעבודה שאתה אחראי להן. הגיע הזמן שנאמן את המוח שלנו, לא? מלבד אותם משחקים משעממים וחסרי משמעות, ישנו משחק בשם Simon Game
בקר משחק DIY מבוסס Arduino - בקר משחקים Arduino PS2 - משחק Tekken עם לוח המשחקים Arduino DIY: 7 שלבים
בקר משחק DIY מבוסס Arduino | בקר משחקים Arduino PS2 | משחק Tekken עם DIY Arduino Gamepad: שלום חבר'ה, משחקים זה תמיד כיף, אבל משחק עם בקר DIY מותאם אישית משלך הוא יותר כיף. אז נכין בקר משחק באמצעות arduino pro micro במדריך זה
משחק משחק ציפור פלאפפי עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: 5 שלבים
משחק משחק Flappy Bird עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: היי חברים היום נלמד כיצד להעלות את קוד משחק הציפורים ללוח הפיתוח של m5stick c המסופק על ידי m5stack. לפרויקט קטן זה תזדקקו לשני דברים הבאים: m5stick-c לוח פיתוח: https://www.utsource.net/itm/p/8663561.h
בקר משחק Arduino + משחק אחדות: 5 שלבים
בקר משחק Arduino + משחק אחדות: במדריך זה אראה לך כיצד לבנות/לתכנת בקר משחק ארדואינו שיכול להתחבר לאחדות