विषयसूची:

FPGA क्षुद्रग्रह खेल: 7 कदम (चित्रों के साथ)
FPGA क्षुद्रग्रह खेल: 7 कदम (चित्रों के साथ)

वीडियो: FPGA क्षुद्रग्रह खेल: 7 कदम (चित्रों के साथ)

वीडियो: FPGA क्षुद्रग्रह खेल: 7 कदम (चित्रों के साथ)
वीडियो: Papilio FPGA Arcade Prototype 2024, अक्टूबर
Anonim
FPGA क्षुद्रग्रह खेल
FPGA क्षुद्रग्रह खेल

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

चरण 1: अवलोकन

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

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

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

चट्टान के FSM का उद्देश्य चट्टान को उस पंक्ति में और उस पंक्ति में अंतिम स्थिति के आधार पर सही स्थिति में ले जाना है। इसके अलावा, यह उस मॉड्यूल के लिए स्थिति का ट्रैक रखता है जो इसे प्रदर्शित करेगा और छद्म-यादृच्छिक रूप से अगले पर प्रदर्शित होने के लिए एक नई पंक्ति चुनता है।

7-सेगमेंट डिस्प्ले डिकोडर के लिए FSM का उपयोग न केवल जहाज और चट्टान को प्रदर्शित करने के लिए किया जाता था, बल्कि जहाज की स्थिति और चट्टान की स्थिति समान होने पर "BANG" प्रदर्शित करने के लिए भी किया जाता था।

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

परियोजना में प्रयुक्त सामग्री थे:

  • डिजिलेंट, इंक. से बेसिस३ डेवलपमेंट बोर्ड।
  • विवाडो डिजाइन सूट
  • sseg_dec.vhd (यह फ़ाइल हमें Polylearn पर प्रदान की गई थी और इसे ब्रायन मीली द्वारा लिखा गया था)
  • Clk_div.vhd (यह फ़ाइल हमें Polylearn पर प्रदान की गई थी और इसे ब्रायन मीली द्वारा लिखा गया था)
  • तीन परिमित राज्य मशीनें (एफएसएम)

चरण 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.5x हर बार जब तक यह हिट नहीं हो जाता, तब तक यह जहाज को याद करता है, जहां यह फिर से शुरू होता है और फिर से धीमा हो जाता है। यह खेल की कठिनाई को बढ़ाएगा और उपयोगकर्ता के लिए इसे और अधिक मजेदार बना देगा यदि इसे लागू किया गया था, और चट्टान की अगली राज्य घड़ी की अधिकतम गणना के लिए एक चर बनाकर किया जा सकता है, उस चर को 1.5 से गुणा करके हर बार क्षुद्रग्रह करता है हर बार रॉक हिट होने पर इसे हिट न करें, और इसे इसके प्रारंभिक मूल्य पर रीसेट कर दें।

चरण 7: निष्कर्ष

इस परियोजना ने हमें परिमित अवस्था मशीनों, घड़ियों को बेहतर ढंग से समझने और सात खंडों के डिस्प्ले पर अंतःक्रियात्मक रूप से प्रदर्शित करने में मदद की है।

परिमित राज्य मशीनों के बारे में सबसे बड़ी बात यह है कि यह जानना (याद रखना) महत्वपूर्ण है कि आप वर्तमान में किस स्थिति में हैं ताकि अगले वांछित राज्य में जा सकें। विडंबना यह है कि अच्छी जीवन सलाह; तुम्हें पता होना चाहिए कि तुम कहाँ जा रहे हो।

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

हमने सीखा कि एक ही समय में एक से अधिक एनोड प्रदर्शित नहीं किए जा सकते। हमें दिए गए मॉड्यूल ने फायदा उठाया कि मानव आंख केवल एक निश्चित आवृत्ति तक ही अंतर देख सकती है। तो स्विचिंग एनोड की एक उच्च आवृत्ति को चुना गया था। एक ही समय में देखा जा रहा जहाज और चट्टान वास्तव में एक संकेत है क्योंकि प्रत्येक को अलग-अलग प्रदर्शित किया जाता है, लेकिन बहुत जल्दी। उस अवधारणा को जहाज, चट्टान और "बैंग" संदेश की गति को प्रदर्शित करने के लिए लागू किया गया था।

सिफारिश की: