विषयसूची:

FPGA रिएक्शन गेम: 10 कदम
FPGA रिएक्शन गेम: 10 कदम

वीडियो: FPGA रिएक्शन गेम: 10 कदम

वीडियो: FPGA रिएक्शन गेम: 10 कदम
वीडियो: MiSTer FPGA 2023 Build Guide and Software Setup! Build the BEST Retro Gaming Device Around! 2024, जुलाई
Anonim
FPGA रिएक्शन गेम
FPGA रिएक्शन गेम

समर रदरफोर्ड और रेजिटा सोएतंडारी द्वारा

चरण 1: परिचय

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

चरण 2: सामग्री

सामग्री
सामग्री
सामग्री
सामग्री
सामग्री
सामग्री

आपको जिन सामग्रियों की आवश्यकता होगी वे हैं:

  • माइक्रो यूएसबी केबल के साथ डिजिलेंट बेसिस3 बोर्ड
  • ब्रेड बोर्ड
  • 5 एलईडी
  • 5 प्रतिरोधक (हमने 220 ओम का उपयोग किया)
  • 11 जम्पर तार
  • Vivado. के साथ कंप्यूटर

चरण 3: शीर्ष स्तरीय आरेख ब्लैक बॉक्स डिज़ाइन

शीर्ष स्तरीय आरेख ब्लैक बॉक्स डिज़ाइन
शीर्ष स्तरीय आरेख ब्लैक बॉक्स डिज़ाइन
शीर्ष स्तरीय आरेख ब्लैक बॉक्स डिज़ाइन
शीर्ष स्तरीय आरेख ब्लैक बॉक्स डिज़ाइन

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

अंत में, गेम के लिए केवल इनपुट्स बेसिस3 बोर्ड पर इनपुट क्लॉक है जो 100 मेगाहर्ट्ज पर चलता है, बेसिस 3 बोर्ड पर सात स्विच और रीसेट बटन है। सात खंड डिस्प्ले के लिए एनोड, डिस्प्ले के लिए सात सेगमेंट और एल ई डी आउटपुट क्या है।

चरण 4: सीएलकेडिवाइड

सीएलकेडिवाइड
सीएलकेडिवाइड
सीएलकेडिवाइड
सीएलकेडिवाइड
सीएलकेडिवाइड
सीएलकेडिवाइड

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

चरण 5: शिफ्ट प्रक्रिया ब्लॉक

शिफ्ट प्रक्रिया ब्लॉक
शिफ्ट प्रक्रिया ब्लॉक

शिफ्ट प्रक्रिया ब्लॉक एल ई डी की वैकल्पिक गति और गति को नियंत्रित करता है। संवेदनशीलता सूची में न्यूक्लक और स्टॉप सिग्नल हैं। जब उपयोगकर्ता स्तर पास करता है तो स्टॉप एक संक्षिप्त विलंब का कारण बनता है। यदि स्टॉप अधिक नहीं है, तो एल ई डी न्यूक्लक की गति के आधार पर सामान्य रूप से वैकल्पिक होते हैं। यह वैकल्पिक पैटर्न दो चर द्वारा नियंत्रित होता है: ट्रैक और काउंट। गणना निर्धारित करती है कि कौन सी एलईडी चालू होनी चाहिए, जबकि ट्रैक निर्धारित करता है कि गिनती ऊपर या नीचे होनी चाहिए। एक और संकेत है, फ़ाइनल, जो केवल तब लागू होता है जब स्तर "111" होता है, यह दर्शाता है कि खिलाड़ी ने खेल को हरा दिया है। एल ई डी को लगातार चालू और बंद करने के लिए प्रत्येक घड़ी के किनारे 0 और 1 के बीच अंतिम वैकल्पिक। यह अंतिम प्रदर्शन के लिए सिर्फ एक दृश्य तत्व है।

यह शिफ्ट प्रक्रिया इस परियोजना को शुरू करने के लिए एकदम सही जगह है। यदि आप अपने एल ई डी को सही ढंग से और लगातार बारी-बारी से प्राप्त कर सकते हैं, तो यहां से आपको बस व्यवहार करते समय व्यवहार में जोड़ना होगा!

चरण 6: परिमित राज्य मशीन

परिमित अवस्था मशीन
परिमित अवस्था मशीन

जब इनपुट स्विच या रीसेट बटन दबाया जाता है तो व्यवहार को निर्देशित करने के लिए हमने एक परिमित राज्य मशीन बनाई है। प्रत्येक राज्य एक "स्तर" है और यदि स्विच गलत समय पर चालू होता है या रीसेट दबाया जाता है, तो स्तर "000" पर वापस आ जाता है। अन्यथा, यदि स्विच को सही ढंग से चालू किया जाता है तो स्तर तब तक ऊपर जाता है जब तक कि यह अंतिम स्थिति, "111" तक नहीं पहुंच जाता है और अंतिम प्रदर्शन होता है। FSM दो प्रक्रिया ब्लॉकों sync_proc और Comb_proc पर आधारित है। Sync_proc उस घड़ी का उपयोग करता है जिसे हम PushClk कहते हैं। यह घड़ी नियंत्रित करती है कि अगला राज्य कितनी तेजी से वर्तमान स्थिति बन जाता है। यह घड़ी काफी तेज होनी चाहिए। हमने ऐसी गति को चुना जो हमारी सबसे तेज़ एलईडी गति से लगभग दो गुना तेज थी।

हमने स्तरों के लिए FSM का उपयोग करके इस कोड को लागू किया; हालाँकि, इस परियोजना के बाद हमने महसूस किया कि एक FSM का अधिक कुशल उपयोग एक काउंट-अप स्थिति, एक रीसेट स्थिति या एक रहने की स्थिति हो सकती है। अगर कुछ भी दबाया नहीं जा रहा है, तो यह स्टे अवस्था में है। यदि रीसेट दबाया जा रहा है या खिलाड़ी गड़बड़ कर रहा है, तो यह रीसेट स्थिति में है। अगर सही ढंग से दबाया जाता है, तो यह उलटी गिनती की स्थिति में है। इस गेम में FSM का उपयोग करने के कई अन्य तरीके भी हैं!

चरण 7: स्तर के साथ प्रदर्शन प्रक्रिया ब्लॉक को नियंत्रित करना

स्तर के साथ प्रदर्शन प्रक्रिया ब्लॉक को नियंत्रित करना
स्तर के साथ प्रदर्शन प्रक्रिया ब्लॉक को नियंत्रित करना

स्तर प्रदर्शन प्रक्रिया ब्लॉक को नियंत्रित करता है। संवेदनशीलता सूची में चर स्तर, रीसेट और Clk400 हैं। 7 खंड का प्रदर्शन पहले स्तर के लिए '1' प्रदर्शित करके शुरू होता है। यह हर बार 7 तक गिना जाता है जब उपयोगकर्ता उपयोगकर्ता को यह दिखाने के लिए एक स्तर पास करता है कि वे किस स्तर पर हैं। एक बार जब उपयोगकर्ता स्तर 7 को पार कर लेता है, तो यह "कूल" प्रदर्शित करता है, यह दर्शाता है कि खिलाड़ी ने गेम को हरा दिया है। यह "कूल" डिस्प्ले 400 हर्ट्ज की घड़ी से चलता है जिसे हम Clk400 कहते हैं। यदि रीसेट दबाया जाता है, तो प्रदर्शन "1" पर वापस चला जाता है।

चरण 8: स्तर के साथ एलईडी गति को नियंत्रित करना

स्तर के साथ एलईडी गति को नियंत्रित करना
स्तर के साथ एलईडी गति को नियंत्रित करना

अंत में, स्तर एल ई डी की गति को नियंत्रित करता है। संवेदनशीलता सूची में स्तर ही एकमात्र संकेत है। D1 वह संकेत है जो न्यूक्लक प्राप्त करने के लिए क्लॉक डिवाइडर प्रक्रिया में जाता है। हर बार स्तर बदला जाता है, या राज्य बदलता है, प्रक्रिया "गति" को अवरुद्ध करती है। यह प्रक्रिया D1 का मान निर्धारित करती है। D1 के 8 परिभाषित मान हैं जिन्हें हमने इस आधार पर चुना है कि हम प्रत्येक स्तर को कितनी तेजी से चलाना चाहते हैं। हर बार स्तर बढ़ने पर D1 छोटा होता जाता है जिससे न्यूक्लक तेजी से चलता है।

चरण 9: हार्डवेयर असेंबली

हार्डवेयर असेंबली
हार्डवेयर असेंबली

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

चरण 10: मज़े करो

यह गेम खेलना बहुत आसान है। खिलाड़ी बोर्ड के सबसे दाहिने स्विच 1, V17 पर शुरू होता है। मध्य एलईडी चालू होने पर उन्हें स्विच को ऊंचा फ्लिप करना चाहिए। वे फिर एक स्विच को बाईं ओर ले जाते हैं और वही काम करते हैं! यदि खिलाड़ी इसे अंत तक बनाता है, तो वे सातवें स्विच, W14 पर समाप्त हो जाएंगे। यदि वे खेल को हरा देते हैं तो उन्हें वास्तव में एक मजेदार अंत प्रदर्शन देखने को मिलता है!

ध्यान देने योग्य बात यह है कि इस गेम को बनाते समय गति पूरी तरह आप पर निर्भर है! यदि हमारे द्वारा चुनी गई गति बहुत धीमी है, तो बेझिझक इसे गति दें और इसे और भी चुनौतीपूर्ण बना दें! स्तरों की कोई निश्चित संख्या भी नहीं है। यदि आप इसे और भी अधिक स्तर बनाना चाहते हैं, तो ऐसे संशोधन हैं जो FSM और स्तर द्वारा निर्धारित प्रक्रिया ब्लॉकों में किए जाने चाहिए, लेकिन ये बहुत ही सरल परिवर्तन हैं।

हमने उपयोगकर्ता इनपुट के रूप में बोर्ड पर स्विच का उपयोग करना भी चुना, लेकिन यह बेसिस 3 बोर्ड पर एक बटन के साथ भी संभव है; बटन हर बार उपयोगकर्ता के शुरू होने पर स्विच को रीसेट करने की आवश्यकता को समाप्त कर देगा। हमने शुरू में एक बटन का उपयोग किया था, हालांकि इससे स्तर को परिभाषित करने में त्रुटियां हुईं क्योंकि बटन दबाए जाने पर पुशक्लक के दो बढ़ते किनारों को हिट करने पर यह कई स्तरों पर कूद जाएगा।

नीचे एक वीडियो है जिसमें दिखाया गया है कि कैसे खेलना है, पहले 4 स्तरों से गुजरना, और अंतिम समाप्ति प्रदर्शन।

इस परियोजना के लिए मुख्य फाइल नीचे शामिल है।

सूत्रों का कहना है

बेसिस३ संदर्भ पुस्तिका

प्रोजेक्ट के लिए प्रेरणा - Arduino स्टॉप इट गेम

सिफारिश की: