विषयसूची:

पोंग गेम: 6 कदम
पोंग गेम: 6 कदम

वीडियो: पोंग गेम: 6 कदम

वीडियो: पोंग गेम: 6 कदम
वीडियो: "Pong Game" - Step 6: Reset Ball after goal. 2024, जुलाई
Anonim
पोंग गेम
पोंग गेम

सामग्री:

बेसिस३ एफपीजीए बोर्ड

वीजीए केबल

विवाडो

इस निर्देश का उद्देश्य एक पोंग गेम विकसित करना है जिसे मॉनिटर पर प्रदर्शित किया जाएगा। प्रोजेक्ट प्रोग्राम के लिए वीएचडीएल का उपयोग करेगा और कोड को पूरा करने के लिए बेसिस3 एफपीजीए का उपयोग करेगा और वीजीए इंटरफेस का उपयोग करके छवि को स्थानांतरित करेगा। यह ट्यूटोरियल उन लोगों के लिए अभिप्रेत है जिन्हें वीएचडीएल का थोड़ा पूर्व ज्ञान है। ट्यूटोरियल को 6 अलग-अलग वर्गों में विभाजित किया जाएगा: अवलोकन, प्रक्रिया, स्कोर हैंडलर, छवि निर्माण, पोंग गेम और वीजीए।

चरण 1: अवलोकन

अवलोकन
अवलोकन

ऊपर की छवि परियोजना का समग्र योजनाबद्ध डिजाइन है।

खेल का उद्देश्य:

खेल में एक स्लाइडिंग पैडल के साथ एक डिस्प्ले होता है जिसे उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है, और एक निश्चित दीवार जो ऊपरी बाउंड के रूप में कार्य करती है। जब उपयोगकर्ता स्टार्ट बटन दबाता है, जो कि ऊपर का बटन है, तो गेंद उछलने लगेगी, और दीवार से उछलकर पैडल को मारने का प्रयास करेगी। यदि गेंद पैडल से टकराती है, तो वह फिर से उछलती है और तब तक उछलती रहती है जब तक कि वह पैडल से चूक न जाए। खेल समाप्त हो जाता है जब गेंद पैडल को मारने में विफल होती है। उपयोगकर्ता पैडल की गति को निर्धारित करने के लिए बाएं और दाएं पुशबटन का उपयोग करने में सक्षम होगा। गेम को रीसेट करने के लिए, उपयोगकर्ता को केंद्र बटन को पुश करना होगा। रन का समय 7 सेगमेंट डिस्प्ले पर रिकॉर्ड किया जाएगा। पांच स्तर हैं, और हर दस सेकंड में स्तर बढ़ता है, जब तक कि आप स्तर 5 तक नहीं पहुंच जाते, जहां यह तब तक रहता है जब तक उपयोगकर्ता हार नहीं जाता। स्तर गेंद की गति से निर्धारित होते हैं; इसका मतलब है कि हर दस सेकंड में गेंद की गति बढ़ जाती है, जिससे खेल की कठिनाई बढ़ जाती है।

सिस्टम आर्किटेक्चर:

नीचे दिया गया आरेख सिस्टम के लिए मूल समग्र शीर्ष-स्तरीय ब्लॉक आरेख है। सिस्टम में चार इनपुट हैं: बटन आर, बटन एल, स्टार्ट, और रीसेट, और एक घड़ी। इसमें क्षैतिज और लंबवत सिंक आउटपुट हैं, आरबीजी (जो एक निश्चित स्थान पर पिक्सेल के रंग को संदर्भित करता है), और स्कोर (जो 7-सेगमेंट डिस्प्ले के लिए बस के रूप में कार्य करता है)। अप बटन को प्रारंभ के रूप में उपयोग किया जाएगा बटन, और बाएँ और दाएँ पुशबटन का उपयोग पैडल को उनकी संबंधित दिशाओं में ले जाने के लिए किया जाएगा। 7-सेगमेंट डिस्प्ले का उपयोग स्कोर रिकॉर्ड करने के लिए किया जाएगा, जो कि सेकंड की संख्या है जिसे उपयोगकर्ता गेम खोए बिना खेल रहा है। संख्या को दशमलव संख्या के रूप में प्रदर्शित किया जाएगा।

सर्किट आर्किटेक्चर: हम एक एफएसएम का उपयोग करके अपने जीजीएमओ का निर्माण करेंगे जिसमें एक छोटा एफएसएम होगा, उप-एफएसएम खेल की कठिनाई को नियंत्रित करेगा जबकि मुख्य एफएसएम खेल के समग्र प्रवाह को नियंत्रित करेगा। हमारा gizmo कम से कम तीन क्लॉक डिवाइडर का भी उपयोग करेगा, एक स्कोर (समय) के लिए, एक डिस्प्ले के रिफ्रेश रेट के लिए और एक जो एक DeMux के आउटपुट से जुड़ा हुआ है ताकि हम नियंत्रित कर सकें कि गेम कितनी तेजी से है कठिनाई की बढ़ती मात्रा के साथ आगे बढ़ेंगे। आप जितनी देर खेलेंगे खेल उतनी ही तेजी से आगे बढ़ेगा। हमारे पास डीमक्स का नियंत्रण इनपुट उप-एफएसएम की वर्तमान स्थिति होगी ताकि हम यह नियंत्रित कर सकें कि आप इसे कितनी देर तक खेलेंगे। हम कुछ काउंटरों का उपयोग करेंगे, एक डिस्प्ले को रीफ्रेश करने के लिए और दूसरा स्कोर को गिनने के लिए जैसा कि आप खेलना जारी रखेंगे। इस परियोजना में दो मुख्य मॉड्यूल और सबमॉड्यूल की एक सरणी है जो इनपुट डेटा में हेरफेर करेगी। दो मुख्य सबमॉड्यूल वीजीए ड्राइवर और साथ ही बटन लॉजिक मॉड्यूल हैं। वीजीए ड्राइवर में प्रोग्रामेबल मेमोरी, एक क्लॉक डिवाइडर और लॉजिक शामिल होगा जो रंग के लिए आउटपुट में हेरफेर करेगा। बटन लॉजिक मॉड्यूल में एक क्लॉक डिवाइडर, और एक प्रोग्रामेबल मेमोरी, साथ ही साथ अपने संबंधित क्लॉक डिवाइडर के साथ 7-सेगमेंट डिस्प्ले के लिए बाइनरी टू डेसीमल कन्वर्टर शामिल होगा।

चरण 2: छवि प्रक्रिया

प्रोजेक्ट के इमेज प्रोसेस सेक्शन के लिए, हम गेंद और पैडल की गति का निर्धारण करेंगे। कार्यक्रम में बंदरगाह हैं जिनमें बाएं, दाएं, शीर्ष और केंद्र पुशबटन, वर्तमान स्थिति, एक घड़ी, गेंद की एक्स और वाई स्थिति, पैडल के बाएं और दाएं किनारे और असफल शामिल हैं। वर्तमान स्थिति का उपयोग सक्षम सिग्नल को निर्धारित करने के लिए किया जाता है। कोड कई मामलों में जाता है जो गेंद को स्थानांतरित कर सकते हैं, और गेंद के पथ को निर्धारित करने के लिए शर्तों को निर्धारित किया है। अगला प्रोसेस ब्लॉक उस दिशा को निर्धारित करता है कि उपयोगकर्ता द्वारा किस बटन को दबाया जाता है, इसके आधार पर पैडल चलता है। परियोजना के इस भाग के लिए कोड विस्तृत टिप्पणियों के साथ संलग्न है जो वर्णन करता है कि प्रत्येक अनुभाग क्या करता है।

चरण 3: स्कोर हैंडलर

स्कोर हैंडलर
स्कोर हैंडलर

इस खंड में फाइलें हैं जो बेसिस3 बोर्ड पर 7 सेगमेंट डिस्प्ले पर सेकंड में स्कोर प्रदर्शित करने से संबंधित हैं। इसमें एक क्लॉक डिवाइडर शामिल होता है जिसका उपयोग सेकंडों को गिनने के लिए किया जाता है, एक स्कोर काउंटर उपयोगकर्ता द्वारा चलाए जा रहे सेकंड को गिनता है, सेगमेंट ड्राइवर स्कोर लेता है और इसे स्क्रीन पर प्रदर्शित होने के लिए एनोड और कैथोड में परिवर्तित करता है और स्थिति भी निर्धारित करता है कि संख्या प्रदर्शित की जाएगी और अंत में, खंड हैंडलर बाइनरी अंकों को स्क्रीन पर प्रदर्शित होने के लिए दशमलव अंकों में परिवर्तित करता है। स्कोर हैंडलर सभी टुकड़ों को एक साथ रखता है और संकेतों को मैप करता है। सभी पांच फाइलों के लिए कोड नीचे संलग्न है।

घड़ी विभक्त:

क्लॉक डिवाइडर में Clk (घड़ी), CEN (इनेबल इन), और Div (डिवाइडर) और आउटपुट Clk_out इनपुट होते हैं। यदि सक्षम सिग्नल चालू है, तो घड़ी की गिनती बढ़ते हुए किनारे पर होगी।

स्कोर काउंटर

Thescore काउंटर में Clk (घड़ी) और RST (रीसेट) इनपुट होते हैं और Clk_Out और Q को आउटपुट करते हैं जो अनिवार्य रूप से स्कोर आउटपुट के रूप में कार्य करता है।

खंड चालक

सेगमेंट ड्राइवर में इनपुट D1, D10, D100, D1000 और क्लॉक हैं। "डी" के बाद की संख्याएं 7 सेगमेंट डिस्प्ले पर दशमलव स्थान को दर्शाती हैं। आउटपुट एनोड और अंक हैं। घड़ी गिनती करती है और संख्याओं और उसकी स्थिति को निर्दिष्ट करती है। उदाहरण के लिए, एक "9" इकाई के स्थान पर "0" के साथ हजारों, सैकड़ों और दहाई के स्थान पर प्रदर्शित होगा। जब यह "10" पर स्विच करता है, तो संख्या में अब दहाई के स्थान पर "1" और हजारों, सैकड़ों और इकाई के स्थान पर "0" होगा।

सेगमेंट हैंडलर

सेगमेंट हैंडलर के पास इसके इनपुट के रूप में अंक और इसके आउटपुट के रूप में कैथोड होते हैं। यह अनिवार्य रूप से स्क्रीन पर दशमलव संख्याओं को आउटपुट करने के लिए कैथोड डिस्प्ले के लिए बाइनरी नंबर है।

स्कोर हैंडलर

स्कोर हैंडलर में पिछली चार इकाइयाँ होती हैं और यह सब एक साथ रखता है और संकेतों को मैप करता है। यह वर्तमान स्थिति के आधार पर काउंटर को सक्षम और अक्षम भी करता है।

चरण 4: छवि निर्माण

इमेज जेनरेशन में चार घटक होते हैं: एनिमेशन, फेल काउंटर, रिफ्रेश इमेज और स्टार्ट काउंटर। ये फ़ाइलें प्रदर्शित करती हैं कि डिस्प्ले मॉनीटर पर छवियों को कैसे उत्पन्न किया जाए।

एनीमेशन

एनिमेशन फ़ाइल में Clk (क्लॉक सिग्नल), CEN (काउंट इनेबल), RST (रीसेट सिग्नल), B_X (बॉल की X स्थिति), B_Y (बॉल की Y स्थिति), P_L (बाएं पैडल स्थिति), और P_R इनपुट हैं। (दाहिने पैडल की स्थिति)। आउटपुट WA (जिस पते पर हम रंग लिख रहे हैं), और WD (रंग निर्धारित पते पर लिखा जा रहा है) हैं। फ़ाइल में Play_Counter है जो एक काउंटर है जिसका उपयोग एमयूएक्स के लिए एक नियंत्रण इनपुट के रूप में किया जाएगा, एक एन्कोडर जो सही स्थानों पर सही रंग आउटपुट कर सकता है, और अंत में एक मल्टीप्लेक्सर जो पैडल की स्थिति के आधार पर सही रंग प्रदर्शित करता है और गेंद।

छवि ताज़ा करें

रीफ़्रेश इमेज फ़ाइल का उपयोग गेंद की स्थिति और पैडल परिवर्तन के रूप में छवि को ताज़ा करने के लिए किया जाता है। फ़ाइल में एनिमेशन, स्टार्ट काउंटर और फ़ेल काउंटर फ़ाइलों के घटक शामिल हैं। यह प्रत्येक घटक से संकेतों को मैप करता है और सिग्नल और आउटपुट पते निर्धारित करने के लिए राज्य तर्क का उपयोग करता है।

काउंटर शुरू करें

स्टार्ट काउंटर इनपुट Clk, RS, और CEN का उपयोग करता है और WA और WD आउटपुट करता है। यह एमयूएक्स के लिए नियंत्रण इनपुट निर्धारित करने के लिए काउंटर और रूपांतरण का उपयोग करता है। बहुसंकेतक तब सही रंग पते निर्धारित करने के लिए इनपुट का उपयोग करता है और इस डेटा को वीजीए ड्राइवर को भेजता है। जब उपयोगकर्ता खेल शुरू करता है तो इसका उपयोग "पोंग" प्रदर्शित करने के लिए किया जाता है।

विफल काउंटर

जब उपयोगकर्ता गेम हारता है तो विफल काउंटर का उपयोग "गेम ओवर" प्रदर्शित करने के लिए किया जाता है। इसमें Clk, RST और CEN सिग्नल हैं। यह एमयूएक्स के लिए नियंत्रण इनपुट निर्धारित करने के लिए काउंटर और रूपांतरण सूत्र का उपयोग करता है। मल्टीप्लेक्सर तब सही रंग के पते निर्धारित करने के लिए इनपुट का उपयोग करता है और इस डेटा को वीजीए ड्राइवर को भेजता है।

चरण 5: पोंग गेम

पोंग गेम
पोंग गेम

परियोजना के इस खंड में पोंग मास्टर, परिमित राज्य मशीन (एफएसएम), टाइमर और स्टार्ट डेब्यू फाइलें शामिल हैं।

घड़ी

टाइमर में आउटपुट के रूप में Clk (घड़ी) और PS (वर्तमान स्थिति) और टाइमर और Clk_out इनपुट होते हैं। टाइमर का उपयोग खेल की गति को लगभग हर पांच सेकंड में बदलने के लिए किया जाता है।

प्रवाह एफएसएम

फ्लो FSM में Clk, Fail, Timer, Bttn_S (स्टार्ट बटन) और Buttn_RST (रीसेट बटन) और आउटपुट Pres_S (वर्तमान स्थिति आउटपुट) इनपुट होते हैं। FSM वर्तमान स्थिति को अगले राज्य में अपडेट करने के लिए टाइमर का उपयोग करता है और अगले राज्य को तब तक अपडेट करता रहता है जब तक कि खेल स्तर 5 तक नहीं पहुंच जाता जहां यह खेल खत्म होने तक रहता है।

डेब्यू शुरू करें

स्टार्ट डेब्यू गेंद की शुरुआती उछाल है। इसमें इनपुट S_in और Clk, और आउटपुट S_out हैं।

पोंग मास्टर यह फ़ाइल पिछले सभी घटकों का उपयोग करती है और इसे बनाती है ताकि सभी घटक तात्कालिक हों। यह मास्टर फ़ाइल है जो पिछले सभी घटकों को एक साथ रखती है जिन्हें हमने एक साथ बनाया है।

चरण 6: वीजीए चालक

वीजीए (विजुअल ग्राफिक्स एरे) ड्राइवर सॉफ्टवेयर का एक टुकड़ा है जिसका उपयोग कमांड या डेटा को स्वीकार करने के लिए किया जाता है जो डिस्प्ले स्क्रीन पर भेजा जाता है। ड्राइवर हमें हमारे प्रोफेसर ने दिया था। Basys3 बोर्ड को मॉनीटर से कनेक्ट करने के लिए ड्राइवर और VGA कॉर्ड का उपयोग करें।

अब आपको VHDL का उपयोग करके अपना पोंग गेम बनाने के लिए तैयार रहना चाहिए!

सिफारिश की: