সুচিপত্র:

FPGA রিঅ্যাকশন গেম: ১০ টি ধাপ
FPGA রিঅ্যাকশন গেম: ১০ টি ধাপ

ভিডিও: FPGA রিঅ্যাকশন গেম: ১০ টি ধাপ

ভিডিও: FPGA রিঅ্যাকশন গেম: ১০ টি ধাপ
ভিডিও: Earn passive income with Reaction Nodes (RTC) 2024, জুলাই
Anonim
FPGA রিঅ্যাকশন গেম
FPGA রিঅ্যাকশন গেম

সামার রাদারফোর্ড এবং রেজিতা সোয়েতান্দার দ্বারা

ধাপ 1: ভূমিকা

সিপিই 133 এর জন্য আমাদের চূড়ান্ত প্রকল্পের জন্য, আমরা একটি বেসিস 3 বোর্ডের জন্য ভিএইচডিএলে একটি প্রতিক্রিয়া গেম ডিজাইন করেছি। এই গেমটিকে আর্কেড গেম "স্ট্যাকার" এর সাথে সবচেয়ে ঘনিষ্ঠভাবে তুলনা করা যেতে পারে যেখানে খেলোয়াড়কে সঠিক সময়ে ব্লকগুলি ফেলে দিতে হবে। Basys3 বোর্ড একটি ব্রেডবোর্ডের সাথে সংযুক্ত, যার বিকল্প LED আছে। স্তরের উপর নির্ভর করে এই এলইডি লাইটগুলি একটি নির্দিষ্ট ফ্রিকোয়েন্সিতে বিকল্প হবে। এই গেমটি ক্লক ডিভাইডার এবং 4 ডিজিট 7 সেগমেন্ট ডিসপ্লে, সেইসাথে একটি সসীম স্টেট মেশিন ব্যবহার করে। যখন প্লেয়ারটি মাঝের এলইডি লাইট জ্বালানোর সাথে সাথে সঠিক সুইচটি সক্রিয় করে, তখন প্লেয়ারটি গেমের পরবর্তী স্তরে অগ্রসর হবে, বিকল্প এলইডিগুলির ফ্রিকোয়েন্সি বাড়াবে। এটি প্রতিটি স্তরকে আগের স্তরের চেয়ে কঠিন করে তোলে। যখন প্লেয়ার সাফল্যের সাথে লেভেল 7, সর্বোচ্চ স্তরে আঘাত করে, সেগমেন্ট ডিসপ্লেতে একটি বার্তা প্রদর্শিত হবে এবং সমস্ত LED একই সাথে চালু এবং বন্ধ হবে।

ধাপ 2: উপকরণ

উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ
উপকরণ

আপনার যে উপকরণগুলির প্রয়োজন হবে তা হল:

  • মাইক্রো ইউএসবি কেবল সহ ডিজিলেন্ট বেসিস 3 বোর্ড
  • ব্রেডবোর্ড
  • 5 টি LEDs
  • 5 প্রতিরোধক (আমরা 220 ohms ব্যবহার করেছি)
  • 11 জাম্পার তার
  • ভিভাদো সহ কম্পিউটার

ধাপ 3: শীর্ষ স্তরের ডায়াগ্রাম ব্ল্যাক বক্স ডিজাইন

টপ লেভেল ডায়াগ্রাম ব্ল্যাক বক্স ডিজাইন
টপ লেভেল ডায়াগ্রাম ব্ল্যাক বক্স ডিজাইন
টপ লেভেল ডায়াগ্রাম ব্ল্যাক বক্স ডিজাইন
টপ লেভেল ডায়াগ্রাম ব্ল্যাক বক্স ডিজাইন

আপনি দেখতে পাচ্ছেন, আমাদের শীর্ষ স্তরের ব্লক ডায়াগ্রামটি আমাদের সাবমডিউল, ক্লকডিভাইড থেকে প্রয়োজনীয় ঘড়ি পেয়ে শুরু হয়। এই ঘড়িগুলি বিভিন্ন প্রক্রিয়া ব্লকের ইনপুট। মূলত, গেমটিকে স্বীকৃতি দিতে হবে যে যখন একজন ব্যবহারকারী সঠিকভাবে সুইচ চালু করে, তখন LEDs অবশ্যই দ্রুত পরিবর্তিত হতে শুরু করবে এবং ডিসপ্লেটি এক স্তরে যেতে হবে। ব্লক ডায়াগ্রামটি একটু পাগল মনে হতে পারে, কিন্তু এর কারণ হল যে অনেকগুলি সংকেত রয়েছে যা একটি নির্দিষ্ট প্রক্রিয়ায় প্রতিষ্ঠিত হয় এবং তারপর সেই সংকেতটি অন্য প্রক্রিয়া ব্লকে অন্য সংকেত সংজ্ঞায়িত করে।

শেষ পর্যন্ত, গেমের একমাত্র ইনপুট হল Basys3 বোর্ডে ইনপুট ঘড়ি যা 100 Mhz এ চলে, Basys3 বোর্ডে সাতটি সুইচ এবং রিসেট বোতাম। সাতটি সেগমেন্ট ডিসপ্লের জন্য অ্যানোড, ডিসপ্লের জন্য সাতটি সেগমেন্ট এবং এলইডি।

ধাপ 4: CLKDivide

CLKDivide
CLKDivide
CLKDivide
CLKDivide
CLKDivide
CLKDivide

এই ক্লক ডিভাইডার সাবমডিউলটি আমাদের মূল ফাইলে আমরা যে মান দিয়ে ম্যাপ করেছি তার উপর নির্ভর করে একটি ধীর ঘড়ি তৈরি করেছে। Clk400, PushClk, এবং newlck নির্ধারণ করতে আমরা এই সাবমডিউলটি ব্যবহার করেছি এই সাবমডিউলটি ইনপুট হিসেবে একটি ঘড়ি এবং 32 বিট ডিভাইডার নেয়। একটি ধীর ঘড়ি আউটপুট হয়। ডিভাইডার এবং ধীর ঘড়ির জন্য একটি প্রসেস ব্লক রয়েছে। প্রক্রিয়ায় একটি অস্থায়ী পরিবর্তনশীল, যাকে আমরা গণনা বলে থাকি, যা প্রতিবার ইনপুট করা ঘড়ির উঠতি প্রান্তে আঘাত করলে একটি গণনা করে। একবার এটি বিভাজক সংখ্যায় পৌঁছে গেলে, ধীর ঘড়িটি টগল করে এবং গণনা শূন্যে রিসেট করে।

ধাপ 5: শিফট প্রসেস ব্লক

শিফট প্রসেস ব্লক
শিফট প্রসেস ব্লক

শিফট প্রসেস ব্লক এলইডির বিকল্প গতি এবং গতি নিয়ন্ত্রণ করে। সংবেদনশীলতার তালিকায় রয়েছে নিউক্লক এবং স্টপ সিগন্যাল। যখন ব্যবহারকারী লেভেল পাস করে তখন স্টপ সংক্ষিপ্ত বিলম্ব ঘটায়। যদি স্টপ বেশি না হয়, তাহলে এলইডিগুলি নিউক্লকের গতির উপর ভিত্তি করে স্বাভাবিক হিসাবে বিকল্প। এই বিকল্প প্যাটার্ন দুটি ভেরিয়েবল দ্বারা নিয়ন্ত্রিত হয়: ট্র্যাক এবং গণনা। কাউন্ট নির্ধারণ করে যে কোন LED থাকা উচিত, যখন ট্র্যাক নির্ধারণ করে যে গণনাটি গণনা করা উচিত বা নিচে। আরেকটি সংকেত আছে, চূড়ান্ত, এটি কেবল তখনই প্রযোজ্য যখন স্তরটি "111" হয়, যা ইঙ্গিত দেয় যে খেলোয়াড় গেমটিকে পরাজিত করেছে। চূড়ান্ত বিকল্পগুলি 0 এবং 1 এর মধ্যে প্রতিটি ঘড়ির প্রান্তে এলইডিগুলি অনবরত চালু এবং বন্ধ করতে। এটি চূড়ান্ত প্রদর্শনের জন্য একটি চাক্ষুষ উপাদান।

এই শিফট প্রক্রিয়াটি এই প্রকল্পের জন্য শুরু করার উপযুক্ত জায়গা। যদি আপনি আপনার LEDs সঠিকভাবে এবং ধারাবাহিকভাবে পেতে পারেন, তাহলে এখান থেকে আপনাকে মাত্রা বাড়ানোর সময় আচরণে যোগ করতে হবে!

ধাপ 6: সীমাবদ্ধ রাষ্ট্র যন্ত্র

সসীম রাষ্ট্র যন্ত্র
সসীম রাষ্ট্র যন্ত্র

ইনপুট সুইচ বা রিসেট বাটন চাপলে আমরা আচরণকে নির্দেশ করার জন্য একটি সসীম রাজ্য মেশিন তৈরি করেছি। প্রতিটি রাজ্য একটি "স্তর" এবং যদি ভুল সময়ে সুইচ চালু হয় বা রিসেট চাপানো হয়, স্তরটি "000." এ ফিরে আসে। অন্যথায়, যদি সুইচটি সঠিকভাবে চালু করা হয় তবে স্তরটি ততক্ষণ পর্যন্ত এগিয়ে যায় যতক্ষণ না এটি চূড়ান্ত অবস্থায় পৌঁছায়, "111" এবং সমাপ্তি প্রদর্শন ঘটে। FSM দুটি প্রক্রিয়া ব্লক sync_proc এবং comb_proc এর উপর ভিত্তি করে তৈরি। Sync_proc সেই ঘড়ি ব্যবহার করে যাকে আমরা পুশক্লক বলে থাকি। এই ঘড়িটি নিয়ন্ত্রণ করে পরবর্তী রাজ্য কত দ্রুত বর্তমান অবস্থায় পরিণত হয়। এই ঘড়িটি বেশ দ্রুত হওয়া উচিত; আমরা এমন একটি গতি বেছে নিয়েছি যা আমাদের দ্রুততম LED গতির চেয়ে প্রায় দ্বিগুণ দ্রুততর।

আমরা স্তরের জন্য একটি FSM ব্যবহার করে এই কোডটি প্রয়োগ করেছি; যাইহোক, এই প্রকল্পের পরে আমরা বুঝতে পেরেছি যে একটি FSM- এর আরও কার্যকর ব্যবহার হতে পারে একটি কাউন্ট-আপ স্টেট, একটি রিসেট স্টেট বা স্টে স্টেট। যদি কিছু চাপানো না হয়, তবে এটি স্থিতিশীল অবস্থায় রয়েছে। যদি রিসেট চাপানো হচ্ছে বা খেলোয়াড় গোলমাল করছে, এটি রিসেট অবস্থায় রয়েছে। সঠিকভাবে চাপা থাকলে, এটি গণনা অবস্থায় আছে। এই গেমটিতে FSM ব্যবহার করার আরও অনেক উপায় আছে!

ধাপ 7: লেভেল সহ ডিসপ্লে প্রসেস ব্লক নিয়ন্ত্রণ করা

লেভেল সহ ডিসপ্লে প্রসেস ব্লক নিয়ন্ত্রণ করা
লেভেল সহ ডিসপ্লে প্রসেস ব্লক নিয়ন্ত্রণ করা

লেভেল ডিসপ্লে প্রসেস ব্লক নিয়ন্ত্রণ করে। সংবেদনশীলতার তালিকার ভেরিয়েবল হল লেভেল, রিসেট এবং ক্লক 400০০। 7 সেগমেন্ট ডিসপ্লে প্রথম স্তরের জন্য '1' প্রদর্শন করে শুরু হয়। এটি ব্যবহারকারীরা কোন স্তরে আছে তা দেখানোর জন্য প্রতিবার ব্যবহারকারী একটি স্তর পাস করলে 7 পর্যন্ত গণনা করে। একবার ব্যবহারকারী 7 স্তর অতিক্রম করলে, এটি "কুল" প্রদর্শন করে যা বোঝায় যে খেলোয়াড় গেমটিকে পরাজিত করেছে। এই "কুল" ডিসপ্লেটি 400 Hz ঘড়ি থেকে চলে যাকে আমরা Clk400 বলে থাকি। যদি রিসেট চাপানো হয়, ডিসপ্লে "1." এ ফিরে যায়

ধাপ 8: স্তরের সাথে LED গতি নিয়ন্ত্রণ করা

স্তর সহ LED গতি নিয়ন্ত্রণ
স্তর সহ LED গতি নিয়ন্ত্রণ

অবশেষে, লেভেল LEDs এর গতি নিয়ন্ত্রণ করে। স্তর সংবেদনশীলতার তালিকায় একমাত্র সংকেত। D1 হল সিগন্যাল যা নিউক্লক পেতে ক্লক ডিভাইডার প্রক্রিয়ায় যায়। প্রতিবার স্তর পরিবর্তন করা হয়, বা রাষ্ট্র পরিবর্তিত হয়, প্রক্রিয়াটি "গতি" ব্লক করে। এই প্রক্রিয়াটি D1 এর মান নির্ধারণ করে। D1 এর 8 টি সংজ্ঞায়িত মান রয়েছে যা আমরা প্রতিটি স্তর কত দ্রুত চালাতে চেয়েছিলাম তার উপর ভিত্তি করে আমরা বেছে নিয়েছি। ডি 1 ছোট হয়ে যায় প্রতিবার মাত্রা বৃদ্ধি পায় যাতে নিউক্লক দ্রুত চলে।

ধাপ 9: হার্ডওয়্যার সমাবেশ

হার্ডওয়্যার সমাবেশ
হার্ডওয়্যার সমাবেশ

আমরা ব্রেডবোর্ডকে Basys3 এর সাথে PMod সংযোগকারীগুলির একটিতে সংযুক্ত করেছি। পিএমওড পোর্টগুলির মধ্যে ছয়টি পুরুষ থেকে পুরুষ সংযোগকারীকে প্লাগ করার জন্য ব্যবহার করা হয়েছিল, একটি মাটির জন্য এবং বাকি পাঁচটি 5 টি এলইডি -র জন্য। আমরা প্রতিটি LED এর জন্য একটি প্রতিরোধক স্থাপন করেছি। এই প্রতিরোধক 220Ω এবং LEDs শর্ট সার্কিট এবং পুড়ে যাওয়া থেকে বাধা দেয়। যদিও প্রতিটি এলইডি কিছু প্রতিরোধের আছে, কিন্তু উৎস থেকে ভোল্টেজ বাধা দেওয়ার জন্য প্রতিরোধ যথেষ্ট নয়।

ধাপ 10: মজা করুন

এই গেমটি খেলা খুবই সহজ। প্লেয়ারটি বোর্ডের ডান দিকের সুইচ 1, V17 এ শুরু হয়। যখন মাঝের LED চালু থাকে তখন তাদের অবশ্যই সুইচ উঁচু করতে হবে। তারা তারপর বাম দিকে একটি সুইচ সরান এবং একই জিনিস! যদি খেলোয়াড় শেষ পর্যন্ত এটি তৈরি করে, তবে তারা সপ্তম সুইচ, W14 এ শেষ হবে। যদি তারা গেমটিকে পরাজিত করে তবে তারা সত্যিই একটি মজার সমাপ্তি প্রদর্শন দেখতে পাবে!

কিছু লক্ষণীয় যে এই গেমটি তৈরি করার সময় গতিগুলি সম্পূর্ণরূপে আপনার উপর নির্ভর করে! যদি আমরা যে গতিগুলি বেছে নিয়েছি তা যদি খুব ধীর হয় তবে নির্দ্বিধায় এটিকে গতি দিন এবং এটিকে আরও চ্যালেঞ্জিং করে তুলুন! স্তরের কোন নির্দিষ্ট সংখ্যা নেই। যদি আপনি এটিকে আরও বেশি স্তরের করতে চান, তবে এফএসএম এবং লেভেল দ্বারা নির্ধারিত প্রসেস ব্লকগুলিতে অবশ্যই পরিবর্তন করতে হবে, তবে এগুলি খুব সহজ পরিবর্তন।

আমরা ব্যবহারকারীর ইনপুট হিসাবে বোর্ডে সুইচ ব্যবহার করাও বেছে নিয়েছি, কিন্তু এটি Basys3 বোর্ডে একটি বোতাম দিয়েও সম্ভব; বোতামটি প্রতিবার ব্যবহারকারী শুরু করার সময় সুইচগুলি পুনরায় সেট করার প্রয়োজনীয়তা দূর করবে। আমরা প্রাথমিকভাবে একটি বোতাম ব্যবহার করেছি, তবে এটি স্তর নির্ধারণে ত্রুটির কারণ হয়েছে কারণ বোতামটি চেপে ধরার সময় পুশক্লকের দুটি উঠতি প্রান্ত আঘাত করলে এটি একাধিক স্তরে লাফিয়ে উঠবে।

নীচে একটি ভিডিও দেখানো হয়েছে কিভাবে খেলতে হয়, প্রথম 4 টি স্তর দিয়ে যাচ্ছি এবং চূড়ান্ত সমাপ্তি প্রদর্শন।

এই প্রকল্পের মূল ফাইলটি নীচে অন্তর্ভুক্ত করা হয়েছে।

সূত্র

Basys3 রেফারেন্স ম্যানুয়াল

প্রকল্পের জন্য অনুপ্রেরণা - আরডুইনো স্টপ ইট গেম

প্রস্তাবিত: