সুচিপত্র:

বেসিস 3 অ্যালার্ম ক্লক: 9 টি ধাপ
বেসিস 3 অ্যালার্ম ক্লক: 9 টি ধাপ

ভিডিও: বেসিস 3 অ্যালার্ম ক্লক: 9 টি ধাপ

ভিডিও: বেসিস 3 অ্যালার্ম ক্লক: 9 টি ধাপ
ভিডিও: 3 Alarm Clock Mistakes Stopping You From Waking Up Early 2024, নভেম্বর
Anonim
বেসিস 3 অ্যালার্ম ক্লক
বেসিস 3 অ্যালার্ম ক্লক

আমাদের প্রকল্প Basys 3 FPGA বোর্ড, একটি Arduino এবং একটি স্পিকার ড্রাইভার বোর্ড ব্যবহার করে একটি অ্যালার্ম ঘড়ি তৈরি করে। ব্যবহারকারী বেসিস 3 এ 11 টি ইনপুট সুইচ ব্যবহার করে বোর্ডে বর্তমান সময় ইনপুট করতে এবং বোর্ডের মাঝের বোতামটি ব্যবহার করে মান লক করতে সক্ষম। ব্যবহারকারী তারপর একই সুইচ ব্যবহার করে অ্যালার্মের সময় প্রবেশ করতে পারে কিন্তু অ্যালার্ম টাইমে লক করতে বাম বোতাম টিপুন। যদি ভুল সময় প্রবেশ করা হয়, রিসেট বাটন (উপরের বোতাম) টিপতে পারে এবং বর্তমান ঘড়ির সময় এবং অ্যালার্ম সময় 00:00 এ সেট করা হবে। ব্যবহারকারী তারপর বাম দিকের সুইচ ব্যবহার করে ঘড়ি শুরু করতে পারেন এবং পরবর্তী সুইচ ব্যবহার করে অ্যালার্ম চালু করতে পারেন। যখন অ্যালার্ম চালু হয়, ঘড়ির সময় এবং অ্যালার্ম টাইম মিলের সময় অ্যালার্ম ঘড়ি একটি শব্দ করবে।

ধাপ 1: ব্ল্যাক বক্স ডায়াগ্রাম

ব্ল্যাক বক্স ডায়াগ্রাম
ব্ল্যাক বক্স ডায়াগ্রাম
ব্ল্যাক বক্স ডায়াগ্রাম
ব্ল্যাক বক্স ডায়াগ্রাম

আমাদের প্রোগ্রামে প্রয়োজনীয় ইনপুট এবং আউটপুট কল্পনা করার জন্য আমরা একটি ব্ল্যাক বক্স ডায়াগ্রাম আঁকার মাধ্যমে আমাদের প্রকল্প শুরু করেছি। আমাদের প্রোগ্রামের জন্য নিম্নলিখিত ইনপুট যেমন 5-বিট ইনপুট (Hour_in) 24-ঘন্টা সময়, 6-বিট (Min_in) ইনপুট 60 মিনিট পর্যন্ত প্রদর্শন করার জন্য, ব্যবহারকারীর অনুমতি দেওয়ার জন্য একটি রিসেট (Rst_b) বোতাম তাদের সময় ইনপুট পরিবর্তন করুন, একটি 1-বিট ইনপুট (alm_en) যা এলার্ম ইনপুট লোড করে, 1-বিট ইনপুট (alarm_sw) অ্যালার্ম ঘড়িটি সক্রিয় করার সময় বন্ধ করতে, 1-বিট ইনপুট (e_sec) যা কাউন্টার নিয়ন্ত্রণ করে সেকেন্ড চলবে, একটি 1-বিট ইনপুট (Led_btn) যা বর্তমান সময় নির্ধারণ করে এবং সবশেষে একটি 1-বিট ইনপুট (clk) যা Basys 3 বোর্ড দ্বারা প্রদর্শিত সময়কে নিয়ন্ত্রণ করে। আউটপুট হল (alm_on) যা Arduino তে সংকেত পাঠায়, sseg আউটপুট যা Basys 3 এ ইনপুট সময় প্রদর্শন করে, এবং অ্যানোড আউটপুট যা নিয়ন্ত্রণ করে যেখানে সাতটি সেগমেন্ট ডিসপ্লেতে ইনপুট প্রদর্শিত হয়।

ধাপ 2: ধীর ঘড়ি

ধীর ঘড়ি
ধীর ঘড়ি

ধীর ঘড়ি বা clock_div2 ফাইল একটি ঘড়ি তৈরি করে যার ফ্রিকোয়েন্সি 2 hz। যদি আমরা এই ঘড়িটিকে আমাদের সেকেন্ডের কাউন্টারে খাওয়াই, সেকেন্ডের মান প্রতি সেকেন্ডে একটি করে বাড়বে। ধীর ঘড়িটি একটি নির্ভরযোগ্য ঘড়ি সংকেত তৈরি করতে ব্যবহৃত হয় যা প্রতি সেকেন্ডে একবার থেকে নিম্ন থেকে উচ্চ পর্যন্ত পরিবর্তিত হয়।

ধাপ 3: কাউন্টার

পাল্টা
পাল্টা
পাল্টা
পাল্টা

কম্পোনেন্ট কাউন্টার (মিনিট এবং সেকেন্ড):

মিনিট এবং সেকেন্ডের মৌলিক কাজ হল সেগুলো হল কাউন্টার। মিনিট কাউন্টার ইনপুট নেয় (Vin) যা ইনপুট (Min_in) থেকে সংকেত, এবং তারপর গণনা করা হয় যতক্ষণ না কাঙ্ক্ষিত ইনপুট ইনপুট করা হয়। সেকেন্ড শুধুমাত্র সুইচ ইনপুট নেয় তারা উভয়েই সেখানে (Qout) মান দেয়, এবং তারপর এটি (ডেটা) সংরক্ষণ করা হয় যা এটি SSEG- এ পাঠায় যা লিঙ্কিং ফাইলে করা হয়। এছাড়াও, যখন মিনিট এবং সেকেন্ড 59 এর মানগুলিতে পৌঁছায় তখন এটি পুনরায় সেট হয় এবং মিনিট/ঘন্টা বাড়ানোর জন্য তাদের আউটপুট '1' হয়। এটি তাদের ইনপুটগুলিতে একটি রিসেট (rst_b) দিয়ে ম্যাপ করা যায়।

ধাপ 4: কাউন্টার আওয়ার

কাউন্টার আওয়ার
কাউন্টার আওয়ার
কাউন্টার আওয়ার
কাউন্টার আওয়ার

কম্পোনেন্ট কাউন্টার আওয়ার

একইভাবে, মিনিট এবং সেকেন্ডের কম্পোনেন্ট কাউন্টারে ঘন্টা কম্পোনেন্ট ইনপুট গুলি নেয় যেমন (Vin) যা ফাইল ইনপুট (Hour_in) লিঙ্ক করার একটি সংকেত, এবং আউটপুট আছে যা একইভাবে মিনিট এবং সেকেন্ডে সংযুক্ত থাকে। যখন ঘন্টা গণনা মান 24 00 এ পৌঁছায় তখন এটি 00 00 তে পুনরায় সেট হয়।

ধাপ 5: অ্যালার্ম

এলার্ম
এলার্ম
এলার্ম
এলার্ম
এলার্ম
এলার্ম
এলার্ম
এলার্ম

অ্যালার্ম.vhd ফাইলটি ডি-ফ্লিপ-ফ্লপ দ্বারা গঠিত যা স্টোরেজ ডিভাইস যা ডিজিটাল ডেটা সংরক্ষণ করতে পারে। অ্যালার্ম ফাইলটি সেই সময়ে সঞ্চয় করতে ব্যবহৃত হয় যেখানে অ্যালার্ম সক্রিয় হবে। ঘন্টা (5 বিট ইনপুট) এবং মিনিট (6 বিট ইনপুট) ডেটা সংরক্ষণ করার জন্য আমাদের অ্যালার্ম ফাইলের মধ্যে 11 ডি-ফ্লিপ-ফ্লপ স্ট্যাম্প আউট করতে হবে। এটি করার জন্য, আমাদের প্রথমে ডি-ফ্লিপ-ফ্লপগুলির পরিচালনা পরিচালিত যুক্তি আমদানি করতে হবে এবং উপাদানগুলির মানচিত্র তৈরি করতে হবে। 11 টি-ফ্লিপ-ফ্লপের প্রতিটি ইনপুট থেকে এক বিট ডেটা সংরক্ষণ করবে এবং অ্যালার্ম ফাইলের আউটপুটগুলিতে ডেটা ম্যাপ করার অনুমতি দেবে। যেহেতু ডি-ফ্লিপ-ফ্লপ ডেটা সঞ্চয় করে, আমরা ইনপুট সুইচগুলি পরিবর্তন করা হলেও পরবর্তী সময়ে তথ্য ব্যবহার করতে সক্ষম।

ধাপ 6: ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার

ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার
ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার
ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার
ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার
ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার
ইউনিভার্সাল সেভেন সেগমেন্ট ডিসপ্লে ড্রাইভার

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

ধাপ 7: লিঙ্ক ফাইল

লিঙ্ক ফাইল
লিঙ্ক ফাইল
লিঙ্ক ফাইল
লিঙ্ক ফাইল
লিঙ্ক ফাইল
লিঙ্ক ফাইল

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

ধাপ 8: Arduino

আরডুইনো
আরডুইনো
আরডুইনো
আরডুইনো

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

ধাপ 9: কেবল রাউটিং

কেবল রাউটিং
কেবল রাউটিং

Arduino এবং Basys 3 বোর্ডগুলিকে বোর্ডের মধ্যে সংকেত স্থানান্তর করার জন্য শারীরিকভাবে সংযুক্ত থাকতে হবে। তারের প্রথম তারটি হবে বেসিস 3 এর জেএ পিএমওডির গ্রাউন্ড পিন থেকে আরডুইনো এর গ্রাউন্ড পিন পর্যন্ত। এরপরে Basys 3 এর JA PMOD এর পিন 1 থেকে arduino এর ডিজিটাল পিন 7 এর সাথে একটি তারের সংযোগ করুন। এরপরে, স্পিকার ড্রাইভারের স্থল পিনের সাথে আরডুইনো থেকে দুটি গ্রাউন্ড পিন সংযুক্ত করুন। পরবর্তী, স্পিকার ড্রাইভারের Vcc পিনের সাথে arduino এর 3.3 V আউটপুট সংযুক্ত করুন। পরবর্তী, স্পিকার ড্রাইভারের ইন পিনের সাথে আরডুইনো এর ডিজিটাল পিন 9 সংযুক্ত করুন।

প্রস্তাবিত: