সুচিপত্র:

পং খেলা: Ste টি ধাপ
পং খেলা: Ste টি ধাপ

ভিডিও: পং খেলা: Ste টি ধাপ

ভিডিও: পং খেলা: Ste টি ধাপ
ভিডিও: ১৫ দিনে ৬০০০ ডলার পেলাম | Online jobs at home | নগদ পেমেন্ট 2024, জুলাই
Anonim
পং খেলা
পং খেলা

উপকরণ:

Basys3 FPGA বোর্ড

ভিজিএ কেবল

ভিভাদো

এই নির্দেশের উদ্দেশ্য হল একটি পং গেম তৈরি করা যা মনিটরে প্রদর্শিত হবে। প্রকল্পটি VHDL ব্যবহার করবে এবং একটি Basys3 FPGA ব্যবহার করে কোডটি বহন করবে এবং VGA ইন্টারফেস ব্যবহার করে ছবিটি স্থানান্তর করবে। এই টিউটোরিয়ালটি তাদের জন্য তৈরি করা হয়েছে যাদের ভিএইচডিএল সম্পর্কে কিছুটা পূর্ব জ্ঞান আছে। টিউটোরিয়ালটি different টি ভিন্ন ভাগে বিভক্ত হবে: ওভারভিউ, প্রসেস, স্কোর হ্যান্ডলার, ইমেজ জেনারেশন, পং গেম এবং ভিজিএ।

ধাপ 1: ওভারভিউ

ওভারভিউ
ওভারভিউ

উপরের ছবিটি প্রকল্পের সামগ্রিক পরিকল্পিত নকশা।

খেলার উদ্দেশ্য:

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

সিস্টেম আর্কিটেকচার:

নীচের চিত্রটি সিস্টেমের জন্য মৌলিক সামগ্রিক শীর্ষ-স্তরের ব্লক চিত্র। সিস্টেমে চারটি ইনপুট রয়েছে: বোতাম আর, বোতাম এল, স্টার্ট এবং রিসেট এবং একটি ঘড়ি। এটিতে একটি অনুভূমিক এবং উল্লম্ব সিঙ্ক আউটপুট রয়েছে, RBG (যা একটি নির্দিষ্ট স্থানে পিক্সেলের রঙ বোঝায়), এবং স্কোর (যা 7-সেগমেন্ট ডিসপ্লেতে বাস হিসাবে কাজ করে) আপ বোতামটি শুরু হিসাবে ব্যবহার করা হবে বোতাম, এবং বাম এবং ডান pushbuttons তাদের নিজ নিজ দিক প্যাডেল সরানোর জন্য ব্যবহার করা হবে। 7-সেগমেন্ট ডিসপ্লে স্কোর রেকর্ড করার জন্য ব্যবহার করা হবে, যা ব্যবহারকারী সেকেন্ডের সংখ্যা যা গেমটি না হারিয়ে খেলছে। সংখ্যাটি দশমিক সংখ্যা হিসাবে প্রদর্শিত হবে।

সার্কিট আর্কিটেকচার: আমরা একটি ছোট FSM ধারণকারী একটি FSM ব্যবহার করে আমাদের গিজমো তৈরি করব, সাব-FSM গেমের অসুবিধা নিয়ন্ত্রণ করবে যেখানে প্রধান FSM গেমটির সামগ্রিক প্রবাহ নিয়ন্ত্রণ করবে। আমাদের গিজমো কমপক্ষে তিনটি ক্লক ডিভাইডার ব্যবহার করবে, একটি স্কোরের (সময়) জন্য, একটি ডিসপ্লের রিফ্রেশ রেটের জন্য এবং একটি যেটি DeMux এর আউটপুট পর্যন্ত যুক্ত থাকে যাতে আমরা খেলাটি কত দ্রুত নিয়ন্ত্রণ করতে পারি ক্রমবর্ধমান অসুবিধা নিয়ে এগিয়ে যাবে। আপনি যতক্ষণ খেলবেন গেমটি তত দ্রুত এগিয়ে যাবে। আমাদের সাব-এফএসএম-এর বর্তমান অবস্থার ডি-মাক্স-এর নিয়ন্ত্রণ ইনপুট থাকবে যাতে আমরা নিয়ন্ত্রণ করতে পারি যে আপনি খেলাটি কতক্ষণ ধরে খেলবেন। আমরা কয়েকটি কাউন্টার ব্যবহার করব, একটি ডিসপ্লে রিফ্রেশ করার জন্য এবং আরেকটি স্কোর গণনা করার জন্য যখন আপনি খেলতে থাকবেন। এই প্রকল্পের দুটি প্রধান মডিউল এবং উপ -মডিউলগুলির একটি অ্যারে রয়েছে যা ইনপুট ডেটা ম্যানিপুলেট করবে। দুটি প্রধান সাবমডিউল হল ভিজিএ ড্রাইভার, সেইসাথে বাটন লজিক মডিউল। ভিজিএ ড্রাইভার প্রোগ্রামযোগ্য মেমরি, একটি ঘড়ি বিভাজক এবং যুক্তি যা রঙের জন্য আউটপুটকে কাজে লাগাবে। বোতাম লজিক মডিউল এছাড়াও একটি ঘড়ি বিভাজক, এবং একটি প্রোগ্রামযোগ্য মেমরি, সেইসাথে একটি বাইনারি থেকে দশমিক রূপান্তরকারী 7-সেগমেন্ট ডিসপ্লের জন্য নিজ নিজ ঘড়ি বিভাজক সহ থাকবে।

ধাপ 2: চিত্র প্রক্রিয়া

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

ধাপ 3: স্কোর হ্যান্ডলার

স্কোর হ্যান্ডলার
স্কোর হ্যান্ডলার

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

ঘড়ি বিভাজক:

ক্লক ডিভাইডারে ইনপুট আছে Clk (clock), CEN (Enable in), এবং Div (divider) এবং আউটপুট Clk_out। যদি সক্ষম সংকেত চালু থাকে, তাহলে ঘড়িটি উঠতি প্রান্তে গণনা করবে।

স্কোর কাউন্টার

স্কোর কাউন্টারে ইনপুট Clk (Clock) এবং RST (Reset) থাকে এবং Clk_Out এবং Q আউটপুট করে যা মূলত স্কোর আউটপুট হিসেবে কাজ করে।

সেগমেন্ট ড্রাইভার

সেগমেন্ট ড্রাইভারের ইনপুট D1, D10, D100, D1000, এবং Clock আছে। "D" এর পরের সংখ্যাগুলি 7 সেগমেন্ট ডিসপ্লেতে দশমিক স্থান নির্দেশ করে। আউটপুট হল অ্যানোড এবং ডিজিট। ঘড়ি গণনা করে এবং সংখ্যা নির্ধারণ করে এবং এর অবস্থান। উদাহরণস্বরূপ, একটি "9" হাজার হাজার, শত শত এবং দশের জায়গায় "0" গুলি সহ এক জায়গায় প্রদর্শিত হবে। যখন এটি "10" এ স্যুইচ করে, সংখ্যাটি এখন দশের জায়গায় "1" এবং হাজার, শত এবং এক জায়গায় "0" থাকবে।

সেগমেন্ট হ্যান্ডলার

সেগমেন্ট হ্যান্ডলারের ইনপুট হিসেবে ডিজিট এবং আউটপুট হিসেবে ক্যাথোড রয়েছে। এটি মূলত ক্যাথোড প্রদর্শনের বাইনারি সংখ্যা স্ক্রিনে দশমিক সংখ্যা আউটপুট করে।

স্কোর হ্যান্ডলার

স্কোর হ্যান্ডলার আগের চারটি সত্তা নিয়ে গঠিত এবং এটি সব একসাথে রাখে এবং সংকেতগুলি ম্যাপ করে। এটি বর্তমান অবস্থার উপর ভিত্তি করে কাউন্টারকে সক্ষম এবং নিষ্ক্রিয় করে।

ধাপ 4: ইমেজ জেনারেশন

ইমেজ জেনারেশন চারটি উপাদান নিয়ে গঠিত: অ্যানিমেশন, ফেল কাউন্টার, রিফ্রেশ ইমেজ এবং স্টার্ট কাউন্টার। এই ফাইলগুলি ডিসপ্লে মনিটরে কীভাবে ছবি তৈরি করতে হয় তা উল্লেখ করে।

অ্যানিমেশন

অ্যানিমেশন ফাইলে ইনপুট আছে Clk (Clock Signal), CEN (count enable), RST (Reset Signal), B_X (বলের X অবস্থান), B_Y (বলের Y অবস্থান), P_L (বাম প্যাডেল অবস্থান), এবং P_R (ডান প্যাডেল অবস্থান)। আউটপুট হল WA (যে ঠিকানায় আমরা রঙ লিখছি), এবং WD (নির্ধারিত ঠিকানায় লেখা রঙ)। ফাইলটিতে Play_Counter রয়েছে যা একটি কাউন্টার যা MUX- এর জন্য একটি নিয়ন্ত্রণ ইনপুট হিসাবে ব্যবহার করা হবে, একটি এনকোডার যা সঠিক স্থানে সঠিক রং বের করতে পারে এবং সবশেষে একটি মাল্টিপ্লেক্সার যা প্যাডেলের অবস্থানের উপর ভিত্তি করে সঠিক রঙ প্রদর্শন করে এবং বল

ছবি রিফ্রেশ করুন

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

কাউন্টার শুরু করুন

স্টার্ট কাউন্টার ইনপুট Clk, RS, এবং CEN ব্যবহার করে এবং WA এবং WD আউটপুট করে। এটি MUX এর জন্য নিয়ন্ত্রণ ইনপুট নির্ধারণ করতে একটি পাল্টা এবং রূপান্তর ব্যবহার করে। মাল্টিপ্লেক্সার তখন সঠিক রঙের ঠিকানা নির্ধারণ করতে ইনপুট ব্যবহার করে এবং এই ডেটা VGA ড্রাইভারকে পাঠায়। যখন ব্যবহারকারী গেমটি শুরু করে তখন এটি "পং" প্রদর্শন করতে ব্যবহৃত হয়।

ফেল কাউন্টার

যখন ব্যবহারকারী গেম হারায় তখন "গেম ওভার" প্রদর্শন করতে ব্যর্থ কাউন্টার ব্যবহার করা হয়। এটিতে একটি ক্লক, আরএসটি এবং সিইএন সংকেত রয়েছে। এটি MUX এর জন্য নিয়ন্ত্রণ ইনপুট নির্ধারণের জন্য একটি পাল্টা এবং একটি রূপান্তর সূত্র ব্যবহার করে। মাল্টিপ্লেক্সার তখন সঠিক রঙের ঠিকানা নির্ধারণ করতে ইনপুট ব্যবহার করে এবং এই ডেটা VGA ড্রাইভারকে পাঠায়।

ধাপ 5: পং গেম

পং খেলা
পং খেলা

প্রকল্পের এই বিভাগে রয়েছে পং মাস্টার, ফিনিট স্টেট মেশিন (এফএসএম), টাইমার এবং স্টার্ট ডিবাউন্স ফাইল।

টাইমার

টাইমারের ইনপুট Clk (Clock) এবং PS (Present State) এবং টাইমার এবং Clk_out আউটপুট হিসেবে আছে। টাইমারটি প্রতি পাঁচ সেকেন্ডে গেমের গতি পরিবর্তন করতে ব্যবহৃত হয়।

ফ্লো এফএসএম

ফ্লো FSM- এর ইনপুট Clk, Fail, Timer, Bttn_S (Start Button) এবং Buttn_RST (Reset Button) এবং আউটপুট Pres_S (Present State Output) আছে। এফএসএম বর্তমান রাষ্ট্রকে পরবর্তী রাজ্যে আপডেট করার জন্য টাইমার ব্যবহার করে এবং পরবর্তী অবস্থা আপডেট করতে থাকে যতক্ষণ না খেলাটি 5 স্তরে পৌঁছায় যেখানে খেলাটি শেষ না হওয়া পর্যন্ত এটি থাকে।

ডিবাউন্স শুরু করুন

স্টার্ট ডিবাউন্স হল বলের শুরু বাউন্স। এতে S_in এবং Clk, এবং S_out আউটপুট আছে।

পং মাস্টার এই ফাইলটি আগের সমস্ত উপাদান ব্যবহার করে এবং এটি তৈরি করে যাতে সমস্ত উপাদান তাত্ক্ষণিক হয়। এটি এমন একটি মাস্টার ফাইল যা পূর্ববর্তী সমস্ত উপাদানগুলিকে একত্রিত করে যা আমরা একসাথে তৈরি করেছি।

ধাপ 6: ভিজিএ ড্রাইভার

ভিজিএ (ভিজ্যুয়াল গ্রাফিক্স অ্যারে) ড্রাইভার হল সফটওয়্যারের একটি অংশ যা ডিসপ্লে স্ক্রিনে পাঠানো কমান্ড বা ডেটা গ্রহণ করতে ব্যবহৃত হয়। চালক আমাদের আমাদের অধ্যাপক দিয়েছিলেন। মনিটরের সাথে Basys3 বোর্ড সংযোগ করতে ড্রাইভার এবং একটি VGA কর্ড ব্যবহার করুন।

আপনার এখন ভিএইচডিএল ব্যবহার করে আপনার নিজের পং গেম তৈরির জন্য প্রস্তুত হওয়া উচিত!

প্রস্তাবিত: