উইকিবই
bnwikibooks
https://bn.wikibooks.org/wiki/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%A7%E0%A6%BE%E0%A6%A8_%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%BE
MediaWiki 1.47.0-wmf.5
first-letter
মিডিয়া
বিশেষ
আলাপ
ব্যবহারকারী
ব্যবহারকারী আলাপ
উইকিবই
উইকিবই আলোচনা
চিত্র
চিত্র আলোচনা
মিডিয়াউইকি
মিডিয়াউইকি আলোচনা
টেমপ্লেট
টেমপ্লেট আলোচনা
সাহায্য
সাহায্য আলোচনা
বিষয়শ্রেণী
বিষয়শ্রেণী আলোচনা
উইকিশৈশব
উইকিশৈশব আলাপ
বিষয়
বিষয় আলাপ
রন্ধনপ্রণালী
রন্ধনপ্রণালী আলোচনা
TimedText
TimedText talk
মডিউল
মডিউল আলাপ
ইভেন্ট
ইভেন্ট আলোচনা
উইকিবই:পড়ার ঘর/প্রশাসকদের আলোচনাসভা
4
2347
106490
72328
2026-06-04T21:39:57Z
~2026-33069-01
13712
/* অনুবাদ নাকি রূপান্তর। আর্টিফিশিয়াল ইন্টেল? */ উত্তর
106490
wikitext
text/x-wiki
{{আলোচনাসভা-শীর্ষ}}
__NEWSECTIONLINK__
{{Clear}}
<!-- এই লাইনের নিচে লিখুন -->
== উইকি শিশুদের ভালোবাসে ==
উইকি শিশুদের ভালোবাসে প্রবন্ধে একজন সাধারণ উইকিপিডিয়া ইউজার হিসেবে আমি প্রবন্ধ জমা দিতে পারবো ? [[ব্যবহারকারী:Rifat Paradoxical|Rifat Paradoxical]] ([[ব্যবহারকারী আলাপ:Rifat Paradoxical|আলাপ]]) ০৪:৪৫, ১৭ জুন ২০২৪ (ইউটিসি)
:@[[ব্যবহারকারী:Rifat Paradoxical|Rifat Paradoxical]] জ্বী, পারবেন। —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৪:৪৯, ১৭ জুন ২০২৪ (ইউটিসি)
== অনুবাদ নাকি রূপান্তর। আর্টিফিশিয়াল ইন্টেল? ==
১। আমি উত্তর পেয়েছি। অনুবাদ প্রকাশ করা যাবে না। কপিরাইট। তবে সারাংশ বা নিজের মত করে তা লেখা যাবে।
'''২। আমি অনুবাদে কোন আরটেফিশিয়াল ইন্টেল টুল ব্যবহার করতে পারবো? আমি অবশ্যই তা যাচাই করে প্রকাশ করবো। গ্রামারলি, কুইলিবট অর চ্যটজিপিটি? আবার বলছি, আমি কপি করে উঠিয়ে দেবো না, শুধু সাহায্য নেবো।'''
৩। নিরম কানুন এর ভেতর আর্টিফিশিয়াল ইন্টেলের ব্যবহার নিয়ে একটি বিভাগ থাকা প্রয়োজন। [[ব্যবহারকারী:Stuxnet.02|Stuxnet.02]] ([[ব্যবহারকারী আলাপ:Stuxnet.02|আলাপ]]) ১৬:৩৯, ৯ আগস্ট ২০২৪ (ইউটিসি)
:@http://google.com [[বিশেষ:অবদান/~2026-33069-01|~2026-33069-01]] ([[ব্যবহারকারী আলাপ:~2026-33069-01|আলাপ]]) ২১:৩৯, ৪ জুন ২০২৬ (ইউটিসি)
== কপিরাইট প্রসঙ্গে ==
আমি সম্প্রতি যে বইটি পড়ছিলাম, সেটি এত্ত বেশি গুরুত্বপূর্ণ বলে মনে হচ্ছে যে আমি চাই সেটি সকলেই জানুক এবং আমার দেশের মানুষ তাদের নিজেদের ভাষায় জানুক। কিন্তু কারো অনুমতি ছাড়া তার বইয়ের অনুবাদ সরাসরি অপরাধ বলেই আমি জানি। কিভাবে তার জন্য অনুমতি পাওয়া যায়, আমার জানা নাই। কাজটি করতে ইচ্ছুক, তাই উপায় জানতে চাই। [[ব্যবহারকারী:Thamina Siddiky Jerin|Thamina Siddiky Jerin]] ([[ব্যবহারকারী আলাপ:Thamina Siddiky Jerin|আলাপ]]) ০৬:০০, ৭ মে ২০২৫ (ইউটিসি)
iyhxuszdvpdf4wys3uihs5w2jzikf9c
উইকিবই:সম্পাদনার সংখ্যা অনুযায়ী উইকিবইয়ের সম্পাদকগণ/১-১০০
4
10682
106494
102471
2026-06-05T05:50:19Z
KanikBot
8129
হালনাগাদ
106494
wikitext
text/x-wiki
:সর্বশেষ হালনাগাদ: ০৫:৫০, ৫ জুন ২০২৬ (ইউটিসি)
{| class="wikitable"
! নং !! ব্যবহারকারী নাম !! মোট সম্পাদনা
|-
|১||{{u|MdsShakil}}||১১৩৯১
|-
|২||{{u|Aishik Rehman}}||৪৮০৫
|-
|৩||{{u|ShahadatHossain}}||৪২১৫
|-
|৪||{{u|Tahmid}}||৩৫৯০
|-
|৫||{{u|Salil Kumar Mukherjee}}||৩৫৮৩
|-
|৬||{{u|মোহাম্মদ জনি হোসেন}}||২৩২০
|-
|৭||{{u|R1F4T}}||২০১৪
|-
|৮||{{u|কমলেশ মন্ডল}}||১৯৯৪
|-
|৯||{{u|Sumanta3023}}||১৮৭৩
|-
|১০||{{u|SMontaha32}}||১৫১১
|-
|১১||{{u|IqbalHossain}}||১২৭৯
|-
|১২||{{u|Mehedi Abedin}}||১২৩৪
|-
|১৩||{{u|Jonoikobangali}}||১২৩১
|-
|১৪||{{u|Asikur Rahman}}||১২২২
|-
|১৫||{{u|Tuhin}}||১২১১
|-
|১৬||{{u|RDasgupta2020}}||১১৫২
|-
|১৭||{{u|SHEIKH}}||১১১৬
|-
|১৮||{{u|Sumasa}}||১০৮২
|-
|১৯||{{u|Md Rashidul Hasan Biplob}}||১০৮১
|-
|২০||{{u|Md Mobashir Hossain}}||১০৭৬
|-
|২১||{{u|Sheikh Mehedi Hassan}}||১০২৯
|-
|২২||{{u|MD Abu Siyam}}||১০২৮
|-
|২৩||{{u|ARI}}||১০০০
|-
|২৪||{{u|Md.Farhan Mahmud}}||৯৩৮
|-
|২৫||{{u|Alphaa Noman}}||৯২৩
|-
|২৬||{{u|Nettime Sujata}}||৯২০
|-
|২৭||{{u|আ হ ম সাকিব}}||৯১৭
|-
|২৮||{{u|MS Sakib}}||৮৪১
|-
|২৯||{{u|Rajan chandra Saha Raju}}||৮৩৩
|-
|৩০||{{u|আফতাবুজ্জামান}}||৭৯১
|-
|৩১||{{u|AstroWizard}}||৭৬৫
|-
|৩২||{{u|Yahya}}||৭২৬
|-
|৩৩||{{u|Sàádî}}||৬৭৭
|-
|৩৪||{{u|NusJaS}}||৬৬১
|-
|৩৫||{{u|শরদিন্দু ভট্টাচার্য্য}}||৬৪৬
|-
|৩৬||{{u|Suadur Rahman}}||৬২৩
|-
|৩৭||{{u|Firuz Ahmmed}}||৫৯০
|-
|৩৮||{{u|Jayantanth}}||৪৮৩
|-
|৩৯||{{u|Bosesukla}}||৪৪০
|-
|৪০||{{u|MdaNoman}}||৪৩৪
|-
|৪১||{{u|Amirhusenjihed}}||৪০৫
|-
|৪২||{{u|Belayet73}}||৩৯২
|-
|৪৩||{{u|Pathoschild}}||৩৭৩
|-
|৪৪||{{u|Szilard}}||৩৫৭
|-
|৪৫||{{u|Ei to ami akash}}||৩৫১
|-
|৪৬||{{u|মুকতাদির}}||৩৫০
|-
|৪৭||{{u|RiazACU}}||৩৪৪
|-
|৪৮||{{u|Mcepy}}||৩৪০
|-
|৪৯||{{u|JIBON}}||৩২১
|-
|৫০||{{u|NahidSultan}}||৩১৮
|-
|৫১||{{u|ZI Jony}}||৩১৪
|-
|৫২||{{u|তুষার কান্তি ষন্নিগ্রহী}}||৩১৩
|-
|৫৩||{{u|Mahbubslt}}||৩১১
|-
|৫৪||{{u|Gallileo2k}}||৩০৬
|-
|৫৫||{{u|স্বপ্নীল কর্মকার কাব্য}}||২৯৮
|-
|৫৬||{{u|Muhammad}}||২৯৭
|-
|৫৭||{{u|Md Aahradul Islam Tasin}}||২৮৫
|-
|৫৮||{{u|Sheikh MD. Obaidul Hossain}}||২৭৬
|-
|৫৯||{{u|Kazi Anan}}||২৬৯
|-
|৬০||{{u|নিয়াজ ইসলাম}}||২৬৮
|-
|৬১||{{u|The Piash}}||২৫৮
|-
|৬২||{{u|M.Asaduzzaman sahed}}||২৪৭
|-
|৬৩||{{u|Gobindo Sarkar}}||২৩৮
|-
|৬৪||{{u|তারেক বাবলু}}||২৩৭
|-
|৬৫||{{u|Pratyya Ghosh}}||২৩৩
|-
|৬৬||{{u|Safuan12616}}||২২৯
|-
|৬৭||{{u|AbuSayeed}}||২২৩
|-
|৬৮||{{u|Somajyoti}}||২২০
|-
|৬৯||{{u|মো. মাহমুদুল আলম}}||২০৮
|-
|৭০||{{u|Shuvo Hulk}}||১৯৬
|-
|৭১||{{u|Sajidmahamud835}}||১৮৮
|-
|৭২||{{u|Obangmoy}}||১৭৬
|-
|৭৩||{{u|Shakibul Alam Risvy}}||১৬৫
|-
|৭৪||{{u|Greatder}}||১৬১
|-
|৭৫||{{u|Safi Mahfouz}}||১৫৯
|-
|৭৬||{{u|Farhan Shahriar AS}}||১৪৪
|-
|৭৭||{{u|মোহাম্মদ হাসানুর রশিদ}}||১৪২
|-
|৭৮||{{u|Maruf}}||১৪১
|-
|৭৯||{{u|Wikitanvir}}||১৪০
|-
|৮০||{{u|Masud1395}}||১২৮
|-
|৮১||{{u|Asked42}}||১২৭
|-
|৮২||{{u|Hasan muntaseer}}||১২০
|-
|৮৩||{{u|Sajid Reza Karim}}||১০৬
|-
|৮৪||{{u|Anubhab91}}||১০৬
|-
|৮৫||{{u|Bono.Ruma}}||১০৫
|-
|৮৬||{{u|Moheen}}||১০৩
|-
|৮৭||{{u|FARMER}}||১০২
|-
|৮৮||{{u|NBDIT}}||১০২
|-
|৮৯||{{u|Raihanur}}||৯৯
|-
|৯০||{{u|MR.ANABRATA GUCHAIT}}||৯৪
|-
|৯১||{{u|Sammati Das}}||৯০
|-
|৯২||{{u|Mohithasan61}}||৮৯
|-
|৯৩||{{u|NguoiDungKhongDinhDanh}}||৮৮
|-
|৯৪||{{u|Nil Nandy}}||৮৭
|-
|৯৫||{{u|Timeontask}}||৮৫
|-
|৯৬||{{u|BadhonCR}}||৮৩
|-
|৯৭||{{u|খাত্তাব হাসান}}||৮২
|-
|৯৮||{{u|কায়সার আহমাদ}}||৭৭
|-
|৯৯||{{u|Redmin}}||৭৪
|-
|১০০||{{u|Ams riyad}}||৭৩
|}
cwtqcl155sc8d3jdmv67mgo1bp87xmf
ব্যবহারকারী:Aishik Rehman/খেলাঘর
2
11856
106477
106473
2026-06-04T15:39:37Z
Aishik Rehman
5249
106477
wikitext
text/x-wiki
# {{স্বাগত-রন্ধনপ্রণালী}}
# {{এডিটাথন}}
# {{TWA invite}}
# {{স্বাগত-বিজ্ঞান}}
*Extension:FlaggedRevs
*UploadWizard
*NewUserMessage
* (anonymous-show)
* booka logo
* upload activation
'''More'''
*Extension:FeaturedFeeds
*Extension:StructuredDiscussions
== x ==
RF
# [[এই কোয়ান্টাম জগৎ/তাৎপর্য ও প্রয়োগ/পর্যবেক্ষণযোগ্য রাশি ও অপারেটর]]
# [[পর্যায় সারণি]]
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ
NS
এই কোয়ান্টাম জগৎ/পরমাণু,
এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক
=== xx ===
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকি গণনা 0
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকিমুক্ত প্রকল্পের মূল্য 0
# অর্থসংস্থানের বিজ্ঞান/আমরা কীভাবে শূন্য থেকে অর্থ সৃষ্টি করতে পারি? 0
# অর্থসংস্থানের বিজ্ঞান/অর্থসংস্থানের ক্ষেত্রে অসমতা 0
# অর্থসংস্থানের বিজ্ঞান/অর্থনীতিতে অর্থায়ন 0
# অর্থসংস্থানের বিজ্ঞান/অর্থ কোথা থেকে আসে? 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট ঙ 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট খ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৮ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৯ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১০ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১২ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৪ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৫ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৫ S
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ২
# সামাজিক বিজ্ঞান গবেষণা/গৃহহীনদের অসুস্থতা, আসক্তি এবং যত্ন 0
# প্রক্রিয়াসমূহ 0
# প্রাণীর আচরণ/স্নায়ুবিজ্ঞান 0
# প্রাণীর আচরণ/জৈবিক ছন্দ 0
# প্রাণীর আচরণ/পাখির গান 0
# প্রাণীর আচরণ/ভাষা 0
# প্রাণীর আচরণ/শিখন 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১ N+
# প্রাণীর আচরণ/আঞ্চলিকতা N
# শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ R
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক N
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ
# এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি
# এই কোয়ান্টাম জগৎ/পরমাণু<br />
# [[প্রাণীর আচরণ/সংবেদনশীল জীববিদ্যা]]{{করা হয়েছে|পরীক্ষিত}}
73vzjggj5n0ebi9fjphgl8wmbuvatum
106478
106477
2026-06-04T15:39:48Z
Aishik Rehman
5249
106478
wikitext
text/x-wiki
# {{স্বাগত-রন্ধনপ্রণালী}}
# {{এডিটাথন}}
# {{TWA invite}}
# {{স্বাগত-বিজ্ঞান}}
*Extension:FlaggedRevs
*UploadWizard
*NewUserMessage
* (anonymous-show)
* booka logo
* upload activation
'''More'''
*Extension:FeaturedFeeds
*Extension:StructuredDiscussions
== x ==
RF
# [[এই কোয়ান্টাম জগৎ/তাৎপর্য ও প্রয়োগ/পর্যবেক্ষণযোগ্য রাশি ও অপারেটর]]
# [[পর্যায় সারণি]]
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ
NS
এই কোয়ান্টাম জগৎ/পরমাণু,
এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক
=== xx ===
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকি গণনা 0
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকিমুক্ত প্রকল্পের মূল্য 0
# অর্থসংস্থানের বিজ্ঞান/আমরা কীভাবে শূন্য থেকে অর্থ সৃষ্টি করতে পারি? 0
# অর্থসংস্থানের বিজ্ঞান/অর্থসংস্থানের ক্ষেত্রে অসমতা 0
# অর্থসংস্থানের বিজ্ঞান/অর্থনীতিতে অর্থায়ন 0
# অর্থসংস্থানের বিজ্ঞান/অর্থ কোথা থেকে আসে? 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট ঙ 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট খ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৮ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৯ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১০ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১২ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৪ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৫ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৫ S
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ২
# সামাজিক বিজ্ঞান গবেষণা/গৃহহীনদের অসুস্থতা, আসক্তি এবং যত্ন 0
# প্রক্রিয়াসমূহ 0
# প্রাণীর আচরণ/স্নায়ুবিজ্ঞান 0
# প্রাণীর আচরণ/জৈবিক ছন্দ 0
# প্রাণীর আচরণ/পাখির গান 0
# প্রাণীর আচরণ/ভাষা 0
# প্রাণীর আচরণ/শিখন 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১ N+
# প্রাণীর আচরণ/আঞ্চলিকতা N
# শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ R
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক N
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ
# এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি
# এই কোয়ান্টাম জগৎ/পরমাণু
# [[প্রাণীর আচরণ/সংবেদনশীল জীববিদ্যা]]{{করা হয়েছে|পরীক্ষিত}}
6eldzfcncdu2atr0xssig8hktfiiw5m
106479
106478
2026-06-04T15:43:33Z
Aishik Rehman
5249
106479
wikitext
text/x-wiki
# {{স্বাগত-রন্ধনপ্রণালী}}
# {{এডিটাথন}}
# {{TWA invite}}
# {{স্বাগত-বিজ্ঞান}}
*Extension:FlaggedRevs
*UploadWizard
*NewUserMessage
* (anonymous-show)
* booka logo
* upload activation
'''More'''
*Extension:FeaturedFeeds
*Extension:StructuredDiscussions
== x ==
RF
# [[এই কোয়ান্টাম জগৎ/তাৎপর্য ও প্রয়োগ/পর্যবেক্ষণযোগ্য রাশি ও অপারেটর]]
# [[পর্যায় সারণি]]
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ
NS
এই কোয়ান্টাম জগৎ/পরমাণু,
এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ,
এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক
=== xx ===
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৫ S
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ২
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকি গণনা 0
# অর্থসংস্থানের বিজ্ঞান/ঝুঁকিমুক্ত প্রকল্পের মূল্য 0
# অর্থসংস্থানের বিজ্ঞান/আমরা কীভাবে শূন্য থেকে অর্থ সৃষ্টি করতে পারি? 0
# অর্থসংস্থানের বিজ্ঞান/অর্থসংস্থানের ক্ষেত্রে অসমতা 0
# অর্থসংস্থানের বিজ্ঞান/অর্থনীতিতে অর্থায়ন 0
# অর্থসংস্থানের বিজ্ঞান/অর্থ কোথা থেকে আসে? 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট ঙ 0
# উইকিপিডিয়া কীভাবে কাজ করে/পরিশিষ্ট খ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৮ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ৯ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১০ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১২ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৪ 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১৫ 0
# সামাজিক বিজ্ঞান গবেষণা/গৃহহীনদের অসুস্থতা, আসক্তি এবং যত্ন 0
# প্রক্রিয়াসমূহ 0
# প্রাণীর আচরণ/স্নায়ুবিজ্ঞান 0
# প্রাণীর আচরণ/জৈবিক ছন্দ 0
# প্রাণীর আচরণ/পাখির গান 0
# প্রাণীর আচরণ/ভাষা 0
# প্রাণীর আচরণ/শিখন 0
# উইকিপিডিয়া কীভাবে কাজ করে/অধ্যায় ১ N+
# প্রাণীর আচরণ/আঞ্চলিকতা N
# শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ R
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র
# এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/মুক্ত আন্দোলক N
# এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ
# এই কোয়ান্টাম জগৎ/গুরুতর রোগ/দ্য ব্রোয়ি
# এই কোয়ান্টাম জগৎ/পরমাণু
# [[প্রাণীর আচরণ/সংবেদনশীল জীববিদ্যা]]{{করা হয়েছে|পরীক্ষিত}}
2kqrxm7lv88lwpt83rpyxzuwg9xzsxy
ব্যবহারকারী:R1F4T/খেলাঘর
2
18619
106476
106315
2026-06-04T15:10:50Z
R1F4T
9121
/* */
106476
wikitext
text/x-wiki
{| class="wikitable sortable"
|+ পর্যালোচনা পরিসংখ্যান (প্রকৃত)
! # !! পর্যালোচক !! মোট !! ২য় বিচারক !! প্রকৃত (১ম)
|-
| ১ || MdsShakil || ৬৪১ || ৯ || ৬৩২
|-
| ২ || Mehedi Abedin || ৫৪৭ || ৫ || ৫৪২
|-
| ৩ || R1F4T || ২৭৫ || ১৭ || ২৫৮
|-
| ৪ || Asikur Rahman || ২৪২ || ১ || ২৪১
|-
| ৫ || NusJaS || ২১৬ || ২২ || ১৯৪
|-
| ৬ || MS Sakib || ২০০ || ৯ || ১৯১
|}
== পুনঃ পর্যালোচনা বাকি ==
{| class="wikitable sortable"
! তারিখ
! ব্যবহারকারী
! পাতা/পাতাসমূহ
|-
| ৪ মে ২০২৬
| [[ব্যবহারকারী:নিয়াজ ইসলাম|নিয়াজ ইসলাম]]
| [[আরিমা/হাতি ও উটের আক্রমণ/গুটির আদর্শ অবস্থান]]
|-
| ১৬ মে ২০২৬
| [[ব্যবহারকারী:SMontaha32|SMontaha32]]
| [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ৩৮]]
|-
| ১৮ মে ২০২৬
| [[ব্যবহারকারী:অর্পিতা মজুমদার|অর্পিতা মজুমদার]]
| [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বাকবিক]]
|-
| ২৩ মে ২০২৬
| [[ব্যবহারকারী:Sàádî|Sàádî]]
| [[ই-গভর্নমেন্ট/সংজ্ঞা]]
|-
| ২৩ মে ২০২৬
| [[ব্যবহারকারী:Kazi Anan|Kazi Anan]]
| [[রৈখিক বীজগণিত/বিষয়: স্ফটিক/সমাধান]]
|-
| ২৩ মে ২০২৬
| [[ব্যবহারকারী:নিয়াজ ইসলাম|নিয়াজ ইসলাম]]
| [[আরিমা/হাতি ও উটের আক্রমণ/গুটির আদর্শ অবস্থান]] (স্মরণ করিয়ে পুনরায় অনুরোধ)
|-
| ২৯ মে ২০২৬
| [[ব্যবহারকারী:Sumanta3023|Sumanta3023]]
| [[জনপরিসরে অলংকারশাস্ত্র ও লেখালেখি: একটি ভূমিকা/অধ্যায় ১২: পরিচয় ও জনপরিসর]]
|-
| ৩০ মে ২০২৬
| [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]]
| [[তরঙ্গ/সমতল তরঙ্গ]]
|-
| ১ জুন ২০২৬
| [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]]
| [[রন্ধনপ্রণালী:মেথি পরোটা]]
|-
| ১ জুন ২০২৬
| [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]]
| [[রন্ধনপ্রণালী:অমৃতসরি কুলচা]], [[রন্ধনপ্রণালী:মেথি পরোটা]], [[রন্ধনপ্রণালী:পালং পরোটা]]
|-
| ১ জুন ২০২৬
| [[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]]
| [[যোগব্যায়াম/গতিশীল ব্যায়াম]]
|-
| ২ জুন ২০২৬
| [[ব্যবহারকারী:SMontaha32|SMontaha32]]
| [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ৩৮]] (পুনরায় অনুরোধ)
|-
| ২ জুন ২০২৬
| [[ব্যবহারকারী:Aishik Rehman|Aishik Rehman]]
| [[এই কোয়ান্টাম জগৎ/তাৎপর্য ও প্রয়োগ/পর্যবেক্ষণযোগ্য রাশি ও অপারেটর]], [[এই কোয়ান্টাম জগৎ/ফাইনম্যান পথ/দ্বি-চির]], [[এই কোয়ান্টাম জগৎ/পরিশিষ্ট/সূচকীয় ফাংশন]], [[এই কোয়ান্টাম জগৎ/পরিশিষ্ট/ক্ষেত্র]], [[শিখন তত্ত্ব/আচরণবাদী তত্ত্বসমূহ]], [[পর্যায় সারণি]]
|}
n9le7u9e3d4tv81668o3todypgb420c
ব্যবহারকারী আলাপ:Asikur Rahman
3
22719
106492
106290
2026-06-05T03:03:49Z
Asikur Rahman
11164
/* মাগলস গাইড টু হ্যারি পটার/চরিত্র/বব অগডেন */ উত্তর
106492
wikitext
text/x-wiki
== বাংলা উইকিবইয়ে স্বাগত ==
{{স্বাগত/২য় সংস্করণ}} ১৯:৪০, ৬ মে ২০২৫ (ইউটিসি)
== [[জাপানের ইতিহাস: পুরাণ থেকে জাতিসত্ত্বা/গ্রন্থপঞ্জি]] ==
[[জাপানের ইতিহাস: পুরাণ থেকে জাতিসত্ত্বা/গ্রন্থপঞ্জি]] পাতাটি প্রতিযোগিতায় পর্যালোচনার সময় প্রত্যাখ্যান করা হয়েছে। পাতায় অনুবাদে কিছু সমস্যা আছে। তার পাশাপাশি আপনি সূত্রের শিরোনাম সরাসরি অনুবাদ করেছেন। খেয়াল করুন যে বইগুলো ইংরেজি তাই সরাসরি অনুবাদের বদলে বইয়ের নাম অনুবাদের সময় বাংলা অক্ষরে নামগুলো লিখতে হবে।
যেমন, আপনি অনুবাদ করেছিলেন
* গার্ডিনার, কে ১৯৬৪, খ্রিস্টপূর্ব প্রথম শতক থেকে ৩১৩ খ্রিস্টাব্দ পর্যন্ত কোরীয় রাষ্ট্র কোগুরিও-র উত্থান ও সূচনা, লন্ডন বিশ্ববিদ্যালয়ের ডক্টরাল গবেষণাপত্র
অথচ লিখতে হতো,
* গার্ডিনার, কে ১৯৬৪, দ্য অরিজিন অ্যান্ড রাইজ অফ দ্য কোরিয়ান কিংডম অফ কোগুরিও ফ্রম দ্য ফার্স্ট সেঞ্চুরি বিসি টু ৩১৩ এডি, লন্ডন বিশ্ববিদ্যালয়ের ডক্টরাল গবেষণাপত্র
আপনি যদি প্রতিযোগিতা পর্যালোচনা প্রক্রিয়া শেষ হওয়ার আগে পাতাটি ঠিক করে আমাকে মেনশন করে জানাতে পারেন তাহলে আমি পুনঃপর্যালোচনা করে পাতাটি গ্রহণ করতে পারবো। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৩৯, ২ জুলাই ২০২৫ (ইউটিসি)
:ঠিক করা হয়েছে। পুনরায় পর্যালোচনা করার অনুরোধ করছি। [[ব্যবহারকারী:Asikur.rahman25|Asikur.rahman25]] ([[ব্যবহারকারী আলাপ:Asikur.rahman25|আলাপ]]) ০৭:৪৪, ৩ জুলাই ২০২৫ (ইউটিসি)
::@[[ব্যবহারকারী:Asikur.rahman25|Asikur.rahman25]] গৃহীত হয়েছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৪৪, ৫ জুলাই ২০২৫ (ইউটিসি)
== উইকিবই লিখন প্রতিযোগিতা ২০২৫: তথ্য প্রদানের অনুরোধ ==
{| style="margin: 1em 4em;"
|- valign="top"
| [[চিত্র:Wikibooks Writing Contest.svg|146px|link=উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫]]
| <div style="background-color:#f4f3f0; color: #393D38; padding: 0.4em 1em;border-radius:10px;">
সুপ্রিয় Asikur.rahman25,<br>[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫|উইকিবই লিখন প্রতিযোগিতা ২০২৫]]-এ অংশগ্রহণের জন্য আপনাকে আন্তরিক ধন্যবাদ। আপনি জেনে আনন্দিত হবেন যে, আপনার জমা দেয়া এক বা একাধিক পাতা [[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫/ফলাফল|প্রতিযোগিতায় গৃহীত হয়েছে]]। আপনাকে অভিনন্দন! আয়োজক দল পুরস্কার প্রদানের উদ্দেশ্যে তথ্য সংগ্রহ করছে। তাই আমরা আপনাকে '''[https://docs.google.com/forms/d/e/1FAIpQLSeN0QeNOhJcY_vHYBwkg87IbGwXT_fpuIgXSu3bzVDhVFrZbw/viewform?usp=header এই ফর্মটি পূরণ করতে] অনুরোধ করছি'''। যদি আপনি ইতোমধ্যেই ফর্মটি পূরণ করে থাকেন, তাহলে দয়া করে দ্বিতীয়বার পূরণ করবেন না। আপনার সম্পাদনা-যাত্রা শুভ হোক। প্রতিযোগিতার আয়োজক দলের পক্ষে —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৪:৪২, ৮ জুলাই ২০২৫ (ইউটিসি)
</div>
|}
<!-- https://bn.wikibooks.org/w/index.php?title=%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%80:MdsShakil/%E0%A6%97%E0%A6%A3%E0%A6%AC%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%A4%E0%A6%BE&oldid=85860-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:MdsShakil@bnwikibooks পাঠিয়েছেন -->
== Last Few Days: WikiConference India 2026 Scholarship Applications ==
<div lang="en" dir="ltr" class="mw-content-ltr">
''{{int:please-translate}}''
Dear Wikimedian,
We're happy to share that scholarship applications for '''WikiConference India 2026''' are currently open and the deadline is just around the corner.
[[m:Special:MyLanguage/WikiConference India 2026|WikiConference India 2026]] is the fourth edition of the national-level conference that brings together Wikimedians and stakeholders engaged in Indic-language Wikimedia projects and the broader open knowledge movement across India and South Asia. The conference will take place in Kochi, Kerala, from 4–6 September 2026.
* You can find the more information and the application form at the [[m:Special:MyLanguage/WikiConference India 2026/Scholarship|Scholarship page here at Meta wiki]]
* '''Scholarship deadline: 15 April 2026, 11:59 PM IST'''
With only a few days left, we warmly encourage you to apply if you haven’t already and kindly request you to share this with your community and encourage others to apply.
For more information and regular updates, we encourage you to visit the conference Meta page.
Warm regards,
<br>
on behalf of the WikiConference India 2026 Organising Team
''This message was sent with [[ব্যবহারকারী:MediaWiki message delivery|MediaWiki message delivery]] ([[ব্যবহারকারী আলাপ:MediaWiki message delivery|আলাপ]]) on ১৮:৩০, ১১ এপ্রিল ২০২৬ (ইউটিসি)''
</div>
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/WCI_2026_active_users&oldid=30389801-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:Gnoeee@metawiki পাঠিয়েছেন -->
== [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বার্টি ক্রাউচ জুনিয়র]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] উইকিলিংক ঠিক এই আছে আপনি আর একবার ভালো করে দেখুন । কোন জায়গায় আপনার Ai ত্রুটি মনে হয়েছে উল্লেখ করুন
বার্টি স্পষ্টতই [[মাগলস গাইড টু হ্যারি পটার/জাদু/গবলেট অব ফায়ার|গবলেট অব ফায়ারের]] ওপর এমনভাবে জাদু করেছিলেন যাতে সেটি [[মাগলস গাইড টু হ্যারি পটার/প্রধান ঘটনা/ট্রাইউইজার্ড টুর্নামেন্ট|ট্রাইউইজার্ড টুর্নামেন্টে]] তিনটির পরিবর্তে চারটি স্কুলের প্রতিদ্বন্দ্বিতা করার মতো আচরণ করে; এরপর সে হ্যারির নাম সেই চতুর্থ স্কুলের একমাত্র প্রতিযোগী হিসেবে গবলেটের ভেতর ফেলে দেয়, যার ফলে গবলেট হ্যারিকে চ্যাম্পিয়ন হিসেবে নির্বাচন করতে বাধ্য হয়। আমরা লক্ষ্য করি যে, বার্টি মুডির ছদ্মবেশে থাকাকালীন এই ঘটনার পরম্পরা সম্পর্কে একটি তত্ত্ব দিয়েছিলেন, সম্ভবত তিনি জানতেন যে মুডির সুপরিচিত 'প্যারানয়া' বা অতি-সতর্কতার কারণে তার এই তত্ত্বটি কেউ আমলে নেবে না। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ১৬:৫৪, ৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] দুঃখিত ফোনে ফাউন্টেন টুলে একটা সমস্যার কারণে ভুল মনে হয়েছিল। তবে এখনও Ai এর ফলে হওয়া যান্ত্রিক অনুবাদ আছে। যেমন {{লাল|আজকাবান থেকে বার্টি ক্রাউচের পালানোর বিষয়টি তার বাবা বার্টিমিয়াস ক্রাউচ সিনিয়র নিজেই পরিকল্পনা করেছিলেন, যা সম্ভবত তার স্ত্রীর অনুরোধে করা হয়েছিল।}}। এই বাক্যটা হবে {{সবুজ|আজকাবান থেকে বার্টি ক্রাউচের পালানোর বিষয়টি তার বাবা বার্টিমিয়াস ক্রাউচ সিনিয়র নিজেই পরিকল্পনা করেছিলেন। সম্ভবত স্ত্রীর অনুরোধে তিনি এটি করেছিলেন।}} [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১৭:১৭, ৫ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০২:৩৫, ৬ মে ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/অধ্যায় ৩০ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] [[মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/অধ্যায় ৩০]] পাতাটি সংশোধন করেছি। [[ব্যবহারকারী:Humaira.thithi|Humaira.thithi]] ([[ব্যবহারকারী আলাপ:Humaira.thithi|আলাপ]]) ০২:৪০, ৮ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Humaira.thithi|Humaira.thithi]] এখনো সংক্ষিপ্ত অনুবাদ। সম্পুর্নটা অনুবাদ করুন এবং সাবলিল ভাবে লিখুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৬:৪২, ৮ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/জাদু/কনফান্ডো]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] অসম্পূর্ণ অনুবাদ বলতে বুঝলাম। ইংরেজি পাতা তে যা আছে পুরো টাই অনুবাদ করেছি তো। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৭:০৭, ৮ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] '''বিস্তারিত বর্ণনা''' শিরোনামটি অসম্পূর্ণ। সম্পূর্ণ অনুবাদ করে জানান। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৮:৩১, ৮ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] দুঃখিত কিছুটা অংশ অনুবাদ করতে রয়ে গিয়েছিল। আমি বাকিটুকু অংশ যোগ করেছি। অনুগ্রহ করে পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৮:৪৮, ৮ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:১৮, ৮ মে ২০২৬ (ইউটিসি)
== [[বিশ্বের ইতিহাস/পরীক্ষার প্রস্তুতি]] ==
[[বিশ্বের ইতিহাস/পরীক্ষার প্রস্তুতি]] সংশোধন করা হয়েছে। [[ব্যবহারকারী:ARI|ARI]] ([[ব্যবহারকারী আলাপ:ARI|আলাপ]]) ১০:২৩, ৮ মে ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/বই/ডেথলি হ্যালোজ/অধ্যায় ৩৫ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি ঠিক করেছি। [[ব্যবহারকারী:SMontaha32|SMontaha32]] ([[ব্যবহারকারী আলাপ:SMontaha32|আলাপ]]) ১২:৩৫, ৯ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:SMontaha32|SMontaha32]] এখনও যথেষ্ট যান্ত্রিক। আরো সাবলিল ভাবে লিখুন। যেমন:
:{{লাল| হ্যালোজ সম্পর্কে তথ্য গোপন রেখে ডাম্বলডোর চেয়েছিলেন হ্যারি যেন এগুলো খুঁজে পেতে সময় নেয় এবং সেগুলোর প্রকৃত প্রকৃতি বুঝতে পারে, যাতে ডাম্বলডোরের মতো সে ক্ষমতার লোভে পড়ে না যায়। মৃত্যুর প্রকৃত মালিক সেই ব্যক্তি যে কখনও মৃত্যু থেকে পালাতে চায় না, বরং নির্ভয়ে এর মুখোমুখি হতে প্রস্তুত।}} {{সবুজ | ডাম্বলডোর চেয়েছিলেন হ্যালোজ সম্পর্কে তথ্য গোপন রাখতে, যেন হ্যারির এগুলো খুঁজে পেতে সময় লাগে এবং সে এগুলোর প্রকৃত প্রকৃতি বুঝতে পারে। যাতে তার মতো হ্যারিও ক্ষমতার লোভে না পড়ে। যে ব্যক্তি কখনও মৃত্যু থেকে পালাতে চায় না, বরং নির্ভয়ে এর মুখোমুখি হতে প্রস্তুত থাকে সেই মৃত্যুর প্রকৃত মালিক}} [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১৫:০৮, ৯ মে ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ২৯ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]][[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ২৯]] পাতাটি পুনরায় ঠিক করেছি। [[ব্যবহারকারী:SMontaha32|SMontaha32]] ([[ব্যবহারকারী আলাপ:SMontaha32|আলাপ]]) ০২:১৪, ১০ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:SMontaha32|SMontaha32]] '''বিশ্লেষণ''' শিরোনামটি অসম্পূর্ণ। এছাড়াও উইকিলিংকগুলো ঠিক করুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৩:২৮, ১০ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ২৯]]পাতাটি আবারও ঠিক করেছি। পুনরায় পর্যালোচনা করার অনুরোধ করছি। [[ব্যবহারকারী:SMontaha32|SMontaha32]] ([[ব্যবহারকারী আলাপ:SMontaha32|আলাপ]]) ০৩:৪৯, ১২ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:SMontaha32|SMontaha32]] গৃহীত [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:৩৮, ১২ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/সালাজার স্লিদারিন]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি পর্যালোচনার সময় আপনি দুটো উইকিলিংক পরিবর্তন করেছেন পিউর ব্লাড টাকে বিশুদ্ধ রক্ত করেছেন আমি অনুবাদের সময় বইয়ের যে লিস্ট আছে ওখান থেকে চেক করে করে করছি। ওখানে পাতা টির নাম পিউর ব্লাড এই আছে। আশা করছি আপনি বুঝতে পেরেছেন আমি কি বলতে চাইছি। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৪:৩৫, ১৩ মে ২০২৬ (ইউটিসি)
== রৈখিক বীজগণিত/লঘুকৃত ইচেলন আকার ==
জি, সংশোধিত করা হয়েছে। পর্যালোচনা করে জানান। আর কোনো সমস্যা থাকলে জানাবেন। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৭:৪৭, ১৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Kazi Anan|Kazi Anan]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:৫৮, ১৯ মে ২০২৬ (ইউটিসি)
== রৈখিক বীজগণিত/স্ব-সংযোজন/সমাধান ==
জি, সংশোধিত করা হয়েছে। পর্যালোচনা করে জানান। আর কোনো সমস্যা থাকলে জানাবেন। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৮:০৮, ১৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Kazi Anan|Kazi Anan]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:০২, ১৯ মে ২০২৬ (ইউটিসি)
== রৈখিক বীজগণিত/একটি সেটের স্প্যান বা বিস্তার ==
জি, সংশোধিত করা হয়েছে। পর্যালোচনা করে জানান। আর কোনো সমস্যা থাকলে জানাবেন। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৮:৪০, ১৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Kazi Anan|Kazi Anan]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:০৯, ১৯ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/স্থান/ডার্মস্ট্র্যাং ইনস্টিটিউট]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০১:৩৮, ১৬ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৫:৩৪, ১৯ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:১১, ১৯ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] এখনও গৃহীত হয় নি একবার দেখে নিন আপনি [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ১১:০০, ১৯ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/প্রধান ঘটনাবলী/চেম্বার অব সিক্রেটস]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করা হয়েছে পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৫:১০, ২১ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:০৪, ২২ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/প্রধান ঘটনাবলী/কবরস্থানের দ্বন্দ্বযুদ্ধ]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৫:২৪, ২১ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:০৬, ২২ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/জাদু/ক্রুশিও]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ০৫:৩১, ২১ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১০:০৮, ২২ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/জাদু/ইম্পেরিও]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ১৩:৫৭, ২৪ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১৮:৩৭, ২৪ মে ২০২৬ (ইউটিসি)
== [[মাগলস গাইড টু হ্যারি পটার/জাদু/গৃহ পরিচারক]] ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] পাতাটি সংশোধন করেছি পুনরায় পর্যালোচনা করবেন। [[ব্যবহারকারী:Sumanta3023|Sumanta3023]] ([[ব্যবহারকারী আলাপ:Sumanta3023|আলাপ]]) ১৪:০৫, ২৪ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Sumanta3023|Sumanta3023]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১৮:৩৪, ২৪ মে ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/জাদু/অক্ষমণীয় অভিশাপ ==
জি, সংশোধিত করা হয়েছে। পর্যালোচনা করে জানান। আর কোনো সমস্যা থাকলে জানাবেন। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৫:২৪, ২৬ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Kazi Anan|Kazi Anan]] এখনও যান্ত্রিক সাবলিল ভাবে লিখুন। এখনও কিছু উইকিলিংকআপ বাকি আছে। সংশোধন করে জানান। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১৫:৫৪, ২৬ মে ২০২৬ (ইউটিসি)
::জি, সংশোধিত করা হয়েছে। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ১৮:০৫, ২৬ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Kazi Anan|Kazi Anan]] আমার মনে হয় আপনি উইকিলিংক বিষয়টি বুঝতে পারেন নি। অনুচ্ছেদের মধ্যে দেখুন বিভিন্ন শব্দ নীল কালারে আছে এগুলোতে ক্লিক করলে অন্য একটি পাতায় নিয়ে যায়। এই প্রক্রিয়াকে উইকিলিংকআপ বলা হয়। আপনি এই অনুচ্ছেদের ইংরেজি পাতার সঙ্গে মিলিয়ে দেখুন কোন শব্দগুলো লিংকআপ করতে হবে সেগুলো লিংকআপ করুন। যেমন এই অনুচ্ছেদের বৃহত্তর প্রেক্ষাপট অংশে '''আজকাবানে''' শব্দটি লিংকআপ করা হয়নি। আপনি এটাকে এভাবে করতে পারেন: প্রথমে দুটি থার্ড ব্রাকেট >>[[<< এরপর লিংকের টেক্সট >>মাগলস গাইড টু হ্যারি পটার/স্থান/<< এরপর লিংকআপ করা শব্দটি >>আজকাবান<< তারপর >> | << এরপর আজকাবান শব্দটি আপনার অনুচ্ছেদে যেভাবে ব্যবহার করতে চান সেই শব্দ >>আজকাবানে<< এবং শেষে দুটি থার্ড ব্রাকেট >>]]<< ➤➤➤ [[মাগলস গাইড টু হ্যারি পটার/স্থান/আজকাবান| আজকাবানে]] [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৬:১৬, ২৭ মে ২০২৬ (ইউটিসি)
::::জি সংশোধিত করা হয়েছে। ব্যাখ্যা করে দেয়ার জন্য ধন্যবাদ। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৮:৪৪, ২৭ মে ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]]জি সংশোধিত করা হয়েছে। [[ব্যবহারকারী:Kazi Anan|K_Anan]] ([[ব্যবহারকারী আলাপ:Kazi Anan|আলাপ]]) ০৭:৩৬, ৩০ মে ২০২৬ (ইউটিসি)
== পরিবহন অর্থনীতি/উপযোগিতা ==
সংশোধন করা হয়েছে। অনুগ্রহ করে দেখুন। [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] ([[ব্যবহারকারী আলাপ:Md Mobashir Hossain|আলাপ]]) ০৯:০৮, ২৭ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] এখনও যথেষ্ট যান্ত্রিক। এখনও অনেক অংশে ইংরেজি শব্দ রয়ে গেছে। সবগুলো সংশোধন করে জানান। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:৪৩, ২৭ মে ২০২৬ (ইউটিসি)
== জলবায়ুবিদ্যা/বায়ুচাপ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] "অনুন্নত অনুবাদ" করার অর্থ বুঝলাম না।
যাই হোক, অসম্পূর্ণ অংশ অনুবাদ করেছি। [[ব্যবহারকারী:ARI|ARI]] ([[ব্যবহারকারী আলাপ:ARI|আলাপ]]) ১৪:২৫, ৩১ মে ২০২৬ (ইউটিসি)
== জলবায়ুবিদ্যা/বায়ুপ্রবাহ ==
[[জলবায়ুবিদ্যা/বায়ুপ্রবাহ]] সম্পূর্ণ করা হয়েছে। [[ব্যবহারকারী:ARI|ARI]] ([[ব্যবহারকারী আলাপ:ARI|আলাপ]]) ১৪:৩৮, ৩১ মে ২০২৬ (ইউটিসি)
== জলবায়ুবিদ্যা/অধঃক্ষেপণ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] [[জলবায়ুবিদ্যা/অধঃক্ষেপণ]] নিবন্ধটি পুনরায় দেখার অনুরোধ রইল। সংশ্লিষ্ট ইংরেজি পাতা: [[:en:Climatology/Precipitation]]। [[ব্যবহারকারী:ARI|ARI]] ([[ব্যবহারকারী আলাপ:ARI|আলাপ]]) ১৪:৪৪, ৩১ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:ARI|ARI]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৩:৩৭, ১ জুন ২০২৬ (ইউটিসি)
== ভৌত বিজ্ঞানীদের জন্য বিকিরণ জীববিজ্ঞান/বিকিরণ জীববিজ্ঞানের গণিত ==
আপনার উপর শান্তি বর্ষিত হোক!
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ভাই, আপনার পরামর্শনুসারে পাতা সংশোধন, হালনাগাদ করা হলো। পুনঃপর্যালোচনার অনুরোধ করছি। [[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] ([[ব্যবহারকারী আলাপ:তারেক বাবলু|আলাপ]]) ০৪:৫৪, ১ জুন ২০২৬ (ইউটিসি)
:@<s>[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] আমি পর্যালোচক নই।</s> [[ব্যবহারকারী:ARI|ARI]] ([[ব্যবহারকারী আলাপ:ARI|আলাপ]]) ০৪:৪৯, ২ জুন ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:ARI|ARI]] আপনি ঠিক কি বোঝাতে চাচ্ছেন, বুঝতে পারিনি। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১২:৪৬, ২ জুন ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ভাই, [[ভৌত বিজ্ঞানীদের জন্য বিকিরণ জীববিজ্ঞান/বিকিরণ জীববিজ্ঞানের গণিত]] পাতাটি আপনি বলার পরপরই সংশোধনের চেষ্টা করেছি। তবে আপনি মনে হয় এখনো দেখেননি। অনুগ্রহপুর্বক আবার পুনঃপর্যালোচনার অনুরোধ করছি [[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] ([[ব্যবহারকারী আলাপ:তারেক বাবলু|আলাপ]]) ১১:৩৮, ২ জুন ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:৩৬, ৩ জুন ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ভাই [[মাগলস গাইড টু হ্যারি পটার/জাদু/নার্গল]] পাতাটি হালনাগাদ করা হলো। [[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] ([[ব্যবহারকারী আলাপ:তারেক বাবলু|আলাপ]]) ১৪:৪৯, ৩ জুন ২০২৬ (ইউটিসি)
::::এই পাতাও [[মাগলস গাইড টু হ্যারি পটার/জাদু/মার্টল্যাপ]] সংশোধনের করা হলো [[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] ([[ব্যবহারকারী আলাপ:তারেক বাবলু|আলাপ]]) ১৪:৫২, ৩ জুন ২০২৬ (ইউটিসি)
:::::@[[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] অনুরূপ ভাবে মাগলস গাইড টু হ্যারি পটার/জাদু/মার্টল্যাপ এরও পরিবর্তন করুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০১:৫১, ৪ জুন ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:তারেক বাবলু|তারেক বাবলু]] মাগলস গাইড টু হ্যারি পটার/জাদু/নার্গল এর লিংক ঠিক করুন। ইংরেজি পাতার সাথে মিলিয়ে দেখুন যে শব্দগুলো লিংক করা আছে সেগুলো লিংক করুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০১:৪৬, ৪ জুন ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ৩৪ ==
@[[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ৩৪]] পাতাটি ঠিক করেছি। [[ব্যবহারকারী:SMontaha32|SMontaha32]] ([[ব্যবহারকারী আলাপ:SMontaha32|আলাপ]]) ০৭:৫৩, ২ জুন ২০২৬ (ইউটিসি)
:গৃহীত। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৯:৩৬, ৩ জুন ২০২৬ (ইউটিসি)
== মাগলস গাইড টু হ্যারি পটার/চরিত্র/বব অগডেন ==
ইষত পরিবর্তন করা হয়েছে। বিশেষ করে উইকি লিংক ঠিক করা হয়েছে। গুগল ট্রান্সলেটর মাগলস কে মাগলদের করেছে যা ঠিক করা হয়েছে। [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] ([[ব্যবহারকারী আলাপ:Md Mobashir Hossain|আলাপ]]) ১০:৫৩, ৩ জুন ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] এখনও যান্ত্রিক। সাবলিল ভাবে লিখতে হবে, সাথে পাতার কাঠামোও ঠিক করুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ১২:৫১, ৩ জুন ২০২৬ (ইউটিসি)
::পরিশোধিত, সকল টেমপ্লেট ও ইংরেজি উইকিলিংক বাংলা করা হয়েছে। মূল পাঠ্যকে গদ্য আকারে লেখা হয়েছে যাতে যান্ত্রিকতা না বুঝা যায়। [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] ([[ব্যবহারকারী আলাপ:Md Mobashir Hossain|আলাপ]]) ১৩:৪৩, ৩ জুন ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] লিংকের অনুবাদ '''Bangla|বাংলা''' নয়
:::'''বাংলা|বাংলা''' আকারে লিখুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০১:২৫, ৪ জুন ২০২৬ (ইউটিসি)
::::এবার দেখতে পারেন। আশা করি কিছুটা কম ত্রুটিপূর্ণ ও গ্রহণযোগ্য। [[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] ([[ব্যবহারকারী আলাপ:Md Mobashir Hossain|আলাপ]]) ০৩:০৯, ৪ জুন ২০২৬ (ইউটিসি)
:::::@[[ব্যবহারকারী:Md Mobashir Hossain|Md Mobashir Hossain]] এখনও গ্রহণ উপযোগী হয়নি। ইংরেজি পাতার সাথে মিলিয়ে দেখুন যে শব্দগুলো লিংক করা আছে সেগুলো লিংক করুন। [[ব্যবহারকারী:Asikur Rahman|Asikur Rahman]] ([[ব্যবহারকারী আলাপ:Asikur Rahman|আলাপ]]) ০৩:০৩, ৫ জুন ২০২৬ (ইউটিসি)
nwasbc1rdjr3oksvl9r8j7o1qisf5kk
ব্যবহারকারী আলাপ:Sàádî
3
23106
106474
106109
2026-06-04T13:19:48Z
MdsShakil
7280
/* রন্ধনপ্রণালী */ উত্তর
106474
wikitext
text/x-wiki
== বাংলা উইকিবইয়ে স্বাগত ==
{{স্বাগত/২য় সংস্করণ}} ১১:৪০, ৯ মে ২০২৫ (ইউটিসি)
== উইকিবই লিখন প্রতিযোগিতা ২০২৫: তথ্য প্রদানের অনুরোধ ==
{| style="margin: 1em 4em;"
|- valign="top"
| [[চিত্র:Wikibooks Writing Contest.svg|146px|link=উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫]]
| <div style="background-color:#f4f3f0; color: #393D38; padding: 0.4em 1em;border-radius:10px;">
সুপ্রিয় Sàádî,<br>[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫|উইকিবই লিখন প্রতিযোগিতা ২০২৫]]-এ অংশগ্রহণের জন্য আপনাকে আন্তরিক ধন্যবাদ। আপনি জেনে আনন্দিত হবেন যে, আপনার জমা দেয়া এক বা একাধিক পাতা [[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫/ফলাফল|প্রতিযোগিতায় গৃহীত হয়েছে]]। আপনাকে অভিনন্দন! আয়োজক দল পুরস্কার প্রদানের উদ্দেশ্যে তথ্য সংগ্রহ করছে। তাই আমরা আপনাকে '''[https://docs.google.com/forms/d/e/1FAIpQLSeSlGIk88-dNR79Vg5RytY6gIObKICFqrwc3ljN6Dw6YDn5IQ/viewform?usp=header এই ফর্মটি পূরণ করতে] অনুরোধ করছি'''। যদি আপনি ইতোমধ্যেই ফর্মটি পূরণ করে থাকেন, তাহলে দয়া করে দ্বিতীয়বার পূরণ করবেন না। আপনার সম্পাদনা-যাত্রা শুভ হোক। প্রতিযোগিতার আয়োজক দলের পক্ষে —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৪:৪৬, ৮ জুলাই ২০২৫ (ইউটিসি)
</div>
|}
<!-- https://bn.wikibooks.org/w/index.php?title=%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%80:MdsShakil/%E0%A6%97%E0%A6%A3%E0%A6%AC%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%A4%E0%A6%BE&oldid=85872-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:MdsShakil@bnwikibooks পাঠিয়েছেন -->
== উইকিবই লিখন প্রতিযোগিতা ২০২৬: অংশগ্রহণের আমন্ত্রণ ==
{| style="margin: 1em 4em;"
|- valign="top"
| [[চিত্র:Wikibooks Writing Contest.svg|146px|link=উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬]]
| <div style="background-color:#f4f3f0; color: #393D38; padding: 0.4em 1em;border-radius:10px;">
সুপ্রিয় {{BASEPAGENAME}},<br>আপনি জেনে খুশি হবেন যে বাংলা উইকিবইয়ে নতুন বই তৈরির লক্ষ্যে শুরু হয়েছে '''[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬|উইকিবই লিখন প্রতিযোগিতা ২০২৬]]'''। ১ মে থেকে ৩১ মে ২০২৬ পর্যন্ত চলা এই প্রতিযোগিতায় আপনি ইংরেজি উইকিবই থেকে মানসম্মত পাতা বাংলায় অনুবাদ করার মাধ্যমে অংশগ্রহণ করতে পারেন। প্রতিযোগিতায় বিজয়ীদের জন্য রয়েছে মোট ৬০০০ টাকা পর্যন্ত গিফট ভাউচার ও মুদ্রিত সনদপত্র, এবং কমপক্ষে একটি পাতা গৃহীত হলেই থাকছে ডিজিটাল সনদপত্র। অংশগ্রহণকারীদের জন্য শর্তসাপেক্ষে মোবাইল ইন্টারনেট সহায়তাও প্রদান করা হচ্ছে। প্রতিযোগিতার বিস্তারিত নিয়মাবলি এবং অন্যান তথ্য জনতে আমাদের [[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬|প্রকল্প পাতাটি]] দেখুন। যেকোনো প্রয়োজনে আমাদের [https://t.me/bnwikibooks টেলিগ্রাম গ্রুপে] যোগাযোগ করতে পারেন। আপনার সক্রিয় অংশগ্রহণ বাংলা উইকিবইকে আরও সমৃদ্ধ করবে। প্রতিযোগিতার আয়োজক দলের পক্ষে —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ০৯:৩৮, ৫ মে ২০২৬ (ইউটিসি)
</div>
|}
(এই বার্তাটি [[:ব্যবহারকারী আলাপ:Saadi095]] পাতায় পাঠানো হয়েছিল ও একটি পুনর্নির্দেশের কারণে এখানে পোস্ট করা হচ্ছে।)
<!-- https://bn.wikibooks.org/w/index.php?title=%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%80:MdsShakil/%E0%A6%96%E0%A7%87%E0%A6%B2%E0%A6%BE%E0%A6%98%E0%A6%B0/%E0%A7%A7&oldid=93268-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:MdsShakil@bnwikibooks পাঠিয়েছেন -->
== পর্যালোচনা ==
[[পরিবহন অর্থনীতি/উৎপাদনশীলতা]] পাতার লেখা একটু সহজ করে লিখতে হবে। আর যেসব জায়গায় ইংরেজি অক্ষর ব্যবহার করেছেন সেখানে বাংলা অক্ষর ব্যবহার করুন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:৪৯, ২২ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] <code><math></code> কোড ব্যতীত আর কোথাও ইংরেজি অক্ষর ব্যবহার করিনি। কিন্ত ভিতরের অক্ষরগুলো বাংলায় লেখা যাচ্ছে না। এগুলো বাংলায় লিখার উপায় কি? [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৭:১২, ২২ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আমাকে @[[ব্যবহারকারী:R1F4T|R1F4T]] বলেছে যে একটা উপায় হলো ভেঙে ভেঙে লেখা, মানে সংখ্যাগুলো একবার ম্যাথ ট্যাগে, তারপর বাংলা, তারপর আবার বাকি অংশটুকু ম্যাথ ট্যাগে। চেষ্টা করে দেখতে পারেন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৭:৩২, ২২ মে ২০২৬ (ইউটিসি)
== রৈখিক বীজগণিত/সাধারণ = বিশেষ + সমজাতীয় ==
[[রৈখিক বীজগণিত/সাধারণ = বিশেষ + সমজাতীয়]] পাতায় আরো সম্পাদনা ও সংশোধন প্রয়োজন [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৯, ২৩ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৪:৩১, ২৪ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আরো করতে হবে। কিছু বাক্যের গঠন ইংরেজি ব্যাকরণের আদলে লেখা। এছাড়া কিছু বাংলা লেখা ভাঙ্গা দেখাচ্ছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৯, ২৪ মে ২০২৬ (ইউটিসি)
== ই-গভর্নমেন্ট/ই-গভর্নমেন্টের জন্য জাতীয় কৌশলগত কাঠামোর গুরুত্ব ==
[[ই-গভর্নমেন্ট/ই-গভর্নমেন্টের জন্য জাতীয় কৌশলগত কাঠামোর গুরুত্ব]] পাতায় সংশোধন প্রয়োজন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৪২, ২৪ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১১:২৩, ২৫ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] দেখে মনে হচ্ছে আরো সংশোধন দরকার। ইংরেজি বাক্যগঠনের অনুকরণে লেখা বাক্যগুলো এখনো রয়ে গেছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৩, ২৫ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] আশা করছি এখন ঠিক আছে [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১১:৪৬, ২৬ মে ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:Sàádî|Sàádî]] তবু কিছু সমস্যা রয়ে গিয়েছিল। আমি সেগুলো সংশোধন করে গ্রহণ করে নিয়েছি। সংশোধনগুলো দেখে নিবেন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৪:৫২, ২৬ মে ২০২৬ (ইউটিসি)
== পর্যালোচনা ==
[[মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/সকল পাতা/অধ্যায় ১]] পাতাটি আমি প্রতিযোগিতার তালিকায় ব্রাউজারের ফাইন্ড ফিচার ব্যবহার করে পাচ্ছিনা। এটা কি আসলেই তালিকাভুক্ত পাতা নাকি নিজ উদ্যোগে অনুবাদ করেছেন? আর করলে কোন ইংরেজি পাতা থেকে? আর এর লেখাগুলো এরকম কেন? [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৪৯, ২৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] পাতাটি [[মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/মুদ্রণ সংস্করণ/অধ্যায় ১]] নামে তালিকায় ছিল। এরপর MdsShakil নাম পরিবর্তন করে দিয়েছেন। ইংরেজি পাতার সাথে সংযোগ দিয়েছি, সেখানেও লেখাগুলো এভাবেই আছে। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৬:১৯, ২৫ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আচ্ছা বুঝতে পেরেছি। পাতাটি একটু সংশোধন করে জানান৷ তারপর গ্রহণ করে নিবো। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:৩২, ২৫ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১০:৫৭, ২৬ মে ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:Sàádî|Sàádî]] গৃহীত হয়েছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৪:৪১, ২৬ মে ২০২৬ (ইউটিসি)
== আরিমা/রণকৌশল পরিচিতি ==
সম্পাদনা প্রয়োজন [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৯:৫৩, ২৬ মে ২০২৬ (ইউটিসি)
== ইরানের ইতিহাস/প্রাচীন প্রাগৈতিহাসিক ইরান ==
সংশোধন দরকার [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:২৬, ২৮ মে ২০২৬ (ইউটিসি)
:সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:৪৯, ৩ জুন ২০২৬ (ইউটিসি)
== লাচ্ছা পরোটা ==
[[রন্ধনপ্রণালী:লাচ্ছা পরোটা]] পাতাটি সংশোধন করা দরকার। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৮:৫৬, ৩১ মে ২০২৬ (ইউটিসি)
:সংশোধন করেছি [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:১৭, ৩১ মে ২০২৬ (ইউটিসি)
== রন্ধনপ্রণালী ==
আমি লক্ষ্য করছি আপনার তৈরি রন্ধনপ্রণালী পাতাগুলোয় অতিরিক্ত এবং অপ্রয়োজনীয় লেখা রয়ে গেছে, সেগুলো সরিয়ে পাতাগুলো সংশোধন করুন। উদাহরণ হিসেবে দেওয়া পাতাটি অনুসরণ করুন, অন্যথায় পাতাগূগ্ৰহণ করা হবে না। —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৫:২৫, ৩ জুন ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:MdsShakil|MdsShakil]] অতিরিক্ত লেখা মুছে সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:৩৬, ৩ জুন ২০২৬ (ইউটিসি)
::সংশোধিত পাতাগুলোর নাম দিন। —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৩:১৯, ৪ জুন ২০২৬ (ইউটিসি)
== জাতিসংঘের ইতিহাস/সম্মিলিত জাতিপুঞ্জের প্রোটোকল ==
[[জাতিসংঘের ইতিহাস/সম্মিলিত জাতিপুঞ্জের প্রোটোকল]] সংশোধন প্রয়োজন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ২১:২১, ৩ জুন ২০২৬ (ইউটিসি)
fy8s7j6h3svs4k63m42k9n33yw3cs8c
106493
106474
2026-06-05T03:35:12Z
Sàádî
11224
/* রন্ধনপ্রণালী */ উত্তর
106493
wikitext
text/x-wiki
== বাংলা উইকিবইয়ে স্বাগত ==
{{স্বাগত/২য় সংস্করণ}} ১১:৪০, ৯ মে ২০২৫ (ইউটিসি)
== উইকিবই লিখন প্রতিযোগিতা ২০২৫: তথ্য প্রদানের অনুরোধ ==
{| style="margin: 1em 4em;"
|- valign="top"
| [[চিত্র:Wikibooks Writing Contest.svg|146px|link=উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫]]
| <div style="background-color:#f4f3f0; color: #393D38; padding: 0.4em 1em;border-radius:10px;">
সুপ্রিয় Sàádî,<br>[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫|উইকিবই লিখন প্রতিযোগিতা ২০২৫]]-এ অংশগ্রহণের জন্য আপনাকে আন্তরিক ধন্যবাদ। আপনি জেনে আনন্দিত হবেন যে, আপনার জমা দেয়া এক বা একাধিক পাতা [[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৫/ফলাফল|প্রতিযোগিতায় গৃহীত হয়েছে]]। আপনাকে অভিনন্দন! আয়োজক দল পুরস্কার প্রদানের উদ্দেশ্যে তথ্য সংগ্রহ করছে। তাই আমরা আপনাকে '''[https://docs.google.com/forms/d/e/1FAIpQLSeSlGIk88-dNR79Vg5RytY6gIObKICFqrwc3ljN6Dw6YDn5IQ/viewform?usp=header এই ফর্মটি পূরণ করতে] অনুরোধ করছি'''। যদি আপনি ইতোমধ্যেই ফর্মটি পূরণ করে থাকেন, তাহলে দয়া করে দ্বিতীয়বার পূরণ করবেন না। আপনার সম্পাদনা-যাত্রা শুভ হোক। প্রতিযোগিতার আয়োজক দলের পক্ষে —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৪:৪৬, ৮ জুলাই ২০২৫ (ইউটিসি)
</div>
|}
<!-- https://bn.wikibooks.org/w/index.php?title=%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%80:MdsShakil/%E0%A6%97%E0%A6%A3%E0%A6%AC%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%A4%E0%A6%BE&oldid=85872-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:MdsShakil@bnwikibooks পাঠিয়েছেন -->
== উইকিবই লিখন প্রতিযোগিতা ২০২৬: অংশগ্রহণের আমন্ত্রণ ==
{| style="margin: 1em 4em;"
|- valign="top"
| [[চিত্র:Wikibooks Writing Contest.svg|146px|link=উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬]]
| <div style="background-color:#f4f3f0; color: #393D38; padding: 0.4em 1em;border-radius:10px;">
সুপ্রিয় {{BASEPAGENAME}},<br>আপনি জেনে খুশি হবেন যে বাংলা উইকিবইয়ে নতুন বই তৈরির লক্ষ্যে শুরু হয়েছে '''[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬|উইকিবই লিখন প্রতিযোগিতা ২০২৬]]'''। ১ মে থেকে ৩১ মে ২০২৬ পর্যন্ত চলা এই প্রতিযোগিতায় আপনি ইংরেজি উইকিবই থেকে মানসম্মত পাতা বাংলায় অনুবাদ করার মাধ্যমে অংশগ্রহণ করতে পারেন। প্রতিযোগিতায় বিজয়ীদের জন্য রয়েছে মোট ৬০০০ টাকা পর্যন্ত গিফট ভাউচার ও মুদ্রিত সনদপত্র, এবং কমপক্ষে একটি পাতা গৃহীত হলেই থাকছে ডিজিটাল সনদপত্র। অংশগ্রহণকারীদের জন্য শর্তসাপেক্ষে মোবাইল ইন্টারনেট সহায়তাও প্রদান করা হচ্ছে। প্রতিযোগিতার বিস্তারিত নিয়মাবলি এবং অন্যান তথ্য জনতে আমাদের [[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬|প্রকল্প পাতাটি]] দেখুন। যেকোনো প্রয়োজনে আমাদের [https://t.me/bnwikibooks টেলিগ্রাম গ্রুপে] যোগাযোগ করতে পারেন। আপনার সক্রিয় অংশগ্রহণ বাংলা উইকিবইকে আরও সমৃদ্ধ করবে। প্রতিযোগিতার আয়োজক দলের পক্ষে —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ০৯:৩৮, ৫ মে ২০২৬ (ইউটিসি)
</div>
|}
(এই বার্তাটি [[:ব্যবহারকারী আলাপ:Saadi095]] পাতায় পাঠানো হয়েছিল ও একটি পুনর্নির্দেশের কারণে এখানে পোস্ট করা হচ্ছে।)
<!-- https://bn.wikibooks.org/w/index.php?title=%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0%E0%A6%95%E0%A6%BE%E0%A6%B0%E0%A7%80:MdsShakil/%E0%A6%96%E0%A7%87%E0%A6%B2%E0%A6%BE%E0%A6%98%E0%A6%B0/%E0%A7%A7&oldid=93268-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:MdsShakil@bnwikibooks পাঠিয়েছেন -->
== পর্যালোচনা ==
[[পরিবহন অর্থনীতি/উৎপাদনশীলতা]] পাতার লেখা একটু সহজ করে লিখতে হবে। আর যেসব জায়গায় ইংরেজি অক্ষর ব্যবহার করেছেন সেখানে বাংলা অক্ষর ব্যবহার করুন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:৪৯, ২২ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] <code><math></code> কোড ব্যতীত আর কোথাও ইংরেজি অক্ষর ব্যবহার করিনি। কিন্ত ভিতরের অক্ষরগুলো বাংলায় লেখা যাচ্ছে না। এগুলো বাংলায় লিখার উপায় কি? [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৭:১২, ২২ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আমাকে @[[ব্যবহারকারী:R1F4T|R1F4T]] বলেছে যে একটা উপায় হলো ভেঙে ভেঙে লেখা, মানে সংখ্যাগুলো একবার ম্যাথ ট্যাগে, তারপর বাংলা, তারপর আবার বাকি অংশটুকু ম্যাথ ট্যাগে। চেষ্টা করে দেখতে পারেন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৭:৩২, ২২ মে ২০২৬ (ইউটিসি)
== রৈখিক বীজগণিত/সাধারণ = বিশেষ + সমজাতীয় ==
[[রৈখিক বীজগণিত/সাধারণ = বিশেষ + সমজাতীয়]] পাতায় আরো সম্পাদনা ও সংশোধন প্রয়োজন [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৯, ২৩ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৪:৩১, ২৪ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আরো করতে হবে। কিছু বাক্যের গঠন ইংরেজি ব্যাকরণের আদলে লেখা। এছাড়া কিছু বাংলা লেখা ভাঙ্গা দেখাচ্ছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৯, ২৪ মে ২০২৬ (ইউটিসি)
== ই-গভর্নমেন্ট/ই-গভর্নমেন্টের জন্য জাতীয় কৌশলগত কাঠামোর গুরুত্ব ==
[[ই-গভর্নমেন্ট/ই-গভর্নমেন্টের জন্য জাতীয় কৌশলগত কাঠামোর গুরুত্ব]] পাতায় সংশোধন প্রয়োজন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৪২, ২৪ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১১:২৩, ২৫ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] দেখে মনে হচ্ছে আরো সংশোধন দরকার। ইংরেজি বাক্যগঠনের অনুকরণে লেখা বাক্যগুলো এখনো রয়ে গেছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:১৩, ২৫ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] আশা করছি এখন ঠিক আছে [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১১:৪৬, ২৬ মে ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:Sàádî|Sàádî]] তবু কিছু সমস্যা রয়ে গিয়েছিল। আমি সেগুলো সংশোধন করে গ্রহণ করে নিয়েছি। সংশোধনগুলো দেখে নিবেন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৪:৫২, ২৬ মে ২০২৬ (ইউটিসি)
== পর্যালোচনা ==
[[মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/সকল পাতা/অধ্যায় ১]] পাতাটি আমি প্রতিযোগিতার তালিকায় ব্রাউজারের ফাইন্ড ফিচার ব্যবহার করে পাচ্ছিনা। এটা কি আসলেই তালিকাভুক্ত পাতা নাকি নিজ উদ্যোগে অনুবাদ করেছেন? আর করলে কোন ইংরেজি পাতা থেকে? আর এর লেখাগুলো এরকম কেন? [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৫:৪৯, ২৫ মে ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] পাতাটি [[মাগলস গাইড টু হ্যারি পটার/বই/গবলেট অব ফায়ার/মুদ্রণ সংস্করণ/অধ্যায় ১]] নামে তালিকায় ছিল। এরপর MdsShakil নাম পরিবর্তন করে দিয়েছেন। ইংরেজি পাতার সাথে সংযোগ দিয়েছি, সেখানেও লেখাগুলো এভাবেই আছে। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৬:১৯, ২৫ মে ২০২৬ (ইউটিসি)
::@[[ব্যবহারকারী:Sàádî|Sàádî]] আচ্ছা বুঝতে পেরেছি। পাতাটি একটু সংশোধন করে জানান৷ তারপর গ্রহণ করে নিবো। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:৩২, ২৫ মে ২০২৬ (ইউটিসি)
:::@[[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] সংশোধন করেছি [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১০:৫৭, ২৬ মে ২০২৬ (ইউটিসি)
::::@[[ব্যবহারকারী:Sàádî|Sàádî]] গৃহীত হয়েছে। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৪:৪১, ২৬ মে ২০২৬ (ইউটিসি)
== আরিমা/রণকৌশল পরিচিতি ==
সম্পাদনা প্রয়োজন [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৯:৫৩, ২৬ মে ২০২৬ (ইউটিসি)
== ইরানের ইতিহাস/প্রাচীন প্রাগৈতিহাসিক ইরান ==
সংশোধন দরকার [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৬:২৬, ২৮ মে ২০২৬ (ইউটিসি)
:সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:৪৯, ৩ জুন ২০২৬ (ইউটিসি)
== লাচ্ছা পরোটা ==
[[রন্ধনপ্রণালী:লাচ্ছা পরোটা]] পাতাটি সংশোধন করা দরকার। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ১৮:৫৬, ৩১ মে ২০২৬ (ইউটিসি)
:সংশোধন করেছি [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:১৭, ৩১ মে ২০২৬ (ইউটিসি)
== রন্ধনপ্রণালী ==
আমি লক্ষ্য করছি আপনার তৈরি রন্ধনপ্রণালী পাতাগুলোয় অতিরিক্ত এবং অপ্রয়োজনীয় লেখা রয়ে গেছে, সেগুলো সরিয়ে পাতাগুলো সংশোধন করুন। উদাহরণ হিসেবে দেওয়া পাতাটি অনুসরণ করুন, অন্যথায় পাতাগূগ্ৰহণ করা হবে না। —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৫:২৫, ৩ জুন ২০২৬ (ইউটিসি)
:@[[ব্যবহারকারী:MdsShakil|MdsShakil]] অতিরিক্ত লেখা মুছে সংশোধন করেছি। [[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ১৯:৩৬, ৩ জুন ২০২৬ (ইউটিসি)
::সংশোধিত পাতাগুলোর নাম দিন। —[[ব্যবহারকারী:MdsShakil|শাকিল]] ([[ব্যবহারকারী আলাপ:MdsShakil|আলাপ]]) ১৩:১৯, ৪ জুন ২০২৬ (ইউটিসি)
:::* রন্ধনপ্রণালী:হালুয়া পুরি
:::* রন্ধনপ্রণালী:উন্ধিয়ু
:::* রন্ধনপ্রণালী:আটা লাড্ডু
:::* রন্ধনপ্রণালী:মোতিচুর লাড্ডু
:::* রন্ধনপ্রণালী:বেসন লাড্ডু
:::* রন্ধনপ্রণালী:সজনে ডাটার চচ্চড়ি
:::* রন্ধনপ্রণালী:নারকেল লাড্ডু
:::* রন্ধনপ্রণালী:চিংড়ি শুঁটকি ভর্তা
:::* রন্ধনপ্রণালী:বটি কাবাব
:::* রন্ধনপ্রণালী:রেশমি কাবাব
:::* রন্ধনপ্রণালী:শামি কাবাব
:::* রন্ধনপ্রণালী:পাবদা মাছের ধনেপাতা ঝোল
:::* রন্ধনপ্রণালী:কাজলি মাছের ঝাল
:::* রন্ধনপ্রণালী:বাঁধাকপি দিয়ে চিংড়ি
:::* রন্ধনপ্রণালী:বাতাসি মাছের ঝোল
:::* রন্ধনপ্রণালী:ফুলকপি দিয়ে রুই মাছ
:::* রন্ধনপ্রণালী:কচুর লতি দিয়ে চিংড়ি
:::* রন্ধনপ্রণালী:মচমচে নিমকি
:::* রন্ধনপ্রণালী:হেলেঞ্চা শাকের ঝোল
:::* রন্ধনপ্রণালী:উচ্ছে ভাজি
:::* রন্ধনপ্রণালী:সাবুদানার পায়েস
:::* রন্ধনপ্রণালী:রূপচাঁদা মাছের ঝাল ভুনা
:::* রন্ধনপ্রণালী:ডিমের হালুয়া
:::* রন্ধনপ্রণালী:গলদা চিংড়ির রোস্ট
:::* রন্ধনপ্রণালী:কাঁচা আমের ঝাল আচার
:::* রন্ধনপ্রণালী:রূপচাঁদা ভুনা
:::* রন্ধনপ্রণালী:খাসির পায়া নেহারি
:::* রন্ধনপ্রণালী:মৌরালা মাছের ঝাল
:::* রন্ধনপ্রণালী:কাতলা মাছের কালিয়া
:::* রন্ধনপ্রণালী:মাছের মাথা দিয়ে মুগ ডাল
:::* রন্ধনপ্রণালী:বাটা মাছের ঝোল
:::* রন্ধনপ্রণালী:বোয়াল মাছের টমেটো চক
:::* রন্ধনপ্রণালী:কই মাছের ভুনা
:::* রন্ধনপ্রণালী:ইলিশ মাছের মাথা দিয়ে কচু শাক
:::* রন্ধনপ্রণালী:রুই মাছের ভুনা
:::[[ব্যবহারকারী:Sàádî|Sàádî]] ([[ব্যবহারকারী আলাপ:Sàádî|আলাপ]]) ০৩:৩৫, ৫ জুন ২০২৬ (ইউটিসি)
== জাতিসংঘের ইতিহাস/সম্মিলিত জাতিপুঞ্জের প্রোটোকল ==
[[জাতিসংঘের ইতিহাস/সম্মিলিত জাতিপুঞ্জের প্রোটোকল]] সংশোধন প্রয়োজন। [[ব্যবহারকারী:Mehedi Abedin|Mehedi Abedin]] ([[ব্যবহারকারী আলাপ:Mehedi Abedin|আলাপ]]) ২১:২১, ৩ জুন ২০২৬ (ইউটিসি)
7q1vrztfpp4zayl20rxd0j2sje4g5lf
রন্ধনপ্রণালী আলোচনা:সমুচা
105
25829
106491
97261
2026-06-05T00:56:13Z
কমলেশ মন্ডল
9394
/* সম্পাদনার অনুরোধ, ৫ জুন ২০২৬ */ নতুন অনুচ্ছেদ
106491
wikitext
text/x-wiki
== কিভাবে অংশগ্রহণ করবো ==
আমি অংশগ্রহণ করতে চাই কিন্ত কি কি করতে হবে বুঝতে পারছি না। আমি বাংলা ভাষা বা সাহিত্যের ওপর লিখতে চাই [[ব্যবহারকারী:Dipali De|Dipali De]] ([[ব্যবহারকারী আলাপ:Dipali De|আলাপ]]) ১৮:৪১, ১৬ মে ২০২৬ (ইউটিসি)
:de.parna@gmail.com [[ব্যবহারকারী:Dipali De|Dipali De]] ([[ব্যবহারকারী আলাপ:Dipali De|আলাপ]]) ১৮:৪২, ১৬ মে ২০২৬ (ইউটিসি)
== সম্পাদনার অনুরোধ, ৫ জুন ২০২৬ ==
{{সম্পাদনার অনুরোধ| উত্তর=না}}
<!-- অনুরোধ শুরু -->
উপকরণ টেবিলে পরিমাণ নির্দেশ করা কলামের নাম উপকরণ রাখা হয়েছে। পরিমাণ রাখা উচিত।
<!-- অনুরোধ শেষ -->
[[ব্যবহারকারী:কমলেশ মন্ডল|কমলেশ মন্ডল]] ([[ব্যবহারকারী আলাপ:কমলেশ মন্ডল|আলাপ]]) ০০:৫৬, ৫ জুন ২০২৬ (ইউটিসি)
26280vs2zo7r5mcju0rrmxhfpd6uave
মাগলস গাইড টু হ্যারি পটার/চরিত্র/ডলিশ
0
29926
106482
106363
2026-06-04T17:19:24Z
Mehedi Abedin
7113
106482
wikitext
text/x-wiki
{{Muggles' Guide to Harry Potter/Character|
name=ডলিশ|
gender=পুরুষ|
hair=অজানা (ছোট ও কোকড়ানো)|
eyes=অজানা |
family=অজানা |
loyalty=[[মাগলস গাইড টু হ্যারি পটার/জাদু/জাদু মন্ত্রণালয়|জাদু মন্ত্রণালয়]]
}}
== সারসংক্ষেপ==
'''ডলিশ''' [[মাগলস গাইড টু হ্যারি পটার/জাদু/জাদু মন্ত্রণালয়|জাদু মন্ত্রণালয়ের]] একজন [[মাগলস গাইড টু হ্যারি পটার/জাদু/অরোর|অরোর]]। তাকে উগ্র ও ভয়ঙ্কর চেহারার একজন জাদুকর হিসেবে বর্ণনা করা হয়েছে।
== বইয়ে ভূমিকা ==
{{মাগলস গাইড টু হ্যারি পটার/বিগিনার স্পয়লার}}
=== [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স|অর্ডার অফ দ্য ফিনিক্স]] ===
[[মাগলস গাইড টু হ্যারি পটার/প্রধান ঘটনাবলী/ডাম্বলডোরস আর্মি|ডাম্বলডোরের সেনাদল]] যখন ভেঙে দেওয়া হয় এবং [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/ডলোরেস আমব্রিজ|প্রফেসর আমব্রিজ]] [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/হ্যারি পটার|হ্যারি]]কে [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/অ্যালবাস ডাম্বলডোর|ডাম্বলডোরের]] অফিসে নিয়ে আসেন তখনই সর্বপ্রথম ডলিশকে দেখা যায়। ডাম্বলডোরের অফিসে তখন [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/কর্নেলিয়াস ফাজ|কর্নিলিয়াস ফাজ]] উপস্থিত ছিলেন যিনি নিজের নিরাপত্তার জন্য দুজন [[মাগলস গাইড টু হ্যারি পটার/জাদু/অরোর|অরোরকে]] সাথে নিয়ে আসেন। ডলিশ ছিলো সেই দুই অরোরের একজন। ডাম্বলডোরের বিরুদ্বে যখন গ্রেফতারী পরওয়ানা জারী করা হয়, তখন কোনো পদক্ষেপ না নেওয়ার জন্য ডাম্বলডোর ডলিশকে সতর্ক করে বলেন: "ডলিশ যদি তাকে জোরপূর্বক ধরে নিয়ে যাওয়ার চেষ্টা করে, তবে তাকে আঘাত করতে তিনি বাধ্য হবেন"। পরবর্তীতে দেখা যায়, দ্রত লড়াইয়ে ডাম্বলডোর তাকে সত্যিই অজ্ঞান করে ফেলেন, এবং সেখানেই ঐ দৃশ্যটির সমাপ্তি ঘটে।
হ্যাগরিডকে চাকরি থেকে অপসারণ করার কাজে সহায়তা করার জন্য আমব্রিজ যাদের নিয়ে এসেছিলেন, ডলিশ ছিলেন তাদেরই একজন। তিনি শুনেছিলেন হ্যাগরিডের কাছে অনুনয়-বিনয় করলে হ্যাগরিড শান্ত ও যুক্তিপূর্ণ আচরণ করেন, যদিও পরবর্তিতে হ্যাগরিড তাকে [[মাগলস গাইড টু হ্যারি পটার/জাদু/স্টুপিফাই|অচেতন]] করার চেষ্টা করেন।
বইয়ের শেষ প্রান্তে আরও একবার তাকে দেখা যায় যখন তিনি ঠিক সময়মতো মন্ত্রণালয়ে এসে পৌঁছান, যখন [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/লর্ড ভলডেমর্ট|লর্ড ভলডেমর্ট]] এবং [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বেলাট্রিক্স লেস্ট্র্যাঞ্জ|বেলাট্রিক্স লেস্ট্র্যাঞ্জ]] পালিয়ে যাচ্ছিল। [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/কর্নেলিয়াস ফাজ|কর্নিলিয়াস ফাজ]] তাকে এবং [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/উইলিয়ামসন|উইলিয়ামসন]]কে তদন্তের জন্য ''ডিপার্টমেন্ট অফ মিস্ট্রিজে'' যাওয়ার নির্দেশ দেন।
=== [[মাগলস গাইড টু হ্যারি পটার/বই/হাফ-ব্লাড প্রিন্স|হাফ-ব্লাড প্রিন্স]] ===
হগওয়ার্টস এক্সপ্রেসে [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/ড্রাকো ম্যালফয়|ড্রাকো ম্যালফয়ের]] [[মাগলস গাইড টু হ্যারি পটার/জাদু/পেট্রিফিকাস টোটাল্লাস|পেট্রিফিকাস টোটাল্লাস]] জাদুমন্ত্রের কবল থেকে হ্যারিকে উদ্ধার করার পর, [[ মাগলস গাইড টু হ্যারি পটার/চরিত্র/নিমফ্যাডোরা টঙ্কস|নিমফ্যাডোরা টঙ্কস]] যখন তাকে হগওয়ার্টসের দিকে নিয়ে যাচ্ছিল, তখন সে হ্যারিকে জানায় যে হগওয়ার্টসের প্রহরায় সে শুধু একা নয় বরং প্রাউডফুট, স্যাভেজ এবং ডলিশও সেখানে উপস্থিত আছেন।
ক্রিসমাসের পর, [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/রুফাস স্ক্রিমজোর|রুফাস স্ক্রিমজোরের]] সাথে কী কথা হয়েছিল, তা হ্যারি, ডাম্বলডোরকে জানায়। ডাম্বলডোর কোথায় যাচ্ছেন, কি করছেন সে ব্যাপারে স্ক্রিমজোরের যথেষ্ট কৌতুহল রয়েছে বলে হ্যারি ডাম্বলডোরকে অবহিত করে। জবাবে ডাম্বলডোর বলেন, স্ক্রিমজোর তার পিছু নেওয়ার জন্য ডলিশকেও নিয়োজিত করেছিলেন এবং সেজন্য ডলিশের ওপর তাকে আবারও জাদুমন্ত্র প্রয়োগ করতে হয়েছে, আর সে জন্য সে অনুতপ্ত।
=== [[মাগলস গাইড টু হ্যারি পটার/বই/ডেথলি হ্যালোজ|ডেথলি হ্যালোজ]] ===
হ্যারি পটারের চলাফেরা ও অবস্থান সংক্রান্ত তথ্য পাওয়ার জন্য [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/ইয়াক্সলি|ইয়াক্সলি]] যে অরোরের ওপর নির্ভর করেছিল, সে হলো ডলিশ। যদিও [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/সেভেরাস স্নেপ|সেভেরাস স্নেপ]] ডলিশের দেওয়া সকল তথ্যকে ভূয়া দাবি করেন। তিনি বলেন যে, ভুয়ো সূত্র পথ তৈরি করার অংশ হিসেবে ''অর্ডার অফ দ্য ফিনিক্স'' ডলিশের ওপর হয়তো [[ মাগলস গাইড টু হ্যারি পটার/জাদু/কনফান্ডো|কনফান্ডো]] বা বিভ্রান্তকরণ জাদু মন্ত্র প্রয়োগ করেছে। তিনি আরও বলেন যে, ডলিশ যে বেশ সহজেই এই বিভ্রান্তকরণ জাদুমন্ত্রের শিকার হয়ে পড়ে, তা তো আগেও বোঝা গেছে।
পরবর্তীতে, ফেরারি [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/ডার্ক ক্রেসওয়েল|ডার্ক ক্রেসওয়েল]] উল্লেখ করেন যে তাকে যখন [[মাগলস গাইড টু হ্যারি পটার/স্থান/আজকাবান|আজকাবানে]] নিয়ে যাওয়া হচ্ছিল তখন তিনি তার পাহারাদার ডলিশকে কুপোকাত করে পালিয়ে যেতে সক্ষম হন। তিনি সাথে আরো জানান যে সে সময় ডলিশকে কিছুটা ধীর গতির বলে মনে হচ্ছিল, যেন তাকে কেউ বিভ্রান্তকরণ জাদুমন্ত্রে বশ করে রেখেছে।
সবশেষে, হগওয়ার্টসে [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/নেভিল লংবটম|নেভিলের]] কর্মকাণ্ড নিয়ন্ত্রণ করার জন্য ডেথ ইটাররা যখন নেভিলের দাদি [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/অগাস্টা লংবটম|অগাস্টা লংবটম]]কে বন্দি করার চেষ্টা করে, তখন তারা দৃশ্যত ডলিশকেই তার পেছনে পাঠায়। অগাস্টা আত্মগোপন করার আগে ডলিশকে এমনভাবে ঘায়েল করে যে তাকে [[মাগলস গাইড টু হ্যারি পটার/স্থান/জাদুর কবলে পড়ে আহত ও দুর্দশাগ্রস্তদের হাসপাতাল সেন্ট মুঙ্গোস|সেন্ট মুঙ্গোস হাসপাতালে]] ভর্তি হতে হয়।
== শক্তিমত্তা ==
অরোর হওয়ার জন্য যে যোগ্যতার প্রয়োজন হয় তা অর্জনের জন্য ডলিশকে নিশ্চয়ই পরীক্ষায় বেশ ভালো ফলাফল অর্জন করতে হয়েছে। [[মাগলস গাইড টু হ্যারি পটার/বই/অর্ডার অব দ্য ফিনিক্স/অধ্যায় ২৭| ''হ্যারি পটার অ্যান্ড দ্য অর্ডার অফ দ্য ফিনিক্স'']] বইয়ে, ফাজ যখন ডাম্বলডোরকে গ্রেফতার করার চেষ্টা করেন, ডাম্বলডোর তখন ডলিশকে তার ওপর আক্রমণ না করার জন্য সতর্ক করেন এবং সে সময় নিউট পরীক্ষায় ডলিশের পাওয়া উচ্চ নম্বরের কথা উল্লেখ করেন ফাজ।
== দুর্বলতা ==
ডলিশ ''কনফান্ডোস'' (বিভ্রান্তকরণ) জাদুমন্ত্রের প্রতি অত্যন্ত সংবেদনশীল, এবং এর প্রমাণ পাওয়া যায় [[মাগলস গাইড টু হ্যারি পটার/বই/ডেথলি হ্যালোজ|সপ্তম বইয়ের]] প্রায় বেশিরভাগ সময়ই তিনি এই জাদুর প্রভাবে কাটিয়েছেন।
== অন্যান্য চরিত্রের সাথে সম্পর্ক ==
== বিশ্লেষণ ==
ডলিশ এতটাই অদক্ষ অরোর যে, যে কেউ ভাবতে পারে, সে কীভাবে এই চাকরিতে নিয়োগ পেয়েছিল। তার শারীরিক শক্তির পেছনে রয়েছে দৃশ্যত এক ধরণের জাদুমন্ত্রের দুর্বলতাঃ সে বারবার ''কনফান্ডেড'' (মন্ত্রপুত) হয়েছে। ডাম্বলডোরের দ্বারা দুই বার সে জাদুমন্ত্রের শিকার হয়েছে এবং একজন বৃদ্ধা নারী কর্তৃক জাদুমন্ত্রের শিকার হয়ে হাসপাতালে যেতে বাধ্য হয়েছে,যদিও সেই নারীটি ছিলেন অত্যন্ত ভয়ানক ও শক্তিশালী। আমলাতন্ত্র যখন কোথাও নিয়ন্ত্রণহীন হয়ে পড়ে তখন কী ধরনের বিপর্যয় সেখানে ঘটতে পারে, এটা দেখানোর জন্য খুব সম্ভবত গল্পে তাকে নিয়ে আসা হয়েছে; যেমনটা ঘটেছে [[মাগলস গাইড টু হ্যারি পটার/চরিত্র/কর্নেলিয়াস ফাজ|কর্নিলিয়াস ফাজের]] প্রশাসনের অধীনে ।
নিউট (এন.ই.ডব্লিও.টি)) পরীক্ষায় উচ্চ নম্বর পাওয়ার কারণে অবশ্যই সে বুদ্ধিমান হওয়ার পাশাপাশি জাদুকরী বিদ্যায়ও দক্ষ ছিল, তবুও সে ''কনফান্ডোস'' জাদুমন্ত্রের প্রতি অতিমাত্রায় সংবেদনশীল ছিল এবং সপ্তম বইয়ের এক বড় অংশ জুড়েই সে এই জাদুর প্রভাবে ছিল। আর ডলিশ যেখানে খোদ ভলডেমর্ট ও ডাম্বলডোরকেই ভয় পেতেন, সেখানে প্রধান শিক্ষকের কাছে যে সে সহজেই পরাস্ত হবে, তাতে অবাক হওয়ার কিছুই নেই। ডলিশ অত্যন্ত বুদ্ধিমান, দক্ষ ও যোগ্য, কিন্তু তার এমন একটি দুর্বলতা রয়েছে যাকে ব্যবহার করে খুব সহজেই তাকে কাবু করা যায়। এর ওপর, সে কোনো প্রশ্ন না করেই অন্ধের মতো আদেশ মেনে চলে, যা তাকে একজন চমৎকার সৈনিক হিসেবে গড়ে তোলে ঠিকই, কিন্তু কোনো বীর বা নায়ক বানায় না, এমনকি বীরদের পক্ষও সে নেয় না, যদি না সে কোন বীরের অধীনে সে কাজ করে এবং বীরদের থেকে সে আদেশ গ্রহন করে।
== প্রশ্নসমূহ ==
{{মাগলস গাইড টু হ্যারি পটার/প্রশ্ন}}
== বৃহত্তর পটভুমি ==
{{মাগলস গাইড টু হ্যারি পটার/ইন্টারমিডিয়েট স্পয়লার}}
{{BookCat}}
8rsft0g5x921yl8wxztv6klfnvguery
লজিক গেট/রেজিস্টার
0
30000
106498
98205
2026-06-05T09:24:37Z
R1F4T
9121
/* কীভাবে বিলম্ব তৈরি হয় */
106498
wikitext
text/x-wiki
'''রেজিস্টার''' শব্দটা শুনলেই মাথায় আসে স্কুলের খাতা, ক্লাসের উপস্থিতির রেজিস্টার। সেই রেজিস্টারে শিক্ষক প্রতিদিন প্রতিটি ছাত্রের উপস্থিতি লিখে রাখেন। ডিজিটাল ইলেকট্রনিক্সের রেজিস্টারও ঠিক এইভাবে তথ্য লিখে রাখে তবে পার্থক্য হলো এখানে তথ্য থাকে বাইনারি সংখ্যায়, আর লেখার কাজটা করে ফ্লিপ-ফ্লপ।
একটু অন্যভাবে বলি। তুমি এখন যে কম্পিউটার বা মোবাইলে এই লেখা পড়ছ, সেটা প্রতি সেকেন্ডে কোটি কোটি গণনা করছে। সেই গণনার প্রতিটি ধাপে মধ্যবর্তী ফলাফল কোথাও সাময়িকভাবে রাখতে হয় ঠিক যেমন গণিত করার সময় তুমি কাগজের একপাশে হিসাব টুকে রাখো। কম্পিউটারে এই কাজটা করে রেজিস্টার। এটি ডিজিটাল সার্কিটের কাজের মেমরি।
== রেজিস্টার কী ==
'''রেজিস্টার''' হলো একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি একটি সার্কিট যা একসাথে একাধিক বিট তথ্য সংরক্ষণ করতে পারে। যেখানে একটি ফ্লিপ-ফ্লপ কেবল একটি বিট (<math>\text{০}</math> বা <math>\text{১}</math>) ধরে রাখে, সেখানে একটি রেজিস্টার একসাথে <math>n</math>টি বিট ধরে রাখতে পারে।
সহজ কথায়:
{| class="wikitable" style="width:100%; text-align:center;"
|+ ফ্লিপ-ফ্লপ ও রেজিস্টারের তুলনা
! বিষয় !! ফ্লিপ-ফ্লপ !! রেজিস্টার
|-
| সংরক্ষিত বিটের সংখ্যা || <math>\text{১}</math>টি || <math>n</math>টি
|-
| উদাহরণ || একটি লকার || একটি লকার সারি
|-
| ব্যবহার || একটি অবস্থা মনে রাখা || একটি সংখ্যা বা শব্দ মনে রাখা
|-
| প্রধান উপাদান || একটি ডি বা জেকে ফ্লিপ-ফ্লপ || একাধিক ডি ফ্লিপ-ফ্লপ
|}
=== উপমা: লকারের সারি ===
বাস স্টেশনে বা রেলওয়ে স্টেশনে যে লকারগুলো থাকে, সেগুলো কল্পনা করো। একটিমাত্র লকার একটি ব্যাগ রাখতে পারে। কিন্তু যদি পাশাপাশি ৮টি লকার একটি সারিতে সাজানো থাকে এবং সবগুলো একই মাস্টার চাবিতে খোলে-বন্ধ হয়, তাহলে সেটাই হলো রেজিস্টার।
এখানে:
* প্রতিটি লকার = একটি ফ্লিপ-ফ্লপ (একটি বিট সংরক্ষণ করে)
* সারির সব লকার = রেজিস্টার (একসাথে ৮টি বিট সংরক্ষণ করে)
* মাস্টার চাবি = ঘড়ি সংকেত (একসাথে সব ফ্লিপ-ফ্লপ নিয়ন্ত্রণ করে)
== রেজিস্টারের গুরুত্ব ==
রেজিস্টার কেন এত গুরুত্বপূর্ণ তা একটু ভেবে দেখি। ধরো তুমি <math>\text{১৩} + \text{২৭}</math> যোগ করছ। মাথায় প্রথমে আনতে হয় ১৩ কে, তারপর ২৭ কে, মধ্যবর্তী ধাপ মনে রাখতে হয়, তারপর উত্তর দিতে হয়। কম্পিউটারও এইভাবেই কাজ করে প্রতিটি সংখ্যা রেজিস্টারে রাখা হয়, গণনার মধ্যবর্তী ফলাফলও রেজিস্টারে যায়।
{| class="wikitable" style="width:100%;"
|+ বাস্তব জীবনে রেজিস্টারের প্রয়োজনীয়তা
! পরিস্থিতি !! রেজিস্টারের ভূমিকা
|-
| কম্পিউটারের গণনা || যোগ করার আগে দুটি সংখ্যা আলাদা রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ঘড়ি || বর্তমান সময় (ঘণ্টা, মিনিট, সেকেন্ড) রেজিস্টারে সংরক্ষিত
|-
| যোগাযোগ ব্যবস্থা || পাঠানোর আগে তথ্য সাময়িকভাবে রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ক্যামেরা || ছবির পিক্সেল ডেটা প্রক্রিয়াকরণের সময় রেজিস্টারে থাকে
|-
| মোটরগাড়ির কম্পিউটার || ইঞ্জিনের সব পরামিতি রেজিস্টারে সংরক্ষিত ও পর্যবেক্ষিত
|-
| ব্যাংকের এটিএম || লেনদেনের মধ্যবর্তী তথ্য রেজিস্টারে থাকে
|}
== রেজিস্টারের প্রকারভেদ ==
রেজিস্টার অনেক ধরনের হয়। তথ্য কীভাবে ঢোকানো হয় এবং কীভাবে বের করা হয় তার উপর ভিত্তি করে রেজিস্টারের চারটি মূল প্রকার:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রেজিস্টারের প্রকারভেদ
! ধরন !! তথ্য ঢোকে || তথ্য বের হয় !! ব্যবহার
|-
| সমান্তরাল-ইন, সমান্তরাল-আউট || সব বিট একসাথে || সব বিট একসাথে || সাধারণ সংরক্ষণ
|-
| ধারাবাহিক-ইন, ধারাবাহিক-আউট || একটি একটি করে || একটি একটি করে || বিলম্ব সার্কিট
|-
| ধারাবাহিক-ইন, সমান্তরাল-আউট || একটি একটি করে || সব বিট একসাথে || রিসিভার সার্কিট
|-
| সমান্তরাল-ইন, ধারাবাহিক-আউট || সব বিট একসাথে || একটি একটি করে || ট্রান্সমিটার সার্কিট
|}
এই চারটি ধরনের পাশাপাশি আরো বিশেষ ধরনের রেজিস্টার আছে দ্বিমুখী শিফট রেজিস্টার, রিং কাউন্টার, স্ট্যাক এগুলো পরের ভাগে বিস্তারিত আলোচনা করা হবে।
== সবচেয়ে সরল রেজিস্টার: ৪-বিট সমান্তরাল রেজিস্টার ==
সবচেয়ে সহজ রেজিস্টার হলো সমান্তরাল লোড রেজিস্টার। এতে চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো থাকে এবং সবগুলো একই ঘড়ি সংকেত ব্যবহার করে।
=== গঠন ===
একটি ৪-বিট রেজিস্টারে:
* ৪টি ইনপুট: <math>D_3,\ D_2,\ D_1,\ D_0</math> (উঁচু বিট থেকে নিচু বিট)
* ৪টি আউটপুট: <math>Q_3,\ Q_2,\ Q_1,\ Q_0</math>
* একটি ঘড়ি ইনপুট: <math>CLK</math>
=== কার্যক্রম ===
ঘড়ির প্রতিটি উর্ধ্বগামী প্রান্তে (<math>\uparrow</math>) চারটি ইনপুটের মান একসাথে চারটি ফ্লিপ-ফ্লপে সংরক্ষিত হয়।
:<math>Q_3^+ = D_3,\quad Q_2^+ = D_2,\quad Q_1^+ = D_1,\quad Q_0^+ = D_0</math>
এটা বোঝার সহজ উপায়: ঘড়ির প্রান্তে একটি ''ছবি তোলা'' হয় সেই মুহূর্তে ইনপুটে যা আছে তার হুবহু ছাপ রেজিস্টারে পড়ে।
=== সত্যক সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! <math>CLK</math> !! <math>D_3 D_2 D_1 D_0</math> !! <math>Q_3 Q_2 Q_1 Q_0</math> !! ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ইনপুট হুবহু সংরক্ষিত
|-
| <math>\uparrow</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || পুরনো মান মুছে নতুন মান এলো
|-
| <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সব বিট ১
|-
| <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || সব বিট মুছে গেল
|-
| <math>\text{০}</math> বা <math>\text{১}</math> || যেকোনো || <math>Q</math> অপরিবর্তিত || ঘড়ির প্রান্ত নেই → পরিবর্তন নেই
|}
=== ধাপে ধাপে উদাহরণ ===
ধরো প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। এখন পরপর তিনটি ঘড়ির প্রান্তে ইনপুট দেওয়া হলো:
'''প্রান্ত ১:''' ইনপুট <math>D_3 D_2 D_1 D_0 = \text{১০১১}</math>
রেজিস্টারে সংরক্ষিত হলো: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
দশমিকে: <math>\text{১১}</math>
'''প্রান্ত ২:''' ইনপুট পরিবর্তন হলো <math>D_3 D_2 D_1 D_0 = \text{০১০১}</math>
রেজিস্টারে এখন: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math>
দশমিকে: <math>\text{৫}</math> (আগের <math>\text{১১}</math> মুছে গেল)
'''প্রান্ত ৩:''' ইনপুট দেওয়া হলো না (<math>D</math> অপরিবর্তিত)
রেজিস্টারে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math> (অপরিবর্তিত)
লক্ষ করো ঘড়ির প্রান্ত না পেলে রেজিস্টার তার তথ্য ধরে রাখে।
== রেজিস্টারের আকার ==
রেজিস্টার কত বিটের হবে তা নির্ভর করে কী ধরনের তথ্য সংরক্ষণ করতে হবে তার উপর।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের আকার ও প্রয়োজনীয় ফ্লিপ-ফ্লপ
! রেজিস্টারের আকার !! ফ্লিপ-ফ্লপের সংখ্যা !! সর্বোচ্চ মান !! সাধারণ ব্যবহার
|-
| ৪-বিট || <math>\text{৪}</math> || <math>\text{১৫}</math> | BCD সংখ্যা, ছোট গণনা
|-
| ৮-বিট || <math>\text{৮}</math> || <math>\text{২৫৫}</math> || একটি অক্ষর (ASCII), রঙের মান
|-
| ১৬-বিট || <math>\text{১৬}</math> || <math>\text{৬৫৫৩৫}</math> || ছোট পূর্ণসংখ্যা
|-
| ৩২-বিট || <math>\text{৩২}</math> || <math>\approx \text{৪.৩ বিলিয়ন}</math> || সাধারণ কম্পিউটার রেজিস্টার
|-
| ৬৪-বিট || <math>\text{৬৪}</math> || <math>\approx \text{১৮.৪ কুইন্টিলিয়ন}</math> || আধুনিক ৬৪-বিট প্রসেসর
|}
<math>n</math>-বিট রেজিস্টারে সংরক্ষণযোগ্য সর্বোচ্চ মান: <math>\text{২}^n - \text{১}</math>
== মৌলিক রেজিস্টার অপারেশন ==
প্রতিটি রেজিস্টার মূলত তিনটি কাজ করতে পারে:
=== ১. লোড করা ===
নতুন তথ্য রেজিস্টারে লেখা। ঘড়ির প্রান্তে ইনপুটের মান আউটপুটে চলে আসে।
=== ২. ধারণ করা ===
বর্তমান তথ্য অপরিবর্তিত রাখা। ঘড়ির প্রান্ত না পেলে বা লোড নিষ্ক্রিয় থাকলে রেজিস্টার তার মান ধরে রাখে।
=== ৩. পরিষ্কার করা ===
সব বিট <math>\text{০}</math> করে দেওয়া। এটি সাধারণত একটি বিশেষ ক্লিয়ার (<math>\overline{CLR}</math>) ইনপুট দিয়ে করা হয়।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের মৌলিক অপারেশন
! অপারেশন !! শর্ত !! আউটপুট <math>Q^+</math> !! উপমা
|-
| লোড || <math>CLK \uparrow</math> সক্রিয় || <math>D</math> (নতুন মান) || নতুন ছবি তোলা
|-
| ধারণ || <math>CLK \uparrow</math> নেই || <math>Q</math> (আগের মান) || পুরনো ছবি রাখা
|-
| পরিষ্কার || <math>\overline{CLR} = \text{০}</math> || <math>\text{০০...০}</math> || ছবি মুছে ফেলা
|}
== রেজিস্টারে ব্যবহৃত ফ্লিপ-ফ্লপের পছন্দ ==
রেজিস্টার তৈরিতে ডি ফ্লিপ-ফ্লপ কেন সবচেয়ে বেশি ব্যবহৃত হয় তা বোঝা দরকার।
{| class="wikitable" style="width:100%;"
|+ রেজিস্টারে ডি ফ্লিপ-ফ্লপ পছন্দের কারণ
! কারণ !! বিবরণ
|-
| সহজ বৈশিষ্ট্য সমীকরণ || <math>Q^+ = D</math> যা ইনপুট দেবে তাই সংরক্ষিত হবে
|-
| কোনো নিষিদ্ধ অবস্থা নেই || এসআর ফ্লিপ-ফ্লপের মতো ভুল অবস্থার ঝুঁকি নেই
|-
| একটিমাত্র ইনপুট || সরল সার্কিট, কম গেট, কম জায়গা
|-
| সরল সক্রিয়করণ || কাঙ্ক্ষিত আউটপুটই সরাসরি ইনপুট দাও
|-
| শিফট রেজিস্টারে আদর্শ || আগের ফ্লিপ-ফ্লপের আউটপুট সরাসরি পরেরটির ইনপুটে দেওয়া যায়
|}
== একটি রেজিস্টারের ভেতরে কী ঘটে ==
ধরো একটি ৪-বিট ডি ফ্লিপ-ফ্লপ রেজিস্টার। প্রতিটি ফ্লিপ-ফ্লপ স্বাধীনভাবে কাজ করে কিন্তু সবাই একই ঘড়ির প্রান্তে একসাথে কাজ শুরু করে।
ধাপে ধাপে ঘটনার ক্রম:
'''ঘড়ির প্রান্ত আসার আগে:'''
* ইনপুট লাইন <math>D_3, D_2, D_1, D_0</math> তে মান প্রস্তুত
* রেজিস্টার আগের মান ধরে রেখেছে
'''ঘড়ির উর্ধ্বগামী প্রান্তে (মুহূর্তিকভাবে):'''
* চারটি ফ্লিপ-ফ্লপ একসাথে ইনপুটের মান গ্রহণ করে
* পুরনো মান মুছে নতুন মান সংরক্ষিত হয়
'''ঘড়ির প্রান্তের পরে (বিস্তার বিলম্বের পরে):'''
* আউটপুট <math>Q_3, Q_2, Q_1, Q_0</math> তে নতুন মান প্রকাশ পায়
* পরবর্তী প্রান্ত না আসা পর্যন্ত এই মান স্থির থাকে
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের সময়-সংক্রান্ত বৈশিষ্ট্য
! সময়-বৈশিষ্ট্য !! চিহ্ন !! অর্থ
|-
| স্থাপন সময় || <math>t_{su}</math> || প্রান্তের আগে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| ধারণ সময় || <math>t_h</math> || প্রান্তের পরে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| বিস্তার বিলম্ব || <math>t_{pd}</math> || প্রান্ত থেকে আউটপুট পরিবর্তনের সময়
|-
| সর্বোচ্চ কম্পাঙ্ক || <math>f_{max}</math> || রেজিস্টার কত দ্রুত কাজ করতে পারে
|}
== বিট-ক্রম নিয়ে সতর্কতা ==
রেজিস্টারে বিট কোন ক্রমে থাকে তা জানা গুরুত্বপূর্ণ। দুটি প্রচলিত পদ্ধতি আছে:
=== মোস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বোচ্চ মানের বিট (<math>Q_3</math>) বাম দিকে থাকে। এটি স্বাভাবিক বাইনারি লেখার মতো।
উদাহরণ: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math> মানে দশমিকে <math>\text{৮}+\text{০}+\text{২}+\text{১} = \text{১১}</math>
=== লিস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বনিম্ন মানের বিট (<math>Q_0</math>) প্রথমে প্রেরণ করা হয়। ধারাবাহিক যোগাযোগে এই পদ্ধতি সাধারণ।
== উদাহরণ ==
=== উদাহরণ ১: বাইনারি সংখ্যা সংরক্ষণ ===
<math>\text{১৩}</math> দশমিক সংখ্যাটি একটি ৪-বিট রেজিস্টারে সংরক্ষণ করো।
প্রথমে দশমিক থেকে বাইনারি:
:<math>\text{১৩} = \text{৮}+\text{৪}+\text{১} = \text{১১০১}</math>
তাহলে ইনপুট: <math>D_3 D_2 D_1 D_0 = \text{১১০১}</math>
ঘড়ির প্রান্তে রেজিস্টারে সংরক্ষিত হবে:
:<math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>
যাচাই: <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
=== উদাহরণ ২: ধারণ অপারেশন ===
একটি রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> সংরক্ষিত আছে। পরবর্তী দুটি ঘড়ির প্রান্তের মধ্যে কোনো ইনপুট পরিবর্তন হলো না। রেজিস্টারের মান কী থাকবে?
উত্তর: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> (অপরিবর্তিত)
ফ্লিপ-ফ্লপ তার তথ্য ধরে রাখে নতুন ঘড়ির প্রান্ত না আসলে পরিবর্তন হয় না।
=== উদাহরণ ৩: ক্রমানুসারে লোড করা ===
প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। পরপর চারটি ঘড়ির প্রান্তে নিচের ইনপুট দেওয়া হলো। প্রতিটি প্রান্তের পরে রেজিস্টারের মান কী?
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ৩ ক্রমানুসারে লোড
! প্রান্ত !! ইনপুট <math>D_3 D_2 D_1 D_0</math> !! আউটপুট <math>Q_3 Q_2 Q_1 Q_0</math> !! দশমিক মান
|-
| শুরু || || <math>\text{০০০০}</math> || <math>\text{০}</math>
|-
| ১ম || <math>\text{০১০১}</math> || <math>\text{০১০১}</math> || <math>\text{৫}</math>
|-
| ২য় || <math>\text{১০০০}</math> || <math>\text{১০০০}</math> || <math>\text{৮}</math>
|-
| ৩য় || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || <math>\text{১৫}</math>
|-
| ৪র্থ || <math>\text{০০১১}</math> || <math>\text{০০১১}</math> || <math>\text{৩}</math>
|}
প্রতিটি প্রান্তে রেজিস্টার নতুন মান গ্রহণ করেছে এবং পুরনো মান সম্পূর্ণ মুছে গেছে।
=== উদাহরণ ৪: রেজিস্টারের সীমা পরীক্ষা ===
একটি ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব কিনা?
৩-বিট রেজিস্টারের সর্বোচ্চ মান: <math>\text{২}^\text{৩} - \text{১} = \text{৭}</math>
<math>\text{৯} > \text{৭}</math>, তাই ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব নয়। কমপক্ষে ৪-বিট রেজিস্টার দরকার (সর্বোচ্চ মান <math>\text{১৫}</math>)।
== অনুশীলনী ==
# একটি ৫-বিট রেজিস্টার সর্বোচ্চ কত মান সংরক্ষণ করতে পারে?
# দশমিক <math>\text{২৫}</math> সংরক্ষণ করতে কমপক্ষে কত বিটের রেজিস্টার প্রয়োজন?
# একটি ৪-বিট রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math> আছে। এটি দশমিকে কত?
# রেজিস্টার ও ফ্লিপ-ফ্লপের মধ্যে মূল পার্থক্য কী?
# একটি ৪-বিট রেজিস্টারে ক্রমানুসারে নিচের মানগুলো লোড করা হলো: <math>\text{০৭, ১২, ০৩, ০৯}</math> (দশমিক)। প্রতিটি লোডের পরে রেজিস্টারে বাইনারিতে কী থাকবে?
# কোন ধরনের ফ্লিপ-ফ্লপ রেজিস্টার তৈরিতে সবচেয়ে বেশি ব্যবহৃত হয় এবং কেন?
# একটি ৮-বিট রেজিস্টারে দশমিক <math>\text{১৭৮}</math> সংরক্ষণ করো। বাইনারিতে ইনপুট কী হবে?
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার কীভাবে আচরণ করে?
'''উত্তর:'''
# <math>\text{২}^\text{৫} - \text{১} = \text{৩১}</math>
# <math>\text{২}^\text{৪} = \text{১৬} < \text{২৫} \leq \text{৩২} = \text{২}^\text{৫}</math> → কমপক্ষে ৫-বিট রেজিস্টার
# <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
# ফ্লিপ-ফ্লপ একটিমাত্র বিট সংরক্ষণ করে; রেজিস্টার একাধিক ফ্লিপ-ফ্লপ একত্রিত করে বহু বিট সংরক্ষণ করে
# <math>\text{৭} = \text{০১১১}</math>, <math>\text{১২} = \text{১১০০}</math>, <math>\text{৩} = \text{০০১১}</math>, <math>\text{৯} = \text{১০০১}</math>
# ডি ফ্লিপ-ফ্লপ সরল বৈশিষ্ট্য সমীকরণ (<math>Q^+ = D</math>), নিষিদ্ধ অবস্থা নেই, একটিমাত্র ইনপুট
# <math>\text{১৭৮} = \text{১}0\text{১১০০১০}</math> → <math>D_7 D_6 D_5 D_4 D_3 D_2 D_1 D_0 = \text{১০১১০০১০}</math>
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার তার বর্তমান মান অপরিবর্তিত ধরে রাখে ইনপুটে যাই থাকুক প্রভাব পড়ে না।
== সমান্তরাল লোড রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম ডি ফ্লিপ-ফ্লপ কীভাবে একটি বিট মনে রাখতে পারে। এবার সেই ধারণার উপর দাঁড়িয়ে আমরা দেখব কীভাবে একসাথে অনেকগুলো বিট মনে রাখা যায়।
=== সমান্তরাল লোড কী? ===
একটি ড্রয়ারের কথা ভাবো। ধরো তোমার কাছে একটি ড্রয়ার আছে যেখানে চারটি ছোট খোপ আছে। তুমি যখন চাইলে চারটি খোপে একসাথে চারটি জিনিস রাখতে পারো। পরে যখন দরকার, চারটি জিনিস একসাথে বের করতে পারো। ড্রয়ার বন্ধ থাকলে ভেতরের জিনিস কেউ বদলাতে পারে না, কিন্তু খুললেই সব জিনিস দেখা যায় ও বদলানো যায়।
সমান্তরাল লোড রেজিস্টার ঠিক এই ড্রয়ারের মতো কাজ করে। চারটি বিট একসাথে ভেতরে ঢোকে এবং একসাথে বাইরে আসে। "একসাথে" মানে একই ঘড়ির পালসে, পরপর নয়।
এর বিপরীতে ধারাবাহিক রেজিস্টারে বিট একটা একটা করে ঢোকে এবং একটা একটা করে বের হয়, অনেকটা একটা নলের মধ্যে দিয়ে পাথর একটার পর একটা যাওয়ার মতো। সমান্তরাল রেজিস্টারে সব বিট একসাথে যায়, যেন চারটি নল দিয়ে চারটি পাথর একসাথে যাচ্ছে।
=== কেন সমান্তরাল লোড দরকার? ===
ধরো তুমি একটি বাসে উঠতে চাও। একজন একজন করে উঠলে সময় লাগে। কিন্তু যদি চারটি দরজা দিয়ে একসাথে চারজন উঠতে পারে, সময় চারভাগের একভাগ লাগে।
কম্পিউটারে হিসাব করতে গেলে একটি সংখ্যার সব বিট একসাথে প্রক্রিয়া করতে হয়। যদি একটা একটা করে বিট নেওয়া হয়, কাজ অনেক ধীর হয়ে যায়। তাই গাণিতিক লজিক ইউনিট, রেজিস্টার এবং মেমোরির মধ্যে ডেটা সমান্তরালভাবে চলাচল করে। এই কারণেই সমান্তরাল লোড রেজিস্টার ডিজিটাল সিস্টেমের এত গুরুত্বপূর্ণ অংশ।
=== লোড সক্রিয়করণ ছাড়া সরল ৪-বিট সমান্তরাল রেজিস্টার ===
সবচেয়ে সহজ সমান্তরাল রেজিস্টারে কোনো নিয়ন্ত্রণ নেই। প্রতিটি ঘড়ির পালসে যা ইনপুটে থাকে তাই রেজিস্টারে ঢুকে যায়।
==== সার্কিটের গঠন ====
চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো। প্রতিটি ফ্লিপ-ফ্লপ একটি করে বিট সংরক্ষণ করে।
* চারটি ফ্লিপ-ফ্লপ: <math>FF_3</math>, <math>FF_2</math>, <math>FF_1</math>, <math>FF_0</math>
* চারটি ডেটা ইনপুট: <math>D_3</math>, <math>D_2</math>, <math>D_1</math>, <math>D_0</math>
* চারটি আউটপুট: <math>Q_3</math>, <math>Q_2</math>, <math>Q_1</math>, <math>Q_0</math>
* একটি মাত্র ঘড়ি সংকেত সবগুলো ফ্লিপ-ফ্লপে একসাথে সংযুক্ত
এখানে গুরুত্বপূর্ণ বিষয় হলো সব ফ্লিপ-ফ্লপ একই ঘড়ির পালসে সাড়া দেয়। তাই ঘড়ির উর্ধ্বমুখী প্রান্তে চারটি বিট একসাথে লোড হয়।
প্রতিটি ফ্লিপ-ফ্লপের বৈশিষ্ট্য সমীকরণ:
:<math>Q_3(t+\text{১}) = D_3(t)</math>
:<math>Q_2(t+\text{১}) = D_2(t)</math>
:<math>Q_1(t+\text{১}) = D_1(t)</math>
:<math>Q_0(t+\text{১}) = D_0(t)</math>
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সরল ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | <math>D_3</math>
! style="background:#4472C4; color:white;" | <math>D_2</math>
! style="background:#4472C4; color:white;" | <math>D_1</math>
! style="background:#4472C4; color:white;" | <math>D_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শূন্য লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১১১১ লোড হয়েছে
|-
| স্তর || <math>X</math> || <math>X</math> || <math>X</math> || <math>X</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || আগের মান ধরে রাখে
|}
<math>\uparrow</math> মানে উর্ধ্বমুখী প্রান্ত, <math>X</math> মানে যেকোনো মান।
==== ধাপে ধাপে উদাহরণ: <math>\text{১০১১}</math> লোড করা ====
ধরো রেজিস্টারে এখন <math>\text{০০০০}</math> আছে। আমরা <math>\text{১০১১}</math> লোড করতে চাই।
'''প্রস্তুতি:'''
ইনপুটে বসাই: <math>D_3 = \text{১}</math>, <math>D_2 = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_0 = \text{১}</math>।
'''ঘড়ির উর্ধ্বমুখী প্রান্তে কী হয়:'''
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড করার ধাপ
! style="background:#4472C4; color:white;" | ফ্লিপ-ফ্লপ
! style="background:#4472C4; color:white;" | ডি ইনপুট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#70AD47; color:white;" | নতুন কিউ
! style="background:#ED7D31; color:white;" | কী হলো
|-
| <math>FF_3</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_2</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || অপরিবর্তিত রইল
|-
| <math>FF_1</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_0</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|}
'''ফলাফল:''' <math>Q_3Q_2Q_1Q_0 = \text{১০১১}</math>। রেজিস্টার সফলভাবে <math>\text{১০১১}</math> সংরক্ষণ করেছে।
এখন ঘড়ির পালস না দিলে রেজিস্টারে <math>\text{১০১১}</math> থেকেই যাবে, ইনপুট যতই বদলাক না কেন।
=== লোড সক্রিয়করণ সহ রেজিস্টার ===
==== কেন লোড সক্রিয়করণ দরকার? ====
একটি ব্যাংক লকারের কথা ভাবো। লকারে টাকা রাখতে হলে চাবি লাগে। চাবি না থাকলে কেউ ভেতরে কিছু রাখতে বা বের করতে পারে না। ভেতরের টাকা নিরাপদে থাকে।
সরল রেজিস্টারে সমস্যা হলো প্রতিটি ঘড়ির পালসে ডেটা বদলে যায়। কিন্তু অনেক সময় আমরা চাই রেজিস্টারের মান ধরে রাখতে, বদলাতে নয়। কম্পিউটারে একটি রেজিস্টার অনেকক্ষণ ধরে একটি মান ধরে রাখতে পারে এবং শুধু নির্দিষ্ট সময়ে আপডেট হয়।
এই সমস্যার সমাধান হলো লোড সক্রিয়করণ সংকেত। এটি ব্যাংক লকারের চাবির মতো। লোড = <math>\text{১}</math> হলে নতুন ডেটা ঢোকে, লোড = <math>\text{০}</math> হলে আগের মান অপরিবর্তিত থাকে।
==== বুলিয়ান রাশি ====
লোড সক্রিয়করণ সহ প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটে যা যাবে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
এই রাশিটি একটু ভেঙে বোঝা যাক।
যখন <math>Load = \text{১}</math>:
:<math>D_i = \text{১} \cdot Data_i + \text{০} \cdot Q_i = Data_i + \text{০} = Data_i</math>
তাই ফ্লিপ-ফ্লপে নতুন ডেটা লোড হবে।
যখন <math>Load = \text{০}</math>:
:<math>D_i = \text{০} \cdot Data_i + \text{১} \cdot Q_i = \text{০} + Q_i = Q_i</math>
তাই ফ্লিপ-ফ্লপ আগের মান ধরে রাখবে কারণ ডি ইনপুটে কিউ-এর মানই যাচ্ছে। পরের কিউ = বর্তমান কিউ।
এই রাশিটি একটি মাল্টিপ্লেক্সারের মতো কাজ করে। লোড সংকেত ঠিক করে কোন পথে ডেটা ফ্লিপ-ফ্লপে যাবে।
==== লোড সক্রিয়করণ সহ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{০}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || আগের কিউ অপরিবর্তিত || ধারণ অবস্থা: কিছু বদলায় না
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || আগের কিউ অপরিবর্তিত || লোড নিষ্ক্রিয়, ইনপুট উপেক্ষিত
|-
| <math>\text{০}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{১}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শূন্য লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || ১১১১ লোড হয়েছে
|-
| <math>\text{১}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
==== লজিক সার্কিটে ব্যবহৃত গেট ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড সক্রিয়করণ সহ রেজিস্টারের গেট সারণি
! style="background:#4472C4; color:white;" | গেটের ধরন
! style="background:#4472C4; color:white;" | সংখ্যা
! style="background:#4472C4; color:white;" | প্রতিটির ইনপুট
! style="background:#ED7D31; color:white;" | কাজ
|-
| অ্যান্ড গেট (প্রথম দল) || ৪টি || <math>Load</math>, <math>Data_i</math> || <math>Load \cdot Data_i</math> তৈরি করে
|-
| নট গেট || ১টি || <math>Load</math> || <math>\overline{Load}</math> তৈরি করে
|-
| অ্যান্ড গেট (দ্বিতীয় দল) || ৪টি || <math>\overline{Load}</math>, <math>Q_i</math> || <math>\overline{Load} \cdot Q_i</math> তৈরি করে
|-
| অর গেট || ৪টি || দুটি অ্যান্ড গেটের আউটপুট || <math>D_i</math> তৈরি করে
|-
| ডি ফ্লিপ-ফ্লপ || ৪টি || <math>D_i</math>, ঘড়ি || বিট সংরক্ষণ করে
|}
মোট গেট: ১টি নট গেট, ৮টি অ্যান্ড গেট, ৪টি অর গেট এবং ৪টি ডি ফ্লিপ-ফ্লপ।
লক্ষ করো নট গেট মাত্র একটি। কারণ <math>\overline{Load}</math> একবার তৈরি হলে চারটি ফ্লিপ-ফ্লপে একই সংকেত দেওয়া যায়। এটি সার্কিট সহজ রাখে।
==== মাল্টিপ্লেক্সার দিয়ে বিকল্প বাস্তবায়ন ====
লোড সক্রিয়করণ সহ রেজিস্টার আসলে প্রতিটি বিটে একটি ২-থেকে-১ মাল্টিপ্লেক্সার ব্যবহার করে। এই মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়।
* পথ ১ (লোড = <math>\text{১}</math>): নতুন ডেটা ফ্লিপ-ফ্লপে যায়
* পথ ২ (লোড = <math>\text{০}</math>): ফ্লিপ-ফ্লপের আউটপুট আবার ফ্লিপ-ফ্লপের ইনপুটে ফেরত যায়
এই ফেরত যাওয়ার পথকে প্রতিক্রিয়া পথ বলে। এই পথের কারণে ফ্লিপ-ফ্লপ তার নিজের মান বারবার নিজেকেই ফিরিয়ে দেয়, ফলে মান অপরিবর্তিত থাকে।
=== ক্লিয়ার অপারেশন ===
রেজিস্টারের সব বিট শূন্য করার প্রয়োজন হয় অনেক ক্ষেত্রে। কম্পিউটার চালু হওয়ার সময়, নতুন হিসাব শুরু করার আগে বা কোনো ত্রুটি পুনরুদ্ধারের সময় রেজিস্টার পরিষ্কার করতে হয়।
==== তুলনা ====
পরিষ্কার অপারেশন দুটি পদ্ধতিতে করা যায়।
'''ঘড়ি-নির্ভর পরিষ্কার:''' একটি নিয়ন্ত্রণ সংকেত দিয়ে ফ্লিপ-ফ্লপের ডি ইনপুটকে শূন্য করা হয় এবং পরের ঘড়ির পালসে শূন্য লোড হয়। এই পদ্ধতি নিরাপদ কারণ ঘড়ির সাথে তাল মিলিয়ে কাজ হয়।
এই পদ্ধতিতে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i \cdot \overline{Clear}</math>
যখন <math>Clear = \text{১}</math> এবং <math>Load = \text{০}</math>:
:<math>D_i = \text{০} + Q_i \cdot \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে সব ফ্লিপ-ফ্লপ শূন্য হয়।
'''ঘড়ি-স্বাধীন পরিষ্কার:''' ফ্লিপ-ফ্লপের ক্লিয়ার পিন সরাসরি ব্যবহার করা হয়। ঘড়ির পালসের জন্য অপেক্ষা করতে হয় না। এটি দ্রুত কিন্তু ঘড়ির সাথে তাল মেলায় না।
আধুনিক ডিজিটাল সিস্টেমে ঘড়ি-নির্ভর পরিষ্কার পছন্দ করা হয় কারণ এতে সার্কিটের আচরণ আরও অনুমানযোগ্য থাকে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দুটি পরিষ্কার পদ্ধতির তুলনা
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ঘড়ি-নির্ভর পরিষ্কার
! style="background:#C00000; color:white;" | ঘড়ি-স্বাধীন পরিষ্কার
|-
| কখন কার্যকর হয় || পরের ঘড়ির পালসে || তাৎক্ষণিক
|-
| ঘড়ির সাথে তাল || হ্যাঁ || না
|-
| ব্যবহারের সুবিধা || নিরাপদ, অনুমানযোগ্য || দ্রুত
|-
| পিন || নিয়ন্ত্রণ ইনপুট || ফ্লিপ-ফ্লপের ক্লিয়ার পিন
|-
| আধুনিক সিস্টেমে পছন্দ || বেশি পছন্দনীয় || কম পছন্দনীয়
|}
=== ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি ===
একটি পূর্ণাঙ্গ ৪-বিট রেজিস্টারে তিনটি অপারেশন হতে পারে: লোড, ধারণ এবং পরিষ্কার।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>X</math> || <math>\uparrow</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার || সব বিট শূন্য হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>X</math> || আগের কিউ || ধারণ || মান অপরিবর্তিত
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড || নতুন মান লোড হয়
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || লোড || শূন্য লোড হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|-
| <math>\text{০}</math> || <math>\text{১}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|}
এই সারণি থেকে গুরুত্বপূর্ণ বিষয়:
* পরিষ্কার সংকেত সবচেয়ে বেশি অগ্রাধিকার পায়
* ঘড়ির প্রান্ত ছাড়া কিছুই বদলায় না (ঘড়ি-স্বাধীন পরিষ্কার ছাড়া)
* লোড = <math>\text{০}</math> হলে ঘড়ির পালস আসলেও মান বদলায় না
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: পরপর তিনটি অপারেশন ====
একটি ৪-বিট রেজিস্টার শুরুতে অজানা অবস্থায় আছে। নিচের ক্রমে অপারেশন করা হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | কিউ (পরে)
! style="background:#ED7D31; color:white;" | কী হলো
|-
| শুরু || - || - || - || অজানা || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>X</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার হলো
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১১০১}</math> || <math>\text{১১০১}</math> || ১১০১ লোড হলো
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{১১০১}</math> || মান ধরে রইল, ইনপুট উপেক্ষিত
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১১১১}</math> || <math>\text{১১০১}</math> || এখনও ধরে রইল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || ০১১০ লোড হলো
|}
ধাপ ৩ ও ৪-এ লক্ষ করো, ইনপুটে যাই থাকুক লোড = <math>\text{০}</math> থাকায় রেজিস্টারের মান বদলায়নি। এটাই ধারণ অপারেশন।
==== উদাহরণ ২: লোড সক্রিয়করণ রাশি যাচাই ====
রেজিস্টারে <math>Q = \text{১১০০}</math> আছে। লোড = <math>\text{০}</math> এবং ডেটা = <math>\text{১০১০}</math> দিলে প্রতিটি বিটের ডি ইনপুট হিসাব করো।
বিট ৩-এর জন্য:
:<math>D_3 = Load \cdot Data_3 + \overline{Load} \cdot Q_3 = \text{০} \cdot \text{১} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{০} \cdot \text{০} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{০} \cdot \text{১} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{০} \cdot \text{০} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = D_3D_2D_1D_0 = \text{১১০০}</math>।
রেজিস্টারের মান অপরিবর্তিত রইল কারণ ডি ইনপুটে আগের কিউ-এর মানই গেল।
==== উদাহরণ ৩: লোড সংকেত = <math>\text{১}</math> দিয়ে মান পরিবর্তন ====
একই রেজিস্টারে <math>Q = \text{১১০০}</math>। এবার লোড = <math>\text{১}</math> এবং ডেটা = <math>\text{১০১০}</math>।
বিট ৩-এর জন্য:
:<math>D_3 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০} + \text{০} = \text{০}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১} + \text{০} = \text{১}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = \text{১০১০}</math>।
নতুন ডেটা <math>\text{১০১০}</math> লোড হয়েছে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ উদাহরণ ২ ও ৩-এর পাশাপাশি তুলনা
! style="background:#4472C4; color:white;" | বিট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#C00000; color:white;" | লোড=০, নতুন কিউ
! style="background:#70AD47; color:white;" | লোড=১, নতুন কিউ
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| style="background:#f2f2f2;" colspan="2" | ফলাফল || style="background:#f2f2f2;" | || style="background:#f2f2f2;" | <math>\text{১১০০}</math> (অপরিবর্তিত) || style="background:#f2f2f2;" | <math>\text{১০১০}</math> (নতুন)
|}
=== বাস্তব প্রয়োগ ===
==== প্রসেসর রেজিস্টার ====
কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ অংশে অনেকগুলো রেজিস্টার থাকে। এগুলো সব সমান্তরাল লোড রেজিস্টার। গাণিতিক লজিক ইউনিট যখন দুটি সংখ্যা যোগ করে, ফলাফল একটি রেজিস্টারে লোড হয়। পরের নির্দেশ না আসা পর্যন্ত সেই মান ধরে রাখে।
==== বাস ব্যবস্থা ====
কম্পিউটারে বিভিন্ন অংশের মধ্যে ডেটা বাস দিয়ে চলাচল করে। বাস একটি ভাগ করা পথ, তাই একবারে শুধু একটি অংশ ডেটা পাঠাতে পারে। লোড সক্রিয়করণ সংকেত ঠিক করে কোন রেজিস্টার বাস থেকে ডেটা নেবে। এতে একাধিক রেজিস্টার একই বাসে সংযুক্ত থাকলেও শুধু নির্দিষ্ট রেজিস্টারে ডেটা লোড হয়।
==== ডেটা ধারণ ====
ডিজিটাল নিয়ন্ত্রণ ব্যবস্থায় একটি পরিমাপ নিয়ে কিছুক্ষণ ধরে রাখার দরকার হয়। যেমন তাপমাত্রা পরিমাপ করে রেখে পরে তুলনা করা। সমান্তরাল লোড রেজিস্টারের ধারণ অপারেশন এই কাজ করে।
=== অনুশীলনী ===
# একটি ৪-বিট সমান্তরাল রেজিস্টারে <math>Q = \text{১০১০}</math> আছে। লোড = <math>\text{০}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# লোড সক্রিয়করণ সহ রেজিস্টারে প্রতিটি বিটের ডি ইনপুটের বুলিয়ান রাশি লেখো।
# একটি ৪-বিট রেজিস্টারে <math>Q = \text{০১১১}</math> আছে। লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০০১}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# নিচের ধাপগুলোর পর রেজিস্টারের মান কী হবে?
** শুরু: <math>Q = \text{১১১১}</math>
** ধাপ ১: পরিষ্কার সক্রিয়, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{১}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: লোড = <math>\text{০}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
# লোড সক্রিয়করণ সহ রেজিস্টারে <math>Q = \text{১১০০}</math> এবং লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১০০}</math> দিলে বিট ২-এর ডি ইনপুট হিসাব করো।
# ঘড়ি-নির্ভর এবং ঘড়ি-স্বাধীন পরিষ্কারের মধ্যে দুটি পার্থক্য লেখো।
# লোড সক্রিয়করণ ছাড়া সরল রেজিস্টারে সমস্যা কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-বিট রেজিস্টারে প্রাথমিকভাবে <math>Q = \text{০০০০}</math>। নিচের ক্রমে অপারেশন করলে প্রতিটি ধাপে কিউ কী হবে?
** ধাপ ১: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০১০}</math>, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{০}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: পরিষ্কার, ঘড়ির পালস
** ধাপ ৪: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
'''উত্তর:'''
# <math>Q = \text{১০১০}</math> অপরিবর্তিত থাকবে কারণ লোড = <math>\text{০}</math> মানে ধারণ অপারেশন
# <math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
# <math>Q = \text{১০০১}</math>; লোড = <math>\text{১}</math> হওয়ায় নতুন ডেটা সরাসরি লোড হয়েছে
# ধাপ ১ পরে: <math>\text{০০০০}</math>; ধাপ ২ পরে: <math>\text{০১০১}</math>; ধাপ ৩ পরে: <math>\text{০১০১}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে)
# বিট ২ এর জন্য: <math>D_2 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>; তাই <math>Q_2</math> পালসের পরে <math>\text{১}</math> হবে
# পার্থক্য ১: ঘড়ি-নির্ভর পরিষ্কার পরের ঘড়ির পালসে কার্যকর হয়, ঘড়ি-স্বাধীন পরিষ্কার তাৎক্ষণিক কার্যকর হয়। পার্থক্য ২: ঘড়ি-নির্ভর পরিষ্কার ঘড়ির সাথে তাল মেলায় তাই আধুনিক সিস্টেমে বেশি পছন্দনীয়, ঘড়ি-স্বাধীন পরিষ্কার ঘড়ির সাথে তাল মেলায় না তাই কম ব্যবহৃত হয়
# সমস্যা হলো প্রতিটি ঘড়ির পালসে ইনপুটের মান রেজিস্টারে ঢুকে যায়, চাই বা না চাই। বাস্তব উদাহরণ: কম্পিউটারে যদি রেজিস্টারের লোড সক্রিয়করণ না থাকে, তাহলে বাসে অন্য ডিভাইসের ডেটা থাকলেও সেই ডেটা রেজিস্টারে ঢুকে আগের মান নষ্ট হয়ে যাবে
# ধাপ ১ পরে: <math>Q = \text{১০১০}</math>; ধাপ ২ পরে: <math>Q = \text{১০১০}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে); ধাপ ৩ পরে: <math>Q = \text{০০০০}</math>; ধাপ ৪ পরে: <math>Q = \text{১১১১}</math>
== দ্বিমুখী শিফট রেজিস্টার ও সার্বজনীন রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম শিফট রেজিস্টার কীভাবে বিট একদিকে সরায়। কিন্তু শুধু একদিকে সরাতে পারলে কাজের অনেক সীমাবদ্ধতা থাকে। এই ভাগে আমরা দেখব কীভাবে দুই দিকেই শিফট করা যায় এবং কীভাবে একটিমাত্র রেজিস্টার দিয়ে চারটি আলাদা কাজ করা যায়।
=== দ্বিমুখী শিফট: দুই দিকের এস্কালেটর ===
বিমানবন্দরে এমন এস্কালেটর থাকে যা দুই দিকেই চলতে পারে। সকালে যাত্রীরা আসে তখন এস্কালেটর একদিকে চলে, বিকেলে সবাই ফেরে তখন অন্যদিকে চলে। একটি বোতাম টিপলেই দিক বদলে যায়।
দ্বিমুখী শিফট রেজিস্টার ঠিক এই এস্কালেটরের মতো। একটি নিয়ন্ত্রণ সংকেত দিয়ে বিটগুলো ডানে বা বামে সরানো যায়। নিয়ন্ত্রণ সংকেত <math>S = \text{১}</math> হলে ডানে, <math>S = \text{০}</math> হলে বামে।
কেন দুই দিকে শিফট দরকার? ভাবো একটি সংখ্যাকে দুই দিয়ে গুণ করতে বাইনারিতে বামে এক শিফট করলেই হয়। দুই দিয়ে ভাগ করতে ডানে এক শিফট করলেই হয়। তাই দ্বিমুখী শিফট রেজিস্টার দিয়ে দ্রুত গুণ ও ভাগ করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ শিফটের গাণিতিক অর্থ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | শিফটের দিক
! style="background:#4472C4; color:white;" | উদাহরণ
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| দুই দিয়ে গুণ || বামে এক শিফট || <math>\text{০০১১}</math> → <math>\text{০১১০}</math> || ৩ × ২ = ৬
|-
| দুই দিয়ে ভাগ || ডানে এক শিফট || <math>\text{১১০০}</math> → <math>\text{০১১০}</math> || ১২ ÷ ২ = ৬
|-
| চার দিয়ে গুণ || বামে দুই শিফট || <math>\text{০০০১}</math> → <math>\text{০১০০}</math> || ১ × ৪ = ৪
|-
| চার দিয়ে ভাগ || ডানে দুই শিফট || <math>\text{১০০০}</math> → <math>\text{০০১০}</math> || ৮ ÷ ৪ = ২
|}
=== দ্বিমুখী শিফট রেজিস্টারের গঠন ===
একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে চারটি ডি ফ্লিপ-ফ্লপ থাকে। পার্থক্য হলো প্রতিটি ফ্লিপ-ফ্লপের আগে একটি মাল্টিপ্লেক্সার থাকে।
মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়:
* ডানে শিফটের পথ: বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* বামে শিফটের পথ: ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
নিয়ন্ত্রণ সংকেত <math>S</math> মাল্টিপ্লেক্সারকে বলে কোন পথ বেছে নিতে।
==== বুলিয়ান রাশি ====
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটের রাশি:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এখানে:
* <math>Q_{i-1}</math> মানে বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* <math>Q_{i+1}</math> মানে ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
যখন <math>S = \text{১}</math> (ডানে শিফট):
:<math>D_i = \text{১} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} = Q_{i-1}</math>
প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়, ফলে সব বিট ডানে সরে।
যখন <math>S = \text{০}</math> (বামে শিফট):
:<math>D_i = \text{০} \cdot Q_{i-1} + \text{১} \cdot Q_{i+1} = Q_{i+1}</math>
প্রতিটি ফ্লিপ-ফ্লপ ডান পাশের মান নেয়, ফলে সব বিট বামে সরে।
==== প্রান্তের ফ্লিপ-ফ্লপের বিশেষ ব্যবস্থা ====
সবচেয়ে বাম ফ্লিপ-ফ্লপ (<math>FF_3</math>) এর বাম পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই ডানে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে ডানমুখী ধারাবাহিক ইনপুট বলে।
সবচেয়ে ডান ফ্লিপ-ফ্লপ (<math>FF_0</math>) এর ডান পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই বামে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে বামমুখী ধারাবাহিক ইনপুট বলে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দ্বিমুখী শিফট রেজিস্টারের ইনপুট-আউটপুট
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>S</math> || নিয়ন্ত্রণ ইনপুট || <math>\text{১}</math> = ডানে, <math>\text{০}</math> = বামে
|-
| ডানমুখী ধারাবাহিক ইনপুট (<math>SI_R</math>) || ইনপুট || ডানে শিফটের সময় বাম প্রান্তে যে বিট ঢোকে
|-
| বামমুখী ধারাবাহিক ইনপুট (<math>SI_L</math>) || ইনপুট || বামে শিফটের সময় ডান প্রান্তে যে বিট ঢোকে
|-
| <math>Q_3, Q_2, Q_1, Q_0</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| ঘড়ি || ইনপুট || সব ফ্লিপ-ফ্লপে একই ঘড়ি
|}
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বিমুখী শিফট রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | আগের অবস্থা
! style="background:#70AD47; color:white;" | পরের অবস্থা
! style="background:#ED7D31; color:white;" | অপারেশন
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>SI_R \cdot Q_3Q_2Q_1</math> || ডানে শিফট, <math>SI_R</math> বাম প্রান্তে ঢোকে
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_2Q_1Q_0 \cdot SI_L</math> || বামে শিফট, <math>SI_L</math> ডান প্রান্তে ঢোকে
|-
| <math>X</math> || স্তর || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_3Q_2Q_1Q_0</math> || ধারণ, কিছু বদলায় না
|}
==== উদাহরণ: ডানে ও বামে শিফট ====
ধরো রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>SI_R = \text{০}</math> এবং <math>SI_L = \text{১}</math>।
ডানে শিফট (<math>S = \text{১}</math>), তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_R</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
এখন বামে শিফট (<math>S = \text{০}</math>), শুরু থেকে তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_L</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
লক্ষ করো বামে শিফটে ডান প্রান্ত থেকে <math>SI_L = \text{১}</math> ঢুকছে, তাই ডান দিকের বিটগুলো একে একে <math>\text{১}</math> হয়ে যাচ্ছে।
=== সার্বজনীন রেজিস্টার ===
==== সার্বজনীন মানে কী? ====
একটি সুইস আর্মি ছুরির কথা ভাবো। এতে একসাথে ছুরি, কাঁচি, স্ক্রু ড্রাইভার, করাত সব আছে। একটি যন্ত্র দিয়ে অনেক কাজ হয়। একটি বোতাম বা লিভার দিয়ে সঠিক যন্ত্র বের করা যায়।
সার্বজনীন রেজিস্টার ঠিক এই সুইস আর্মি ছুরির মতো। দুটি মোড নির্বাচন বিট <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি আলাদা অপারেশন করা যায়।
==== মোড নির্বাচন সারণি ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ সার্বজনীন রেজিস্টারের মোড সারণি
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#70AD47; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | বিস্তারিত
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || রেজিস্টারের মান অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || বিট ডানে সরে, বাম প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || বিট বামে সরে, ডান প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || চার বিট একসাথে লোড হয়
|}
==== চারটি মোডের বুলিয়ান রাশি ====
সার্বজনীন রেজিস্টারে প্রতিটি ফ্লিপ-ফ্লপের আগে একটি ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে। মাল্টিপ্লেক্সার <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি পথের একটি বেছে নেয়।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1S_0 \cdot Data_i</math>
এই রাশিটি ভেঙে বোঝা যাক:
* <math>S_1S_0 = \text{০০}</math>: <math>D_i = Q_i</math>, নিজের মান নিজেই ফেরত পায়, ধারণ
* <math>S_1S_0 = \text{০১}</math>: <math>D_i = Q_{i-1}</math>, বাম পাশের মান নেয়, ডানে শিফট
* <math>S_1S_0 = \text{১০}</math>: <math>D_i = Q_{i+1}</math>, ডান পাশের মান নেয়, বামে শিফট
* <math>S_1S_0 = \text{১১}</math>: <math>D_i = Data_i</math>, নতুন ডেটা লোড হয়
==== মোড ০০: ধারণ ====
এই মোডে রেজিস্টার একটি তথ্য আঁকড়ে ধরে রাখে। বাইরে যাই হোক না কেন, ভেতরের মান নিরাপদ।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট সেই ফ্লিপ-ফ্লপের আউটপুটই পায়। তাই পরের ঘড়ির পালসেও মান বদলায় না।
==== মোড ০১: ডানে শিফট ====
ট্রেনের কামরার মতো ভাবো। একটি কামরা সরে গেলে পরের কামরা সেই জায়গায় আসে। ডানে শিফটে প্রতিটি বিট ডান পাশের ফ্লিপ-ফ্লপে চলে যায়। বাম প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১০: বামে শিফট ====
বিপরীতভাবে প্রতিটি বিট বাম পাশের ফ্লিপ-ফ্লপে চলে যায়। ডান প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১১: সমান্তরাল লোড ====
এই মোড আগের ভাগে দেখা সমান্তরাল লোড রেজিস্টারের মতো। চারটি বিট একসাথে রেজিস্টারে ঢোকে।
==== সম্পূর্ণ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_2</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_1</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_0</math> (পরে)
! style="background:#ED7D31; color:white;" | মোড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>SI_R</math> || <math>SI_R</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || ডানে শিফট
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>SI_L</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || <math>SI_L</math> || বামে শিফট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>D_3D_2D_1D_0</math> || <math>D_3</math> || <math>D_2</math> || <math>D_1</math> || <math>D_0</math> || সমান্তরাল লোড
|-
| <math>X</math> || <math>X</math> || স্তর || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ (ঘড়ি প্রান্ত নেই)
|}
==== সার্বজনীন রেজিস্টারের উপমা ====
একটি চার লেনের রাস্তার কথা ভাবো। রাস্তার একটি কেন্দ্রীয় নিয়ন্ত্রণ কক্ষ আছে। সেখান থেকে দুটি সুইচ দিয়ে রাস্তার আচরণ বদলানো যায়।
* সুইচ ০০: সব গাড়ি থামো, যে যেখানে আছ
* সুইচ ০১: সব গাড়ি এক লেন ডানে সরো
* সুইচ ১০: সব গাড়ি এক লেন বামে সরো
* সুইচ ১১: নতুন গাড়ি সব লেনে একসাথে প্রবেশ করো
সার্বজনীন রেজিস্টারের <math>S_1</math> ও <math>S_0</math> সেই দুটি সুইচের মতো।
=== ৭৪১৯৪ চিপের পরিচয় ===
বাস্তব জীবনে সার্বজনীন রেজিস্টার হিসেবে ৭৪১৯৪ চিপ সবচেয়ে পরিচিত। এটি একটি ৪-বিট দ্বিমুখী সার্বজনীন শিফট রেজিস্টার।
==== পিন বিন্যাস ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৭৪১৯৪ চিপের পিন বিবরণ
! style="background:#4472C4; color:white;" | পিনের নাম
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | বিবরণ
|-
| <math>A, B, C, D</math> || সমান্তরাল ডেটা ইনপুট || চারটি বিট একসাথে লোড করার ইনপুট
|-
| <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| <math>S_0, S_1</math> || মোড নির্বাচন || দুটি নিয়ন্ত্রণ বিট
|-
| <math>SR</math> (ডানমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || ডানে শিফটের সময় বাম প্রান্তে ঢোকে
|-
| <math>SL</math> (বামমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || বামে শিফটের সময় ডান প্রান্তে ঢোকে
|-
| <math>CLK</math> || ঘড়ি || উর্ধ্বমুখী প্রান্ত-ট্রিগার
|-
| <math>\overline{CLR}</math> || ক্লিয়ার || সক্রিয়-নিম্ন, তাৎক্ষণিক পরিষ্কার
|-
| <math>V_{CC}</math> || বিদ্যুৎ || <math>+\text{৫V}</math>
|-
| <math>GND</math> || ভূমি || <math>\text{০V}</math>
|}
==== ৭৪১৯৪ চিপের কার্যক্রম ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ এর কার্যক্রম সারণি
! style="background:#C00000; color:white;" | <math>\overline{CLR}</math>
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#70AD47; color:white;" | অপারেশন
|-
| <math>\text{০}</math> || <math>X</math> || <math>X</math> || <math>X</math> || তাৎক্ষণিক পরিষ্কার, সব আউটপুট <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || ধারণ
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || ডানে শিফট, <math>SR</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || বামে শিফট, <math>SL</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || সমান্তরাল লোড
|}
লক্ষ করো ৭৪১৯৪-তে <math>S_0</math> ও <math>S_1</math>-এর সংজ্ঞা আগের সারণির বিপরীত দিক থেকে আসা। চিপের ডেটাশিট দেখে নিশ্চিত হওয়া ভালো।
==== বাস্তব প্রয়োগে ৭৪১৯৪ ====
'''ধারাবাহিক থেকে সমান্তরাল রূপান্তর:''' ধারাবাহিকভাবে আসা ডেটা শিফট করে রেজিস্টারে জমা হয়, তারপর সমান্তরালভাবে বের হয়। যোগাযোগ ব্যবস্থায় এই প্রক্রিয়া সাধারণ।
'''সমান্তরাল থেকে ধারাবাহিক রূপান্তর:''' সমান্তরালভাবে ডেটা লোড করে শিফট করে ধারাবাহিকভাবে বের করা হয়।
'''বৃত্তাকার রেজিস্টার:''' আউটপুটকে আবার ইনপুটে দিলে বিট বৃত্তাকারে ঘোরে। কখনো একই প্যাটার্ন বারবার তৈরি করতে এটি ব্যবহার হয়।
'''ক্রমিক গণনাকারী:''' বিশেষভাবে সংযুক্ত করলে ৭৪১৯৪ একটি জনসন গণনাকারী বা রিপল গণনাকারী তৈরি করতে পারে।
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ধারণ মোড (মোড ০০) ====
রেজিস্টারে <math>\text{১০১১}</math> আছে। <math>S_1S_0 = \text{০০}</math> দিয়ে তিনটি ঘড়ির পালস দেওয়া হলো।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ধারণ মোডের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১০১১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ২ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ৩ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|}
ঘড়ি পালস দেওয়া হচ্ছে কিন্তু মোড ০০ থাকায় রেজিস্টারের মান বদলাচ্ছে না। এটাই ধারণ মোডের কাজ।
==== উদাহরণ ২: ডানে শিফট মোড (মোড ০১) ====
রেজিস্টারে <math>\text{১১০০}</math> আছে। <math>S_1S_0 = \text{০১}</math>, ধারাবাহিক ইনপুট <math>SI_R = \text{১}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রাথমিক
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>SI_R</math> বামে ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এবার <math>\text{০}</math> ঢুকল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার <math>\text{০}</math>
|}
প্রতিটি পালসে বিট ডানে এক ঘর সরছে। বাম প্রান্ত থেকে <math>SI_R</math>-এর মান ঢুকছে। ডান প্রান্তের বিট বেরিয়ে যাচ্ছে।
==== উদাহরণ ৩: বামে শিফট মোড (মোড ১০) ====
রেজিস্টারে <math>\text{০০১১}</math> আছে। <math>S_1S_0 = \text{১০}</math>, ধারাবাহিক ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_L</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রাথমিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || বামে গেল, ডানে <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সব বিট বেরিয়ে গেল
|}
<math>\text{০০১১}</math> কে বামে চার বার শিফট করলে সব বিট বেরিয়ে যায় এবং <math>SI_L = \text{০}</math> থেকে শূন্য ঢোকায় রেজিস্টার শূন্য হয়ে যায়। এটি দুই দিয়ে বারবার গুণ করার মতো।
==== উদাহরণ ৪: সমান্তরাল লোড (মোড ১১) ====
রেজিস্টারে <math>\text{০০০০}</math> আছে। <math>S_1S_0 = \text{১১}</math>, ডেটা ইনপুট = <math>\text{১০১০}</math>।
একটি ঘড়ির পালসে:
:<math>Q_3 = D_3 = \text{১}</math>
:<math>Q_2 = D_2 = \text{০}</math>
:<math>Q_1 = D_1 = \text{১}</math>
:<math>Q_0 = D_0 = \text{০}</math>
রেজিস্টারে এখন <math>\text{১০১০}</math>। মাত্র একটি পালসে চারটি বিট একসাথে লোড হয়েছে।
==== উদাহরণ ৫: মোড পরিবর্তন করে ধারাবাহিক থেকে সমান্তরাল ====
ধরো ধারাবাহিকভাবে <math>\text{১, ১, ০, ১}</math> বিট আসছে। আমরা এগুলো শিফট রেজিস্টারে জমিয়ে সমান্তরালভাবে পড়তে চাই।
প্রথমে মোড ০১ (ডানে শিফট) দিয়ে চারটি পালস:
{| class="wikitable" style="text-align:center; width:90%;"
|+ ধারাবাহিক থেকে সমান্তরাল রূপান্তর
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || <math>\text{০০০০}</math> || খালি রেজিস্টার
|-
| ১ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০০০}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১১০০}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০১}</math> || <math>\text{০}</math> || <math>\text{০১১০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০১১}</math> || চতুর্থ বিট ঢুকল
|-
| ৫ || <math>\text{০০}</math> || - || <math>\text{১০১১}</math> || মোড ০০, সমান্তরাল পড়া
|}
চার পালস পর রেজিস্টারে <math>\text{১০১১}</math> আছে। এখন মোড ০০-এ গিয়ে সমান্তরালভাবে চারটি বিট একসাথে পড়া যাবে।
=== সার্বজনীন রেজিস্টারের সুবিধা ও সীমাবদ্ধতা ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের তুলনামূলক বিশ্লেষণ
! style="background:#4472C4; color:white;" | দিক
! style="background:#70AD47; color:white;" | সুবিধা
! style="background:#C00000; color:white;" | সীমাবদ্ধতা
|-
| কার্যকারিতা || চারটি মোড, একটি চিপে সব || সরল রেজিস্টারের চেয়ে জটিল
|-
| নমনীয়তা || প্রয়োজনমতো মোড বদলানো যায় || দুটি অতিরিক্ত নিয়ন্ত্রণ সংকেত দরকার
|-
| খরচ || একটি চিপে সব কাজ, খরচ কম || অতিরিক্ত মাল্টিপ্লেক্সার গেট লাগে
|-
| গতি || ঘড়ির একটি পালসে মোড বদলানো যায় || সমান্তরাল লোড একটি পালস নেয়
|-
| জায়গা || একটি চিপ, কম জায়গা || সরল রেজিস্টারের চেয়ে বেশি ট্রানজিস্টর
|}
=== অনুশীলনী ===
# একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> দিয়ে দুটি পালস দিলে রেজিস্টারে কী থাকবে?
# একই রেজিস্টারে <math>\text{১০১০}</math> আছে। এবার <math>S = \text{০}</math> এবং <math>SI_L = \text{১}</math> দিয়ে দুটি পালস দিলে কী হবে?
# দ্বিমুখী শিফট রেজিস্টারে বিট ডানে শিফট হলে কোন পাশ থেকে নতুন বিট ঢোকে?
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> মানে কোন মোড? এই মোডে <math>D_i</math>-এর রাশি কী?
# একটি সার্বজনীন রেজিস্টারে <math>\text{০০০০}</math> আছে। নিচের ধাপে কী হবে?
** ধাপ ১: মোড <math>\text{১১}</math>, ডেটা = <math>\text{১১০১}</math>, একটি পালস
** ধাপ ২: মোড <math>\text{০১}</math>, <math>SI_R = \text{০}</math>, দুটি পালস
** ধাপ ৩: মোড <math>\text{০০}</math>, একটি পালস
# ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী হয় এবং এটি কোন ধরনের পরিষ্কার?
# বামে এক শিফট করলে একটি বাইনারি সংখ্যার কী গাণিতিক পরিবর্তন হয়? <math>\text{০০১১}</math> (দশমিকে ৩) এর উদাহরণ দিয়ে দেখাও।
# সার্বজনীন রেজিস্টারের প্রতিটি ফ্লিপ-ফ্লপের আগে কত ইনপুটের মাল্টিপ্লেক্সার থাকে এবং কেন?
# ধারাবাহিক থেকে সমান্তরাল রূপান্তরে কোন দুটি মোড ব্যবহার হয় এবং কেন?
# একটি সার্বজনীন রেজিস্টারে <math>\text{১১১১}</math> আছে। মোড ১০ (<math>SI_L = \text{০}</math>) দিয়ে চারটি পালস দিলে কী হবে এবং দশমিক মানের কী পরিবর্তন হলো?
'''উত্তর:'''
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{০০১০}</math>; ডানে দুই শিফট, বাম প্রান্তে <math>\text{০}</math> ঢুকেছে
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{১০১১}</math>; বামে দুই শিফট, ডান প্রান্তে <math>\text{১}</math> ঢুকেছে
# বাম পাশ থেকে ধারাবাহিক ইনপুট <math>SI_R</math> ঢোকে
# মোড ০১ মানে ডানে শিফট; <math>D_i = Q_{i-1}</math> অর্থাৎ প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়
# ধাপ ১ পরে: <math>\text{১১০১}</math>; ধাপ ২ এর প্রথম পালসে: <math>\text{০১১০}</math>; ধাপ ২ এর দ্বিতীয় পালসে: <math>\text{০০১১}</math>; ধাপ ৩ পরে: <math>\text{০০১১}</math> (অপরিবর্তিত)
# <math>\overline{CLR} = \text{০}</math> দিলে তাৎক্ষণিক সব আউটপুট <math>\text{০}</math> হয়ে যায়; এটি ঘড়ি-স্বাধীন পরিষ্কার
# বামে এক শিফট মানে সংখ্যা দুই দিয়ে গুণ হওয়া; <math>\text{০০১১}</math> (দশমিকে ৩) বামে এক শিফটে <math>\text{০১১০}</math> (দশমিকে ৬) হয়, যা ৩ × ২ = ৬
# ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে কারণ চারটি মোডে চারটি আলাদা পথ থেকে একটি বেছে নিতে হয়
# প্রথমে মোড ০১ (ডানে শিফট) দিয়ে ধারাবাহিক বিট ঢোকানো হয়; চারটি পালস পর সব বিট রেজিস্টারে জমা হলে মোড ০০ (ধারণ) এ গিয়ে সমান্তরালভাবে পড়া হয়
# পালস ১: <math>\text{০১১১}</math>; পালস ২: <math>\text{০০১১}</math>; পালস ৩: <math>\text{০০০১}</math>; পালস ৪: <math>\text{০০০০}</math>; দশমিক মান: ১৫ থেকে ৭ থেকে ৩ থেকে ১ থেকে ০, প্রতিটি পালসে দুই দিয়ে ভাগ হচ্ছে
আগের ভাগে আমরা দেখেছিলাম কীভাবে শিফট রেজিস্টার ডেটাকে একদিকে সরায়, ঠিক যেমন সারিতে দাঁড়ানো মানুষ একদিকে সরে যায়। কিন্তু বাস্তব জীবনে তো শুধু এক দিকে যাওয়া হয় না, কখনো কখনো পেছনেও ফিরতে হয়! এই ভাগে আমরা শিখব এমন রেজিস্টার যা দুই দিকেই সরতে পারে, এবং তার চেয়েও বেশি, এমন একটি রেজিস্টার যা চারটি কাজ করতে পারে।
=== দুই-দিকে চলা এস্কালেটরের উপমা ===
বিমানবন্দরে গিয়েছ কখনো? সেখানে এমন চলমান বেল্ট থাকে যেটা কখনো এক দিকে যাত্রীদের নিয়ে যায়, আবার নিয়ন্ত্রণকক্ষ থেকে নির্দেশ দিলে বিপরীত দিকেও চালানো যায়। একটি বোতাম টিপলে ডানে, আরেকটি বোতাম টিপলে বামে।
দ্বিমুখী শিফট রেজিস্টার ঠিক এইরকম। একটি নিয়ন্ত্রণ সংকেত <math>S</math> দিলে ডেটা ডানে সরে, আর <math>S</math> উলটো হলে বামে সরে। ভেতরের বিটগুলো হলো যাত্রী, এবং নিয়ন্ত্রণ সংকেতটি হলো বেল্টের দিক নির্ধারক বোতাম।
এবার ধরো, তোমার কাছে চারটি বিট আছে: <math>Q_3 Q_2 Q_1 Q_0 = 1011</math>।
* <math>S = \text{১}</math> হলে (ডানে শিফট): <math>0101</math> হয়ে যাবে।
* <math>S = \text{০}</math> হলে (বামে শিফট): <math>0110</math> হয়ে যাবে।
একই হার্ডওয়্যার, শুধু একটি সংকেতের পরিবর্তনে দুই ধরনের কাজ!
== দ্বিমুখী শিফট রেজিস্টারের গঠন ==
=== নিয়ন্ত্রণ সংকেত <math>S</math> ===
দ্বিমুখী শিফট রেজিস্টারে একটি বিশেষ নিয়ন্ত্রণ সংকেত <math>S</math> থাকে যা সিদ্ধান্ত নেয় ডেটা কোন দিকে যাবে।
{| class="wikitable" style="width:60%; text-align:center;"
|+ নিয়ন্ত্রণ সংকেত <math>S</math> এর ভূমিকা
! style="background:#2E4057; color:white;" | <math>S</math> এর মান !! style="background:#2E4057; color:white;" | কাজ !! style="background:#2E4057; color:white;" | উপমা
|-
| <math>\text{১}</math> || ডানে শিফট || বেল্ট ডানে চলছে
|-
| <math>\text{০}</math> || বামে শিফট || বেল্ট বামে চলছে
|}
মনে রাখার সহজ উপায়: <math>S = \text{১}</math> মানে "সরাসরি ডানে", <math>S = \text{০}</math> মানে "উলটো দিকে মানে বামে"।
=== বুলিয়ান রাশি ===
প্রতিটি ফ্লিপ-ফ্লপের ইনপুট <math>D_i</math> নির্ধারিত হয় এই রাশি দিয়ে:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এই রাশিটা একটু বিশ্লেষণ করি:
* <math>S \cdot Q_{i-1}</math>: যদি <math>S = \text{১}</math> হয়, তাহলে বামের প্রতিবেশী <math>Q_{i-1}</math> এর মান নিজের মধ্যে আসে, মানে ডানে শিফট।
* <math>\bar{S} \cdot Q_{i+1}</math>: যদি <math>S = \text{০}</math> হয়, তাহলে ডানের প্রতিবেশী <math>Q_{i+1}</math> এর মান নিজের মধ্যে আসে, মানে বামে শিফট।
এই দুই অংশ একটি মাক্সটিপ্লেক্সারের মতো কাজ করে: <math>S</math> এর মান দেখে সিদ্ধান্ত নেয় কোন প্রতিবেশীর মান নেবে।
{| class="wikitable" style="width:80%; text-align:center;"
|+ প্রতিটি বিটের ইনপুট কীভাবে নির্ধারিত হয়
! style="background:#1B4332; color:white;" | বিট !! style="background:#1B4332; color:white;" | <math>D_i</math> এর রাশি !! style="background:#1B4332; color:white;" | <math>S=\text{১}</math> (ডানে) !! style="background:#1B4332; color:white;" | <math>S=\text{০}</math> (বামে)
|-
| <math>D_3</math> (MSB) || <math>S \cdot SI_R + \bar{S} \cdot Q_2</math> || ডান সিরিয়াল ইনপুট || <math>Q_2</math> থেকে আসে
|-
| <math>D_2</math> || <math>S \cdot Q_3 + \bar{S} \cdot Q_1</math> || <math>Q_3</math> থেকে আসে || <math>Q_1</math> থেকে আসে
|-
| <math>D_1</math> || <math>S \cdot Q_2 + \bar{S} \cdot Q_0</math> || <math>Q_2</math> থেকে আসে || <math>Q_0</math> থেকে আসে
|-
| <math>D_0</math> (LSB) || <math>S \cdot Q_1 + \bar{S} \cdot SI_L</math> || <math>Q_1</math> থেকে আসে || বাম সিরিয়াল ইনপুট
|}
এখানে <math>SI_R</math> হলো ডানে শিফটের সময় সবচেয়ে বাম বিটে ঢোকানো নতুন বিট, আর <math>SI_L</math> হলো বামে শিফটের সময় সবচেয়ে ডান বিটে ঢোকানো নতুন বিট।
=== সার্কিট গঠন ===
চার-বিটের দ্বিমুখী শিফট রেজিস্টারে থাকে:
* চারটি ডি ফ্লিপ-ফ্লপ (<math>FF_3, FF_2, FF_1, FF_0</math>)
* প্রতিটি ফ্লিপ-ফ্লপের আগে একটি করে ২-থেকে-১ মাক্সটিপ্লেক্সার
* মাক্সটিপ্লেক্সারের নির্বাচন সংকেত হিসেবে <math>S</math>
প্রতিটি মাক্সটিপ্লেক্সার দুটি ইনপুট পায়: বাম প্রতিবেশীর আউটপুট ও ডান প্রতিবেশীর আউটপুট। <math>S</math> এর মান দেখে সে সিদ্ধান্ত নেয় কোনটা ফ্লিপ-ফ্লপে পাঠাবে।
=== সত্যক সারণী ও উদাহরণ ===
ধরো চার-বিট রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1101</math> এবং সিরিয়াল ইনপুট উভয় দিকেই <math>\text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ দ্বিমুখী শিফটের উদাহরণ
! style="background:#3D405B; color:white;" | ক্লক চক্র !! style="background:#3D405B; color:white;" | <math>S</math> !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | কাজ
|-
| শুরু || || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ডানে শিফট (MSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ডানে শিফট
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || বামে শিফট (LSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার বামে শিফট
|}
দেখো, <math>S</math> পরিবর্তন করে দিকও পরিবর্তন হয়ে যাচ্ছে।
=== হাতে-কলমে হিসাব ===
চক্র ১ যাচাই করা যাক: <math>Q_3 Q_2 Q_1 Q_0 = 1101</math>, <math>S = \text{১}</math>, <math>SI_R = \text{০}</math>।
:<math>D_3 = S \cdot SI_R + \bar{S} \cdot Q_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০}</math>
:<math>D_2 = S \cdot Q_3 + \bar{S} \cdot Q_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১}</math>
:<math>D_1 = S \cdot Q_2 + \bar{S} \cdot Q_0 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১}</math>
:<math>D_0 = S \cdot Q_1 + \bar{S} \cdot SI_L = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0110</math> ✓
== সার্বজনীন রেজিস্টার ==
=== মাক্সওয়েল রেজিস্টারের উপমা ===
কল্পনা করো একজন দক্ষ অফিস সহকারী যে চারটি কাজ করতে পারে: যখন তাকে বলো "স্থির থাকো" সে কিছু পরিবর্তন করে না। যখন বলো "ডানে সরো" সে ডানে যায়। যখন বলো "বামে সরো" সে বামে যায়। আর যখন বলো "সব একসাথে বদলাও" সে পুরো বিষয়টা নতুন করে সাজিয়ে নেয়।
সার্বজনীন রেজিস্টার ঠিক এই সহকারীর মতো। দুটি নিয়ন্ত্রণ সংকেত <math>S_1</math> এবং <math>S_0</math> মিলে চারটি আলাদা আলাদা নির্দেশ দিতে পারে। এই চারটি নির্দেশ হলো সার্বজনীন রেজিস্টারের চারটি মোড।
ঠিক যেমন একটি সুইস আর্মি ছুরিতে চারটি হাতিয়ার থাকে কিন্তু একটিই বস্তু, সার্বজনীন রেজিস্টার একটিই চিপ কিন্তু চারটি কাজ করতে পারে।
=== মোড নির্বাচন সারণি ===
দুটি নিয়ন্ত্রণ সংকেত <math>S_1 S_0</math> মিলে চারটি সমন্বয় সম্ভব:
{| class="wikitable" style="width:90%; text-align:center;"
|+ সার্বজনীন রেজিস্টারের চারটি মোড
! style="background:#1A535C; color:white;" | <math>S_1</math> !! style="background:#1A535C; color:white;" | <math>S_0</math> !! style="background:#1A535C; color:white;" | মোড !! style="background:#1A535C; color:white;" | কাজ !! style="background:#1A535C; color:white;" | বাস্তব উপমা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ মোড || বর্তমান অবস্থা অপরিবর্তিত থাকে || স্থির দাঁড়িয়ে থাকা
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট মোড || সব বিট একটু ডানে সরে || সারি ডানে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট মোড || সব বিট একটু বামে সরে || সারি বামে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড মোড || বাইরে থেকে নতুন ডেটা একসাথে ঢোকে || সবাই একসাথে বদলে যাওয়া
|}
মনে রাখার কৌশল: <math>S_1 S_0</math> কে বাইনারি সংখ্যা হিসেবে দেখো: <math>\text{০০}</math> = স্থির, <math>\text{০১}</math> = ডানে, <math>\text{১০}</math> = বামে, <math>\text{১১}</math> = লোড।
=== প্রতিটি মোডের বিস্তারিত বুলিয়ান রাশি ===
প্রতিটি বিট <math>Q_i</math> এর পরবর্তী অবস্থা নির্ধারণ করে এই রাশি:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1 S_0 \cdot P_i</math>
এখানে <math>P_i</math> হলো সমান্তরাল ইনপুটের <math>i</math> নম্বর বিট।
রাশিটার চারটি অংশ চারটি মোডের জন্য:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রাশির প্রতিটি অংশের ব্যাখ্যা
! style="background:#6B2737; color:white;" | অংশ !! style="background:#6B2737; color:white;" | মোড !! style="background:#6B2737; color:white;" | সক্রিয় হয় কখন !! style="background:#6B2737; color:white;" | কী করে
|-
| <math>\bar{S_1}\bar{S_0} \cdot Q_i</math> || ধারণ || <math>S_1=\text{০}, S_0=\text{০}</math> || নিজের মান নিজে রাখে
|-
| <math>\bar{S_1}S_0 \cdot Q_{i-1}</math> || ডানে শিফট || <math>S_1=\text{০}, S_0=\text{১}</math> || বাম প্রতিবেশীর মান নেয়
|-
| <math>S_1\bar{S_0} \cdot Q_{i+1}</math> || বামে শিফট || <math>S_1=\text{১}, S_0=\text{০}</math> || ডান প্রতিবেশীর মান নেয়
|-
| <math>S_1 S_0 \cdot P_i</math> || সমান্তরাল লোড || <math>S_1=\text{১}, S_0=\text{১}</math> || বাইরের ইনপুট নেয়
|}
=== মোড ০০: ধারণ মোড ===
এই মোডে রেজিস্টার কিছুই করে না, বর্তমান অবস্থা ধরে রাখে।
উপমা: ক্লাসরুমে শিক্ষক বলেছেন "এখন চুপ করে বসো।" কেউ নড়াচড়া করছে না, সবাই যেখানে ছিল সেখানেই আছে।
রাশি: <math>D_i = Q_i</math>
যাচাই: <math>S_1 = \text{০}, S_0 = \text{০}</math> রাখলে মূল রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_i = \text{১} \cdot Q_i + \text{০} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} + \text{০} \cdot P_i = Q_i</math>
=== মোড ০১: ডানে শিফট মোড ===
এই মোডে প্রতিটি বিট তার ডানের প্রতিবেশীর জায়গায় যায়।
উপমা: সারিতে দাঁড়ানো মানুষদের শিক্ষক বললেন "সবাই এক ধাপ ডানে সরো।" <math>Q_3</math> এর জায়গায় যাবে বাইরের সিরিয়াল ইনপুট, আর <math>Q_0</math> থেকে বিটটা বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i-1}</math> (সর্বোচ্চ বিটের জন্য: <math>D_{n-1} = SI_R</math>)
=== মোড ১০: বামে শিফট মোড ===
এই মোডে প্রতিটি বিট তার বামের প্রতিবেশীর জায়গায় যায়।
উপমা: একই সারিতে এবার শিক্ষক বললেন "সবাই এক ধাপ বামে সরো।" এবার <math>Q_0</math> এর জায়গায় আসবে সিরিয়াল ইনপুট, আর <math>Q_3</math> থেকে বিট বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i+1}</math> (সর্বনিম্ন বিটের জন্য: <math>D_0 = SI_L</math>)
=== মোড ১১: সমান্তরাল লোড মোড ===
এই মোডে বাইরের চারটি ইনপুট <math>P_3 P_2 P_1 P_0</math> একসাথে রেজিস্টারে ঢোকে।
উপমা: ক্লাস শুরুতে শিক্ষক বললেন "সবাই নিজের নতুন বই তুলে নাও।" একসাথে সবাই নতুন বই নিল, আগের সব তথ্য বাতিল।
রাশি: <math>D_i = P_i</math>
=== সম্পূর্ণ সত্যক সারণী ===
ধরো বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1010</math>, সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 0110</math>, ডানে শিফটের সিরিয়াল ইনপুট <math>SI_R = \text{১}</math>, বামে শিফটের সিরিয়াল ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#2C3E50; color:white;" | <math>S_1</math> !! style="background:#2C3E50; color:white;" | <math>S_0</math> !! style="background:#2C3E50; color:white;" | মোড !! style="background:#2C3E50; color:white;" | <math>Q_3^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_2^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_1^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_0^+</math> !! style="background:#2C3E50; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>SI_R=\text{১}</math> ঢুকেছে বাম থেকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>SI_L=\text{০}</math> ঢুকেছে ডান থেকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>P=0110</math> লোড হয়েছে
|}
=== সমান্তরাল লোড মোডের বিস্তারিত যাচাই ===
মোড <math>S_1 S_0 = \text{১১}</math>, সমান্তরাল ইনপুট <math>P = 0110</math>:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{১}} \cdot Q_3 + \bar{\text{০}}\cdot\text{১} \cdot Q_2 + \text{০}\cdot\bar{\text{১}} \cdot Q_1 + \text{১}\cdot\text{১} \cdot P_3</math>
শুধুমাত্র চতুর্থ অংশ সক্রিয় (কারণ <math>S_1 S_0 = \text{১১}</math>):
:<math>D_3 = \text{১} \cdot \text{১} \cdot P_3 = P_3 = \text{০}</math>
:<math>D_2 = P_2 = \text{১}</math>
:<math>D_1 = P_1 = \text{১}</math>
:<math>D_0 = P_0 = \text{০}</math>
পরের অবস্থা: <math>0110</math> ✓
== ৭৪১৯৪ চিপের পরিচয় ==
=== চিপটি কী? ===
৭৪১৯৪ হলো একটি বাস্তব সমন্বিত সার্কিট যা সার্বজনীন রেজিস্টার হিসেবে কাজ করে। এটির পুরো নাম "৭৪ সিরিজের ১৯৪ নম্বর চিপ" এবং এটি ৪-বিট সার্বজনীন দ্বিমুখী শিফট রেজিস্টার।
বাজারে এই চিপটি অনেক সহজলভ্য এবং ডিজিটাল ইলেকট্রনিক্স শেখার জন্য অত্যন্ত জনপ্রিয়। একটি ছোট প্লাস্টিকের আবরণে ষোলটি পিন আছে, আর ভেতরে লুকিয়ে আছে সম্পূর্ণ সার্বজনীন রেজিস্টারের সার্কিট।
=== পিন বিন্যাস ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ ৭৪১৯৪ চিপের পিন বর্ণনা
! style="background:#4A4E69; color:white;" | পিন নম্বর !! style="background:#4A4E69; color:white;" | নাম !! style="background:#4A4E69; color:white;" | ধরন !! style="background:#4A4E69; color:white;" | কাজ
|-
| ১ || <math>\overline{CLR}</math> || ইনপুট || সক্রিয়-নিম্ন ক্লিয়ার: <math>\text{০}</math> দিলে সব বিট শূন্য হয়
|-
| ২ || <math>SR</math> || ইনপুট || ডানে শিফটের সিরিয়াল ইনপুট (<math>SI_R</math>)
|-
| ৩, ৪, ৫, ৬ || <math>A, B, C, D</math> || ইনপুট || সমান্তরাল ইনপুট (<math>P_0</math> থেকে <math>P_3</math>)
|-
| ৭ || <math>S_0</math> || ইনপুট || মোড নির্বাচন বিট ০
|-
| ৮ || GND || বিদ্যুৎ || ভূমি সংযোগ (<math>\text{০}</math> ভোল্ট)
|-
| ৯ || <math>S_1</math> || ইনপুট || মোড নির্বাচন বিট ১
|-
| ১০ || <math>CLK</math> || ইনপুট || ক্লক সংকেত
|-
| ১১ || <math>SL</math> || ইনপুট || বামে শিফটের সিরিয়াল ইনপুট (<math>SI_L</math>)
|-
| ১২, ১৩, ১৪, ১৫ || <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || রেজিস্টারের চারটি বিট আউটপুট
|-
| ১৬ || VCC || বিদ্যুৎ || সরবরাহ বিদ্যুৎ (<math>+5</math> ভোল্ট)
|}
=== চিপের কার্যক্রম সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ চিপের সম্পূর্ণ কার্যক্রম
! style="background:#6B4226; color:white;" | <math>\overline{CLR}</math> !! style="background:#6B4226; color:white;" | <math>CLK</math> !! style="background:#6B4226; color:white;" | <math>S_1</math> !! style="background:#6B4226; color:white;" | <math>S_0</math> !! style="background:#6B4226; color:white;" | কার্যক্রম
|-
| <math>\text{০}</math> || যাই হোক || যাই হোক || যাই হোক || তাৎক্ষণিক ক্লিয়ার: সব আউটপুট শূন্য
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{০}</math> || ধারণ: অপরিবর্তিত
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট: <math>SR \to Q_A \to Q_B \to Q_C \to Q_D</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট: <math>SL \to Q_D \to Q_C \to Q_B \to Q_A</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড: <math>A \to Q_A, B \to Q_B, C \to Q_C, D \to Q_D</math>
|}
মনে রাখো: ৭৪১৯৪ শুধুমাত্র ক্লকের উর্ধ্বপ্রান্তে (<math>\text{০}</math> থেকে <math>\text{১}</math> পরিবর্তনে) কাজ করে। ক্লিয়ার পিন অবশ্য যেকোনো সময় কাজ করে।
=== চিপের বিশেষ বৈশিষ্ট্য ===
{| class="wikitable" style="width:90%;"
|+ ৭৪১৯৪ চিপের প্রযুক্তিগত বিবরণ
! style="background:#2D4739; color:white;" | বৈশিষ্ট্য !! style="background:#2D4739; color:white;" | বিবরণ
|-
| ফ্লিপ-ফ্লপের ধরন || উর্ধ্বপ্রান্ত-ট্রিগারড ডি ফ্লিপ-ফ্লপ
|-
| ক্লিয়ারের ধরন || তাৎক্ষণিক (ক্লকের জন্য অপেক্ষা করে না)
|-
| সর্বোচ্চ ক্লক কম্পাঙ্ক || প্রায় ৩৬ মেগাহার্টজ
|-
| বিদ্যুৎ সরবরাহ || ৫ ভোল্ট ডিসি
|-
| সম্প্রসারণযোগ্যতা || দুটি চিপ সংযুক্ত করে ৮-বিট রেজিস্টার সম্ভব
|-
| একই পরিবারের বিকল্প || ৭৪এলএস১৯৪ (কম বিদ্যুৎ খরচ), ৭৪এইচসি১৯৪ (দ্রুতগতি)
|}
=== বাস্তব প্রয়োগে ব্যবহার ===
{| class="wikitable" style="width:100%;"
|+ ৭৪১৯৪ চিপের বাস্তব ব্যবহার
! style="background:#2D4739; color:white;" | প্রয়োগক্ষেত্র !! style="background:#2D4739; color:white;" | কীভাবে ব্যবহার হয়
|-
| সিরিয়াল-সমান্তরাল রূপান্তর || সমান্তরাল লোড করে একটি একটি করে বিট বের করা হয়
|-
| সমান্তরাল-সিরিয়াল রূপান্তর || একটি একটি করে বিট ঢুকিয়ে শেষে সমান্তরাল আউটপুট নেওয়া হয়
|-
| বৃত্তাকার বাফার || আউটপুটকে ইনপুটে সংযুক্ত করে ঘূর্ণায়মান প্যাটার্ন তৈরি হয়
|-
| ক্রম নিয়ন্ত্রক || নির্দিষ্ট বিট প্যাটার্ন তৈরি করে ডিজিটাল সিস্টেমের ধাপ নিয়ন্ত্রণ করা হয়
|-
| LED ডিসপ্লে নিয়ন্ত্রণ || LED আলোর নির্দিষ্ট ক্রম তৈরিতে, বিজ্ঞাপনের চলমান আলোয়
|-
| যোগাযোগ প্রোটোকল || SPI ও UART ধারাবাহিক যোগাযোগ প্রক্রিয়ায়
|-
| গণনা সার্কিট || শিফট দিয়ে গুণ ও ভাগের কাজ প্রসেসরে দ্রুত করতে
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ধারণ মোডের হাতে-কলমে হিসাব ===
একটি ৪-বিট সার্বজনীন রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1001</math>। মোড সংকেত <math>S_1 S_0 = \text{০০}</math>। পরের ক্লক চক্রে কী হবে?
মোড <math>\text{০০}</math> মানে ধারণ। রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_2 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_1 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_0 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_0 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
পরের অবস্থা: <math>Q = 1001</math> অপরিবর্তিত! ✓
অর্থাৎ ক্লক দিলেও কিছু বদলায় না। কম্পিউটারে যখন কোনো তথ্য সাময়িকভাবে ধরে রাখতে হয়, তখন এই মোড কাজে লাগে। ডেটা বাস ব্যবহারের মধ্যবর্তী সময়ে প্রসেসর এই মোড ব্যবহার করে।
=== উদাহরণ ২: ডানে শিফট মোডের ধাপে ধাপে বিশ্লেষণ ===
বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1100</math>। মোড <math>S_1 S_0 = \text{০১}</math> (ডানে শিফট)। সিরিয়াল ইনপুট <math>SR = \text{১}</math>।
রাশিতে দ্বিতীয় অংশ সক্রিয় (<math>\bar{S_1}S_0 = \text{১}</math>):
:<math>D_3 = \bar{\text{০}}\cdot\text{১} \cdot SR = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math> (সিরিয়াল ইনপুট ঢুকেছে)
:<math>D_2 = \bar{\text{০}}\cdot\text{১} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_1 = \bar{\text{০}}\cdot\text{১} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_0 = \bar{\text{০}}\cdot\text{১} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>1110</math>।
এভাবে তিনটি ক্লক চক্রে কী হয় দেখি (<math>SR</math> প্রতিবার ভিন্ন):
{| class="wikitable" style="text-align:center;"
|+ তিন চক্রে ডানে শিফটের ধাপ
! style="background:#3D405B; color:white;" | চক্র !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | <math>SR</math> (নতুন) !! style="background:#3D405B; color:white;" | বের হওয়া বিট
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ||
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
প্রতিটি চক্রে ডান থেকে এক বিট বেরিয়ে যাচ্ছে এবং বাম থেকে <math>SR</math> ঢুকছে। এটিই সমান্তরাল-সিরিয়াল রূপান্তরের ভিত্তি।
=== উদাহরণ ৩: বামে শিফট মোডে বাইনারি গুণ ===
বামে শিফটের একটি চমৎকার প্রয়োগ হলো ২ দিয়ে গুণ! বাইনারি সংখ্যাকে একবার বামে শিফট করলে সেটা ২ দিয়ে গুণ হয়ে যায়, ঠিক যেমন দশমিকে ১০ দিয়ে গুণ করলে শেষে একটি শূন্য বসে।
প্রমাণ:
* প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0011 = 3</math> দশমিকে
* মোড <math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>:
রাশিতে তৃতীয় অংশ সক্রিয় (<math>S_1\bar{S_0} = \text{১}</math>):
:<math>D_3 = Q_2 = \text{০}</math>
:<math>D_2 = Q_1 = \text{১}</math>
:<math>D_1 = Q_0 = \text{১}</math>
:<math>D_0 = SL = \text{০}</math>
* পরের অবস্থা: <math>0110 = 6</math> দশমিকে। <math>3 \times 2 = 6</math> ✓
আরও একবার শিফট করলে:
:<math>0110 \to 1100 = 12 = 3 \times 4</math> ✓
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফট দিয়ে ২ এর ঘাতে গুণ
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | বাইনারি !! style="background:#1B4332; color:white;" | দশমিক !! style="background:#1B4332; color:white;" | কার্যকর গুণ
|-
| ০ || <math>0011</math> || <math>3</math> || শুরু
|-
| ১ || <math>0110</math> || <math>6</math> || <math>3 \times 2</math>
|-
| ২ || <math>1100</math> || <math>12</math> || <math>3 \times 4</math>
|-
| ৩ || <math>1000</math> || <math>8</math> || উপচে পড়েছে! আসল: <math>3 \times 8 = 24</math>
|}
সাবধান: তৃতীয় চক্রে উপচে পড়েছে কারণ ৪ বিটে ২৪ ধরে না (সর্বোচ্চ ১৫)। এই কৌশলটি কম্পিউটার প্রসেসরে গুণের গতি বাড়াতে ব্যবহার করা হয়!
=== উদাহরণ ৪: সমান্তরাল লোড ও তারপর সিরিয়াল পাঠানো ===
এটি একটি বাস্তব প্রয়োগের উদাহরণ: সমান্তরাল ডেটা লোড করে তারপর সিরিয়ালভাবে পাঠানো। যেমন প্রিন্টারে ডেটা পাঠানোর সময় এই পদ্ধতি ব্যবহার হয়।
ধাপ ১: সমান্তরাল লোড করো।
* মোড <math>S_1 S_0 = \text{১১}</math>
* সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 1010</math>
* এক ক্লক চক্রে: <math>Q = 1010</math>
ধাপ ২: এক এক করে বিট বের করো (মোড <math>S_1 S_0 = \text{০১}</math>, ডানে শিফট, <math>SR = \text{০}</math>)।
{| class="wikitable" style="text-align:center;"
|+ সমান্তরাল থেকে সিরিয়াল রূপান্তর
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | <math>Q_3</math> !! style="background:#1B4332; color:white;" | <math>Q_2</math> !! style="background:#1B4332; color:white;" | <math>Q_1</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> এ বের হওয়া বিট
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> ||
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|}
চার চক্রে সিরিয়াল আউটপুটে পাওয়া গেল: <math>\text{০}, \text{১}, \text{০}, \text{১}</math> অর্থাৎ উলটো ক্রমে <math>1010</math>! গ্রাহক প্রান্তে উলটো করে পড়লে আসল ডেটা পাওয়া যাবে।
=== উদাহরণ ৫: ৭৪১৯৪ দিয়ে বৃত্তাকার বাফার ===
সবচেয়ে মজার প্রয়োগ: <math>Q_D</math> আউটপুটকে <math>SR</math> ইনপুটে সংযুক্ত করো এবং মোড <math>S_1 S_0 = \text{০১}</math> রাখো। তাহলে বিটগুলো ঘুরতে থাকবে!
প্রাথমিক অবস্থা (সমান্তরাল লোড দিয়ে): <math>Q_A Q_B Q_C Q_D = 1000</math>।
{| class="wikitable" style="text-align:center;"
|+ বৃত্তাকার ডান শিফটের প্যাটার্ন
! style="background:#44355B; color:white;" | চক্র !! style="background:#44355B; color:white;" | <math>Q_A</math> !! style="background:#44355B; color:white;" | <math>Q_B</math> !! style="background:#44355B; color:white;" | <math>Q_C</math> !! style="background:#44355B; color:white;" | <math>Q_D</math> !! style="background:#44355B; color:white;" | আলো জ্বলে কোথায়?
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রথম LED
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দ্বিতীয় LED
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় LED
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চতুর্থ LED
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার প্রথম (শুরুতে ফিরে)
|}
এই প্যাটার্নটি LED ডিসপ্লেতে ঘূর্ণায়মান আলো তৈরি করে! বিজ্ঞাপনের সাইনবোর্ডে যে আলো ঘোরে, তার পেছনে এই নীতিই কাজ করে। চক্রকাল হলো ৪, অর্থাৎ ৪ ক্লকে একটি পূর্ণ ঘূর্ণন।
== অনুশীলনী ==
'''সহজ স্তর:'''
'''১.''' একটি দ্বিমুখী শিফট রেজিস্টারে বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 0110</math>। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> হলে এক ক্লক চক্র পরে রেজিস্টারের অবস্থা কী হবে?
'''২.''' সার্বজনীন রেজিস্টারে <math>S_1 S_0 = \text{০০}</math> মোডে বর্তমান অবস্থা <math>Q = 1011</math> থাকলে পাঁচটি ক্লক চক্র পরে অবস্থা কী হবে?
'''৩.''' ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী ঘটে? ক্লকের অবস্থা কি তখন গুরুত্বপূর্ণ?
'''৪.''' সার্বজনীন রেজিস্টারের রাশি থেকে মোড <math>S_1 S_0 = \text{০১}</math> তে <math>D_i = Q_{i-1}</math> সত্য কিনা যাচাই করো।
'''মধ্যম স্তর:'''
'''৫.''' সার্বজনীন রেজিস্টারে প্রাথমিক অবস্থা <math>Q = 0000</math>। মোড <math>S_1 S_0 = \text{১১}</math> এ সমান্তরাল ইনপুট <math>P = 1101</math> লোড করার পর, মোড <math>S_1 S_0 = \text{০১}</math> এ তিনটি ক্লক চক্র চালাও (<math>SR = \text{০}</math>)। প্রতিটি চক্রের পরে অবস্থা লেখো।
'''৬.''' <math>Q = 0101</math> বাইনারি সংখ্যাটিকে বামে শিফটের মাধ্যমে ২ দিয়ে গুণ করো। ধাপগুলো দেখাও। ফলাফল কি ৪ বিটে ধরবে?
'''৭.''' দ্বিমুখী শিফট রেজিস্টারে <math>Q = 0001</math> থেকে শুরু করে শুধু বামে শিফট (<math>S = \text{০}</math>, <math>SI_L = \text{০}</math>) করলে কত চক্রের পরে সব বিট শূন্য হবে? প্রতিটি চক্র দেখাও।
'''৮.''' ৭৪১৯৪ চিপে সমান্তরাল লোড করার পরে ডানে শিফট ও বামে শিফটের মধ্যে পার্থক্য একটি উদাহরণ দিয়ে দেখাও। প্রাথমিক অবস্থা <math>Q = 1010</math> নাও।
'''কঠিন স্তর:'''
'''৯.''' দুটি ৭৪১৯৪ চিপ সংযুক্ত করে ৮-বিট সার্বজনীন রেজিস্টার তৈরি করতে হবে। প্রথম চিপের <math>Q_D</math> আউটপুটকে দ্বিতীয় চিপের <math>SR</math> ইনপুটে সংযুক্ত করো। উভয় চিপে <math>S_1 S_0 = \text{০১}</math> দিলে ডানে শিফট মোডে <math>Q = 11000000</math> থেকে শুরু করলে তিন চক্র পরে অবস্থা কী হবে (<math>SR = \text{০}</math>)?
'''১০.''' বৃত্তাকার বাফারে <math>Q_D \to SR</math> সংযোগ ব্যবহার করা হয়। <math>Q = 1100</math> থেকে শুরু করে আট চক্র পরের অবস্থা কী হবে? এই প্যাটার্নের পুনরাবৃত্তির চক্রকাল কত?
----
'''উত্তর:'''
'''১.''' <math>S = \text{১}</math> মানে ডানে শিফট, তাই প্রতিটি বিট এক ধাপ ডানে সরে এবং <math>SI_R = \text{০}</math> বামে ঢোকে:
:<math>Q_3^+ = SI_R = \text{০}</math>
:<math>Q_2^+ = Q_3 = \text{০}</math>
:<math>Q_1^+ = Q_2 = \text{১}</math>
:<math>Q_0^+ = Q_1 = \text{১}</math>
পরের অবস্থা: <math>Q = 0011</math>।
'''২.''' মোড <math>\text{০০}</math> মানে ধারণ, কিছুই পরিবর্তন হয় না। পাঁচ চক্র পরেও অবস্থা <math>Q = 1011</math> অপরিবর্তিত থাকবে।
'''৩.''' <math>\overline{CLR} = \text{০}</math> দিলে সব আউটপুট তাৎক্ষণিকভাবে শূন্য হয়ে যায়, অর্থাৎ <math>Q = 0000</math>। এটি তাৎক্ষণিক বা অ্যাসিঙ্ক্রোনাস, তাই ক্লকের অবস্থা একেবারেই গুরুত্বপূর্ণ নয়।
'''৪.''' মোড <math>S_1 S_0 = \text{০১}</math> অর্থাৎ <math>S_1 = \text{০}, S_0 = \text{১}</math>:
:<math>D_i = \underbrace{\bar{\text{০}}\cdot\bar{\text{১}}}_{=0} \cdot Q_i + \underbrace{\bar{\text{০}}\cdot\text{১}}_{=1} \cdot Q_{i-1} + \underbrace{\text{০}\cdot\bar{\text{১}}}_{=0} \cdot Q_{i+1} + \underbrace{\text{০}\cdot\text{১}}_{=0} \cdot P_i</math>
:<math>D_i = \text{০} + \text{১} \cdot Q_{i-1} + \text{০} + \text{০} = Q_{i-1}</math> ✓
'''৫.''' প্রথমে সমান্তরাল লোড: <math>Q = 1101</math>।
এরপর তিনটি ডানে শিফট (<math>SR = \text{০}</math>):
* চক্র ১: <math>Q_3^+ = \text{০}, Q_2^+ = Q_3 = \text{১}, Q_1^+ = Q_2 = \text{১}, Q_0^+ = Q_1 = \text{০}</math>, তাই <math>Q = 0110</math>
* চক্র ২: <math>Q = 0011</math>
* চক্র ৩: <math>Q = 0001</math>
'''৬.''' <math>Q = 0101 = 5</math> দশমিকে।
বামে শিফট (<math>SL = \text{০}</math>): <math>D_3 = Q_2 = \text{১}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = \text{০}</math>।
পরের অবস্থা: <math>Q = 1010 = 10</math>।
<math>5 \times 2 = 10</math> ✓ এবং <math>10 < 15</math>, তাই ৪ বিটে ধরবে।
'''৭.''' প্রতিটি চক্র:
* শুরু: <math>0001</math>
* চক্র ১: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = SL = \text{০}</math>; <math>Q = 0010</math>
* চক্র ২: <math>Q = 0100</math>
* চক্র ৩: <math>Q = 1000</math>
* চক্র ৪: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{০}, D_0 = \text{০}</math>; <math>Q = 0000</math>
৪ চক্রের পরে সব বিট শূন্য হয়।
'''৮.''' প্রাথমিক অবস্থা লোডের পরে: <math>Q = 1010</math>।
ডানে শিফট (<math>S_1 S_0 = \text{০১}</math>, <math>SR = \text{০}</math>): <math>Q = 0101</math>
বামে শিফট (<math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>): <math>Q = 0100</math>
দুই মোডে ফলাফল আলাদা। ডানে শিফটে সর্বোচ্চ বিট থেকে <math>\text{০}</math> ঢোকে, বামে শিফটে সর্বনিম্ন বিট থেকে <math>\text{০}</math> ঢোকে।
'''৯.''' ৮-বিট রেজিস্টার, প্রাথমিক অবস্থা <math>Q = 11000000</math>।
ডানে শিফট (<math>SR = \text{০}</math>), প্রতি চক্রে সর্বোচ্চ বিটে <math>\text{০}</math> ঢোকে:
* চক্র ১: <math>Q = 01100000</math>
* চক্র ২: <math>Q = 00110000</math>
* চক্র ৩: <math>Q = 00011000</math>
দুটি <math>\text{১}</math> বিট একসাথে ডানে সরে যাচ্ছে, মাঝের দূরত্ব অপরিবর্তিত।
'''১০.''' <math>Q_D \to SR</math> সংযোগ সহ ডানে বৃত্তাকার শিফট। প্রাথমিক অবস্থা: <math>Q = 1100</math>।
{| class="wikitable" style="text-align:center; width:60%;"
|+ বৃত্তাকার শিফটের ৮ চক্র
! style="background:#2E4057; color:white;" | চক্র !! style="background:#2E4057; color:white;" | <math>Q_3 Q_2 Q_1 Q_0</math>
|-
| ০ || <math>1100</math>
|-
| ১ || <math>0110</math>
|-
| ২ || <math>0011</math>
|-
| ৩ || <math>1001</math>
|-
| ৪ || <math>1100</math> (শুরুতে ফিরে এসেছে)
|-
| ৫ || <math>0110</math>
|-
| ৬ || <math>0011</math>
|-
| ৭ || <math>1001</math>
|}
পুনরাবৃত্তির চক্রকাল ৪। প্রতি ৪ ক্লকে প্যাটার্ন একই অবস্থায় ফিরে আসে। এই প্যাটার্নটি চারটি LED কে ঘুরিয়ে ঘুরিয়ে জ্বালাতে ব্যবহার করা যায়, যেখানে প্রতিবার দুটি LED জ্বলে।
== রিং কাউন্টার ও জনসন কাউন্টার ==
আগের ভাগে আমরা শিফট রেজিস্টার দেখেছিলাম — যেখানে ডেটা এক প্রান্ত থেকে ঢুকে অন্য প্রান্ত দিয়ে বেরিয়ে যায়। এই ভাগে আমরা দেখব যদি সেই বেরিয়ে যাওয়া ডেটা আবার ঢুকে যায় — অর্থাৎ সার্কিটটি একটি বৃত্তের মতো বন্ধ হয়ে যায়, তখন কী হয়। এই ধারণাটিই রিং কাউন্টারের মূল ভিত্তি।
=== রিং কাউন্টার কী ===
একটি গোল টেবিল কল্পনা করো। টেবিলে চারজন মানুষ বসে আছে। তাদের মধ্যে কেবল একজনের হাতে একটি লাল বল আছে। এখন নিয়ম হলো প্রতি মিনিটে বলটি পাশের জনের হাতে যাবে। বলটি ঘুরতে ঘুরতে আবার প্রথম জনের হাতে ফিরে আসবে, তারপর আবার সেই একই চক্র।
এটাই হলো রিং কাউন্টারের ধারণা। এখানে সেই লাল বলটি হলো <math>\text{১}</math>, আর বাকি সবার হাত হলো <math>\text{০}</math>। প্রতিটি ক্লকে <math>\text{১}</math>টি এক ঘর এগিয়ে যায় এবং শেষে আবার প্রথমে ফিরে আসে।
রিং কাউন্টার হলো এমন একটি শিফট রেজিস্টার যেখানে শেষ ফ্লিপ-ফ্লপের আউটপুট প্রথম ফ্লিপ-ফ্লপের ইনপুটে ফিরে সংযুক্ত থাকে।
=== রিং কাউন্টারের গঠন ===
<math>n</math>টি ডি ফ্লিপ-ফ্লপ পর পর সাজিয়ে রিং কাউন্টার তৈরি হয়। প্রতিটি ফ্লিপ-ফ্লপের আউটপুট <math>Q</math> পরের ফ্লিপ-ফ্লপের <math>D</math> ইনপুটে যায়। শেষটির আউটপুট ফিরে প্রথমটির ইনপুটে আসে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>Q</math> থেকে (ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে (ফিডব্যাক)
|}
=== প্রাথমিক অবস্থা লোড করা ===
রিং কাউন্টার চালু করতে হলে প্রথমে একটি নির্দিষ্ট প্রাথমিক অবস্থা লোড করতে হয়। সবচেয়ে স্বাভাবিক প্রাথমিক অবস্থা হলো <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math> অর্থাৎ কেবল প্রথম ফ্লিপ-ফ্লপে <math>\text{১}</math>, বাকি সব <math>\text{০}</math>।
এই কাজটি করা হয় প্রিসেট এবং ক্লিয়ার পিন ব্যবহার করে:
* <math>FF_0</math> এর প্রিসেট সক্রিয় করে <math>Q_0 = \text{১}</math> করা হয়
* <math>FF_1,\ FF_2,\ FF_3</math> এর ক্লিয়ার সক্রিয় করে <math>\text{০}</math> করা হয়
যদি রিং কাউন্টার ভুল অবস্থায় চলে যায় যেমন সব <math>\text{০}</math> হয়ে যায়, তাহলে এটি সেখানেই আটকে থাকবে কারণ <math>\text{০}</math>ই ঘুরতে থাকবে। তাই প্রাথমিক অবস্থা সঠিকভাবে লোড করা জরুরি।
=== ৪-বিট রিং কাউন্টারের সম্পূর্ণ টাইমিং বিশ্লেষণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রিং কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> শুরুতে <math>Q_0</math> তে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_1</math> তে
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_2</math> তে
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_3</math> তে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> ফিরে <math>Q_0</math> তে (চক্র পূর্ণ)
|-
| ৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার একই চক্র শুরু
|}
লক্ষ করো, ৪-বিট রিং কাউন্টারে মোট ৪টি ভিন্ন অবস্থা আছে এবং প্রতি ৪টি ক্লকে চক্র সম্পন্ন হয়। যেকোনো মুহূর্তে কেবল একটি মাত্র ফ্লিপ-ফ্লপে <math>\text{১}</math> থাকে।
=== <math>n</math>-বিট রিং কাউন্টারের বৈশিষ্ট্য ===
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| ফ্লিপ-ফ্লপ সংখ্যা || <math>n</math>
|-
| মোট অবস্থা সংখ্যা || <math>n</math>
|-
| চক্র দৈর্ঘ্য || <math>n</math> ক্লক
|-
| প্রতি মুহূর্তে সক্রিয় ফ্লিপ-ফ্লপ || কেবল ১টি
|-
| ডিকোডার প্রয়োজন || না
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন
|}
=== জনসন কাউন্টার: বাঁকানো রিং ===
এবার কল্পনা করো সেই গোল টেবিলের খেলাটাই, কিন্তু এবার নিয়মটা একটু অদ্ভুত। যে ব্যক্তির হাতে বল আছে সে পরের জনকে বল দেওয়ার সময় বলটা উল্টে দেয়: লাল বল দিলে নীল বল পায়, নীল বল দিলে লাল বল পায়।
এটাই হলো জনসন কাউন্টারের মূল ধারণা। রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটির ইনপুটে যায়। কিন্তু জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক আউটপুট) প্রথমটির ইনপুটে যায়।
এই একটি পরিবর্তনের কারণে অবস্থার সংখ্যা দ্বিগুণ হয়ে যায়। <math>n</math>-বিট জনসন কাউন্টারে <math>2n</math>টি অবস্থা থাকে।
=== জনসন কাউন্টারের গঠন ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ জনসন কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>\bar{Q}</math> থেকে (উল্টানো ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে <math>\bar{Q}</math> হিসেবে
|}
রিং ও জনসনের পার্থক্য কেবল একটি জায়গায়: শেষ ফ্লিপ-ফ্লপ থেকে প্রথমটিতে কী যাচ্ছে। রিংয়ে যাচ্ছে <math>Q</math>, জনসনে যাচ্ছে <math>\bar{Q}</math>।
=== ৪-বিট জনসন কাউন্টারের সম্পূর্ণ উদাহরণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
জনসন কাউন্টারে প্রাথমিক অবস্থা হিসেবে সব <math>\text{০}</math> ব্যবহার করা যায়, কারণ <math>FF_3</math> এর <math>\bar{Q}_3 = \text{১}</math>, তাই প্রথম ক্লকেই <math>Q_0 = \text{১}</math> হয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট জনসন কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_3</math> (পরের <math>D_0</math>) !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সব শূন্য, পরে <math>\text{১}</math> ঢুকবে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> বাম থেকে ঢুকছে
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> এগিয়ে চলছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আরও এগিয়ে
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সব <math>\text{১}</math>, এবার <math>\text{০}</math> ঢুকবে
|-
| ৫ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> বাম থেকে ঢুকছে
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> এগিয়ে চলছে
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আরও এগিয়ে
|-
| ৮ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরে এলো
|}
মোট ৮টি ভিন্ন অবস্থা, প্রতি ৮ ক্লকে চক্র সম্পন্ন। ৪টি ফ্লিপ-ফ্লপে <math>2 \times \text{৪} = \text{৮}</math>টি অবস্থা।
প্যাটার্নটা লক্ষ করো: প্রথমে ডান থেকে বামে <math>\text{১}</math> ভরতে থাকে, তারপর ডান থেকে বামে <math>\text{০}</math> ভরতে থাকে। এই ঢেউ-খেলানো প্যাটার্নই জনসন কাউন্টারের বিশেষত্ব।
=== রিং ও জনসন কাউন্টারের তুলনা ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং বনাম জনসন কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! জনসন কাউন্টার
|-
| ফিডব্যাক || <math>Q_{n-1}</math> সরাসরি || <math>\bar{Q}_{n-1}</math> উল্টানো
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2n</math>টি
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন (<math>\text{১</math> দিয়ে শুরু) || সহজ (সব <math>\text{০}</math> থেকে স্বয়ংক্রিয়)
|-
| ডিকোডার প্রয়োজন || না || না (তবে আউটপুট রাশি লাগতে পারে)
|-
| প্যাটার্ন || একটি <math>\text{১}</math> ঘুরতে থাকে || <math>\text{১}</math> ভরে তারপর <math>\text{০}</math> ভরে
|-
| অবৈধ অবস্থা || আছে (সব <math>\text{০}</math>) || তুলনামূলক কম
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি (<math>n</math>টিতে <math>2n</math> অবস্থা)
|-
| প্রয়োগ || ডিকোডার বিকল্প, সিকোয়েন্সার || ফেজ জেনারেটর, ডিসপ্লে নিয়ন্ত্রণ
|}
=== রিং বনাম বাইনারি কাউন্টার ===
বাইনারি কাউন্টারও গণনা করে, কিন্তু পদ্ধতি সম্পূর্ণ আলাদা। কোনটা কখন ব্যবহার করবে সেটা বোঝার জন্য তুলনাটা জানা দরকার।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টার বনাম বাইনারি কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! বাইনারি কাউন্টার
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2^n</math>টি
|-
| ৪ ফ্লিপ-ফ্লপে অবস্থা || <math>\text{৪}</math>টি || <math>\text{১৬}</math>টি
|-
| নির্দিষ্ট অবস্থা চিনতে ডিকোডার || লাগে না || লাগে
|-
| সার্কিট জটিলতা || কম || বেশি
|-
| আউটপুট পড়া || সহজ (এক ফ্লিপ-ফ্লপ = এক অবস্থা) || জটিল (ডিকোডার লাগে)
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি
|-
| গতি || বেশি (গেট দেরি কম) || কম (রিপল ক্যারির কারণে)
|-
| উপযুক্ত প্রয়োগ || স্টেট মেশিন, সিকোয়েন্সার || বড় পরিসরের গণনা
|}
সহজ কথায়: কম অবস্থা কিন্তু সহজ ডিজাইন চাইলে রিং, বেশি অবস্থা চাইলে বাইনারি।
=== বাস্তব প্রয়োগ ===
==== ডিকোডার ছাড়া স্টেট মেশিন ====
একটি ট্রাফিক লাইট নিয়ন্ত্রক কল্পনা করো যার তিনটি অবস্থা: লাল, হলুদ, সবুজ। বাইনারি কাউন্টার ব্যবহার করলে তিনটি অবস্থা চেনাতে একটি ডিকোডার লাগবে। কিন্তু ৩-বিট রিং কাউন্টার ব্যবহার করলে তিনটি ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট সরাসরি লাল, হলুদ ও সবুজ আলোর সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টার দিয়ে ট্রাফিক লাইট
! <math>Q_2</math> (লাল) !! <math>Q_1</math> (হলুদ) !! <math>Q_0</math> (সবুজ) !! সক্রিয় আলো
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সবুজ জ্বলছে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || হলুদ জ্বলছে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || লাল জ্বলছে
|}
==== ফেজ জেনারেটর ====
জনসন কাউন্টার ফেজ জেনারেটর হিসেবে ব্যাপকভাবে ব্যবহৃত হয়। <math>n</math>-বিট জনসন কাউন্টার <math>2n</math>টি সমান ফেজে বিভক্ত সংকেত তৈরি করতে পারে।
তিন-ফেজ মোটর নিয়ন্ত্রণে ৩-বিট জনসন কাউন্টার ব্যবহার করা হয়। এটি ৬টি অবস্থায় ঘুরে মোটরের তিনটি তারে সঠিক সময়ে সংকেত পাঠায়।
==== ডিসপ্লে স্ক্যানিং ====
বড় এলইডি ডিসপ্লেতে একসাথে সব সারি জ্বালানো সম্ভব নয়, তাই রিং কাউন্টার দিয়ে একের পর এক সারি সক্রিয় করা হয়। এত দ্রুত ঘটে যে চোখে সব সারি একসাথে জ্বলছে মনে হয়।
==== স্টেপার মোটর নিয়ন্ত্রণ ====
স্টেপার মোটরে চারটি কয়েল আছে। প্রতিটি ক্লকে একটি করে কয়েল চালু হলে মোটর ঘোরে। ৪-বিট রিং কাউন্টারের চারটি আউটপুট সরাসরি চারটি কয়েলের সাথে সংযুক্ত করলেই কাজ হয়।
{| class="wikitable" style="width:100%;"
|+ রিং ও জনসন কাউন্টারের ব্যবহারিক প্রয়োগ
! প্রয়োগক্ষেত্র !! কোন কাউন্টার !! বিস্তারিত
|-
| ট্রাফিক লাইট সিকোয়েন্সার || রিং || প্রতিটি অবস্থা সরাসরি একটি আলোকে নিয়ন্ত্রণ করে, ডিকোডার লাগে না
|-
| এলইডি ম্যাট্রিক্স স্ক্যানিং || রিং || সারি ক্রমান্বয়ে সক্রিয় করে দ্রুতগতিতে
|-
| মোটর ড্রাইভ ফেজ নিয়ন্ত্রণ || জনসন || ৩-ফেজ বা ৬-ফেজ সংকেত তৈরি করে
|-
| স্টেপার মোটর নিয়ন্ত্রণ || রিং || মোটরের কয়েলগুলো ক্রমান্বয়ে চালু করে
|-
| সিউডো-র্যান্ডম প্যাটার্ন || জনসন || পরীক্ষামূলক সংকেত তৈরিতে
|-
| মেমোরি রিফ্রেশ নিয়ন্ত্রক || রিং || ডায়নামিক র্যামের সারি ক্রমান্বয়ে রিফ্রেশ করে
|-
| ডিজিটাল ঘড়ির নির্দেশক || রিং || এলইডি বৃত্তে সেকেন্ড দেখানোর জন্য
|}
== উদাহরণ ==
=== উদাহরণ ১: ৩-বিট রিং কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math>। প্রতিটি ক্লকের পর অবস্থা নির্ণয় করো এবং চক্রের দৈর্ঘ্য বলো।
ডি ফ্লিপ-ফ্লপের নিয়ম: <math>Q_{n+1} = D = Q_{আগের}</math> (রিং সংযোগে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রিং কাউন্টারের ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ব্যাখ্যা
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> একধাপ এগিয়েছে
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> আরও এগিয়েছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরেছে
|}
চক্রের দৈর্ঘ্য = ৩ ক্লক। মোট অবস্থা = ৩টি ✓
=== উদাহরণ ২: ৩-বিট জনসন কাউন্টারের বিশ্লেষণ ===
একটি ৩-বিট জনসন কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০০}</math>। সম্পূর্ণ চক্র বের করো।
জনসন নিয়ম: <math>D_0 = \bar{Q}_2</math>, <math>D_1 = Q_0</math>, <math>D_2 = Q_1</math>
ধাপে ধাপে হিসাব:
ক্লক ০ থেকে ১: <math>\bar{Q}_2 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{০}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০১}</math>
ক্লক ১ থেকে ২: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০১১}</math>
ক্লক ২ থেকে ৩: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১১}</math>
ক্লক ৩ থেকে ৪: <math>\bar{Q}_2 = \overline{\text{১}} = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১০}</math>
ক্লক ৪ থেকে ৫: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১০০}</math>
ক্লক ৫ থেকে ৬: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০০}</math> (প্রাথমিক অবস্থায় ফিরেছে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
মোট অবস্থা = ৬টি = <math>\text{২} \times \text{৩}</math> ✓
=== উদাহরণ ৩: রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার ===
একটি সার্কিটে চারটি কাজ ক্রমান্বয়ে করতে হবে: মোটর চালু, ভাল্ব খোলা, সেন্সর পড়া, ভাল্ব বন্ধ। বাইনারি কাউন্টার ব্যবহার করলে চারটি আউটপুটের জন্য ২-তে-৪ ডিকোডার লাগত। রিং কাউন্টারে ৪টি ফ্লিপ-ফ্লপের <math>Q_0, Q_1, Q_2, Q_3</math> সরাসরি চারটি কাজের সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার
! ক্লক !! <math>Q_0</math> (মোটর) !! <math>Q_1</math> (ভাল্ব খোলা) !! <math>Q_2</math> (সেন্সর) !! <math>Q_3</math> (ভাল্ব বন্ধ) !! সক্রিয় কাজ
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || মোটর চালু
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ভাল্ব খোলা
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সেন্সর পড়া
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ভাল্ব বন্ধ
|}
কোনো ডিকোডার ছাড়াই চারটি ধাপ সম্পন্ন হচ্ছে।
=== উদাহরণ ৪: জনসন কাউন্টার থেকে ফেজ সংকেত ===
একটি ২-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র বের করো এবং দেখাও এটি কীভাবে ৪টি ফেজ সংকেত তৈরি করে।
প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>, ফিডব্যাক: <math>D_0 = \bar{Q}_1</math>, <math>D_1 = Q_0</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ ২-বিট জনসন কাউন্টারের চক্র
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_1</math> (পরের <math>D_0</math>) !! ফেজ
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ফেজ খ
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ফেজ গ
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ফেজ ঘ
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক (পুনরায়)
|}
মোট <math>\text{২} \times \text{২} = \text{৪}</math>টি ভিন্ন ফেজ সংকেত ✓
=== উদাহরণ ৫: অবৈধ অবস্থা থেকে পুনরুদ্ধার বিশ্লেষণ ===
একটি ৪-বিট রিং কাউন্টার ভুলক্রমে <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math> অবস্থায় চলে গেছে (সব <math>\text{০}</math>)। পরের কয়েকটি ক্লকে কী হবে?
ধাপে ধাপে: প্রতিটি ক্লকে <math>FF_3</math> এর <math>Q_3 = \text{০}</math> ফিরে <math>D_0</math> তে যায়। তাই <math>Q_0</math> সবসময় <math>\text{০}</math> হয়। সব ফ্লিপ-ফ্লপই <math>\text{০}</math> পাচ্ছে, ফলে সব <math>\text{০}</math>ই থাকবে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ অবৈধ অবস্থা থেকে পুনরুদ্ধার হয় না
! ক্লক !! <math>Q_3 Q_2 Q_1 Q_0</math> !! মন্তব্য
|-
| ০ || <math>\text{০০০০}</math> || অবৈধ অবস্থা
|-
| ১ || <math>\text{০০০০}</math> || আটকে আছে
|-
| ২ || <math>\text{০০০০}</math> || আটকে আছে
|}
এই কারণে রিং কাউন্টারে স্ব-সংশোধন সার্কিট যোগ করা হয়। যখন সব আউটপুট <math>\text{০}</math> হয়, একটি নর গেট দিয়ে সেটি শনাক্ত করে <math>FF_0</math> এর ইনপুটে জোর করে <math>\text{১}</math> পাঠানো হয়:
:<math>D_0 = Q_3 + \overline{Q_0 + Q_1 + Q_2 + Q_3}</math>
যখন সব শূন্য: <math>\overline{Q_0 + Q_1 + Q_2 + Q_3} = \overline{\text{০}} = \text{১}</math>, তাই <math>D_0 = \text{১}</math> এবং কাউন্টার স্বয়ংক্রিয়ভাবে সচল হয়ে যায়।
== অনুশীলনী ==
# একটি <math>\text{৫}</math>-বিট রিং কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# একটি <math>\text{৫}</math>-বিট জনসন কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# ৩-বিট রিং কাউন্টারে প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{১০০}</math> হলে পরের দুটি অবস্থা কী কী?
# জনসন কাউন্টারে ফিডব্যাক সংযোগ রিং কাউন্টার থেকে কীভাবে আলাদা?
# ৪-বিট জনসন কাউন্টারে ক্লক ৩-এর পর অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math> হলে ক্লক ৪-এর পর অবস্থা কী হবে?
# কোন পরিস্থিতিতে বাইনারি কাউন্টারের চেয়ে রিং কাউন্টার বেশি সুবিধাজনক?
# একটি রিং কাউন্টার সব শূন্য অবস্থায় আটকে গেলে স্ব-সংশোধনের জন্য কোন গেট ব্যবহার করা যায়?
# ৪-বিট রিং কাউন্টারে কতটি ক্লকে চক্র সম্পন্ন হয় এবং ৪-বিট জনসন কাউন্টারে কতটি ক্লকে?
# একটি স্টেপার মোটরে ৪টি কয়েল ক্রমান্বয়ে চালু করতে কোন কাউন্টার ব্যবহার করবে এবং কেন?
# ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০১০}</math> হলে সম্পূর্ণ চক্রের অবস্থাগুলো টেবিল আকারে লেখো।
'''উত্তর:'''
# <math>\text{৫}</math>-বিট রিং কাউন্টারে <math>\text{৫}</math>টি ভিন্ন অবস্থা।
# <math>\text{৫}</math>-বিট জনসন কাউন্টারে <math>\text{২} \times \text{৫} = \text{১০}</math>টি ভিন্ন অবস্থা।
# ক্লক ১-এর পর: <math>\text{০১০}</math>। ক্লক ২-এর পর: <math>\text{০০১}</math>।
# রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটিতে যায়। জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক) যায়।
# <math>D_0 = \bar{Q}_3 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{১}</math>, <math>D_3 = Q_2 = \text{১}</math>। নতুন অবস্থা: <math>\text{১১১১}</math>।
# যখন অবস্থা সংখ্যা কম কিন্তু প্রতিটি অবস্থা সরাসরি একটি আউটপুট নিয়ন্ত্রণ করে এবং ডিকোডার ছাড়া কাজ করতে হয়।
# নর গেট দিয়ে সব আউটপুট শূন্য শনাক্ত করে <math>D_0</math> তে <math>\text{১}</math> পাঠানো যায়।
# ৪-বিট রিং কাউন্টারে <math>\text{৪}</math> ক্লকে এবং ৪-বিট জনসন কাউন্টারে <math>\text{৮}</math> ক্লকে চক্র সম্পন্ন হয়।
# রিং কাউন্টার। কারণ ৪টি ফ্লিপ-ফ্লপের প্রতিটি আউটপুট সরাসরি একটি কয়েলের সাথে সংযুক্ত করা যায়, কোনো ডিকোডার লাগে না।
# ক্লক ০: <math>\text{০১০}</math>; ক্লক ১: <math>\text{১০০}</math>; ক্লক ২: <math>\text{০০১}</math>; ক্লক ৩: <math>\text{০১০}</math> (পুনরাবৃত্তি)।
== রেজিস্টারের ব্যবহারিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা শিফট রেজিস্টার, রিং কাউন্টার এবং জনসন কাউন্টার দেখেছিলাম। সেগুলো ছিল রেজিস্টারের ভেতরের গল্প। এই ভাগে আমরা দেখব রেজিস্টার বাস্তব পৃথিবীতে কীভাবে কাজ করে। কম্পিউটার, মোবাইল ফোন, ইন্টারনেট সংযোগ, এমনকি তোমার মাউসের ক্লিক পর্যন্ত পৌঁছানোর পেছনে রেজিস্টার কাজ করছে।
=== ধারাবাহিক-সমান্তরাল ও সমান্তরাল-ধারাবাহিক রূপান্তর ===
একটু কল্পনা করো। তুমি ঢাকা থেকে চট্টগ্রামে আটটি বাক্স পাঠাবে। দুটো উপায় আছে। প্রথম উপায়: আটটি বাক্স একসাথে আটটি ট্রাকে তুলে একই সময়ে পাঠাও। দ্বিতীয় উপায়: একটি মাত্র ট্রাকে একটি একটি করে বাক্স আলাদা সময়ে পাঠাও।
প্রথম পদ্ধতিটা দ্রুত কিন্তু খরচ বেশি (আটটি ট্রাক লাগে)। দ্বিতীয় পদ্ধতিটা ধীর কিন্তু খরচ কম (একটি ট্রাকই যথেষ্ট)।
ডিজিটাল ইলেকট্রনিক্সেও ঠিক এই দুটো পদ্ধতি আছে। আটটি বিট একসাথে পাঠানো হলো সমান্তরাল পদ্ধতি, আর একটি একটি করে পাঠানো হলো ধারাবাহিক পদ্ধতি। ট্রাকের জায়গায় এখানে তার।
==== সমান্তরাল থেকে ধারাবাহিক রূপান্তর ====
প্রসেসরের ভেতরে সব বিট একসাথে চলাচল করে (সমান্তরাল)। কিন্তু যখন এই তথ্য বাইরে পাঠাতে হয়, যেমন ইন্টারনেট কেবলে বা ইউএসবিতে, তখন একটি মাত্র তারে একটি একটি করে পাঠানো হয় (ধারাবাহিক)। এই রূপান্তরের কাজটি করে সমান্তরাল থেকে ধারাবাহিক শিফট রেজিস্টার।
কীভাবে কাজ করে:
# প্রথমে সব বিট একসাথে রেজিস্টারে লোড হয় (সমান্তরাল লোড)
# তারপর প্রতিটি ক্লকে একটি করে বিট বাইরে বেরিয়ে যায়
# ৮ ক্লকে একটি বাইট (৮ বিট) সম্পূর্ণ বেরিয়ে যায়
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরের উদাহরণ
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ধারাবাহিক আউটপুট !! বিবরণ
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || || সব বিট একসাথে লোড
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> বেরিয়ে গেল
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_1</math> বেরিয়ে গেল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>Q_2</math> বেরিয়ে গেল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_3</math> বেরিয়ে গেল
|}
ধারাবাহিক আউটপুট ক্রম: <math>\text{১১০১}</math> (সর্বনিম্ন বিট আগে)
==== ধারাবাহিক থেকে সমান্তরাল রূপান্তর ====
অন্য প্রান্তে একই খেলার উল্টোটা হয়। একটি একটি করে বিট ঢুকছে আর রেজিস্টারে জমা হচ্ছে। সব বিট ঢুকে গেলে একসাথে সব পড়া যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট ধারাবাহিক থেকে সমান্তরাল রূপান্তরের উদাহরণ
! ক্লক !! ধারাবাহিক ইনপুট !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| শুরু || || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রেজিস্টার ফাঁকা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || চতুর্থ বিট ঢুকল, সম্পূর্ণ
|}
চার ক্লক পরে সমান্তরাল আউটপুট একসাথে পড়া যায়: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
==== যোগাযোগ ব্যবস্থায় প্রয়োগ ====
দৈনন্দিন জীবনে এই রূপান্তর কোথায় কোথায় দেখা যায় সেটা একটু বোঝা দরকার।
ইউএআরটি হলো সেই যন্ত্র যা কম্পিউটারের সমান্তরাল তথ্যকে ধারাবাহিকে পরিণত করে পাঠায় এবং আসা ধারাবাহিক তথ্যকে সমান্তরালে পরিণত করে গ্রহণ করে। পুরোনো মডেম, জিপিএস রিসিভার এবং অনেক মাইক্রোকন্ট্রোলার ইউএআরটি ব্যবহার করে।
ইউএসবিতেও একই কাজ হয়, তবে আরও দ্রুত এবং জটিল নিয়মে। কম্পিউটারের ভেতরে তথ্য ৩২ বা ৬৪ বিট সমান্তরালে চলে, কিন্তু ইউএসবি কেবলে মাত্র দুটো তারে ধারাবাহিকভাবে যায়।
{| class="wikitable" style="width:100%;"
|+ যোগাযোগ মানের তুলনা
! মান !! পদ্ধতি !! সর্বোচ্চ গতি !! তারের সংখ্যা !! প্রয়োগ
|-
| ইউএআরটি || ধারাবাহিক || কয়েক মেগাবিট/সেকেন্ড || ২ (পাঠানো ও গ্রহণ) || মাইক্রোকন্ট্রোলার, জিপিএস
|-
| ইউএসবি ২.০ || ধারাবাহিক || ৪৮০ মেগাবিট/সেকেন্ড || ৪ || মাউস, কীবোর্ড, পেনড্রাইভ
|-
| ইউএসবি ৩.০ || ধারাবাহিক || ৫ গিগাবিট/সেকেন্ড || ৯ || বাহ্যিক হার্ড ড্রাইভ
|-
| এসপিআই || ধারাবাহিক || কয়েকশো মেগাবিট/সেকেন্ড || ৪ || মেমোরি কার্ড, সেন্সর
|-
| সমান্তরাল বাস || সমান্তরাল || কম (তারের মধ্যে হস্তক্ষেপ) || ৩২ বা ৬৪ || পুরোনো কম্পিউটারের ভেতরে
|}
==== সম্পূর্ণ উদাহরণ: একটি বাইট পাঠানো ও গ্রহণ করা ====
ধরো, একটি কম্পিউটার থেকে আরেকটিতে 'A' অক্ষরটি পাঠাতে হবে। 'A' অক্ষরের বাইনারি কোড হলো <math>\text{০১০০০০০১}</math>।
পাঠানোর পদ্ধতি:
ধাপ ১: ৮ বিট একসাথে রেজিস্টারে লোড হয়: <math>Q_7 Q_6 Q_5 Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০১০০০০০১}</math>
ধাপ ২: প্রতিটি ক্লকে একটি বিট বেরিয়ে যায়, সর্বনিম্ন বিট আগে:
{| class="wikitable" style="text-align:center; width:90%;"
|+ 'A' অক্ষর পাঠানোর ধাপ
! ক্লক !! পাঠানো বিট !! অবশিষ্ট রেজিস্টার
|-
| ১ || <math>\text{১}</math> (<math>Q_0</math>) || <math>\text{০০১০০০০০}</math>
|-
| ২ || <math>\text{০}</math> (<math>Q_1</math>) || <math>\text{০০০১০০০০}</math>
|-
| ৩ || <math>\text{০}</math> (<math>Q_2</math>) || <math>\text{০০০০১০০০}</math>
|-
| ৪ || <math>\text{০}</math> (<math>Q_3</math>) || <math>\text{০০০০০১০০}</math>
|-
| ৫ || <math>\text{০}</math> (<math>Q_4</math>) || <math>\text{০০০০০০১০}</math>
|-
| ৬ || <math>\text{০}</math> (<math>Q_5</math>) || <math>\text{০০০০০০০১}</math>
|-
| ৭ || <math>\text{১}</math> (<math>Q_6</math>) || <math>\text{০০০০০০০০}</math>
|-
| ৮ || <math>\text{০}</math> (<math>Q_7</math>) || <math>\text{০০০০০০০০}</math>
|}
ধাপ ৩: গ্রহণকারী প্রান্তে আরেকটি শিফট রেজিস্টার এই বিটগুলো একটি একটি করে গ্রহণ করে। ৮ ক্লক পরে রেজিস্টারে জমা হয় <math>\text{০১০০০০০১}</math>, যা আবার 'A' অক্ষর।
এভাবে মাত্র দুটি তারে একটি সম্পূর্ণ অক্ষর পাঠানো হয়।
=== সময় বিলম্ব সার্কিট ===
জীবনে অনেক জায়গায় ইচ্ছাকৃতভাবে দেরি করা দরকার হয়। সিনেমায় গান শেষ হওয়ার পর আলো ধীরে জ্বলে ওঠে, মঞ্চে কথা বলার পর মাইক থেকে শব্দ একটু দেরিতে শোনা যায়, ক্যামেরায় ছবি তোলার পর ফ্ল্যাশ একটু পরে জ্বলে।
ডিজিটাল সার্কিটেও এই "ইচ্ছাকৃত দেরি" দরকার হয়। শিফট রেজিস্টার দিয়ে ঠিক এই কাজটি করা হয়।
==== কীভাবে বিলম্ব তৈরি হয় ====
ডি ফ্লিপ-ফ্লপে ইনপুট এক ক্লক পরে আউটপুটে আসে। তাই <math>n</math>টি ফ্লিপ-ফ্লপ শ্রেণিবদ্ধ করলে ইনপুট <math>n</math> ক্লক পরে আউটপুটে আসে।
:<math>\text{বিলম্ব} = n \times \text{ক্লক}</math>
যেখানে <math>\text{ক্লক}</math> হলো এক ক্লকের সময়কাল।
উদাহরণ: ক্লক কম্পাঙ্ক ১ মেগাহার্টজ হলে <math>\text{ক্লক} = \text{১}</math> মাইক্রোসেকেন্ড। ৮টি ফ্লিপ-ফ্লপ দিলে বিলম্ব হবে <math>\text{৮}</math> মাইক্রোসেকেন্ড।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বিলম্বের উদাহরণ (ক্লক = ১ মেগাহার্টজ)
! ফ্লিপ-ফ্লপ সংখ্যা !! বিলম্ব !! ব্যবহার
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> মাইক্রোসেকেন্ড || স্বল্প বিলম্ব সার্কিট
|-
| <math>\text{৮}</math> || <math>\text{৮}</math> মাইক্রোসেকেন্ড || বাইট সংরক্ষণ ও বিলম্ব
|-
| <math>\text{১৬}</math> || <math>\text{১৬}</math> মাইক্রোসেকেন্ড || পাইপলাইন সার্কিট
|-
| <math>\text{১০০০}</math> || <math>\text{১}</math> মিলিসেকেন্ড || শব্দ প্রক্রিয়াকরণ বিলম্ব
|}
==== টাইমিং বিশ্লেষণ ====
একটি ৪-বিট বিলম্ব রেজিস্টারে যদি ইনপুট প্যাটার্ন <math>\text{১০১১}</math> দেওয়া হয় (একটি বিট প্রতি ক্লকে), তাহলে আউটপুটে ঠিক ৪ ক্লক পরে একই প্যাটার্ন পাওয়া যাবে:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট বিলম্ব রেজিস্টারের টাইমিং
! ক্লক !! ইনপুট <math>D</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! আউটপুট <math>Q_3</math>
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৫ || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৬ || || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৭ || || || || <math>\text{০}</math> || <math>\text{১}</math>
|}
আউটপুটে ঠিক ৪ ক্লক পরে ইনপুটের প্যাটার্ন দেখা যাচ্ছে ✓
==== সংকেত প্রক্রিয়াকরণে প্রয়োগ ====
শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার অত্যন্ত গুরুত্বপূর্ণ। যখন দুটো মাইক্রোফোন থেকে শব্দ ধরা হয়, তখন একটি মাইক্রোফোনের শব্দ কিছুটা আগে আসে (সূত্রটি কাছে থাকায়)। বিলম্ব রেজিস্টার দিয়ে সেই পার্থক্য সমান করা হয়।
ডিজিটাল ইকো তৈরিতেও বিলম্ব রেজিস্টার ব্যবহার হয়। মূল শব্দ রেজিস্টারে ঢুকিয়ে নির্দিষ্ট বিলম্বের পর বের করলে সেটা ইকোর মতো শোনায়।
=== ক্রমানুসারী সংকেত তৈরি ===
কখনো কখনো একটি নির্দিষ্ট বিট প্যাটার্ন বারবার তৈরি করা দরকার হয়। যেমন রেডিও যোগাযোগে একটি পরিচিত প্যাটার্ন বারবার পাঠানো হয় যাতে গ্রহণকারী বুঝতে পারে সংকেত সঠিকভাবে আসছে।
==== রৈখিক প্রতিক্রিয়া শিফট রেজিস্টার ====
একটি শিফট রেজিস্টারের কয়েকটি নির্দিষ্ট আউটপুটকে এক্স-অর গেট দিয়ে যোগ করে প্রথম ফ্লিপ-ফ্লপের ইনপুটে দিলে একটি বিশেষ ধরনের সার্কিট তৈরি হয় যা দীর্ঘ কিন্তু নির্দিষ্ট প্যাটার্ন তৈরি করে।
এই সার্কিটে <math>n</math>টি ফ্লিপ-ফ্লপ থাকলে সর্বোচ্চ <math>2^n - \text{১}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সব শূন্য ছাড়া)। এই দীর্ঘ প্যাটার্নকে দেখতে এলোমেলো মনে হয় কিন্তু আসলে নির্দিষ্ট নিয়মে তৈরি।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারের উদাহরণ
! অবস্থা !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! পরের ইনপুট (<math>Q_2 \oplus Q_1</math>)
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \oplus \text{০} = \text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০} \oplus \text{১} = \text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \oplus \text{০} = \text{১}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চক্র পূর্ণ
|}
মোট <math>2^3 - \text{১} = \text{৭}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সঠিক ট্যাপ বিন্দু বেছে নিলে)।
==== পিআরবিএস সংকেতের প্রয়োগ ====
এই দীর্ঘ সিউডো-র্যান্ডম প্যাটার্ন কোথায় কাজে লাগে?
যোগাযোগ ব্যবস্থায় পরীক্ষার জন্য: একটি নির্দিষ্ট প্যাটার্ন পাঠিয়ে গ্রহণকারী প্রান্তে মিলিয়ে দেখা হয় কোনো বিট ভুল হয়েছে কিনা।
এনক্রিপশনে: এলোমেলো দেখতে বিটের সাথে মূল তথ্যের এক্স-অর করলে তথ্য লুকিয়ে ফেলা যায়।
ওয়াইফাই ও মোবাইল নেটওয়ার্কে: বিভিন্ন ব্যবহারকারীকে আলাদা করতে বিভিন্ন প্যাটার্ন ব্যবহার করা হয়।
=== কম্পিউটারের রেজিস্টার ===
এখন পর্যন্ত আমরা ট্রানজিস্টর ও গেটের স্তরে রেজিস্টার দেখেছি। এবার একটু উপরে উঠে দেখব কম্পিউটারের মাথার ভেতরে কীভাবে রেজিস্টার কাজ করে।
একটি কম্পিউটার মূলত একটি হিসাবের মেশিন। এই মেশিনে কিছু ছোট ছোট "নোটবুক" আছে যেখানে সাময়িক হিসাব লেখা হয়। এই নোটবুকগুলোই হলো রেজিস্টার।
==== সঞ্চয়ক রেজিস্টার ====
সঞ্চয়ক হলো প্রসেসরের সবচেয়ে গুরুত্বপূর্ণ রেজিস্টার। গণনার মাঝামাঝি ফলাফল এখানে রাখা হয়।
মনে করো, তুমি মাথায় হিসাব করছ: <math>\text{৫} + \text{৩} + \text{২}</math>। প্রথমে <math>\text{৫} + \text{৩} = \text{৮}</math> মনে রাখো, তারপর সেই <math>\text{৮}</math>-এর সাথে <math>\text{২}</math> যোগ করো। এই মনে রাখার জায়গাটাই সঞ্চয়ক।
একটি যোগ অপারেশন কীভাবে হয়:
ধাপ ১: সঞ্চয়কে প্রথম সংখ্যা লোড করো: <math>A \leftarrow \text{৫}</math>
ধাপ ২: সঞ্চয়কের সাথে দ্বিতীয় সংখ্যা যোগ করো: <math>A \leftarrow A + \text{৩} = \text{৮}</math>
ধাপ ৩: ফলাফল মেমোরিতে লেখো: <math>\text{মেমোরি}[\text{ঠিকানা}] \leftarrow A</math>
==== প্রোগ্রাম কাউন্টার ====
একটি বইতে তুমি যে পৃষ্ঠা পড়ছ তার নম্বর মনে রাখো। পরের বার পড়তে বসলে ওই পৃষ্ঠা থেকে শুরু করো। প্রোগ্রাম কাউন্টার ঠিক এই কাজটি করে।
প্রোগ্রাম কাউন্টারে থাকে পরবর্তী যে নির্দেশনাটি চালাতে হবে তার মেমোরি ঠিকানা।
{| class="wikitable" style="width:100%;"
|+ প্রোগ্রাম কাউন্টারের কার্যপ্রণালী
! পরিস্থিতি !! প্রোগ্রাম কাউন্টারে কী হয়
|-
| সাধারণ নির্দেশনা চলে || স্বয়ংক্রিয়ভাবে পরের ঠিকানায় এগিয়ে যায়
|-
| লাফানো নির্দেশনা আসে || নির্দিষ্ট ঠিকানায় সরাসরি চলে যায়
|-
| ফাংশন ডাকা হয় || ফাংশনের শুরুর ঠিকানায় যায়, পুরোনো ঠিকানা স্ট্যাকে রাখে
|-
| ফাংশন শেষ হয় || স্ট্যাক থেকে পুরোনো ঠিকানা ফিরিয়ে নেয়
|-
| বিঘ্ন আসে || বর্তমান ঠিকানা সংরক্ষণ করে বিঘ্ন-নিয়ন্ত্রকের ঠিকানায় যায়
|}
==== নির্দেশনা রেজিস্টার ====
প্রোগ্রাম কাউন্টারে যে ঠিকানা থাকে, সেই ঠিকানা থেকে নির্দেশনাটি মেমোরি থেকে নিয়ে আসা হয় এবং নির্দেশনা রেজিস্টারে রাখা হয়। তারপর প্রসেসর ওই নির্দেশনাটি পড়ে বুঝে কী করতে হবে।
মনে করো একটি ক্লাসে শিক্ষক প্রতিবার বোর্ড থেকে একটি অংক পড়েন এবং সেটা মাথায় রেখে সমাধান করেন। বোর্ড হলো মেমোরি, শিক্ষকের মাথায় রাখা অংকটি হলো নির্দেশনা রেজিস্টার।
==== সাধারণ উদ্দেশ্য রেজিস্টার ====
আধুনিক প্রসেসরে অনেকগুলো রেজিস্টার থাকে যেগুলো প্রোগ্রামার ইচ্ছামতো ব্যবহার করতে পারে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ প্রসেসরের রেজিস্টার ধরন
! রেজিস্টারের নাম !! সংক্ষেপ !! প্রধান কাজ !! আকার (সাধারণত)
|-
| সঞ্চয়ক || A || গণনার মধ্যবর্তী ফলাফল রাখে || ৮, ১৬, ৩২ বা ৬৪ বিট
|-
| প্রোগ্রাম কাউন্টার || PC || পরবর্তী নির্দেশনার ঠিকানা || ৩২ বা ৬৪ বিট
|-
| নির্দেশনা রেজিস্টার || IR || বর্তমান নির্দেশনা || ১৬ বা ৩২ বিট
|-
| স্ট্যাক পয়েন্টার || SP || স্ট্যাকের শীর্ষের ঠিকানা || ৩২ বা ৬৪ বিট
|-
| অবস্থা রেজিস্টার || SR || শূন্য, ঋণাত্মক, ক্যারি পতাকা || ৮ বা ১৬ বিট
|-
| সাধারণ উদ্দেশ্য || R0-R15 || যেকোনো ডেটা সংরক্ষণ || ৩২ বা ৬৪ বিট
|}
==== রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে ১৬ থেকে ৩২টি সাধারণ উদ্দেশ্য রেজিস্টার একসাথে থাকে। এই সংগ্রহটিকে রেজিস্টার ফাইল বলা হয়।
রেজিস্টার ফাইল কীভাবে কাজ করে: দুটো রেজিস্টারের নম্বর দিলে সেই দুটো রেজিস্টারের মান একসাথে পড়া যায় (দুটো পাঠ পোর্ট), এবং একটি রেজিস্টারে ফলাফল লেখা যায় (একটি লেখ পোর্ট)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রেজিস্টার ফাইলের পাঠ পোর্ট ও লেখ পোর্ট
! পোর্ট !! ধরন !! কাজ
|-
| পাঠ পোর্ট ১ || পাঠ || প্রথম অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| পাঠ পোর্ট ২ || পাঠ || দ্বিতীয় অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| লেখ পোর্ট || লেখ || ফলাফল রেজিস্টার নম্বর ও মান দিলে সেখানে লেখে
|}
উদাহরণ: <math>R3 \leftarrow R1 + R2</math> নির্দেশনায়:
ধাপ ১: পাঠ পোর্ট ১ দিয়ে <math>R1</math> এর মান পড়া হয়
ধাপ ২: পাঠ পোর্ট ২ দিয়ে <math>R2</math> এর মান পড়া হয়
ধাপ ৩: যোগ ফল হিসাব করা হয়
ধাপ ৪: লেখ পোর্ট দিয়ে <math>R3</math>-এ ফল লেখা হয়
এই পুরো কাজটা এক ক্লকেই হতে পারে।
=== মেমোরি বাস ও রেজিস্টারের মিথস্ক্রিয়া ===
এখন একটি বড় প্রশ্ন: রেজিস্টার ও মেমোরির মধ্যে তথ্য কীভাবে যাওয়া-আসা করে?
বাস হলো তারের সেই মহাসড়ক যার উপর দিয়ে প্রসেসর, মেমোরি ও অন্যান্য যন্ত্রাংশের মধ্যে তথ্য চলাচল করে। তিন ধরনের বাস থাকে:
{| class="wikitable" style="width:100%; text-align:center;"
|+ তিন ধরনের বাস
! বাসের ধরন !! কাজ !! তারের সংখ্যা (৩২-বিট প্রসেসরে)
|-
| ঠিকানা বাস || কোন মেমোরি ঘরে যেতে হবে তা জানায় || ৩২ (বা ৬৪)
|-
| ডেটা বাস || আসল তথ্য বহন করে || ৩২ (বা ৬৪)
|-
| নিয়ন্ত্রণ বাস || পড়া না লেখা, কখন সক্রিয় ইত্যাদি নির্ধারণ করে || কয়েকটি
|}
==== মেমোরি পড়া ====
প্রসেসর যখন মেমোরি থেকে কিছু পড়তে চায়:
ধাপ ১: প্রোগ্রাম কাউন্টার থেকে ঠিকানা ঠিকানা বাসে দেওয়া হয়
ধাপ ২: নিয়ন্ত্রণ বাসে "পড়া" সংকেত দেওয়া হয়
ধাপ ৩: মেমোরি সেই ঠিকানার তথ্য ডেটা বাসে রাখে
ধাপ ৪: প্রসেসর ডেটা বাস থেকে নির্দেশনা রেজিস্টারে তথ্য নেয়
==== মেমোরি লেখা ====
প্রসেসর যখন মেমোরিতে কিছু লিখতে চায়:
ধাপ ১: ঠিকানা বাসে গন্তব্য ঠিকানা দেওয়া হয়
ধাপ ২: ডেটা বাসে রেজিস্টার থেকে লেখার তথ্য দেওয়া হয়
ধাপ ৩: নিয়ন্ত্রণ বাসে "লেখা" সংকেত দেওয়া হয়
ধাপ ৪: মেমোরি সেই ঠিকানায় তথ্য সংরক্ষণ করে
==== ক্যাশ মেমোরি ====
মেমোরি ধীর, রেজিস্টার দ্রুত। এই পার্থক্য কমাতে মাঝখানে ক্যাশ মেমোরি ব্যবহার করা হয়, যা প্রায়শই ব্যবহৃত তথ্য প্রসেসরের কাছাকাছি রেখে দেয়। ক্যাশও আসলে রেজিস্টারের মতো ফ্লিপ-ফ্লপ দিয়ে তৈরি, তবে সংখ্যায় অনেক বেশি।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মেমোরি স্তরের তুলনা
! স্তর !! আকার !! গতি !! মূল উপাদান
|-
| রেজিস্টার || কয়েক শত বাইট || ১ ক্লক || ফ্লিপ-ফ্লপ
|-
| L1 ক্যাশ || কয়েক কিলোবাইট || ৩-৫ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| L2 ক্যাশ || কয়েক মেগাবাইট || ১০-৩০ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| প্রধান মেমোরি || গিগাবাইট || ১০০-২০০ ক্লক || ধারক (DRAM)
|-
| সংগ্রহণ স্তর || টেরাবাইট || লক্ষ ক্লক || চৌম্বক বা ফ্ল্যাশ
|}
=== বাস্তব প্রয়োগের বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ইউএআরটি দিয়ে তথ্য পাঠানো ====
একটি মাইক্রোকন্ট্রোলার থেকে 'B' অক্ষর (<math>\text{০১০০০০১০}</math>) একটি কম্পিউটারে পাঠাতে হবে। ইউএআরটি কীভাবে কাজ করে দেখাও।
পাঠানোর আগে: একটি শুরু বিট (<math>\text{০}</math>) যোগ করা হয়, তারপর ৮ বিট ডেটা, তারপর একটি শেষ বিট (<math>\text{১}</math>)।
{| class="wikitable" style="text-align:center; width:100%;"
|+ 'B' অক্ষর পাঠানোর পূর্ণ ক্রম
! ক্লক !! পাঠানো বিট !! বিটের ধরন !! বিবরণ
|-
| ১ || <math>\text{০}</math> || শুরু বিট || গ্রহণকারীকে সতর্ক করে
|-
| ২ || <math>\text{০}</math> || ডেটা বিট ০ (<math>Q_0</math>) || সর্বনিম্ন বিট
|-
| ৩ || <math>\text{১}</math> || ডেটা বিট ১ (<math>Q_1</math>) ||
|-
| ৪ || <math>\text{০}</math> || ডেটা বিট ২ (<math>Q_2</math>) ||
|-
| ৫ || <math>\text{০}</math> || ডেটা বিট ৩ (<math>Q_3</math>) ||
|-
| ৬ || <math>\text{০}</math> || ডেটা বিট ৪ (<math>Q_4</math>) ||
|-
| ৭ || <math>\text{০}</math> || ডেটা বিট ৫ (<math>Q_5</math>) ||
|-
| ৮ || <math>\text{১}</math> || ডেটা বিট ৬ (<math>Q_6</math>) ||
|-
| ৯ || <math>\text{০}</math> || ডেটা বিট ৭ (<math>Q_7</math>) || সর্বোচ্চ বিট
|-
| ১০ || <math>\text{১}</math> || শেষ বিট || প্রেরণ সম্পন্ন
|}
গ্রহণকারী প্রান্তে: শুরু বিট দেখে রেজিস্টার প্রস্তুত হয়, তারপর ৮টি বিট একে একে রেজিস্টারে ঢোকে। শেষ বিট দেখে বোঝে প্রেরণ শেষ। তারপর রেজিস্টারের সমান্তরাল আউটপুট থেকে 'B' অক্ষর পাওয়া যায়।
==== উদাহরণ ২: ৪-ধাপের পাইপলাইন ====
পাইপলাইন হলো বিলম্ব রেজিস্টারের একটি চমৎকার প্রয়োগ। একটি কাপড় কারখানা কল্পনা করো: একজন কাটে, আরেকজন সেলাই করে, আরেকজন বোতাম লাগায়, আরেকজন প্যাক করে। প্রত্যেকে আলাদা কাজে ব্যস্ত, কেউ বসে নেই।
প্রসেসরে একটি নির্দেশনা চালাতে চারটি ধাপ লাগে: আনো, পড়ো, চালাও, লেখো। পাইপলাইনে প্রতিটি ধাপে একটি আলাদা নির্দেশনা থাকে।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-ধাপ পাইপলাইনের সময় বিশ্লেষণ
! ক্লক !! আনো !! পড়ো !! চালাও !! লেখো
|-
| ১ || নির্দেশনা ১ || || ||
|-
| ২ || নির্দেশনা ২ || নির্দেশনা ১ || ||
|-
| ৩ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১ ||
|-
| ৪ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১
|-
| ৫ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২
|-
| ৬ || নির্দেশনা ৬ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩
|}
৪ ক্লকের বিলম্বের পর প্রতি ক্লকে একটি নির্দেশনা সম্পন্ন হচ্ছে। পাইপলাইন না থাকলে প্রতিটি নির্দেশনায় ৪ ক্লক লাগত।
প্রতিটি ধাপের মধ্যে পাইপলাইন রেজিস্টার থাকে। এই রেজিস্টারগুলোই এক ধাপের ফলাফল পরের ধাপে পৌঁছে দেয়।
==== উদাহরণ ৩: একটি সরল প্রোগ্রামের রেজিস্টার ব্যবহার ====
নিচের সরল হিসাব: <math>\text{৫} + \text{৩} - \text{২}</math> কম্পিউটার কীভাবে রেজিস্টার ব্যবহার করে করে?
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার ব্যবহারের ধাপ
! ধাপ !! নির্দেশনা !! রেজিস্টার অবস্থা !! বিবরণ
|-
| ১ || মেমোরি থেকে R1 তে ৫ লোড করো || <math>R1 = \text{৫}</math> || মেমোরি পড়া
|-
| ২ || মেমোরি থেকে R2 তে ৩ লোড করো || <math>R2 = \text{৩}</math> || মেমোরি পড়া
|-
| ৩ || R1 এবং R2 যোগ করে R3 তে রাখো || <math>R3 = \text{৮}</math> || যোগ অপারেশন
|-
| ৪ || মেমোরি থেকে R4 তে ২ লোড করো || <math>R4 = \text{২}</math> || মেমোরি পড়া
|-
| ৫ || R3 থেকে R4 বিয়োগ করে R5 তে রাখো || <math>R5 = \text{৬}</math> || বিয়োগ অপারেশন
|-
| ৬ || R5 থেকে মেমোরিতে ফল লেখো || মেমোরি = <math>\text{৬}</math> || মেমোরি লেখা
|}
প্রতিটি ধাপেই রেজিস্টার সাময়িক স্থান হিসেবে কাজ করছে।
==== উদাহরণ ৪: শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার ====
একটি ডিজিটাল ইকো যন্ত্র তৈরি করতে হবে। মূল শব্দ শোনার পরে ঠিক ০.৫ সেকেন্ড বিলম্বে একই শব্দ আবার শোনাবে।
ধরো, শব্দ নমুনার হার ৮০০০ হার্টজ অর্থাৎ প্রতি সেকেন্ডে ৮০০০টি নমুনা নেওয়া হয়।
<math>\text{বিলম্ব} = \text{০.৫} \times \text{৮০০০} = \text{৪০০০}</math> নমুনা
তাই ৪০০০টি নমুনার একটি শিফট রেজিস্টার দরকার। প্রতিটি নমুনা ৮ বিটের হলে মোট ৩২০০০টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ইকো যন্ত্রের রেজিস্টার বিন্যাস
! উপাদান !! বিবরণ
|-
| নমুনার হার || ৮০০০ হার্টজ
|-
| বিলম্ব || ০.৫ সেকেন্ড
|-
| বিলম্বের নমুনা সংখ্যা || <math>\text{৪০০০}</math>
|-
| প্রতি নমুনার বিট || <math>\text{৮}</math>
|-
| মোট ফ্লিপ-ফ্লপ || <math>\text{৩২০০০}</math>
|-
| বাস্তবে ব্যবহার || র্যাম বা বিশেষ ডিজিটাল বিলম্ব রেখা
|}
আধুনিক যন্ত্রে এতগুলো ফ্লিপ-ফ্লপের বদলে র্যাম ব্যবহার হয়, কিন্তু ধারণাটা একই।
==== উদাহরণ ৫: প্রোগ্রাম কাউন্টারের ধাপ বিশ্লেষণ ====
একটি সরল প্রসেসরে নির্দেশনাগুলো মেমোরিতে ঠিকানা ১০০, ১০২, ১০৪, ১০৬ তে আছে (প্রতিটি নির্দেশনা ২ বাইট)। ঠিকানা ১০৪ তে একটি লাফানো নির্দেশনা আছে যা ঠিকানা ১০০ তে ফিরে যাবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ প্রোগ্রাম কাউন্টারের পরিবর্তন
! ক্লক !! প্রোগ্রাম কাউন্টার !! চলমান নির্দেশনা !! প্রোগ্রাম কাউন্টার পরিবর্তন
|-
| ১ || <math>\text{১০০}</math> || নির্দেশনা পড়ো || <math>\text{১০০} \to \text{১০২}</math>
|-
| ২ || <math>\text{১০২}</math> || নির্দেশনা পড়ো || <math>\text{১০২} \to \text{১০৪}</math>
|-
| ৩ || <math>\text{১০৪}</math> || লাফানো নির্দেশনা পড়ো || <math>\text{১০৪} \to \text{১০০}</math> (লাফ)
|-
| ৪ || <math>\text{১০০}</math> || আবার প্রথম নির্দেশনা || <math>\text{১০০} \to \text{১০২}</math>
|-
| ৫ || <math>\text{১০২}</math> || দ্বিতীয় নির্দেশনা || <math>\text{১০২} \to \text{১০৪}</math>
|}
লাফানো নির্দেশনায় প্রোগ্রাম কাউন্টার স্বাভাবিকভাবে এগোনোর বদলে ১০০-তে সরাসরি যাচ্ছে। এভাবে লুপ তৈরি হয়।
== অনুশীলনী ==
# একটি ৮-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরকারী রেজিস্টারে <math>Q_7 \ldots Q_0 = \text{১১০১০১১০}</math> লোড করা আছে। সর্বনিম্ন বিট আগে পাঠানো হলে প্রথম তিনটি ক্লকে কোন বিটগুলো বেরোবে?
# ক্লক কম্পাঙ্ক ৫ মেগাহার্টজ হলে ১০ মাইক্রোসেকেন্ড বিলম্ব পেতে কতটি ফ্লিপ-ফ্লপের শিফট রেজিস্টার দরকার?
# ইউএআরটিতে শুরু বিট কেন পাঠানো হয়?
# একটি ৪-বিট ধারাবাহিক থেকে সমান্তরাল রেজিস্টারে একে একে <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math> ঢোকানো হলে (সর্বনিম্ন বিট আগে) চার ক্লক পরে <math>Q_3 Q_2 Q_1 Q_0</math> কত হবে?
# পাইপলাইন প্রসেসরে ৪-ধাপের পাইপলাইনে ১০০টি নির্দেশনা সম্পন্ন করতে কত ক্লক লাগবে?
# রেজিস্টার ফাইলে দুটি পাঠ পোর্ট থাকার কারণ কী?
# প্রোগ্রাম কাউন্টার সাধারণত প্রতিটি নির্দেশনার পর কতটুকু বাড়ে এবং কেন?
# একটি ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারে ফিডব্যাক রাশি <math>D = Q_2 \oplus Q_0</math> এবং প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math> হলে পরের তিনটি অবস্থা কী কী?
# ক্যাশ মেমোরি কেন রেজিস্টার দিয়ে তৈরি হয়, সাধারণ মেমোরি দিয়ে নয়?
# 'Z' অক্ষরের বাইনারি কোড <math>\text{০১০১১০১০}</math>। ইউএআরটিতে সর্বনিম্ন বিট আগে পাঠানো হলে বিটগুলোর ক্রম কী হবে (শুরু ও শেষ বিটসহ)?
'''উত্তর:'''
# প্রথম ক্লক: <math>Q_0 = \text{০}</math>; দ্বিতীয় ক্লক: <math>Q_1 = \text{১}</math>; তৃতীয় ক্লক: <math>Q_2 = \text{১}</math>।
# বিলম্ব = <math>n \times T_{ক্লক}</math>। <math>T_{ক্লক} = \frac{\text{১}}{\text{৫} \times \text{১০}^6} = \text{০.২}</math> মাইক্রোসেকেন্ড। তাই <math>n = \frac{\text{১০}}{\text{০.২}} = \text{৫০}</math>টি ফ্লিপ-ফ্লপ।
# শুরু বিট গ্রহণকারীকে জানায় যে ডেটা আসা শুরু হচ্ছে। এটি ছাড়া গ্রহণকারী বুঝতে পারবে না কখন থেকে বিট গণনা শুরু করবে।
# সর্বনিম্ন বিট আগে ঢোকায় বলে চার ক্লক পরে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>। (বিটগুলো ডানে থেকে বামে সরে গেছে: প্রথম বিট <math>\text{১}</math> হলো <math>Q_0</math>, দ্বিতীয় <math>\text{০}</math> হলো <math>Q_1</math>, তৃতীয় <math>\text{১}</math> হলো <math>Q_2</math>, চতুর্থ <math>\text{১}</math> হলো <math>Q_3</math>।)
# পাইপলাইন ভরতে ৩ অতিরিক্ত ক্লক লাগে। তারপর প্রতি ক্লকে একটি নির্দেশনা শেষ হয়। মোট = <math>\text{১০০} + (\text{৪} - \text{১}) = \text{১০৩}</math> ক্লক।
# একটি যোগ নির্দেশনায় দুটো রেজিস্টারের মান একই সময়ে পড়া দরকার। দুটো পাঠ পোর্ট থাকলে এই কাজ একক ক্লকেই সম্পন্ন হয়, আলাদা দুটো ক্লক লাগে না।
# প্রতিটি নির্দেশনা সাধারণত ২ বা ৪ বাইট হয় বলে প্রোগ্রাম কাউন্টার ২ বা ৪ করে বাড়ে। (৩২-বিট প্রসেসরে সাধারণত ৪ করে বাড়ে কারণ প্রতিটি নির্দেশনা ৪ বাইট।)
# ক্লক ১: <math>D = Q_2 \oplus Q_0 = \text{০} \oplus \text{১} = \text{১}</math>। নতুন অবস্থা: <math>\text{০০০} \to Q_0=\text{১},\ \text{অবস্থা} = \text{০০১}</math> না, সঠিকভাবে: প্রাথমিক <math>\text{০০১}</math>; ক্লক ১: <math>D=\text{০}\oplus\text{১}=\text{১}</math>, নতুন: <math>\text{০১০} \to Q_0=\text{১}</math> না। ধাপে ধাপে: <math>Q_2 Q_1 Q_0 = \text{০০১}</math>; <math>D = \text{০} \oplus \text{১} = \text{১}</math>; পরের অবস্থা <math>\text{১০০} \to</math> না, শিফট বাম: <math>Q_2 \leftarrow Q_1 = \text{০},\ Q_1 \leftarrow Q_0 = \text{০},\ Q_0 \leftarrow D = \text{১}</math>। তাই: ক্লক ১: <math>\text{০০১}</math>; ক্লক ২: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{০১১}</math>; ক্লক ৩: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{১১১}</math>।
# রেজিস্টার (ফ্লিপ-ফ্লপ) ক্লক-সিঙ্ক্রোনাস এবং প্রসেসরের মতোই দ্রুত কারণ একই চিপে তৈরি। সাধারণ মেমোরি (ডিআরএম) অনেক ধীর এবং আলাদা ঘড়ি দরকার।
# পাঠানোর ক্রম: <math>\text{০}</math> (শুরু), <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math> (শেষ)। (<math>\text{০১০১১০১০}</math> এর সর্বনিম্ন বিট থেকে: <math>Q_0=\text{০}, Q_1=\text{১}, Q_2=\text{০}, Q_3=\text{১}, Q_4=\text{১}, Q_5=\text{০}, Q_6=\text{১}, Q_7=\text{০}</math>।)
== উন্নত রেজিস্টার ও আধুনিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা রেজিস্টারের মূল ধারণা, সমান্তরাল লোড, শিফট রেজিস্টার এবং সার্বজনীন রেজিস্টার দেখেছি। এই শেষ ভাগে আমরা দেখব কীভাবে রেজিস্টারের ধারণাগুলো একত্রিত হয়ে আরও শক্তিশালী কাঠামো তৈরি করে, যেগুলো আধুনিক কম্পিউটার ও ডিজিটাল ব্যবস্থার মেরুদণ্ড।
=== ফিফো রেজিস্টার ===
==== সুপারশপের লাইনের উপমা ====
একটি সুপারশপে ক্যাশ কাউন্টারে লাইন ভাবো। যে প্রথমে লাইনে দাঁড়ায়, সে প্রথমে সেবা পায় এবং প্রথমে বেরিয়ে যায়। শেষে যে আসে, সে সবার পরে বেরোয়। কেউ লাইন টপকে আগে যেতে পারে না।
এটাই ফিফো-এর মূল নীতি। বাংলায় বলা যায় প্রথম-ঢোকা-প্রথম-বেরোনো। ডিজিটাল সার্কিটে এই ধারণা দিয়ে এমন একটি সংরক্ষণ ব্যবস্থা তৈরি হয় যেখানে ডেটা যে ক্রমে ঢোকে সেই ক্রমেই বেরোয়।
প্রিন্টারের উদাহরণ আরও পরিচিত। তুমি যখন একসাথে তিনটি ডকুমেন্ট প্রিন্ট করতে পাঠাও, প্রিন্টার সেগুলো যে ক্রমে পেয়েছে সেই ক্রমেই ছাপে। প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হয়।
==== ফিফো রেজিস্টারের গঠন ====
ফিফো রেজিস্টার মূলত একটি শিফট রেজিস্টার যেখানে ডেটা এক প্রান্ত থেকে ঢোকে এবং অন্য প্রান্ত থেকে বেরোয়।
একটি চার-ঘর ফিফো-তে চারটি সংরক্ষণ ঘর আছে। নতুন ডেটা সর্বদা লেখার প্রান্তে ঢোকে এবং পুরনো ডেটা পড়ার প্রান্ত থেকে বেরোয়। প্রতিটি ঘড়ির পালসে ডেটা এক ঘর এগিয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো রেজিস্টারের অংশ
! style="background:#4472C4; color:white;" | অংশ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | কাজ
|-
| লেখার প্রান্ত || ইনপুট || নতুন ডেটা এখানে ঢোকে
|-
| পড়ার প্রান্ত || আউটপুট || পুরনো ডেটা এখান থেকে বেরোয়
|-
| লেখার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে নতুন ডেটা ঢোকে
|-
| পড়ার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে ডেটা বেরোয়
|-
| পূর্ণ সংকেত || আউটপুট || সব ঘর ভরা থাকলে এটি সক্রিয় হয়
|-
| খালি সংকেত || আউটপুট || সব ঘর খালি থাকলে এটি সক্রিয় হয়
|}
==== পূর্ণ ও খালি সংকেত ====
ফিফো-র দুটি বিশেষ সংকেত আছে যা ব্যবস্থাপনায় সাহায্য করে।
'''পূর্ণ সংকেত:''' যখন ফিফো-র সব ঘর ভরা থাকে, তখন পূর্ণ সংকেত সক্রিয় হয়। এই সময় নতুন ডেটা ঢোকানো যাবে না। যদি ঢোকানো হয়, পুরনো ডেটা হারিয়ে যাবে। এটি সুপারশপের লাইন পূর্ণ হয়ে যাওয়ার মতো, নতুন কেউ লাইনে দাঁড়াতে পারছে না।
'''খালি সংকেত:''' যখন ফিফো-র সব ঘর খালি থাকে, তখন খালি সংকেত সক্রিয় হয়। এই সময় পড়ার চেষ্টা করলে অর্থহীন ডেটা আসবে। এটি খালি লাইন থেকে ক্যাশিয়ার কাউকে ডাকার চেষ্টার মতো।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফিফো-র অবস্থা ও সংকেত
! style="background:#4472C4; color:white;" | অবস্থা
! style="background:#70AD47; color:white;" | পূর্ণ সংকেত
! style="background:#C00000; color:white;" | খালি সংকেত
! style="background:#ED7D31; color:white;" | অনুমোদিত কাজ
|-
| সব ঘর খালি || <math>\text{০}</math> || <math>\text{১}</math> || শুধু লেখা
|-
| কিছু ঘর ভরা || <math>\text{০}</math> || <math>\text{০}</math> || লেখা ও পড়া উভয়ই
|-
| সব ঘর ভরা || <math>\text{১}</math> || <math>\text{০}</math> || শুধু পড়া
|}
==== ধাপে ধাপে ফিফো কাজের উদাহরণ ====
ধরো একটি চার-ঘর ফিফো খালি আছে। একে একে <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>, <math>\text{০০০১}</math> ডেটা ঢোকানো হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো-তে ডেটা ঢোকানো
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | ঘর ১ (পুরনো)
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#70AD47; color:white;" | ঘর ৪ (নতুন)
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || খালি || - || - || - || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || - || - || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০১১০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || - || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১১০০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ৪ || লেখা <math>\text{০০০১}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || পূর্ণ সংকেত সক্রিয়
|}
এখন একে একে পড়া হলো:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো থেকে ডেটা পড়া
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | পড়া ডেটা
! style="background:#70AD47; color:white;" | ঘর ১
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| ১ || পড়া || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || প্রথম ঢোকা প্রথম বেরোল
|-
| ২ || পড়া || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || দ্বিতীয়টি বেরোল
|-
| ৩ || পড়া || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || - || তৃতীয়টি বেরোল
|-
| ৪ || পড়া || <math>\text{০০০১}</math> || - || - || - || শেষেরটি বেরোল, এখন খালি
|}
ক্রম একদম ঠিক রইল। প্রথমে যা ঢুকেছিল, প্রথমে বেরিয়েছে।
==== বাস্তব প্রয়োগ ====
'''নেটওয়ার্ক বাফারিং:''' ইন্টারনেটে ডেটা প্যাকেট আসে ঝাঁকে ঝাঁকে। কখনো অনেক প্যাকেট একসাথে আসে, কখনো কম আসে। নেটওয়ার্ক কার্ডে ফিফো বাফার থাকে যা প্যাকেটগুলো সাময়িকভাবে ধরে রাখে এবং কম্পিউটারকে যখন সুবিধা হয় তখন প্রক্রিয়া করতে দেয়। এতে প্যাকেট হারিয়ে যাওয়ার ঝুঁকি কমে।
'''প্রিন্টার স্পুলিং:''' তুমি যখন অনেকগুলো ডকুমেন্ট প্রিন্ট করতে পাঠাও, অপারেটিং সিস্টেম সেগুলো একটি ফিফো সারিতে রাখে। প্রিন্টার একটি শেষ করলে পরেরটি নেয়। তুমি এর মধ্যে অন্য কাজ করতে পারো।
'''অডিও ও ভিডিও বাফারিং:''' ইউটিউবে ভিডিও দেখার সময় নেটওয়ার্ক থেকে আসা ডেটা একটি ফিফো বাফারে জমে। খেলার গতি সমান রাখতে এই বাফার সাহায্য করে।
'''কীবোর্ড বাফার:''' তুমি দ্রুত টাইপ করলে কম্পিউটার সঙ্গে সঙ্গে প্রক্রিয়া করতে নাও পারে। কীবোর্ড বাফারে চাপা বোতামের ক্রম ফিফো হিসেবে জমে থাকে।
=== লাইফো রেজিস্টার বা স্ট্যাক ===
==== থালার স্তূপের উপমা ====
রান্নাঘরে ধোয়া থালার স্তূপ ভাবো। নতুন ধোয়া থালা সবসময় উপরে রাখা হয়। থালা নেওয়ার সময়ও সবসময় উপর থেকে নেওয়া হয়। সবশেষে রাখা থালাটি সবার আগে নেওয়া হয়।
এটাই লাইফো-এর মূল নীতি। বাংলায় বলা যায় শেষ-ঢোকা-প্রথম-বেরোনো।
আরেকটি উদাহরণ: বইয়ের স্তূপ। তুমি একটার উপর একটা বই রাখলে। পরে বই নিতে গেলে সবার উপরের বই, অর্থাৎ সবার শেষে রাখা বই, আগে হাতে আসে।
==== পুশ ও পপ অপারেশন ====
স্ট্যাকে দুটি মূল অপারেশন হয়।
'''পুশ:''' স্ট্যাকের উপরে নতুন ডেটা রাখা। থালার স্তূপে নতুন থালা উপরে দেওয়ার মতো। প্রতিটি পুশে একটি বিশেষ নির্দেশক এক ঘর উপরে ওঠে যা বলে স্ট্যাকের উপর কোথায়।
'''পপ:''' স্ট্যাকের উপর থেকে ডেটা তোলা। থালার স্তূপ থেকে উপরের থালা সরানোর মতো। প্রতিটি পপে নির্দেশক এক ঘর নিচে নামে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ স্ট্যাক অপারেশনের উদাহরণ
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা (উপর থেকে নিচে)
! style="background:#ED7D31; color:white;" | নির্দেশক অবস্থান
|-
| শুরু || খালি || - || খালি || ০
|-
| ১ || পুশ || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১
|-
| ২ || পুশ || <math>\text{০১১০}</math> || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৩ || পুশ || <math>\text{১১০০}</math> || <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ৩
|-
| ৪ || পপ || <math>\text{১১০০}</math> বেরোল || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৫ || পপ || <math>\text{০১১০}</math> বেরোল || <math>\text{১০১১}</math> || ১
|-
| ৬ || পপ || <math>\text{১০১১}</math> বেরোল || খালি || ০
|}
লক্ষ করো ঢোকার ক্রম ছিল: <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>। বেরোনোর ক্রম হলো: <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math>। একদম উল্টো!
==== স্ট্যাক উপচানো ও খালি থেকে পপ ====
স্ট্যাকে দুটি বিপদ আছে।
'''স্ট্যাক উপচানো:''' স্ট্যাক পূর্ণ থাকলে আরও পুশ করলে পুরনো ডেটা হারিয়ে যায়। কম্পিউটারে এটি একটি মারাত্মক ত্রুটি। অনেক নিরাপত্তা সমস্যার মূলে এই ত্রুটি আছে।
'''খালি স্ট্যাক থেকে পপ:''' স্ট্যাক খালি থাকলে পপ করলে অর্থহীন মান আসে। এটিও একটি গুরুতর ত্রুটি।
==== কম্পিউটারের ফাংশন কল স্ট্যাক ====
কম্পিউটার প্রোগ্রামে স্ট্যাকের সবচেয়ে গুরুত্বপূর্ণ প্রয়োগ হলো ফাংশন কল পরিচালনা।
ধরো তুমি একটি প্রোগ্রাম লিখেছ। মূল অংশ থেকে প্রথম ফাংশন ডাকা হলো। সেই ফাংশন থেকে দ্বিতীয় ফাংশন ডাকা হলো। দ্বিতীয় ফাংশন থেকে তৃতীয় ফাংশন ডাকা হলো।
তৃতীয় ফাংশন শেষ হলে কোথায় ফিরবে? দ্বিতীয় ফাংশনে। দ্বিতীয় ফাংশন শেষ হলে কোথায় ফিরবে? প্রথম ফাংশনে। প্রথম ফাংশন শেষ হলে কোথায় ফিরবে? মূল অংশে।
এই ফেরার ঠিকানাগুলো একটি স্ট্যাকে জমা থাকে। প্রতিটি ফাংশন ডাকার সময় ফেরার ঠিকানা স্ট্যাকে পুশ হয়। ফাংশন শেষ হলে স্ট্যাক থেকে পপ করে ফেরার ঠিকানা পাওয়া যায়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফাংশন কলের স্ট্যাক ব্যবহার
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | ঘটনা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা
|-
| ১ || মূল অংশ থেকে ফাংশন ক ডাকা হলো || ফেরার ঠিকানা ক পুশ
|-
| ২ || ফাংশন ক থেকে ফাংশন খ ডাকা হলো || ফেরার ঠিকানা খ পুশ
|-
| ৩ || ফাংশন খ থেকে ফাংশন গ ডাকা হলো || ফেরার ঠিকানা গ পুশ
|-
| ৪ || ফাংশন গ শেষ, ফিরল || ঠিকানা গ পপ, ফাংশন খ-তে ফিরল
|-
| ৫ || ফাংশন খ শেষ, ফিরল || ঠিকানা খ পপ, ফাংশন ক-তে ফিরল
|-
| ৬ || ফাংশন ক শেষ, ফিরল || ঠিকানা ক পপ, মূল অংশে ফিরল
|}
==== ফিফো ও লাইফো-র তুলনা ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো ও লাইফো-র তুলনামূলক সারণি
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ফিফো
! style="background:#C00000; color:white;" | লাইফো
|-
| বাংলা নাম || প্রথম-ঢোকা-প্রথম-বেরোনো || শেষ-ঢোকা-প্রথম-বেরোনো
|-
| উপমা || সুপারশপের লাইন || থালার স্তূপ
|-
| ঢোকার প্রান্ত || এক প্রান্ত || উপর
|-
| বেরোনোর প্রান্ত || অন্য প্রান্ত || উপর (একই)
|-
| মূল অপারেশন || লেখা ও পড়া || পুশ ও পপ
|-
| বেরোনোর ক্রম || ঢোকার একই ক্রম || ঢোকার উল্টো ক্রম
|-
| প্রধান ব্যবহার || বাফারিং, সারি || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| বিপদ || পূর্ণ বা খালি থেকে পড়া || উপচানো বা খালি থেকে পপ
|}
=== রেজিস্টার ফাইল ===
==== কেন একাধিক রেজিস্টার দরকার? ====
একটি ক্লাসঘরে একজন মাত্র ছাত্র থাকলে পড়াশোনা হবে কিন্তু একই সময়ে একাধিক বিষয় আলোচনা করা যাবে না। কিন্তু ৩০ জন ছাত্র থাকলে একটি দল গণিত করছে, আরেকটি বিজ্ঞান করছে, এভাবে একসাথে অনেক কাজ এগোতে পারে।
কম্পিউটারের প্রসেসরেও তাই। একটিমাত্র রেজিস্টার থাকলে হিসাব করার সময় বারবার মেমোরিতে যেতে হতো। কিন্তু একাধিক রেজিস্টার থাকলে মাঝখানের ফলাফল দ্রুত কাছাকাছি রাখা যায়।
আধুনিক প্রসেসরে ৮ থেকে ৩২টি সাধারণ-উদ্দেশ্য রেজিস্টার থাকে। এই রেজিস্টারগুলো একসাথে মিলে রেজিস্টার ফাইল তৈরি করে।
==== ঠিকানা দিয়ে রেজিস্টার নির্বাচন ====
রেজিস্টার ফাইলকে একটি ছোট ডাকঘরের মতো ভাবো যেখানে প্রতিটি খোপের একটি নম্বর আছে। তুমি নম্বর বললেই সঠিক খোপ খুলে যায়।
রেজিস্টার ফাইলে প্রতিটি রেজিস্টারের একটি ঠিকানা থাকে। ঠিকানা দিলে সেই রেজিস্টারে লেখা বা পড়া যায়।
৮টি রেজিস্টার থাকলে ৩ বিটের ঠিকানা দরকার (কারণ <math>\text{২}^\text{৩} = \text{৮}</math>)। ১৬টি থাকলে ৪ বিটের ঠিকানা দরকার।
==== রেজিস্টার ফাইলের গঠন ====
একটি সহজ ৪-রেজিস্টার ফাইলের গঠন:
* ৪টি রেজিস্টার: <math>R_0, R_1, R_2, R_3</math>
* প্রতিটি ৪ বিট প্রশস্ত
* পড়ার ঠিকানা: ২ বিট (<math>RA_1, RA_0</math>)
* লেখার ঠিকানা: ২ বিট (<math>WA_1, WA_0</math>)
* লেখার সক্রিয়করণ: ১ বিট
* ডেটা ইনপুট: ৪ বিট
* ডেটা আউটপুট: ৪ বিট
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৪-রেজিস্টার ফাইলের ঠিকানা সারণি
! style="background:#4472C4; color:white;" | ঠিকানা <math>A_1A_0</math>
! style="background:#70AD47; color:white;" | নির্বাচিত রেজিস্টার
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| <math>\text{০০}</math> || <math>R_0</math> || প্রথম রেজিস্টার
|-
| <math>\text{০১}</math> || <math>R_1</math> || দ্বিতীয় রেজিস্টার
|-
| <math>\text{১০}</math> || <math>R_2</math> || তৃতীয় রেজিস্টার
|-
| <math>\text{১১}</math> || <math>R_3</math> || চতুর্থ রেজিস্টার
|}
==== দ্বি-পোর্ট রেজিস্টার ফাইল ====
সাধারণ রেজিস্টার ফাইলে একবারে একটি রেজিস্টার পড়া বা লেখা যায়। কিন্তু আধুনিক প্রসেসরে যোগকারী সার্কিটকে একই সময়ে দুটি রেজিস্টার পড়তে হয় এবং ফলাফল একটিতে লিখতে হয়।
এই কারণে দ্বি-পোর্ট রেজিস্টার ফাইল তৈরি হয়েছে। এতে দুটি পড়ার পোর্ট এবং একটি লেখার পোর্ট থাকে। একসাথে দুটি রেজিস্টার পড়া এবং একটিতে লেখা সম্ভব।
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বি-পোর্ট রেজিস্টার ফাইলের সংযোগ
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | বিট সংখ্যা
! style="background:#ED7D31; color:white;" | কাজ
|-
| পড়ার ঠিকানা ১ (<math>RS1</math>) || ঠিকানা বিট || প্রথম উৎস রেজিস্টার নির্বাচন
|-
| পড়ার ঠিকানা ২ (<math>RS2</math>) || ঠিকানা বিট || দ্বিতীয় উৎস রেজিস্টার নির্বাচন
|-
| লেখার ঠিকানা (<math>RD</math>) || ঠিকানা বিট || গন্তব্য রেজিস্টার নির্বাচন
|-
| পড়ার ডেটা ১ (<math>RD1</math>) || ডেটা বিট || প্রথম রেজিস্টারের মান
|-
| পড়ার ডেটা ২ (<math>RD2</math>) || ডেটা বিট || দ্বিতীয় রেজিস্টারের মান
|-
| লেখার ডেটা (<math>WD</math>) || ডেটা বিট || রেজিস্টারে যা লেখা হবে
|-
| লেখার সক্রিয়করণ || ১ বিট || সক্রিয় হলে লেখা হয়
|}
==== আধুনিক প্রসেসরে রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে রেজিস্টার ফাইল অত্যন্ত গুরুত্বপূর্ণ।
'''এআরএম প্রসেসর:''' স্মার্টফোনে ব্যাপকভাবে ব্যবহৃত এআরএম প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে। প্রতিটি ৩২ বিট প্রশস্ত।
'''ইন্টেল প্রসেসর:''' আধুনিক ইন্টেল প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে যার প্রতিটি ৬৪ বিট প্রশস্ত।
'''সুপারস্কেলার প্রসেসর:''' আধুনিক প্রসেসরে একই সময়ে একাধিক নির্দেশ চালানো যায়। এর জন্য রেজিস্টার ফাইলে বহু পোর্ট থাকে।
'''রেজিস্টার পুনর্নামকরণ:''' উচ্চ কর্মক্ষমতার প্রসেসরে বাস্তব রেজিস্টারের চেয়ে অনেক বেশি ভৌত রেজিস্টার থাকে। যখন একটি নির্দেশ একটি রেজিস্টারে লিখতে চায়, তখন একটি অব্যবহৃত ভৌত রেজিস্টার দিয়ে দেওয়া হয়। এটি রেজিস্টার পুনর্নামকরণ। এতে একই রেজিস্টারে লেখার জন্য অপেক্ষা করতে হয় না।
=== রেজিস্টার সংক্রান্ত গুরুত্বপূর্ণ পরিভাষার তালিকা ===
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার পরিভাষার তালিকা
! style="background:#4472C4; color:white;" | পরিভাষা
! style="background:#ED7D31; color:white;" | সংজ্ঞা
! style="background:#70AD47; color:white;" | উদাহরণ বা মন্তব্য
|-
| রেজিস্টার || একটি বা একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি দ্রুত সংরক্ষণ ব্যবস্থা || ৮-বিট রেজিস্টার = ৮টি ডি ফ্লিপ-ফ্লপ
|-
| ডি ফ্লিপ-ফ্লপ || এক বিট সংরক্ষণকারী প্রাথমিক উপাদান || <math>Q(t+\text{১}) = D(t)</math>
|-
| ঘড়ি || নিয়মিত পর্যায়ক্রমিক বর্গ তরঙ্গ যা ফ্লিপ-ফ্লপের কাজ নিয়ন্ত্রণ করে || উর্ধ্বমুখী প্রান্তে কাজ হয়
|-
| লোড || রেজিস্টারে নতুন মান ঢোকানো || লোড = <math>\text{১}</math> হলে ঘড়ির পালসে মান ঢোকে
|-
| ধারণ || রেজিস্টারের মান অপরিবর্তিত রাখা || লোড = <math>\text{০}</math> হলে মান ধরে থাকে
|-
| পরিষ্কার || রেজিস্টারের সব বিট শূন্য করা || প্রাথমিক অবস্থায় আনতে ব্যবহার হয়
|-
| শিফট || বিট এক ঘর বামে বা ডানে সরানো || বাইনারি গুণ ও ভাগে ব্যবহার হয়
|-
| ধারাবাহিক ইনপুট || শিফটের সময় প্রান্তে যে বিট ঢোকে || ডানে শিফটে বামে নতুন বিট ঢোকে
|-
| সমান্তরাল || একসাথে সব বিট || সমান্তরাল লোডে চার বিট একসাথে ঢোকে
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || প্রিন্টার সারি, নেটওয়ার্ক বাফার
|-
| লাইফো || শেষ-ঢোকা-প্রথম-বেরোনো || ফাংশন কল স্ট্যাক
|-
| পুশ || স্ট্যাকে উপরে যোগ করা || স্ট্যাক নির্দেশক এক বাড়ে
|-
| পপ || স্ট্যাকের উপর থেকে তোলা || স্ট্যাক নির্দেশক এক কমে
|-
| রেজিস্টার ফাইল || একাধিক রেজিস্টারের সমষ্টি যেখানে ঠিকানা দিয়ে প্রবেশ করা যায় || প্রসেসরে ৮ থেকে ৩২টি রেজিস্টার
|-
| সেটআপ সময় || ঘড়ির প্রান্তের আগে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| হোল্ড সময় || ঘড়ির প্রান্তের পরে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| প্রসারণ বিলম্ব || ঘড়ির প্রান্ত থেকে আউটপুট স্থির হওয়ার সময় || সার্কিটের সর্বোচ্চ গতি নির্ধারণ করে
|-
| কম্পাঙ্ক বিভাজক || <math>\bar{Q}</math> কে <math>D</math>-তে দিলে আউটপুট কম্পাঙ্ক অর্ধেক হয় || এক বিটের গণনাকারীও বলা যায়
|-
| পূর্ণ সংকেত || ফিফো পূর্ণ হলে সক্রিয় হয় || নতুন ডেটা ঢোকানো বন্ধ করতে সংকেত
|-
| খালি সংকেত || ফিফো খালি হলে সক্রিয় হয় || পড়া বন্ধ করতে সংকেত
|-
| স্ট্যাক নির্দেশক || স্ট্যাকের বর্তমান শীর্ষ ঘরের ঠিকানা ধরে রাখে || পুশে বাড়ে, পপে কমে
|}
=== সমগ্র রেজিস্টার অধ্যায়ের সারসংক্ষেপ সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ রেজিস্টারের প্রকারভেদ ও তুলনা
! style="background:#4472C4; color:white;" | রেজিস্টারের ধরন
! style="background:#4472C4; color:white;" | মূল বৈশিষ্ট্য
! style="background:#4472C4; color:white;" | ইনপুট পদ্ধতি
! style="background:#4472C4; color:white;" | আউটপুট পদ্ধতি
! style="background:#4472C4; color:white;" | নিয়ন্ত্রণ সংকেত
! style="background:#ED7D31; color:white;" | প্রধান ব্যবহার
|-
| সরল সমান্তরাল রেজিস্টার || প্রতি পালসে লোড হয় || সমান্তরাল || সমান্তরাল || ঘড়ি || সাধারণ ডেটা সংরক্ষণ
|-
| লোড সক্রিয়করণ সহ রেজিস্টার || লোড সংকেত দিয়ে নিয়ন্ত্রিত || সমান্তরাল || সমান্তরাল || ঘড়ি, লোড || বাস ব্যবস্থা, রেজিস্টার ফাইল
|-
| ডানমুখী শিফট রেজিস্টার || বিট ডানে সরে || ধারাবাহিক (বামে) || ধারাবাহিক (ডানে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| বামমুখী শিফট রেজিস্টার || বিট বামে সরে || ধারাবাহিক (ডানে) || ধারাবাহিক (বামে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| দ্বিমুখী শিফট রেজিস্টার || দুই দিকেই শিফট || দুই প্রান্তে ধারাবাহিক || দুই প্রান্তে ধারাবাহিক বা সমান্তরাল || ঘড়ি, দিক (<math>S</math>) || গুণ ও ভাগ, ডেটা রূপান্তর
|-
| সার্বজনীন রেজিস্টার || চারটি মোড || সমান্তরাল ও ধারাবাহিক || সমান্তরাল ও ধারাবাহিক || ঘড়ি, <math>S_1</math>, <math>S_0</math> || বহুমুখী ব্যবহার
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || এক প্রান্তে || অন্য প্রান্তে || লেখা ও পড়া সক্রিয়করণ || বাফারিং, সারি
|-
| লাইফো/স্ট্যাক || শেষ-ঢোকা-প্রথম-বেরোনো || উপরে (পুশ) || উপর থেকে (পপ) || পুশ, পপ || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| রেজিস্টার ফাইল || ঠিকানা দিয়ে প্রবেশ || লেখার ঠিকানায় || পড়ার ঠিকানায় || ঠিকানা, লেখার সক্রিয়করণ || প্রসেসর রেজিস্টার
|}
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ফিফো-তে লেখা ও পড়া মিশিয়ে ====
একটি চার-ঘর ফিফো নিয়ে কাজ করা হচ্ছে। নিচের ধারাবাহিক ক্রিয়ার পর ফিফো-র অবস্থা কী হবে?
ক্রিয়ার তালিকা:
১. লেখো <math>\text{১১০০}</math>
২. লেখো <math>\text{০০১১}</math>
৩. লেখো <math>\text{১০১০}</math>
৪. পড়ো
৫. লেখো <math>\text{০১১০}</math>
৬. লেখো <math>\text{১১১১}</math>
৭. পড়ো
৮. পড়ো
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | ফিফো (পুরনো থেকে নতুন)
! style="background:#C00000; color:white;" | পড়া মান
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || - || খালি || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১১০০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০০১১}</math> || <math>\text{১১০০}, \text{০০১১}</math> || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১০১০}</math> || <math>\text{১১০০}, \text{০০১১}, \text{১০১০}</math> || - || আংশিক ভরা
|-
| ৪ || পড়া || <math>\text{০০১১}, \text{১০১০}</math> || <math>\text{১১০০}</math> || আংশিক ভরা
|-
| ৫ || লেখা <math>\text{০১১০}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}</math> || - || আংশিক ভরা
|-
| ৬ || লেখা <math>\text{১১১১}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}, \text{১১১১}</math> || - || পূর্ণ সংকেত সক্রিয়
|-
| ৭ || পড়া || <math>\text{১০১০}, \text{০১১০}, \text{১১১১}</math> || <math>\text{০০১১}</math> || আংশিক ভরা
|-
| ৮ || পড়া || <math>\text{০১১০}, \text{১১১১}</math> || <math>\text{১০১০}</math> || আংশিক ভরা
|}
শেষ অবস্থায় ফিফো-তে আছে <math>\text{০১১০}</math> ও <math>\text{১১১১}</math>।
==== উদাহরণ ২: স্ট্যাকে পুশ ও পপ ====
একটি স্ট্যাকে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে স্ট্যাকের অবস্থা দেখাও।
ক্রিয়ার তালিকা:
১. পুশ <math>\text{১০১০}</math>
২. পুশ <math>\text{১১০০}</math>
৩. পুশ <math>\text{০১১১}</math>
৪. পপ
৫. পুশ <math>\text{০০০১}</math>
৬. পপ
৭. পপ
৮. পপ
{| class="wikitable" style="text-align:center; width:90%;"
|+ উদাহরণ ২-এর স্ট্যাক অপারেশন
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | স্ট্যাক (উপর থেকে নিচে)
! style="background:#C00000; color:white;" | পপ করা মান
|-
| শুরু || - || খালি || -
|-
| ১ || পুশ <math>\text{১০১০}</math> || <math>\text{১০১০}</math> || -
|-
| ২ || পুশ <math>\text{১১০০}</math> || <math>\text{১১০০}, \text{১০১০}</math> || -
|-
| ৩ || পুশ <math>\text{০১১১}</math> || <math>\text{০১১১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৪ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০১১১}</math>
|-
| ৫ || পুশ <math>\text{০০০১}</math> || <math>\text{০০০১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৬ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০০০১}</math>
|-
| ৭ || পপ || <math>\text{১০১০}</math> || <math>\text{১১০০}</math>
|-
| ৮ || পপ || খালি || <math>\text{১০১০}</math>
|}
==== উদাহরণ ৩: রেজিস্টার ফাইলে লেখা ও পড়া ====
একটি ৪-রেজিস্টার ফাইলে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে রেজিস্টার ফাইলের অবস্থা কী?
ক্রিয়ার তালিকা:
১. ঠিকানা <math>\text{০০}</math>-তে লেখো <math>\text{১০১০}</math>
২. ঠিকানা <math>\text{০১}</math>-তে লেখো <math>\text{০১১০}</math>
৩. ঠিকানা <math>\text{১০}</math>-তে লেখো <math>\text{১১০০}</math>
৪. ঠিকানা <math>\text{০০}</math> পড়ো
৫. ঠিকানা <math>\text{০১}</math> ও <math>\text{১০}</math> একসাথে পড়ো (দ্বি-পোর্ট)
৬. ঠিকানা <math>\text{১১}</math>-তে লেখো <math>\text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৩-এর রেজিস্টার ফাইল
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | <math>R_0</math> (<math>\text{০০}</math>)
! style="background:#70AD47; color:white;" | <math>R_1</math> (<math>\text{০১}</math>)
! style="background:#70AD47; color:white;" | <math>R_2</math> (<math>\text{১০}</math>)
! style="background:#70AD47; color:white;" | <math>R_3</math> (<math>\text{১১}</math>)
! style="background:#ED7D31; color:white;" | পড়া মান
|-
| শুরু || - || অজানা || অজানা || অজানা || অজানা || -
|-
| ১ || লেখা <math>\text{০০}</math> || <math>\text{১০১০}</math> || অজানা || অজানা || অজানা || -
|-
| ২ || লেখা <math>\text{০১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || অজানা || অজানা || -
|-
| ৩ || লেখা <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || -
|-
| ৪ || পড়া <math>\text{০০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{১০১০}</math>
|-
| ৫ || পড়া <math>\text{০১}</math> ও <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{০১১০}</math> ও <math>\text{১১০০}</math>
|-
| ৬ || লেখা <math>\text{১১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || -
|}
==== উদাহরণ ৪: শিফট রেজিস্টার দিয়ে বাইনারি গুণ ====
<math>\text{০০১১}</math> (দশমিকে ৩) কে ৪ দিয়ে গুণ করো বামে শিফট রেজিস্টার ব্যবহার করে।
৪ দিয়ে গুণ মানে বামে দুই শিফট। <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:90%;"
|+ বাইনারি গুণের ধাপ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#70AD47; color:white;" | রেজিস্টার
! style="background:#ED7D31; color:white;" | দশমিক মান
|-
| শুরু || - || <math>\text{০০১১}</math> || ৩
|-
| ১ || বামে এক শিফট || <math>\text{০১১০}</math> || ৬ (৩ × ২)
|-
| ২ || বামে এক শিফট || <math>\text{১১০০}</math> || ১২ (৩ × ৪)
|}
ফলাফল: <math>\text{১১০০}</math> যা দশমিকে ১২। ৩ × ৪ = ১২ ✓
কিন্তু লক্ষ করো: যদি সংখ্যা বড় হতো যেমন <math>\text{১০১১}</math> (দশমিকে ১১), বামে দুই শিফটে উচ্চ বিট বেরিয়ে যেত। ৪ বিটের রেজিস্টারে ফলাফল ধরবে না। এটি উপচানোর সমস্যা।
==== উদাহরণ ৫: সার্বজনীন রেজিস্টার দিয়ে সম্পূর্ণ প্রক্রিয়া ====
একটি সার্বজনীন রেজিস্টার দিয়ে <math>\text{১০১১}</math> লোড করে, তা দুই বার ডানে শিফট করো, তারপর ধরে রাখো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৫-এর সম্পূর্ণ প্রক্রিয়া
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || - || <math>\text{০০০০}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১১}</math> || সমান্তরাল লোড || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড সম্পন্ন
|-
| ২ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০১০১}</math> || ডানে এক শিফট
|-
| ৩ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০০১০}</math> || আবার ডানে এক শিফট
|-
| ৪ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || মান ধরে রাখা হলো
|-
| ৫ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || এখনও অপরিবর্তিত
|}
<math>\text{১০১১}</math> (দশমিকে ১১) কে ডানে দুই শিফট করে <math>\text{০০১০}</math> (দশমিকে ২) পাওয়া গেল। ১১ ÷ ৪ = ২ (ভাগশেষ ৩)। ✓
=== অনুশীলনী ===
# একটি চার-ঘর ফিফো-তে <math>\text{১০১০}</math>, <math>\text{০১০১}</math>, <math>\text{১১০০}</math> ঢোকানো হলো। এরপর দুটি পড়া হলো। তারপর <math>\text{০০১১}</math> ঢোকানো হলো। এখন ফিফো-তে কী আছে?
# একটি স্ট্যাকে পুশ <math>\text{ক}</math>, পুশ <math>\text{খ}</math>, পুশ <math>\text{গ}</math>, পপ, পপ, পুশ <math>\text{ঘ}</math>, পপ করা হলো। পপ করা তিনটি মান কী ছিল?
# ফিফো-র খালি সংকেত কখন সক্রিয় হয় এবং এই অবস্থায় পড়ার চেষ্টা করলে কী সমস্যা হয়?
# লাইফো ও ফিফো-র মধ্যে মূল পার্থক্য কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-রেজিস্টার ফাইলে ২ বিটের ঠিকানা ব্যবহার হয়। ৮-রেজিস্টার ফাইলে কত বিটের ঠিকানা দরকার?
# <math>\text{০১০১}</math> (দশমিকে ৫) কে বামে দুই শিফট করলে কী হবে? ফলাফলের দশমিক মান কত? এটি কোন গাণিতিক অপারেশনের সমতুল?
# <math>\text{১০০০}</math> (দশমিকে ৮) কে ডানে তিন শিফট করলে কী হবে? দশমিক মান কত? (<math>SI_R = \text{০}</math>)
# রেজিস্টার ফাইলে দ্বি-পোর্ট থাকার কী সুবিধা? প্রসেসরের কোন কাজে এটি দরকার?
# একটি চার-ঘর ফিফো-তে নিচের ক্রিয়াগুলো করো এবং প্রতিটি পালসের পর অবস্থা দেখাও:
** পালস ১: লেখা <math>\text{১১১১}</math>
** পালস ২: লেখা <math>\text{০০০০}</math>
** পালস ৩: পড়া
** পালস ৪: লেখা <math>\text{১০১০}</math>
** পালস ৫: পড়া
** পালস ৬: পড়া
# ফিফো পূর্ণ থাকলে আরও লেখার চেষ্টা করলে কী হতে পারে? কীভাবে এই সমস্যা এড়ানো যায়?
# স্ট্যাকে নিচের ক্রিয়াগুলো করো এবং প্রতিটি ধাপে স্ট্যাক নির্দেশকের মান দেখাও (শুরুতে নির্দেশক = ০):
** পুশ <math>\text{১০১০}</math>
** পুশ <math>\text{০১১০}</math>
** পপ
** পুশ <math>\text{১১০০}</math>
** পুশ <math>\text{০০০১}</math>
** পপ
** পপ
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> এবং <math>SI_R = \text{১}</math> দিয়ে চারটি পালস দিলে যেকোনো প্রাথমিক অবস্থা থেকে রেজিস্টার কী হবে?
# বামে শিফট করার সময় <math>SI_L = \text{১}</math> রাখলে কী ঘটে? একটি উদাহরণ দিয়ে দেখাও।
# রেজিস্টার ফাইলে একটি রেজিস্টার থেকে পড়ে অন্য রেজিস্টারে লেখার অপারেশন (<math>R_2 \leftarrow R_0 + R_1</math>) করতে কতটি পোর্ট দরকার এবং কেন?
# নিচের ফিফো ও স্ট্যাক ব্যবহারের পরিস্থিতিগুলোতে কোনটি বেশি উপযুক্ত এবং কেন:
** ক. অপারেটিং সিস্টেমে প্রিন্ট সারি
** খ. প্রোগ্রামের ফাংশন কল
** গ. নেটওয়ার্ক প্যাকেট বাফার
** ঘ. পূর্বের অবস্থায় ফেরার সুবিধা
'''উত্তর:'''
# পড়া হলো <math>\text{১০১০}</math> ও <math>\text{০১০১}</math>; তারপর <math>\text{০০১১}</math> ঢুকল; এখন ফিফো-তে আছে <math>\text{১১০০}</math> ও <math>\text{০০১১}</math>
# প্রথম পপে <math>\text{গ}</math>, দ্বিতীয় পপে <math>\text{খ}</math>, তৃতীয় পপে <math>\text{ঘ}</math> (পুশ ঘ-র পরে করা হয়েছিল)
# খালি সংকেত সক্রিয় হয় যখন ফিফো-র সব ঘর খালি থাকে; পড়ার চেষ্টা করলে অর্থহীন বা ভুল মান আসে যা সিস্টেমে ত্রুটি তৈরি করতে পারে
# ফিফো-তে ঢোকার ক্রমেই বেরোয় (সুপারশপের লাইনের মতো, যেমন প্রিন্ট সারি); লাইফো-তে শেষে ঢোকাটা আগে বেরোয় (থালার স্তূপের মতো, যেমন ব্রাউজারের পেছনে যাওয়ার বোতাম)
# ৩ বিটের ঠিকানা দরকার কারণ <math>\text{২}^\text{৩} = \text{৮}</math>
# <math>\text{০১০১}</math> বামে দুই শিফটে <math>\text{০১০১}</math> প্রথম শিফটে <math>\text{১০১০}</math> (১০), দ্বিতীয় শিফটে <math>\text{০১০০}</math> (২০); ৫ × ৪ = ২০ ✓; এটি ৪ দিয়ে গুণের সমতুল
# <math>\text{১০০০}</math> ডানে তিন শিফটে (<math>SI_R = \text{০}</math>): প্রথমে <math>\text{০১০০}</math> (৪), দ্বিতীয়ে <math>\text{০০১০}</math> (২), তৃতীয়ে <math>\text{০০০১}</math> (১); ৮ ÷ ৮ = ১ ✓
# দ্বি-পোর্টে একই সময়ে দুটি রেজিস্টার পড়া যায়; গাণিতিক লজিক ইউনিটে <math>A + B</math> করতে <math>A</math> ও <math>B</math> একসাথে পড়তে হয়, তাই দুটি পড়ার পোর্ট দরকার
# পালস ১ পরে: <math>\text{১১১১}</math>; পালস ২ পরে: <math>\text{১১১১}, \text{০০০০}</math>; পালস ৩ পরে পড়া <math>\text{১১১১}</math>, ফিফো: <math>\text{০০০০}</math>; পালস ৪ পরে: <math>\text{০০০০}, \text{১০১০}</math>; পালস ৫ পরে পড়া <math>\text{০০০০}</math>, ফিফো: <math>\text{১০১০}</math>; পালস ৬ পরে পড়া <math>\text{১০১০}</math>, ফিফো: খালি
# পূর্ণ থাকলে সবচেয়ে পুরনো ডেটা হারিয়ে যায়; এড়াতে লেখার আগে পূর্ণ সংকেত পরীক্ষা করতে হবে এবং পূর্ণ হলে না লেখা বা বাফার বড় করতে হবে
# নির্দেশক ০; পুশ ১০১০ পরে নির্দেশক ১; পুশ ০১১০ পরে নির্দেশক ২; পপ পরে নির্দেশক ১ (<math>\text{০১১০}</math> বেরোল); পুশ ১১০০ পরে নির্দেশক ২; পুশ ০০০১ পরে নির্দেশক ৩; পপ পরে নির্দেশক ২ (<math>\text{০০০১}</math> বেরোল); পপ পরে নির্দেশক ১ (<math>\text{১১০০}</math> বেরোল)
# যেকোনো প্রাথমিক অবস্থা থেকে চার পালস পর রেজিস্টার হবে <math>\text{১১১১}</math>, কারণ প্রতিটি পালসে বামে <math>SI_R = \text{১}</math> ঢুকছে এবং চার পালস পর সব ঘর <math>\text{১}</math> হয়ে যায়
# <math>SI_L = \text{১}</math> রেখে বামে শিফট করলে ডান প্রান্তে <math>\text{১}</math> ঢোকে; যেমন <math>\text{১০১০}</math> এক বামে শিফট করলে <math>\text{০১০১}</math> হয় (<math>\text{০}</math> বেরোয়, <math>\text{১}</math> ঢোকে)
# তিনটি পোর্ট দরকার: দুটি পড়ার পোর্ট <math>R_0</math> ও <math>R_1</math>-এর মান একসাথে পেতে এবং একটি লেখার পোর্ট ফলাফল <math>R_2</math>-তে রাখতে
# ক. প্রিন্ট সারি: ফিফো উপযুক্ত কারণ প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হওয়া উচিত; খ. ফাংশন কল: লাইফো উপযুক্ত কারণ সর্বশেষ ডাকা ফাংশন থেকে প্রথমে ফিরতে হয়; গ. নেটওয়ার্ক প্যাকেট: ফিফো উপযুক্ত কারণ প্যাকেটের ক্রম বজায় রাখা দরকার; ঘ. পূর্বাবস্থায় ফেরা: লাইফো উপযুক্ত কারণ সর্বশেষ কাজটি প্রথমে পূর্বাবস্থায় ফেরানো হয়
[[{{BOOKCATEGORY}}]]
hlhoik6tswkdpvwma30hcw5gk0axgoq
106499
106498
2026-06-05T09:25:18Z
R1F4T
9121
106499
wikitext
text/x-wiki
'''রেজিস্টার''' শব্দটা শুনলেই মাথায় আসে স্কুলের খাতা, ক্লাসের উপস্থিতির রেজিস্টার। সেই রেজিস্টারে শিক্ষক প্রতিদিন প্রতিটি ছাত্রের উপস্থিতি লিখে রাখেন। ডিজিটাল ইলেকট্রনিক্সের রেজিস্টারও ঠিক এইভাবে তথ্য লিখে রাখে তবে পার্থক্য হলো এখানে তথ্য থাকে বাইনারি সংখ্যায়, আর লেখার কাজটা করে ফ্লিপ-ফ্লপ।
একটু অন্যভাবে বলি। তুমি এখন যে কম্পিউটার বা মোবাইলে এই লেখা পড়ছ, সেটা প্রতি সেকেন্ডে কোটি কোটি গণনা করছে। সেই গণনার প্রতিটি ধাপে মধ্যবর্তী ফলাফল কোথাও সাময়িকভাবে রাখতে হয় ঠিক যেমন গণিত করার সময় তুমি কাগজের একপাশে হিসাব টুকে রাখো। কম্পিউটারে এই কাজটা করে রেজিস্টার। এটি ডিজিটাল সার্কিটের কাজের মেমরি।
== রেজিস্টার কী ==
'''রেজিস্টার''' হলো একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি একটি সার্কিট যা একসাথে একাধিক বিট তথ্য সংরক্ষণ করতে পারে। যেখানে একটি ফ্লিপ-ফ্লপ কেবল একটি বিট (<math>\text{০}</math> বা <math>\text{১}</math>) ধরে রাখে, সেখানে একটি রেজিস্টার একসাথে <math>n</math>টি বিট ধরে রাখতে পারে।
সহজ কথায়:
{| class="wikitable" style="width:100%; text-align:center;"
|+ ফ্লিপ-ফ্লপ ও রেজিস্টারের তুলনা
! বিষয় !! ফ্লিপ-ফ্লপ !! রেজিস্টার
|-
| সংরক্ষিত বিটের সংখ্যা || <math>\text{১}</math>টি || <math>n</math>টি
|-
| উদাহরণ || একটি লকার || একটি লকার সারি
|-
| ব্যবহার || একটি অবস্থা মনে রাখা || একটি সংখ্যা বা শব্দ মনে রাখা
|-
| প্রধান উপাদান || একটি ডি বা জেকে ফ্লিপ-ফ্লপ || একাধিক ডি ফ্লিপ-ফ্লপ
|}
=== উপমা: লকারের সারি ===
বাস স্টেশনে বা রেলওয়ে স্টেশনে যে লকারগুলো থাকে, সেগুলো কল্পনা করো। একটিমাত্র লকার একটি ব্যাগ রাখতে পারে। কিন্তু যদি পাশাপাশি ৮টি লকার একটি সারিতে সাজানো থাকে এবং সবগুলো একই মাস্টার চাবিতে খোলে-বন্ধ হয়, তাহলে সেটাই হলো রেজিস্টার।
এখানে:
* প্রতিটি লকার = একটি ফ্লিপ-ফ্লপ (একটি বিট সংরক্ষণ করে)
* সারির সব লকার = রেজিস্টার (একসাথে ৮টি বিট সংরক্ষণ করে)
* মাস্টার চাবি = ঘড়ি সংকেত (একসাথে সব ফ্লিপ-ফ্লপ নিয়ন্ত্রণ করে)
== রেজিস্টারের গুরুত্ব ==
রেজিস্টার কেন এত গুরুত্বপূর্ণ তা একটু ভেবে দেখি। ধরো তুমি <math>\text{১৩} + \text{২৭}</math> যোগ করছ। মাথায় প্রথমে আনতে হয় ১৩ কে, তারপর ২৭ কে, মধ্যবর্তী ধাপ মনে রাখতে হয়, তারপর উত্তর দিতে হয়। কম্পিউটারও এইভাবেই কাজ করে প্রতিটি সংখ্যা রেজিস্টারে রাখা হয়, গণনার মধ্যবর্তী ফলাফলও রেজিস্টারে যায়।
{| class="wikitable" style="width:100%;"
|+ বাস্তব জীবনে রেজিস্টারের প্রয়োজনীয়তা
! পরিস্থিতি !! রেজিস্টারের ভূমিকা
|-
| কম্পিউটারের গণনা || যোগ করার আগে দুটি সংখ্যা আলাদা রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ঘড়ি || বর্তমান সময় (ঘণ্টা, মিনিট, সেকেন্ড) রেজিস্টারে সংরক্ষিত
|-
| যোগাযোগ ব্যবস্থা || পাঠানোর আগে তথ্য সাময়িকভাবে রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ক্যামেরা || ছবির পিক্সেল ডেটা প্রক্রিয়াকরণের সময় রেজিস্টারে থাকে
|-
| মোটরগাড়ির কম্পিউটার || ইঞ্জিনের সব পরামিতি রেজিস্টারে সংরক্ষিত ও পর্যবেক্ষিত
|-
| ব্যাংকের এটিএম || লেনদেনের মধ্যবর্তী তথ্য রেজিস্টারে থাকে
|}
== রেজিস্টারের প্রকারভেদ ==
রেজিস্টার অনেক ধরনের হয়। তথ্য কীভাবে ঢোকানো হয় এবং কীভাবে বের করা হয় তার উপর ভিত্তি করে রেজিস্টারের চারটি মূল প্রকার:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রেজিস্টারের প্রকারভেদ
! ধরন !! তথ্য ঢোকে || তথ্য বের হয় !! ব্যবহার
|-
| সমান্তরাল-ইন, সমান্তরাল-আউট || সব বিট একসাথে || সব বিট একসাথে || সাধারণ সংরক্ষণ
|-
| ধারাবাহিক-ইন, ধারাবাহিক-আউট || একটি একটি করে || একটি একটি করে || বিলম্ব সার্কিট
|-
| ধারাবাহিক-ইন, সমান্তরাল-আউট || একটি একটি করে || সব বিট একসাথে || রিসিভার সার্কিট
|-
| সমান্তরাল-ইন, ধারাবাহিক-আউট || সব বিট একসাথে || একটি একটি করে || ট্রান্সমিটার সার্কিট
|}
এই চারটি ধরনের পাশাপাশি আরো বিশেষ ধরনের রেজিস্টার আছে দ্বিমুখী শিফট রেজিস্টার, রিং কাউন্টার, স্ট্যাক এগুলো পরের ভাগে বিস্তারিত আলোচনা করা হবে।
== সবচেয়ে সরল রেজিস্টার: ৪-বিট সমান্তরাল রেজিস্টার ==
সবচেয়ে সহজ রেজিস্টার হলো সমান্তরাল লোড রেজিস্টার। এতে চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো থাকে এবং সবগুলো একই ঘড়ি সংকেত ব্যবহার করে।
=== গঠন ===
একটি ৪-বিট রেজিস্টারে:
* ৪টি ইনপুট: <math>D_3,\ D_2,\ D_1,\ D_0</math> (উঁচু বিট থেকে নিচু বিট)
* ৪টি আউটপুট: <math>Q_3,\ Q_2,\ Q_1,\ Q_0</math>
* একটি ঘড়ি ইনপুট: <math>CLK</math>
=== কার্যক্রম ===
ঘড়ির প্রতিটি উর্ধ্বগামী প্রান্তে (<math>\uparrow</math>) চারটি ইনপুটের মান একসাথে চারটি ফ্লিপ-ফ্লপে সংরক্ষিত হয়।
:<math>Q_3^+ = D_3,\quad Q_2^+ = D_2,\quad Q_1^+ = D_1,\quad Q_0^+ = D_0</math>
এটা বোঝার সহজ উপায়: ঘড়ির প্রান্তে একটি ''ছবি তোলা'' হয় সেই মুহূর্তে ইনপুটে যা আছে তার হুবহু ছাপ রেজিস্টারে পড়ে।
=== সত্যক সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! <math>CLK</math> !! <math>D_3 D_2 D_1 D_0</math> !! <math>Q_3 Q_2 Q_1 Q_0</math> !! ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ইনপুট হুবহু সংরক্ষিত
|-
| <math>\uparrow</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || পুরনো মান মুছে নতুন মান এলো
|-
| <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সব বিট ১
|-
| <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || সব বিট মুছে গেল
|-
| <math>\text{০}</math> বা <math>\text{১}</math> || যেকোনো || <math>Q</math> অপরিবর্তিত || ঘড়ির প্রান্ত নেই → পরিবর্তন নেই
|}
=== ধাপে ধাপে উদাহরণ ===
ধরো প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। এখন পরপর তিনটি ঘড়ির প্রান্তে ইনপুট দেওয়া হলো:
'''প্রান্ত ১:''' ইনপুট <math>D_3 D_2 D_1 D_0 = \text{১০১১}</math>
রেজিস্টারে সংরক্ষিত হলো: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
দশমিকে: <math>\text{১১}</math>
'''প্রান্ত ২:''' ইনপুট পরিবর্তন হলো <math>D_3 D_2 D_1 D_0 = \text{০১০১}</math>
রেজিস্টারে এখন: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math>
দশমিকে: <math>\text{৫}</math> (আগের <math>\text{১১}</math> মুছে গেল)
'''প্রান্ত ৩:''' ইনপুট দেওয়া হলো না (<math>D</math> অপরিবর্তিত)
রেজিস্টারে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math> (অপরিবর্তিত)
লক্ষ করো ঘড়ির প্রান্ত না পেলে রেজিস্টার তার তথ্য ধরে রাখে।
== রেজিস্টারের আকার ==
রেজিস্টার কত বিটের হবে তা নির্ভর করে কী ধরনের তথ্য সংরক্ষণ করতে হবে তার উপর।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের আকার ও প্রয়োজনীয় ফ্লিপ-ফ্লপ
! রেজিস্টারের আকার !! ফ্লিপ-ফ্লপের সংখ্যা !! সর্বোচ্চ মান !! সাধারণ ব্যবহার
|-
| ৪-বিট || <math>\text{৪}</math> || <math>\text{১৫}</math> | BCD সংখ্যা, ছোট গণনা
|-
| ৮-বিট || <math>\text{৮}</math> || <math>\text{২৫৫}</math> || একটি অক্ষর (ASCII), রঙের মান
|-
| ১৬-বিট || <math>\text{১৬}</math> || <math>\text{৬৫৫৩৫}</math> || ছোট পূর্ণসংখ্যা
|-
| ৩২-বিট || <math>\text{৩২}</math> || <math>\approx \text{৪.৩ বিলিয়ন}</math> || সাধারণ কম্পিউটার রেজিস্টার
|-
| ৬৪-বিট || <math>\text{৬৪}</math> || <math>\approx \text{১৮.৪ কুইন্টিলিয়ন}</math> || আধুনিক ৬৪-বিট প্রসেসর
|}
<math>n</math>-বিট রেজিস্টারে সংরক্ষণযোগ্য সর্বোচ্চ মান: <math>\text{২}^n - \text{১}</math>
== মৌলিক রেজিস্টার অপারেশন ==
প্রতিটি রেজিস্টার মূলত তিনটি কাজ করতে পারে:
=== ১. লোড করা ===
নতুন তথ্য রেজিস্টারে লেখা। ঘড়ির প্রান্তে ইনপুটের মান আউটপুটে চলে আসে।
=== ২. ধারণ করা ===
বর্তমান তথ্য অপরিবর্তিত রাখা। ঘড়ির প্রান্ত না পেলে বা লোড নিষ্ক্রিয় থাকলে রেজিস্টার তার মান ধরে রাখে।
=== ৩. পরিষ্কার করা ===
সব বিট <math>\text{০}</math> করে দেওয়া। এটি সাধারণত একটি বিশেষ ক্লিয়ার (<math>\overline{CLR}</math>) ইনপুট দিয়ে করা হয়।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের মৌলিক অপারেশন
! অপারেশন !! শর্ত !! আউটপুট <math>Q^+</math> !! উপমা
|-
| লোড || <math>CLK \uparrow</math> সক্রিয় || <math>D</math> (নতুন মান) || নতুন ছবি তোলা
|-
| ধারণ || <math>CLK \uparrow</math> নেই || <math>Q</math> (আগের মান) || পুরনো ছবি রাখা
|-
| পরিষ্কার || <math>\overline{CLR} = \text{০}</math> || <math>\text{০০...০}</math> || ছবি মুছে ফেলা
|}
== রেজিস্টারে ব্যবহৃত ফ্লিপ-ফ্লপের পছন্দ ==
রেজিস্টার তৈরিতে ডি ফ্লিপ-ফ্লপ কেন সবচেয়ে বেশি ব্যবহৃত হয় তা বোঝা দরকার।
{| class="wikitable" style="width:100%;"
|+ রেজিস্টারে ডি ফ্লিপ-ফ্লপ পছন্দের কারণ
! কারণ !! বিবরণ
|-
| সহজ বৈশিষ্ট্য সমীকরণ || <math>Q^+ = D</math> যা ইনপুট দেবে তাই সংরক্ষিত হবে
|-
| কোনো নিষিদ্ধ অবস্থা নেই || এসআর ফ্লিপ-ফ্লপের মতো ভুল অবস্থার ঝুঁকি নেই
|-
| একটিমাত্র ইনপুট || সরল সার্কিট, কম গেট, কম জায়গা
|-
| সরল সক্রিয়করণ || কাঙ্ক্ষিত আউটপুটই সরাসরি ইনপুট দাও
|-
| শিফট রেজিস্টারে আদর্শ || আগের ফ্লিপ-ফ্লপের আউটপুট সরাসরি পরেরটির ইনপুটে দেওয়া যায়
|}
== একটি রেজিস্টারের ভেতরে কী ঘটে ==
ধরো একটি ৪-বিট ডি ফ্লিপ-ফ্লপ রেজিস্টার। প্রতিটি ফ্লিপ-ফ্লপ স্বাধীনভাবে কাজ করে কিন্তু সবাই একই ঘড়ির প্রান্তে একসাথে কাজ শুরু করে।
ধাপে ধাপে ঘটনার ক্রম:
'''ঘড়ির প্রান্ত আসার আগে:'''
* ইনপুট লাইন <math>D_3, D_2, D_1, D_0</math> তে মান প্রস্তুত
* রেজিস্টার আগের মান ধরে রেখেছে
'''ঘড়ির উর্ধ্বগামী প্রান্তে (মুহূর্তিকভাবে):'''
* চারটি ফ্লিপ-ফ্লপ একসাথে ইনপুটের মান গ্রহণ করে
* পুরনো মান মুছে নতুন মান সংরক্ষিত হয়
'''ঘড়ির প্রান্তের পরে (বিস্তার বিলম্বের পরে):'''
* আউটপুট <math>Q_3, Q_2, Q_1, Q_0</math> তে নতুন মান প্রকাশ পায়
* পরবর্তী প্রান্ত না আসা পর্যন্ত এই মান স্থির থাকে
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের সময়-সংক্রান্ত বৈশিষ্ট্য
! সময়-বৈশিষ্ট্য !! চিহ্ন !! অর্থ
|-
| স্থাপন সময় || <math>t_{su}</math> || প্রান্তের আগে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| ধারণ সময় || <math>t_h</math> || প্রান্তের পরে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| বিস্তার বিলম্ব || <math>t_{pd}</math> || প্রান্ত থেকে আউটপুট পরিবর্তনের সময়
|-
| সর্বোচ্চ কম্পাঙ্ক || <math>f_{max}</math> || রেজিস্টার কত দ্রুত কাজ করতে পারে
|}
== বিট-ক্রম নিয়ে সতর্কতা ==
রেজিস্টারে বিট কোন ক্রমে থাকে তা জানা গুরুত্বপূর্ণ। দুটি প্রচলিত পদ্ধতি আছে:
=== মোস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বোচ্চ মানের বিট (<math>Q_3</math>) বাম দিকে থাকে। এটি স্বাভাবিক বাইনারি লেখার মতো।
উদাহরণ: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math> মানে দশমিকে <math>\text{৮}+\text{০}+\text{২}+\text{১} = \text{১১}</math>
=== লিস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বনিম্ন মানের বিট (<math>Q_0</math>) প্রথমে প্রেরণ করা হয়। ধারাবাহিক যোগাযোগে এই পদ্ধতি সাধারণ।
== উদাহরণ ==
=== উদাহরণ ১: বাইনারি সংখ্যা সংরক্ষণ ===
<math>\text{১৩}</math> দশমিক সংখ্যাটি একটি ৪-বিট রেজিস্টারে সংরক্ষণ করো।
প্রথমে দশমিক থেকে বাইনারি:
:<math>\text{১৩} = \text{৮}+\text{৪}+\text{১} = \text{১১০১}</math>
তাহলে ইনপুট: <math>D_3 D_2 D_1 D_0 = \text{১১০১}</math>
ঘড়ির প্রান্তে রেজিস্টারে সংরক্ষিত হবে:
:<math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>
যাচাই: <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
=== উদাহরণ ২: ধারণ অপারেশন ===
একটি রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> সংরক্ষিত আছে। পরবর্তী দুটি ঘড়ির প্রান্তের মধ্যে কোনো ইনপুট পরিবর্তন হলো না। রেজিস্টারের মান কী থাকবে?
উত্তর: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> (অপরিবর্তিত)
ফ্লিপ-ফ্লপ তার তথ্য ধরে রাখে নতুন ঘড়ির প্রান্ত না আসলে পরিবর্তন হয় না।
=== উদাহরণ ৩: ক্রমানুসারে লোড করা ===
প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। পরপর চারটি ঘড়ির প্রান্তে নিচের ইনপুট দেওয়া হলো। প্রতিটি প্রান্তের পরে রেজিস্টারের মান কী?
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ৩ ক্রমানুসারে লোড
! প্রান্ত !! ইনপুট <math>D_3 D_2 D_1 D_0</math> !! আউটপুট <math>Q_3 Q_2 Q_1 Q_0</math> !! দশমিক মান
|-
| শুরু || || <math>\text{০০০০}</math> || <math>\text{০}</math>
|-
| ১ম || <math>\text{০১০১}</math> || <math>\text{০১০১}</math> || <math>\text{৫}</math>
|-
| ২য় || <math>\text{১০০০}</math> || <math>\text{১০০০}</math> || <math>\text{৮}</math>
|-
| ৩য় || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || <math>\text{১৫}</math>
|-
| ৪র্থ || <math>\text{০০১১}</math> || <math>\text{০০১১}</math> || <math>\text{৩}</math>
|}
প্রতিটি প্রান্তে রেজিস্টার নতুন মান গ্রহণ করেছে এবং পুরনো মান সম্পূর্ণ মুছে গেছে।
=== উদাহরণ ৪: রেজিস্টারের সীমা পরীক্ষা ===
একটি ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব কিনা?
৩-বিট রেজিস্টারের সর্বোচ্চ মান: <math>\text{২}^\text{৩} - \text{১} = \text{৭}</math>
<math>\text{৯} > \text{৭}</math>, তাই ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব নয়। কমপক্ষে ৪-বিট রেজিস্টার দরকার (সর্বোচ্চ মান <math>\text{১৫}</math>)।
== অনুশীলনী ==
# একটি ৫-বিট রেজিস্টার সর্বোচ্চ কত মান সংরক্ষণ করতে পারে?
# দশমিক <math>\text{২৫}</math> সংরক্ষণ করতে কমপক্ষে কত বিটের রেজিস্টার প্রয়োজন?
# একটি ৪-বিট রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math> আছে। এটি দশমিকে কত?
# রেজিস্টার ও ফ্লিপ-ফ্লপের মধ্যে মূল পার্থক্য কী?
# একটি ৪-বিট রেজিস্টারে ক্রমানুসারে নিচের মানগুলো লোড করা হলো: <math>\text{০৭, ১২, ০৩, ০৯}</math> (দশমিক)। প্রতিটি লোডের পরে রেজিস্টারে বাইনারিতে কী থাকবে?
# কোন ধরনের ফ্লিপ-ফ্লপ রেজিস্টার তৈরিতে সবচেয়ে বেশি ব্যবহৃত হয় এবং কেন?
# একটি ৮-বিট রেজিস্টারে দশমিক <math>\text{১৭৮}</math> সংরক্ষণ করো। বাইনারিতে ইনপুট কী হবে?
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার কীভাবে আচরণ করে?
'''উত্তর:'''
# <math>\text{২}^\text{৫} - \text{১} = \text{৩১}</math>
# <math>\text{২}^\text{৪} = \text{১৬} < \text{২৫} \leq \text{৩২} = \text{২}^\text{৫}</math> → কমপক্ষে ৫-বিট রেজিস্টার
# <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
# ফ্লিপ-ফ্লপ একটিমাত্র বিট সংরক্ষণ করে; রেজিস্টার একাধিক ফ্লিপ-ফ্লপ একত্রিত করে বহু বিট সংরক্ষণ করে
# <math>\text{৭} = \text{০১১১}</math>, <math>\text{১২} = \text{১১০০}</math>, <math>\text{৩} = \text{০০১১}</math>, <math>\text{৯} = \text{১০০১}</math>
# ডি ফ্লিপ-ফ্লপ সরল বৈশিষ্ট্য সমীকরণ (<math>Q^+ = D</math>), নিষিদ্ধ অবস্থা নেই, একটিমাত্র ইনপুট
# <math>\text{১৭৮} = \text{১}0\text{১১০০১০}</math> → <math>D_7 D_6 D_5 D_4 D_3 D_2 D_1 D_0 = \text{১০১১০০১০}</math>
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার তার বর্তমান মান অপরিবর্তিত ধরে রাখে ইনপুটে যাই থাকুক প্রভাব পড়ে না।
== সমান্তরাল লোড রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম ডি ফ্লিপ-ফ্লপ কীভাবে একটি বিট মনে রাখতে পারে। এবার সেই ধারণার উপর দাঁড়িয়ে আমরা দেখব কীভাবে একসাথে অনেকগুলো বিট মনে রাখা যায়।
=== সমান্তরাল লোড কী? ===
একটি ড্রয়ারের কথা ভাবো। ধরো তোমার কাছে একটি ড্রয়ার আছে যেখানে চারটি ছোট খোপ আছে। তুমি যখন চাইলে চারটি খোপে একসাথে চারটি জিনিস রাখতে পারো। পরে যখন দরকার, চারটি জিনিস একসাথে বের করতে পারো। ড্রয়ার বন্ধ থাকলে ভেতরের জিনিস কেউ বদলাতে পারে না, কিন্তু খুললেই সব জিনিস দেখা যায় ও বদলানো যায়।
সমান্তরাল লোড রেজিস্টার ঠিক এই ড্রয়ারের মতো কাজ করে। চারটি বিট একসাথে ভেতরে ঢোকে এবং একসাথে বাইরে আসে। "একসাথে" মানে একই ঘড়ির পালসে, পরপর নয়।
এর বিপরীতে ধারাবাহিক রেজিস্টারে বিট একটা একটা করে ঢোকে এবং একটা একটা করে বের হয়, অনেকটা একটা নলের মধ্যে দিয়ে পাথর একটার পর একটা যাওয়ার মতো। সমান্তরাল রেজিস্টারে সব বিট একসাথে যায়, যেন চারটি নল দিয়ে চারটি পাথর একসাথে যাচ্ছে।
=== কেন সমান্তরাল লোড দরকার? ===
ধরো তুমি একটি বাসে উঠতে চাও। একজন একজন করে উঠলে সময় লাগে। কিন্তু যদি চারটি দরজা দিয়ে একসাথে চারজন উঠতে পারে, সময় চারভাগের একভাগ লাগে।
কম্পিউটারে হিসাব করতে গেলে একটি সংখ্যার সব বিট একসাথে প্রক্রিয়া করতে হয়। যদি একটা একটা করে বিট নেওয়া হয়, কাজ অনেক ধীর হয়ে যায়। তাই গাণিতিক লজিক ইউনিট, রেজিস্টার এবং মেমোরির মধ্যে ডেটা সমান্তরালভাবে চলাচল করে। এই কারণেই সমান্তরাল লোড রেজিস্টার ডিজিটাল সিস্টেমের এত গুরুত্বপূর্ণ অংশ।
=== লোড সক্রিয়করণ ছাড়া সরল ৪-বিট সমান্তরাল রেজিস্টার ===
সবচেয়ে সহজ সমান্তরাল রেজিস্টারে কোনো নিয়ন্ত্রণ নেই। প্রতিটি ঘড়ির পালসে যা ইনপুটে থাকে তাই রেজিস্টারে ঢুকে যায়।
==== সার্কিটের গঠন ====
চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো। প্রতিটি ফ্লিপ-ফ্লপ একটি করে বিট সংরক্ষণ করে।
* চারটি ফ্লিপ-ফ্লপ: <math>FF_3</math>, <math>FF_2</math>, <math>FF_1</math>, <math>FF_0</math>
* চারটি ডেটা ইনপুট: <math>D_3</math>, <math>D_2</math>, <math>D_1</math>, <math>D_0</math>
* চারটি আউটপুট: <math>Q_3</math>, <math>Q_2</math>, <math>Q_1</math>, <math>Q_0</math>
* একটি মাত্র ঘড়ি সংকেত সবগুলো ফ্লিপ-ফ্লপে একসাথে সংযুক্ত
এখানে গুরুত্বপূর্ণ বিষয় হলো সব ফ্লিপ-ফ্লপ একই ঘড়ির পালসে সাড়া দেয়। তাই ঘড়ির উর্ধ্বমুখী প্রান্তে চারটি বিট একসাথে লোড হয়।
প্রতিটি ফ্লিপ-ফ্লপের বৈশিষ্ট্য সমীকরণ:
:<math>Q_3(t+\text{১}) = D_3(t)</math>
:<math>Q_2(t+\text{১}) = D_2(t)</math>
:<math>Q_1(t+\text{১}) = D_1(t)</math>
:<math>Q_0(t+\text{১}) = D_0(t)</math>
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সরল ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | <math>D_3</math>
! style="background:#4472C4; color:white;" | <math>D_2</math>
! style="background:#4472C4; color:white;" | <math>D_1</math>
! style="background:#4472C4; color:white;" | <math>D_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শূন্য লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১১১১ লোড হয়েছে
|-
| স্তর || <math>X</math> || <math>X</math> || <math>X</math> || <math>X</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || আগের মান ধরে রাখে
|}
<math>\uparrow</math> মানে উর্ধ্বমুখী প্রান্ত, <math>X</math> মানে যেকোনো মান।
==== ধাপে ধাপে উদাহরণ: <math>\text{১০১১}</math> লোড করা ====
ধরো রেজিস্টারে এখন <math>\text{০০০০}</math> আছে। আমরা <math>\text{১০১১}</math> লোড করতে চাই।
'''প্রস্তুতি:'''
ইনপুটে বসাই: <math>D_3 = \text{১}</math>, <math>D_2 = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_0 = \text{১}</math>।
'''ঘড়ির উর্ধ্বমুখী প্রান্তে কী হয়:'''
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড করার ধাপ
! style="background:#4472C4; color:white;" | ফ্লিপ-ফ্লপ
! style="background:#4472C4; color:white;" | ডি ইনপুট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#70AD47; color:white;" | নতুন কিউ
! style="background:#ED7D31; color:white;" | কী হলো
|-
| <math>FF_3</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_2</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || অপরিবর্তিত রইল
|-
| <math>FF_1</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_0</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|}
'''ফলাফল:''' <math>Q_3Q_2Q_1Q_0 = \text{১০১১}</math>। রেজিস্টার সফলভাবে <math>\text{১০১১}</math> সংরক্ষণ করেছে।
এখন ঘড়ির পালস না দিলে রেজিস্টারে <math>\text{১০১১}</math> থেকেই যাবে, ইনপুট যতই বদলাক না কেন।
=== লোড সক্রিয়করণ সহ রেজিস্টার ===
==== কেন লোড সক্রিয়করণ দরকার? ====
একটি ব্যাংক লকারের কথা ভাবো। লকারে টাকা রাখতে হলে চাবি লাগে। চাবি না থাকলে কেউ ভেতরে কিছু রাখতে বা বের করতে পারে না। ভেতরের টাকা নিরাপদে থাকে।
সরল রেজিস্টারে সমস্যা হলো প্রতিটি ঘড়ির পালসে ডেটা বদলে যায়। কিন্তু অনেক সময় আমরা চাই রেজিস্টারের মান ধরে রাখতে, বদলাতে নয়। কম্পিউটারে একটি রেজিস্টার অনেকক্ষণ ধরে একটি মান ধরে রাখতে পারে এবং শুধু নির্দিষ্ট সময়ে আপডেট হয়।
এই সমস্যার সমাধান হলো লোড সক্রিয়করণ সংকেত। এটি ব্যাংক লকারের চাবির মতো। লোড = <math>\text{১}</math> হলে নতুন ডেটা ঢোকে, লোড = <math>\text{০}</math> হলে আগের মান অপরিবর্তিত থাকে।
==== বুলিয়ান রাশি ====
লোড সক্রিয়করণ সহ প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটে যা যাবে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
এই রাশিটি একটু ভেঙে বোঝা যাক।
যখন <math>Load = \text{১}</math>:
:<math>D_i = \text{১} \cdot Data_i + \text{০} \cdot Q_i = Data_i + \text{০} = Data_i</math>
তাই ফ্লিপ-ফ্লপে নতুন ডেটা লোড হবে।
যখন <math>Load = \text{০}</math>:
:<math>D_i = \text{০} \cdot Data_i + \text{১} \cdot Q_i = \text{০} + Q_i = Q_i</math>
তাই ফ্লিপ-ফ্লপ আগের মান ধরে রাখবে কারণ ডি ইনপুটে কিউ-এর মানই যাচ্ছে। পরের কিউ = বর্তমান কিউ।
এই রাশিটি একটি মাল্টিপ্লেক্সারের মতো কাজ করে। লোড সংকেত ঠিক করে কোন পথে ডেটা ফ্লিপ-ফ্লপে যাবে।
==== লোড সক্রিয়করণ সহ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{০}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || আগের কিউ অপরিবর্তিত || ধারণ অবস্থা: কিছু বদলায় না
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || আগের কিউ অপরিবর্তিত || লোড নিষ্ক্রিয়, ইনপুট উপেক্ষিত
|-
| <math>\text{০}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{১}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শূন্য লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || ১১১১ লোড হয়েছে
|-
| <math>\text{১}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
==== লজিক সার্কিটে ব্যবহৃত গেট ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড সক্রিয়করণ সহ রেজিস্টারের গেট সারণি
! style="background:#4472C4; color:white;" | গেটের ধরন
! style="background:#4472C4; color:white;" | সংখ্যা
! style="background:#4472C4; color:white;" | প্রতিটির ইনপুট
! style="background:#ED7D31; color:white;" | কাজ
|-
| অ্যান্ড গেট (প্রথম দল) || ৪টি || <math>Load</math>, <math>Data_i</math> || <math>Load \cdot Data_i</math> তৈরি করে
|-
| নট গেট || ১টি || <math>Load</math> || <math>\overline{Load}</math> তৈরি করে
|-
| অ্যান্ড গেট (দ্বিতীয় দল) || ৪টি || <math>\overline{Load}</math>, <math>Q_i</math> || <math>\overline{Load} \cdot Q_i</math> তৈরি করে
|-
| অর গেট || ৪টি || দুটি অ্যান্ড গেটের আউটপুট || <math>D_i</math> তৈরি করে
|-
| ডি ফ্লিপ-ফ্লপ || ৪টি || <math>D_i</math>, ঘড়ি || বিট সংরক্ষণ করে
|}
মোট গেট: ১টি নট গেট, ৮টি অ্যান্ড গেট, ৪টি অর গেট এবং ৪টি ডি ফ্লিপ-ফ্লপ।
লক্ষ করো নট গেট মাত্র একটি। কারণ <math>\overline{Load}</math> একবার তৈরি হলে চারটি ফ্লিপ-ফ্লপে একই সংকেত দেওয়া যায়। এটি সার্কিট সহজ রাখে।
==== মাল্টিপ্লেক্সার দিয়ে বিকল্প বাস্তবায়ন ====
লোড সক্রিয়করণ সহ রেজিস্টার আসলে প্রতিটি বিটে একটি ২-থেকে-১ মাল্টিপ্লেক্সার ব্যবহার করে। এই মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়।
* পথ ১ (লোড = <math>\text{১}</math>): নতুন ডেটা ফ্লিপ-ফ্লপে যায়
* পথ ২ (লোড = <math>\text{০}</math>): ফ্লিপ-ফ্লপের আউটপুট আবার ফ্লিপ-ফ্লপের ইনপুটে ফেরত যায়
এই ফেরত যাওয়ার পথকে প্রতিক্রিয়া পথ বলে। এই পথের কারণে ফ্লিপ-ফ্লপ তার নিজের মান বারবার নিজেকেই ফিরিয়ে দেয়, ফলে মান অপরিবর্তিত থাকে।
=== ক্লিয়ার অপারেশন ===
রেজিস্টারের সব বিট শূন্য করার প্রয়োজন হয় অনেক ক্ষেত্রে। কম্পিউটার চালু হওয়ার সময়, নতুন হিসাব শুরু করার আগে বা কোনো ত্রুটি পুনরুদ্ধারের সময় রেজিস্টার পরিষ্কার করতে হয়।
==== তুলনা ====
পরিষ্কার অপারেশন দুটি পদ্ধতিতে করা যায়।
'''ঘড়ি-নির্ভর পরিষ্কার:''' একটি নিয়ন্ত্রণ সংকেত দিয়ে ফ্লিপ-ফ্লপের ডি ইনপুটকে শূন্য করা হয় এবং পরের ঘড়ির পালসে শূন্য লোড হয়। এই পদ্ধতি নিরাপদ কারণ ঘড়ির সাথে তাল মিলিয়ে কাজ হয়।
এই পদ্ধতিতে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i \cdot \overline{Clear}</math>
যখন <math>Clear = \text{১}</math> এবং <math>Load = \text{০}</math>:
:<math>D_i = \text{০} + Q_i \cdot \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে সব ফ্লিপ-ফ্লপ শূন্য হয়।
'''ঘড়ি-স্বাধীন পরিষ্কার:''' ফ্লিপ-ফ্লপের ক্লিয়ার পিন সরাসরি ব্যবহার করা হয়। ঘড়ির পালসের জন্য অপেক্ষা করতে হয় না। এটি দ্রুত কিন্তু ঘড়ির সাথে তাল মেলায় না।
আধুনিক ডিজিটাল সিস্টেমে ঘড়ি-নির্ভর পরিষ্কার পছন্দ করা হয় কারণ এতে সার্কিটের আচরণ আরও অনুমানযোগ্য থাকে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দুটি পরিষ্কার পদ্ধতির তুলনা
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ঘড়ি-নির্ভর পরিষ্কার
! style="background:#C00000; color:white;" | ঘড়ি-স্বাধীন পরিষ্কার
|-
| কখন কার্যকর হয় || পরের ঘড়ির পালসে || তাৎক্ষণিক
|-
| ঘড়ির সাথে তাল || হ্যাঁ || না
|-
| ব্যবহারের সুবিধা || নিরাপদ, অনুমানযোগ্য || দ্রুত
|-
| পিন || নিয়ন্ত্রণ ইনপুট || ফ্লিপ-ফ্লপের ক্লিয়ার পিন
|-
| আধুনিক সিস্টেমে পছন্দ || বেশি পছন্দনীয় || কম পছন্দনীয়
|}
=== ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি ===
একটি পূর্ণাঙ্গ ৪-বিট রেজিস্টারে তিনটি অপারেশন হতে পারে: লোড, ধারণ এবং পরিষ্কার।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>X</math> || <math>\uparrow</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার || সব বিট শূন্য হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>X</math> || আগের কিউ || ধারণ || মান অপরিবর্তিত
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড || নতুন মান লোড হয়
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || লোড || শূন্য লোড হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|-
| <math>\text{০}</math> || <math>\text{১}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|}
এই সারণি থেকে গুরুত্বপূর্ণ বিষয়:
* পরিষ্কার সংকেত সবচেয়ে বেশি অগ্রাধিকার পায়
* ঘড়ির প্রান্ত ছাড়া কিছুই বদলায় না (ঘড়ি-স্বাধীন পরিষ্কার ছাড়া)
* লোড = <math>\text{০}</math> হলে ঘড়ির পালস আসলেও মান বদলায় না
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: পরপর তিনটি অপারেশন ====
একটি ৪-বিট রেজিস্টার শুরুতে অজানা অবস্থায় আছে। নিচের ক্রমে অপারেশন করা হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | কিউ (পরে)
! style="background:#ED7D31; color:white;" | কী হলো
|-
| শুরু || - || - || - || অজানা || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>X</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার হলো
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১১০১}</math> || <math>\text{১১০১}</math> || ১১০১ লোড হলো
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{১১০১}</math> || মান ধরে রইল, ইনপুট উপেক্ষিত
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১১১১}</math> || <math>\text{১১০১}</math> || এখনও ধরে রইল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || ০১১০ লোড হলো
|}
ধাপ ৩ ও ৪-এ লক্ষ করো, ইনপুটে যাই থাকুক লোড = <math>\text{০}</math> থাকায় রেজিস্টারের মান বদলায়নি। এটাই ধারণ অপারেশন।
==== উদাহরণ ২: লোড সক্রিয়করণ রাশি যাচাই ====
রেজিস্টারে <math>Q = \text{১১০০}</math> আছে। লোড = <math>\text{০}</math> এবং ডেটা = <math>\text{১০১০}</math> দিলে প্রতিটি বিটের ডি ইনপুট হিসাব করো।
বিট ৩-এর জন্য:
:<math>D_3 = Load \cdot Data_3 + \overline{Load} \cdot Q_3 = \text{০} \cdot \text{১} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{০} \cdot \text{০} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{০} \cdot \text{১} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{০} \cdot \text{০} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = D_3D_2D_1D_0 = \text{১১০০}</math>।
রেজিস্টারের মান অপরিবর্তিত রইল কারণ ডি ইনপুটে আগের কিউ-এর মানই গেল।
==== উদাহরণ ৩: লোড সংকেত = <math>\text{১}</math> দিয়ে মান পরিবর্তন ====
একই রেজিস্টারে <math>Q = \text{১১০০}</math>। এবার লোড = <math>\text{১}</math> এবং ডেটা = <math>\text{১০১০}</math>।
বিট ৩-এর জন্য:
:<math>D_3 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০} + \text{০} = \text{০}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১} + \text{০} = \text{১}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = \text{১০১০}</math>।
নতুন ডেটা <math>\text{১০১০}</math> লোড হয়েছে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ উদাহরণ ২ ও ৩-এর পাশাপাশি তুলনা
! style="background:#4472C4; color:white;" | বিট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#C00000; color:white;" | লোড=০, নতুন কিউ
! style="background:#70AD47; color:white;" | লোড=১, নতুন কিউ
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| style="background:#f2f2f2;" colspan="2" | ফলাফল || style="background:#f2f2f2;" | || style="background:#f2f2f2;" | <math>\text{১১০০}</math> (অপরিবর্তিত) || style="background:#f2f2f2;" | <math>\text{১০১০}</math> (নতুন)
|}
=== বাস্তব প্রয়োগ ===
==== প্রসেসর রেজিস্টার ====
কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ অংশে অনেকগুলো রেজিস্টার থাকে। এগুলো সব সমান্তরাল লোড রেজিস্টার। গাণিতিক লজিক ইউনিট যখন দুটি সংখ্যা যোগ করে, ফলাফল একটি রেজিস্টারে লোড হয়। পরের নির্দেশ না আসা পর্যন্ত সেই মান ধরে রাখে।
==== বাস ব্যবস্থা ====
কম্পিউটারে বিভিন্ন অংশের মধ্যে ডেটা বাস দিয়ে চলাচল করে। বাস একটি ভাগ করা পথ, তাই একবারে শুধু একটি অংশ ডেটা পাঠাতে পারে। লোড সক্রিয়করণ সংকেত ঠিক করে কোন রেজিস্টার বাস থেকে ডেটা নেবে। এতে একাধিক রেজিস্টার একই বাসে সংযুক্ত থাকলেও শুধু নির্দিষ্ট রেজিস্টারে ডেটা লোড হয়।
==== ডেটা ধারণ ====
ডিজিটাল নিয়ন্ত্রণ ব্যবস্থায় একটি পরিমাপ নিয়ে কিছুক্ষণ ধরে রাখার দরকার হয়। যেমন তাপমাত্রা পরিমাপ করে রেখে পরে তুলনা করা। সমান্তরাল লোড রেজিস্টারের ধারণ অপারেশন এই কাজ করে।
=== অনুশীলনী ===
# একটি ৪-বিট সমান্তরাল রেজিস্টারে <math>Q = \text{১০১০}</math> আছে। লোড = <math>\text{০}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# লোড সক্রিয়করণ সহ রেজিস্টারে প্রতিটি বিটের ডি ইনপুটের বুলিয়ান রাশি লেখো।
# একটি ৪-বিট রেজিস্টারে <math>Q = \text{০১১১}</math> আছে। লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০০১}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# নিচের ধাপগুলোর পর রেজিস্টারের মান কী হবে?
** শুরু: <math>Q = \text{১১১১}</math>
** ধাপ ১: পরিষ্কার সক্রিয়, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{১}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: লোড = <math>\text{০}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
# লোড সক্রিয়করণ সহ রেজিস্টারে <math>Q = \text{১১০০}</math> এবং লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১০০}</math> দিলে বিট ২-এর ডি ইনপুট হিসাব করো।
# ঘড়ি-নির্ভর এবং ঘড়ি-স্বাধীন পরিষ্কারের মধ্যে দুটি পার্থক্য লেখো।
# লোড সক্রিয়করণ ছাড়া সরল রেজিস্টারে সমস্যা কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-বিট রেজিস্টারে প্রাথমিকভাবে <math>Q = \text{০০০০}</math>। নিচের ক্রমে অপারেশন করলে প্রতিটি ধাপে কিউ কী হবে?
** ধাপ ১: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০১০}</math>, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{০}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: পরিষ্কার, ঘড়ির পালস
** ধাপ ৪: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
'''উত্তর:'''
# <math>Q = \text{১০১০}</math> অপরিবর্তিত থাকবে কারণ লোড = <math>\text{০}</math> মানে ধারণ অপারেশন
# <math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
# <math>Q = \text{১০০১}</math>; লোড = <math>\text{১}</math> হওয়ায় নতুন ডেটা সরাসরি লোড হয়েছে
# ধাপ ১ পরে: <math>\text{০০০০}</math>; ধাপ ২ পরে: <math>\text{০১০১}</math>; ধাপ ৩ পরে: <math>\text{০১০১}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে)
# বিট ২ এর জন্য: <math>D_2 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>; তাই <math>Q_2</math> পালসের পরে <math>\text{১}</math> হবে
# পার্থক্য ১: ঘড়ি-নির্ভর পরিষ্কার পরের ঘড়ির পালসে কার্যকর হয়, ঘড়ি-স্বাধীন পরিষ্কার তাৎক্ষণিক কার্যকর হয়। পার্থক্য ২: ঘড়ি-নির্ভর পরিষ্কার ঘড়ির সাথে তাল মেলায় তাই আধুনিক সিস্টেমে বেশি পছন্দনীয়, ঘড়ি-স্বাধীন পরিষ্কার ঘড়ির সাথে তাল মেলায় না তাই কম ব্যবহৃত হয়
# সমস্যা হলো প্রতিটি ঘড়ির পালসে ইনপুটের মান রেজিস্টারে ঢুকে যায়, চাই বা না চাই। বাস্তব উদাহরণ: কম্পিউটারে যদি রেজিস্টারের লোড সক্রিয়করণ না থাকে, তাহলে বাসে অন্য ডিভাইসের ডেটা থাকলেও সেই ডেটা রেজিস্টারে ঢুকে আগের মান নষ্ট হয়ে যাবে
# ধাপ ১ পরে: <math>Q = \text{১০১০}</math>; ধাপ ২ পরে: <math>Q = \text{১০১০}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে); ধাপ ৩ পরে: <math>Q = \text{০০০০}</math>; ধাপ ৪ পরে: <math>Q = \text{১১১১}</math>
== দ্বিমুখী শিফট রেজিস্টার ও সার্বজনীন রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম শিফট রেজিস্টার কীভাবে বিট একদিকে সরায়। কিন্তু শুধু একদিকে সরাতে পারলে কাজের অনেক সীমাবদ্ধতা থাকে। এই ভাগে আমরা দেখব কীভাবে দুই দিকেই শিফট করা যায় এবং কীভাবে একটিমাত্র রেজিস্টার দিয়ে চারটি আলাদা কাজ করা যায়।
=== দ্বিমুখী শিফট: দুই দিকের এস্কালেটর ===
বিমানবন্দরে এমন এস্কালেটর থাকে যা দুই দিকেই চলতে পারে। সকালে যাত্রীরা আসে তখন এস্কালেটর একদিকে চলে, বিকেলে সবাই ফেরে তখন অন্যদিকে চলে। একটি বোতাম টিপলেই দিক বদলে যায়।
দ্বিমুখী শিফট রেজিস্টার ঠিক এই এস্কালেটরের মতো। একটি নিয়ন্ত্রণ সংকেত দিয়ে বিটগুলো ডানে বা বামে সরানো যায়। নিয়ন্ত্রণ সংকেত <math>S = \text{১}</math> হলে ডানে, <math>S = \text{০}</math> হলে বামে।
কেন দুই দিকে শিফট দরকার? ভাবো একটি সংখ্যাকে দুই দিয়ে গুণ করতে বাইনারিতে বামে এক শিফট করলেই হয়। দুই দিয়ে ভাগ করতে ডানে এক শিফট করলেই হয়। তাই দ্বিমুখী শিফট রেজিস্টার দিয়ে দ্রুত গুণ ও ভাগ করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ শিফটের গাণিতিক অর্থ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | শিফটের দিক
! style="background:#4472C4; color:white;" | উদাহরণ
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| দুই দিয়ে গুণ || বামে এক শিফট || <math>\text{০০১১}</math> → <math>\text{০১১০}</math> || ৩ × ২ = ৬
|-
| দুই দিয়ে ভাগ || ডানে এক শিফট || <math>\text{১১০০}</math> → <math>\text{০১১০}</math> || ১২ ÷ ২ = ৬
|-
| চার দিয়ে গুণ || বামে দুই শিফট || <math>\text{০০০১}</math> → <math>\text{০১০০}</math> || ১ × ৪ = ৪
|-
| চার দিয়ে ভাগ || ডানে দুই শিফট || <math>\text{১০০০}</math> → <math>\text{০০১০}</math> || ৮ ÷ ৪ = ২
|}
=== দ্বিমুখী শিফট রেজিস্টারের গঠন ===
একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে চারটি ডি ফ্লিপ-ফ্লপ থাকে। পার্থক্য হলো প্রতিটি ফ্লিপ-ফ্লপের আগে একটি মাল্টিপ্লেক্সার থাকে।
মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়:
* ডানে শিফটের পথ: বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* বামে শিফটের পথ: ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
নিয়ন্ত্রণ সংকেত <math>S</math> মাল্টিপ্লেক্সারকে বলে কোন পথ বেছে নিতে।
==== বুলিয়ান রাশি ====
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটের রাশি:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এখানে:
* <math>Q_{i-1}</math> মানে বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* <math>Q_{i+1}</math> মানে ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
যখন <math>S = \text{১}</math> (ডানে শিফট):
:<math>D_i = \text{১} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} = Q_{i-1}</math>
প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়, ফলে সব বিট ডানে সরে।
যখন <math>S = \text{০}</math> (বামে শিফট):
:<math>D_i = \text{০} \cdot Q_{i-1} + \text{১} \cdot Q_{i+1} = Q_{i+1}</math>
প্রতিটি ফ্লিপ-ফ্লপ ডান পাশের মান নেয়, ফলে সব বিট বামে সরে।
==== প্রান্তের ফ্লিপ-ফ্লপের বিশেষ ব্যবস্থা ====
সবচেয়ে বাম ফ্লিপ-ফ্লপ (<math>FF_3</math>) এর বাম পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই ডানে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে ডানমুখী ধারাবাহিক ইনপুট বলে।
সবচেয়ে ডান ফ্লিপ-ফ্লপ (<math>FF_0</math>) এর ডান পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই বামে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে বামমুখী ধারাবাহিক ইনপুট বলে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দ্বিমুখী শিফট রেজিস্টারের ইনপুট-আউটপুট
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>S</math> || নিয়ন্ত্রণ ইনপুট || <math>\text{১}</math> = ডানে, <math>\text{০}</math> = বামে
|-
| ডানমুখী ধারাবাহিক ইনপুট (<math>SI_R</math>) || ইনপুট || ডানে শিফটের সময় বাম প্রান্তে যে বিট ঢোকে
|-
| বামমুখী ধারাবাহিক ইনপুট (<math>SI_L</math>) || ইনপুট || বামে শিফটের সময় ডান প্রান্তে যে বিট ঢোকে
|-
| <math>Q_3, Q_2, Q_1, Q_0</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| ঘড়ি || ইনপুট || সব ফ্লিপ-ফ্লপে একই ঘড়ি
|}
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বিমুখী শিফট রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | আগের অবস্থা
! style="background:#70AD47; color:white;" | পরের অবস্থা
! style="background:#ED7D31; color:white;" | অপারেশন
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>SI_R \cdot Q_3Q_2Q_1</math> || ডানে শিফট, <math>SI_R</math> বাম প্রান্তে ঢোকে
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_2Q_1Q_0 \cdot SI_L</math> || বামে শিফট, <math>SI_L</math> ডান প্রান্তে ঢোকে
|-
| <math>X</math> || স্তর || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_3Q_2Q_1Q_0</math> || ধারণ, কিছু বদলায় না
|}
==== উদাহরণ: ডানে ও বামে শিফট ====
ধরো রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>SI_R = \text{০}</math> এবং <math>SI_L = \text{১}</math>।
ডানে শিফট (<math>S = \text{১}</math>), তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_R</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
এখন বামে শিফট (<math>S = \text{০}</math>), শুরু থেকে তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_L</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
লক্ষ করো বামে শিফটে ডান প্রান্ত থেকে <math>SI_L = \text{১}</math> ঢুকছে, তাই ডান দিকের বিটগুলো একে একে <math>\text{১}</math> হয়ে যাচ্ছে।
=== সার্বজনীন রেজিস্টার ===
==== সার্বজনীন মানে কী? ====
একটি সুইস আর্মি ছুরির কথা ভাবো। এতে একসাথে ছুরি, কাঁচি, স্ক্রু ড্রাইভার, করাত সব আছে। একটি যন্ত্র দিয়ে অনেক কাজ হয়। একটি বোতাম বা লিভার দিয়ে সঠিক যন্ত্র বের করা যায়।
সার্বজনীন রেজিস্টার ঠিক এই সুইস আর্মি ছুরির মতো। দুটি মোড নির্বাচন বিট <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি আলাদা অপারেশন করা যায়।
==== মোড নির্বাচন সারণি ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ সার্বজনীন রেজিস্টারের মোড সারণি
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#70AD47; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | বিস্তারিত
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || রেজিস্টারের মান অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || বিট ডানে সরে, বাম প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || বিট বামে সরে, ডান প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || চার বিট একসাথে লোড হয়
|}
==== চারটি মোডের বুলিয়ান রাশি ====
সার্বজনীন রেজিস্টারে প্রতিটি ফ্লিপ-ফ্লপের আগে একটি ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে। মাল্টিপ্লেক্সার <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি পথের একটি বেছে নেয়।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1S_0 \cdot Data_i</math>
এই রাশিটি ভেঙে বোঝা যাক:
* <math>S_1S_0 = \text{০০}</math>: <math>D_i = Q_i</math>, নিজের মান নিজেই ফেরত পায়, ধারণ
* <math>S_1S_0 = \text{০১}</math>: <math>D_i = Q_{i-1}</math>, বাম পাশের মান নেয়, ডানে শিফট
* <math>S_1S_0 = \text{১০}</math>: <math>D_i = Q_{i+1}</math>, ডান পাশের মান নেয়, বামে শিফট
* <math>S_1S_0 = \text{১১}</math>: <math>D_i = Data_i</math>, নতুন ডেটা লোড হয়
==== মোড ০০: ধারণ ====
এই মোডে রেজিস্টার একটি তথ্য আঁকড়ে ধরে রাখে। বাইরে যাই হোক না কেন, ভেতরের মান নিরাপদ।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট সেই ফ্লিপ-ফ্লপের আউটপুটই পায়। তাই পরের ঘড়ির পালসেও মান বদলায় না।
==== মোড ০১: ডানে শিফট ====
ট্রেনের কামরার মতো ভাবো। একটি কামরা সরে গেলে পরের কামরা সেই জায়গায় আসে। ডানে শিফটে প্রতিটি বিট ডান পাশের ফ্লিপ-ফ্লপে চলে যায়। বাম প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১০: বামে শিফট ====
বিপরীতভাবে প্রতিটি বিট বাম পাশের ফ্লিপ-ফ্লপে চলে যায়। ডান প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১১: সমান্তরাল লোড ====
এই মোড আগের ভাগে দেখা সমান্তরাল লোড রেজিস্টারের মতো। চারটি বিট একসাথে রেজিস্টারে ঢোকে।
==== সম্পূর্ণ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_2</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_1</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_0</math> (পরে)
! style="background:#ED7D31; color:white;" | মোড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>SI_R</math> || <math>SI_R</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || ডানে শিফট
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>SI_L</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || <math>SI_L</math> || বামে শিফট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>D_3D_2D_1D_0</math> || <math>D_3</math> || <math>D_2</math> || <math>D_1</math> || <math>D_0</math> || সমান্তরাল লোড
|-
| <math>X</math> || <math>X</math> || স্তর || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ (ঘড়ি প্রান্ত নেই)
|}
==== সার্বজনীন রেজিস্টারের উপমা ====
একটি চার লেনের রাস্তার কথা ভাবো। রাস্তার একটি কেন্দ্রীয় নিয়ন্ত্রণ কক্ষ আছে। সেখান থেকে দুটি সুইচ দিয়ে রাস্তার আচরণ বদলানো যায়।
* সুইচ ০০: সব গাড়ি থামো, যে যেখানে আছ
* সুইচ ০১: সব গাড়ি এক লেন ডানে সরো
* সুইচ ১০: সব গাড়ি এক লেন বামে সরো
* সুইচ ১১: নতুন গাড়ি সব লেনে একসাথে প্রবেশ করো
সার্বজনীন রেজিস্টারের <math>S_1</math> ও <math>S_0</math> সেই দুটি সুইচের মতো।
=== ৭৪১৯৪ চিপের পরিচয় ===
বাস্তব জীবনে সার্বজনীন রেজিস্টার হিসেবে ৭৪১৯৪ চিপ সবচেয়ে পরিচিত। এটি একটি ৪-বিট দ্বিমুখী সার্বজনীন শিফট রেজিস্টার।
==== পিন বিন্যাস ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৭৪১৯৪ চিপের পিন বিবরণ
! style="background:#4472C4; color:white;" | পিনের নাম
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | বিবরণ
|-
| <math>A, B, C, D</math> || সমান্তরাল ডেটা ইনপুট || চারটি বিট একসাথে লোড করার ইনপুট
|-
| <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| <math>S_0, S_1</math> || মোড নির্বাচন || দুটি নিয়ন্ত্রণ বিট
|-
| <math>SR</math> (ডানমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || ডানে শিফটের সময় বাম প্রান্তে ঢোকে
|-
| <math>SL</math> (বামমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || বামে শিফটের সময় ডান প্রান্তে ঢোকে
|-
| <math>CLK</math> || ঘড়ি || উর্ধ্বমুখী প্রান্ত-ট্রিগার
|-
| <math>\overline{CLR}</math> || ক্লিয়ার || সক্রিয়-নিম্ন, তাৎক্ষণিক পরিষ্কার
|-
| <math>V_{CC}</math> || বিদ্যুৎ || <math>+\text{৫V}</math>
|-
| <math>GND</math> || ভূমি || <math>\text{০V}</math>
|}
==== ৭৪১৯৪ চিপের কার্যক্রম ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ এর কার্যক্রম সারণি
! style="background:#C00000; color:white;" | <math>\overline{CLR}</math>
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#70AD47; color:white;" | অপারেশন
|-
| <math>\text{০}</math> || <math>X</math> || <math>X</math> || <math>X</math> || তাৎক্ষণিক পরিষ্কার, সব আউটপুট <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || ধারণ
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || ডানে শিফট, <math>SR</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || বামে শিফট, <math>SL</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || সমান্তরাল লোড
|}
লক্ষ করো ৭৪১৯৪-তে <math>S_0</math> ও <math>S_1</math>-এর সংজ্ঞা আগের সারণির বিপরীত দিক থেকে আসা। চিপের ডেটাশিট দেখে নিশ্চিত হওয়া ভালো।
==== বাস্তব প্রয়োগে ৭৪১৯৪ ====
'''ধারাবাহিক থেকে সমান্তরাল রূপান্তর:''' ধারাবাহিকভাবে আসা ডেটা শিফট করে রেজিস্টারে জমা হয়, তারপর সমান্তরালভাবে বের হয়। যোগাযোগ ব্যবস্থায় এই প্রক্রিয়া সাধারণ।
'''সমান্তরাল থেকে ধারাবাহিক রূপান্তর:''' সমান্তরালভাবে ডেটা লোড করে শিফট করে ধারাবাহিকভাবে বের করা হয়।
'''বৃত্তাকার রেজিস্টার:''' আউটপুটকে আবার ইনপুটে দিলে বিট বৃত্তাকারে ঘোরে। কখনো একই প্যাটার্ন বারবার তৈরি করতে এটি ব্যবহার হয়।
'''ক্রমিক গণনাকারী:''' বিশেষভাবে সংযুক্ত করলে ৭৪১৯৪ একটি জনসন গণনাকারী বা রিপল গণনাকারী তৈরি করতে পারে।
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ধারণ মোড (মোড ০০) ====
রেজিস্টারে <math>\text{১০১১}</math> আছে। <math>S_1S_0 = \text{০০}</math> দিয়ে তিনটি ঘড়ির পালস দেওয়া হলো।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ধারণ মোডের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১০১১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ২ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ৩ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|}
ঘড়ি পালস দেওয়া হচ্ছে কিন্তু মোড ০০ থাকায় রেজিস্টারের মান বদলাচ্ছে না। এটাই ধারণ মোডের কাজ।
==== উদাহরণ ২: ডানে শিফট মোড (মোড ০১) ====
রেজিস্টারে <math>\text{১১০০}</math> আছে। <math>S_1S_0 = \text{০১}</math>, ধারাবাহিক ইনপুট <math>SI_R = \text{১}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রাথমিক
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>SI_R</math> বামে ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এবার <math>\text{০}</math> ঢুকল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার <math>\text{০}</math>
|}
প্রতিটি পালসে বিট ডানে এক ঘর সরছে। বাম প্রান্ত থেকে <math>SI_R</math>-এর মান ঢুকছে। ডান প্রান্তের বিট বেরিয়ে যাচ্ছে।
==== উদাহরণ ৩: বামে শিফট মোড (মোড ১০) ====
রেজিস্টারে <math>\text{০০১১}</math> আছে। <math>S_1S_0 = \text{১০}</math>, ধারাবাহিক ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_L</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রাথমিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || বামে গেল, ডানে <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সব বিট বেরিয়ে গেল
|}
<math>\text{০০১১}</math> কে বামে চার বার শিফট করলে সব বিট বেরিয়ে যায় এবং <math>SI_L = \text{০}</math> থেকে শূন্য ঢোকায় রেজিস্টার শূন্য হয়ে যায়। এটি দুই দিয়ে বারবার গুণ করার মতো।
==== উদাহরণ ৪: সমান্তরাল লোড (মোড ১১) ====
রেজিস্টারে <math>\text{০০০০}</math> আছে। <math>S_1S_0 = \text{১১}</math>, ডেটা ইনপুট = <math>\text{১০১০}</math>।
একটি ঘড়ির পালসে:
:<math>Q_3 = D_3 = \text{১}</math>
:<math>Q_2 = D_2 = \text{০}</math>
:<math>Q_1 = D_1 = \text{১}</math>
:<math>Q_0 = D_0 = \text{০}</math>
রেজিস্টারে এখন <math>\text{১০১০}</math>। মাত্র একটি পালসে চারটি বিট একসাথে লোড হয়েছে।
==== উদাহরণ ৫: মোড পরিবর্তন করে ধারাবাহিক থেকে সমান্তরাল ====
ধরো ধারাবাহিকভাবে <math>\text{১, ১, ০, ১}</math> বিট আসছে। আমরা এগুলো শিফট রেজিস্টারে জমিয়ে সমান্তরালভাবে পড়তে চাই।
প্রথমে মোড ০১ (ডানে শিফট) দিয়ে চারটি পালস:
{| class="wikitable" style="text-align:center; width:90%;"
|+ ধারাবাহিক থেকে সমান্তরাল রূপান্তর
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || <math>\text{০০০০}</math> || খালি রেজিস্টার
|-
| ১ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০০০}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১১০০}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০১}</math> || <math>\text{০}</math> || <math>\text{০১১০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০১১}</math> || চতুর্থ বিট ঢুকল
|-
| ৫ || <math>\text{০০}</math> || - || <math>\text{১০১১}</math> || মোড ০০, সমান্তরাল পড়া
|}
চার পালস পর রেজিস্টারে <math>\text{১০১১}</math> আছে। এখন মোড ০০-এ গিয়ে সমান্তরালভাবে চারটি বিট একসাথে পড়া যাবে।
=== সার্বজনীন রেজিস্টারের সুবিধা ও সীমাবদ্ধতা ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের তুলনামূলক বিশ্লেষণ
! style="background:#4472C4; color:white;" | দিক
! style="background:#70AD47; color:white;" | সুবিধা
! style="background:#C00000; color:white;" | সীমাবদ্ধতা
|-
| কার্যকারিতা || চারটি মোড, একটি চিপে সব || সরল রেজিস্টারের চেয়ে জটিল
|-
| নমনীয়তা || প্রয়োজনমতো মোড বদলানো যায় || দুটি অতিরিক্ত নিয়ন্ত্রণ সংকেত দরকার
|-
| খরচ || একটি চিপে সব কাজ, খরচ কম || অতিরিক্ত মাল্টিপ্লেক্সার গেট লাগে
|-
| গতি || ঘড়ির একটি পালসে মোড বদলানো যায় || সমান্তরাল লোড একটি পালস নেয়
|-
| জায়গা || একটি চিপ, কম জায়গা || সরল রেজিস্টারের চেয়ে বেশি ট্রানজিস্টর
|}
=== অনুশীলনী ===
# একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> দিয়ে দুটি পালস দিলে রেজিস্টারে কী থাকবে?
# একই রেজিস্টারে <math>\text{১০১০}</math> আছে। এবার <math>S = \text{০}</math> এবং <math>SI_L = \text{১}</math> দিয়ে দুটি পালস দিলে কী হবে?
# দ্বিমুখী শিফট রেজিস্টারে বিট ডানে শিফট হলে কোন পাশ থেকে নতুন বিট ঢোকে?
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> মানে কোন মোড? এই মোডে <math>D_i</math>-এর রাশি কী?
# একটি সার্বজনীন রেজিস্টারে <math>\text{০০০০}</math> আছে। নিচের ধাপে কী হবে?
** ধাপ ১: মোড <math>\text{১১}</math>, ডেটা = <math>\text{১১০১}</math>, একটি পালস
** ধাপ ২: মোড <math>\text{০১}</math>, <math>SI_R = \text{০}</math>, দুটি পালস
** ধাপ ৩: মোড <math>\text{০০}</math>, একটি পালস
# ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী হয় এবং এটি কোন ধরনের পরিষ্কার?
# বামে এক শিফট করলে একটি বাইনারি সংখ্যার কী গাণিতিক পরিবর্তন হয়? <math>\text{০০১১}</math> (দশমিকে ৩) এর উদাহরণ দিয়ে দেখাও।
# সার্বজনীন রেজিস্টারের প্রতিটি ফ্লিপ-ফ্লপের আগে কত ইনপুটের মাল্টিপ্লেক্সার থাকে এবং কেন?
# ধারাবাহিক থেকে সমান্তরাল রূপান্তরে কোন দুটি মোড ব্যবহার হয় এবং কেন?
# একটি সার্বজনীন রেজিস্টারে <math>\text{১১১১}</math> আছে। মোড ১০ (<math>SI_L = \text{০}</math>) দিয়ে চারটি পালস দিলে কী হবে এবং দশমিক মানের কী পরিবর্তন হলো?
'''উত্তর:'''
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{০০১০}</math>; ডানে দুই শিফট, বাম প্রান্তে <math>\text{০}</math> ঢুকেছে
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{১০১১}</math>; বামে দুই শিফট, ডান প্রান্তে <math>\text{১}</math> ঢুকেছে
# বাম পাশ থেকে ধারাবাহিক ইনপুট <math>SI_R</math> ঢোকে
# মোড ০১ মানে ডানে শিফট; <math>D_i = Q_{i-1}</math> অর্থাৎ প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়
# ধাপ ১ পরে: <math>\text{১১০১}</math>; ধাপ ২ এর প্রথম পালসে: <math>\text{০১১০}</math>; ধাপ ২ এর দ্বিতীয় পালসে: <math>\text{০০১১}</math>; ধাপ ৩ পরে: <math>\text{০০১১}</math> (অপরিবর্তিত)
# <math>\overline{CLR} = \text{০}</math> দিলে তাৎক্ষণিক সব আউটপুট <math>\text{০}</math> হয়ে যায়; এটি ঘড়ি-স্বাধীন পরিষ্কার
# বামে এক শিফট মানে সংখ্যা দুই দিয়ে গুণ হওয়া; <math>\text{০০১১}</math> (দশমিকে ৩) বামে এক শিফটে <math>\text{০১১০}</math> (দশমিকে ৬) হয়, যা ৩ × ২ = ৬
# ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে কারণ চারটি মোডে চারটি আলাদা পথ থেকে একটি বেছে নিতে হয়
# প্রথমে মোড ০১ (ডানে শিফট) দিয়ে ধারাবাহিক বিট ঢোকানো হয়; চারটি পালস পর সব বিট রেজিস্টারে জমা হলে মোড ০০ (ধারণ) এ গিয়ে সমান্তরালভাবে পড়া হয়
# পালস ১: <math>\text{০১১১}</math>; পালস ২: <math>\text{০০১১}</math>; পালস ৩: <math>\text{০০০১}</math>; পালস ৪: <math>\text{০০০০}</math>; দশমিক মান: ১৫ থেকে ৭ থেকে ৩ থেকে ১ থেকে ০, প্রতিটি পালসে দুই দিয়ে ভাগ হচ্ছে
আগের ভাগে আমরা দেখেছিলাম কীভাবে শিফট রেজিস্টার ডেটাকে একদিকে সরায়, ঠিক যেমন সারিতে দাঁড়ানো মানুষ একদিকে সরে যায়। কিন্তু বাস্তব জীবনে তো শুধু এক দিকে যাওয়া হয় না, কখনো কখনো পেছনেও ফিরতে হয়! এই ভাগে আমরা শিখব এমন রেজিস্টার যা দুই দিকেই সরতে পারে, এবং তার চেয়েও বেশি, এমন একটি রেজিস্টার যা চারটি কাজ করতে পারে।
=== দুই-দিকে চলা এস্কালেটরের উপমা ===
বিমানবন্দরে গিয়েছ কখনো? সেখানে এমন চলমান বেল্ট থাকে যেটা কখনো এক দিকে যাত্রীদের নিয়ে যায়, আবার নিয়ন্ত্রণকক্ষ থেকে নির্দেশ দিলে বিপরীত দিকেও চালানো যায়। একটি বোতাম টিপলে ডানে, আরেকটি বোতাম টিপলে বামে।
দ্বিমুখী শিফট রেজিস্টার ঠিক এইরকম। একটি নিয়ন্ত্রণ সংকেত <math>S</math> দিলে ডেটা ডানে সরে, আর <math>S</math> উলটো হলে বামে সরে। ভেতরের বিটগুলো হলো যাত্রী, এবং নিয়ন্ত্রণ সংকেতটি হলো বেল্টের দিক নির্ধারক বোতাম।
এবার ধরো, তোমার কাছে চারটি বিট আছে: <math>Q_3 Q_2 Q_1 Q_0 = 1011</math>।
* <math>S = \text{১}</math> হলে (ডানে শিফট): <math>0101</math> হয়ে যাবে।
* <math>S = \text{০}</math> হলে (বামে শিফট): <math>0110</math> হয়ে যাবে।
একই হার্ডওয়্যার, শুধু একটি সংকেতের পরিবর্তনে দুই ধরনের কাজ!
== দ্বিমুখী শিফট রেজিস্টারের গঠন ==
=== নিয়ন্ত্রণ সংকেত <math>S</math> ===
দ্বিমুখী শিফট রেজিস্টারে একটি বিশেষ নিয়ন্ত্রণ সংকেত <math>S</math> থাকে যা সিদ্ধান্ত নেয় ডেটা কোন দিকে যাবে।
{| class="wikitable" style="width:60%; text-align:center;"
|+ নিয়ন্ত্রণ সংকেত <math>S</math> এর ভূমিকা
! style="background:#2E4057; color:white;" | <math>S</math> এর মান !! style="background:#2E4057; color:white;" | কাজ !! style="background:#2E4057; color:white;" | উপমা
|-
| <math>\text{১}</math> || ডানে শিফট || বেল্ট ডানে চলছে
|-
| <math>\text{০}</math> || বামে শিফট || বেল্ট বামে চলছে
|}
মনে রাখার সহজ উপায়: <math>S = \text{১}</math> মানে "সরাসরি ডানে", <math>S = \text{০}</math> মানে "উলটো দিকে মানে বামে"।
=== বুলিয়ান রাশি ===
প্রতিটি ফ্লিপ-ফ্লপের ইনপুট <math>D_i</math> নির্ধারিত হয় এই রাশি দিয়ে:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এই রাশিটা একটু বিশ্লেষণ করি:
* <math>S \cdot Q_{i-1}</math>: যদি <math>S = \text{১}</math> হয়, তাহলে বামের প্রতিবেশী <math>Q_{i-1}</math> এর মান নিজের মধ্যে আসে, মানে ডানে শিফট।
* <math>\bar{S} \cdot Q_{i+1}</math>: যদি <math>S = \text{০}</math> হয়, তাহলে ডানের প্রতিবেশী <math>Q_{i+1}</math> এর মান নিজের মধ্যে আসে, মানে বামে শিফট।
এই দুই অংশ একটি মাক্সটিপ্লেক্সারের মতো কাজ করে: <math>S</math> এর মান দেখে সিদ্ধান্ত নেয় কোন প্রতিবেশীর মান নেবে।
{| class="wikitable" style="width:80%; text-align:center;"
|+ প্রতিটি বিটের ইনপুট কীভাবে নির্ধারিত হয়
! style="background:#1B4332; color:white;" | বিট !! style="background:#1B4332; color:white;" | <math>D_i</math> এর রাশি !! style="background:#1B4332; color:white;" | <math>S=\text{১}</math> (ডানে) !! style="background:#1B4332; color:white;" | <math>S=\text{০}</math> (বামে)
|-
| <math>D_3</math> (MSB) || <math>S \cdot SI_R + \bar{S} \cdot Q_2</math> || ডান সিরিয়াল ইনপুট || <math>Q_2</math> থেকে আসে
|-
| <math>D_2</math> || <math>S \cdot Q_3 + \bar{S} \cdot Q_1</math> || <math>Q_3</math> থেকে আসে || <math>Q_1</math> থেকে আসে
|-
| <math>D_1</math> || <math>S \cdot Q_2 + \bar{S} \cdot Q_0</math> || <math>Q_2</math> থেকে আসে || <math>Q_0</math> থেকে আসে
|-
| <math>D_0</math> (LSB) || <math>S \cdot Q_1 + \bar{S} \cdot SI_L</math> || <math>Q_1</math> থেকে আসে || বাম সিরিয়াল ইনপুট
|}
এখানে <math>SI_R</math> হলো ডানে শিফটের সময় সবচেয়ে বাম বিটে ঢোকানো নতুন বিট, আর <math>SI_L</math> হলো বামে শিফটের সময় সবচেয়ে ডান বিটে ঢোকানো নতুন বিট।
=== সার্কিট গঠন ===
চার-বিটের দ্বিমুখী শিফট রেজিস্টারে থাকে:
* চারটি ডি ফ্লিপ-ফ্লপ (<math>FF_3, FF_2, FF_1, FF_0</math>)
* প্রতিটি ফ্লিপ-ফ্লপের আগে একটি করে ২-থেকে-১ মাক্সটিপ্লেক্সার
* মাক্সটিপ্লেক্সারের নির্বাচন সংকেত হিসেবে <math>S</math>
প্রতিটি মাক্সটিপ্লেক্সার দুটি ইনপুট পায়: বাম প্রতিবেশীর আউটপুট ও ডান প্রতিবেশীর আউটপুট। <math>S</math> এর মান দেখে সে সিদ্ধান্ত নেয় কোনটা ফ্লিপ-ফ্লপে পাঠাবে।
=== সত্যক সারণী ও উদাহরণ ===
ধরো চার-বিট রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1101</math> এবং সিরিয়াল ইনপুট উভয় দিকেই <math>\text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ দ্বিমুখী শিফটের উদাহরণ
! style="background:#3D405B; color:white;" | ক্লক চক্র !! style="background:#3D405B; color:white;" | <math>S</math> !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | কাজ
|-
| শুরু || || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ডানে শিফট (MSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ডানে শিফট
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || বামে শিফট (LSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার বামে শিফট
|}
দেখো, <math>S</math> পরিবর্তন করে দিকও পরিবর্তন হয়ে যাচ্ছে।
=== হাতে-কলমে হিসাব ===
চক্র ১ যাচাই করা যাক: <math>Q_3 Q_2 Q_1 Q_0 = 1101</math>, <math>S = \text{১}</math>, <math>SI_R = \text{০}</math>।
:<math>D_3 = S \cdot SI_R + \bar{S} \cdot Q_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০}</math>
:<math>D_2 = S \cdot Q_3 + \bar{S} \cdot Q_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১}</math>
:<math>D_1 = S \cdot Q_2 + \bar{S} \cdot Q_0 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১}</math>
:<math>D_0 = S \cdot Q_1 + \bar{S} \cdot SI_L = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0110</math> ✓
== সার্বজনীন রেজিস্টার ==
=== মাক্সওয়েল রেজিস্টারের উপমা ===
কল্পনা করো একজন দক্ষ অফিস সহকারী যে চারটি কাজ করতে পারে: যখন তাকে বলো "স্থির থাকো" সে কিছু পরিবর্তন করে না। যখন বলো "ডানে সরো" সে ডানে যায়। যখন বলো "বামে সরো" সে বামে যায়। আর যখন বলো "সব একসাথে বদলাও" সে পুরো বিষয়টা নতুন করে সাজিয়ে নেয়।
সার্বজনীন রেজিস্টার ঠিক এই সহকারীর মতো। দুটি নিয়ন্ত্রণ সংকেত <math>S_1</math> এবং <math>S_0</math> মিলে চারটি আলাদা আলাদা নির্দেশ দিতে পারে। এই চারটি নির্দেশ হলো সার্বজনীন রেজিস্টারের চারটি মোড।
ঠিক যেমন একটি সুইস আর্মি ছুরিতে চারটি হাতিয়ার থাকে কিন্তু একটিই বস্তু, সার্বজনীন রেজিস্টার একটিই চিপ কিন্তু চারটি কাজ করতে পারে।
=== মোড নির্বাচন সারণি ===
দুটি নিয়ন্ত্রণ সংকেত <math>S_1 S_0</math> মিলে চারটি সমন্বয় সম্ভব:
{| class="wikitable" style="width:90%; text-align:center;"
|+ সার্বজনীন রেজিস্টারের চারটি মোড
! style="background:#1A535C; color:white;" | <math>S_1</math> !! style="background:#1A535C; color:white;" | <math>S_0</math> !! style="background:#1A535C; color:white;" | মোড !! style="background:#1A535C; color:white;" | কাজ !! style="background:#1A535C; color:white;" | বাস্তব উপমা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ মোড || বর্তমান অবস্থা অপরিবর্তিত থাকে || স্থির দাঁড়িয়ে থাকা
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট মোড || সব বিট একটু ডানে সরে || সারি ডানে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট মোড || সব বিট একটু বামে সরে || সারি বামে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড মোড || বাইরে থেকে নতুন ডেটা একসাথে ঢোকে || সবাই একসাথে বদলে যাওয়া
|}
মনে রাখার কৌশল: <math>S_1 S_0</math> কে বাইনারি সংখ্যা হিসেবে দেখো: <math>\text{০০}</math> = স্থির, <math>\text{০১}</math> = ডানে, <math>\text{১০}</math> = বামে, <math>\text{১১}</math> = লোড।
=== প্রতিটি মোডের বিস্তারিত বুলিয়ান রাশি ===
প্রতিটি বিট <math>Q_i</math> এর পরবর্তী অবস্থা নির্ধারণ করে এই রাশি:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1 S_0 \cdot P_i</math>
এখানে <math>P_i</math> হলো সমান্তরাল ইনপুটের <math>i</math> নম্বর বিট।
রাশিটার চারটি অংশ চারটি মোডের জন্য:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রাশির প্রতিটি অংশের ব্যাখ্যা
! style="background:#6B2737; color:white;" | অংশ !! style="background:#6B2737; color:white;" | মোড !! style="background:#6B2737; color:white;" | সক্রিয় হয় কখন !! style="background:#6B2737; color:white;" | কী করে
|-
| <math>\bar{S_1}\bar{S_0} \cdot Q_i</math> || ধারণ || <math>S_1=\text{০}, S_0=\text{০}</math> || নিজের মান নিজে রাখে
|-
| <math>\bar{S_1}S_0 \cdot Q_{i-1}</math> || ডানে শিফট || <math>S_1=\text{০}, S_0=\text{১}</math> || বাম প্রতিবেশীর মান নেয়
|-
| <math>S_1\bar{S_0} \cdot Q_{i+1}</math> || বামে শিফট || <math>S_1=\text{১}, S_0=\text{০}</math> || ডান প্রতিবেশীর মান নেয়
|-
| <math>S_1 S_0 \cdot P_i</math> || সমান্তরাল লোড || <math>S_1=\text{১}, S_0=\text{১}</math> || বাইরের ইনপুট নেয়
|}
=== মোড ০০: ধারণ মোড ===
এই মোডে রেজিস্টার কিছুই করে না, বর্তমান অবস্থা ধরে রাখে।
উপমা: ক্লাসরুমে শিক্ষক বলেছেন "এখন চুপ করে বসো।" কেউ নড়াচড়া করছে না, সবাই যেখানে ছিল সেখানেই আছে।
রাশি: <math>D_i = Q_i</math>
যাচাই: <math>S_1 = \text{০}, S_0 = \text{০}</math> রাখলে মূল রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_i = \text{১} \cdot Q_i + \text{০} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} + \text{০} \cdot P_i = Q_i</math>
=== মোড ০১: ডানে শিফট মোড ===
এই মোডে প্রতিটি বিট তার ডানের প্রতিবেশীর জায়গায় যায়।
উপমা: সারিতে দাঁড়ানো মানুষদের শিক্ষক বললেন "সবাই এক ধাপ ডানে সরো।" <math>Q_3</math> এর জায়গায় যাবে বাইরের সিরিয়াল ইনপুট, আর <math>Q_0</math> থেকে বিটটা বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i-1}</math> (সর্বোচ্চ বিটের জন্য: <math>D_{n-1} = SI_R</math>)
=== মোড ১০: বামে শিফট মোড ===
এই মোডে প্রতিটি বিট তার বামের প্রতিবেশীর জায়গায় যায়।
উপমা: একই সারিতে এবার শিক্ষক বললেন "সবাই এক ধাপ বামে সরো।" এবার <math>Q_0</math> এর জায়গায় আসবে সিরিয়াল ইনপুট, আর <math>Q_3</math> থেকে বিট বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i+1}</math> (সর্বনিম্ন বিটের জন্য: <math>D_0 = SI_L</math>)
=== মোড ১১: সমান্তরাল লোড মোড ===
এই মোডে বাইরের চারটি ইনপুট <math>P_3 P_2 P_1 P_0</math> একসাথে রেজিস্টারে ঢোকে।
উপমা: ক্লাস শুরুতে শিক্ষক বললেন "সবাই নিজের নতুন বই তুলে নাও।" একসাথে সবাই নতুন বই নিল, আগের সব তথ্য বাতিল।
রাশি: <math>D_i = P_i</math>
=== সম্পূর্ণ সত্যক সারণী ===
ধরো বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1010</math>, সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 0110</math>, ডানে শিফটের সিরিয়াল ইনপুট <math>SI_R = \text{১}</math>, বামে শিফটের সিরিয়াল ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#2C3E50; color:white;" | <math>S_1</math> !! style="background:#2C3E50; color:white;" | <math>S_0</math> !! style="background:#2C3E50; color:white;" | মোড !! style="background:#2C3E50; color:white;" | <math>Q_3^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_2^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_1^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_0^+</math> !! style="background:#2C3E50; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>SI_R=\text{১}</math> ঢুকেছে বাম থেকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>SI_L=\text{০}</math> ঢুকেছে ডান থেকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>P=0110</math> লোড হয়েছে
|}
=== সমান্তরাল লোড মোডের বিস্তারিত যাচাই ===
মোড <math>S_1 S_0 = \text{১১}</math>, সমান্তরাল ইনপুট <math>P = 0110</math>:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{১}} \cdot Q_3 + \bar{\text{০}}\cdot\text{১} \cdot Q_2 + \text{০}\cdot\bar{\text{১}} \cdot Q_1 + \text{১}\cdot\text{১} \cdot P_3</math>
শুধুমাত্র চতুর্থ অংশ সক্রিয় (কারণ <math>S_1 S_0 = \text{১১}</math>):
:<math>D_3 = \text{১} \cdot \text{১} \cdot P_3 = P_3 = \text{০}</math>
:<math>D_2 = P_2 = \text{১}</math>
:<math>D_1 = P_1 = \text{১}</math>
:<math>D_0 = P_0 = \text{০}</math>
পরের অবস্থা: <math>0110</math> ✓
== ৭৪১৯৪ চিপের পরিচয় ==
=== চিপটি কী? ===
৭৪১৯৪ হলো একটি বাস্তব সমন্বিত সার্কিট যা সার্বজনীন রেজিস্টার হিসেবে কাজ করে। এটির পুরো নাম "৭৪ সিরিজের ১৯৪ নম্বর চিপ" এবং এটি ৪-বিট সার্বজনীন দ্বিমুখী শিফট রেজিস্টার।
বাজারে এই চিপটি অনেক সহজলভ্য এবং ডিজিটাল ইলেকট্রনিক্স শেখার জন্য অত্যন্ত জনপ্রিয়। একটি ছোট প্লাস্টিকের আবরণে ষোলটি পিন আছে, আর ভেতরে লুকিয়ে আছে সম্পূর্ণ সার্বজনীন রেজিস্টারের সার্কিট।
=== পিন বিন্যাস ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ ৭৪১৯৪ চিপের পিন বর্ণনা
! style="background:#4A4E69; color:white;" | পিন নম্বর !! style="background:#4A4E69; color:white;" | নাম !! style="background:#4A4E69; color:white;" | ধরন !! style="background:#4A4E69; color:white;" | কাজ
|-
| ১ || <math>\overline{CLR}</math> || ইনপুট || সক্রিয়-নিম্ন ক্লিয়ার: <math>\text{০}</math> দিলে সব বিট শূন্য হয়
|-
| ২ || <math>SR</math> || ইনপুট || ডানে শিফটের সিরিয়াল ইনপুট (<math>SI_R</math>)
|-
| ৩, ৪, ৫, ৬ || <math>A, B, C, D</math> || ইনপুট || সমান্তরাল ইনপুট (<math>P_0</math> থেকে <math>P_3</math>)
|-
| ৭ || <math>S_0</math> || ইনপুট || মোড নির্বাচন বিট ০
|-
| ৮ || GND || বিদ্যুৎ || ভূমি সংযোগ (<math>\text{০}</math> ভোল্ট)
|-
| ৯ || <math>S_1</math> || ইনপুট || মোড নির্বাচন বিট ১
|-
| ১০ || <math>CLK</math> || ইনপুট || ক্লক সংকেত
|-
| ১১ || <math>SL</math> || ইনপুট || বামে শিফটের সিরিয়াল ইনপুট (<math>SI_L</math>)
|-
| ১২, ১৩, ১৪, ১৫ || <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || রেজিস্টারের চারটি বিট আউটপুট
|-
| ১৬ || VCC || বিদ্যুৎ || সরবরাহ বিদ্যুৎ (<math>+5</math> ভোল্ট)
|}
=== চিপের কার্যক্রম সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ চিপের সম্পূর্ণ কার্যক্রম
! style="background:#6B4226; color:white;" | <math>\overline{CLR}</math> !! style="background:#6B4226; color:white;" | <math>CLK</math> !! style="background:#6B4226; color:white;" | <math>S_1</math> !! style="background:#6B4226; color:white;" | <math>S_0</math> !! style="background:#6B4226; color:white;" | কার্যক্রম
|-
| <math>\text{০}</math> || যাই হোক || যাই হোক || যাই হোক || তাৎক্ষণিক ক্লিয়ার: সব আউটপুট শূন্য
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{০}</math> || ধারণ: অপরিবর্তিত
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট: <math>SR \to Q_A \to Q_B \to Q_C \to Q_D</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট: <math>SL \to Q_D \to Q_C \to Q_B \to Q_A</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড: <math>A \to Q_A, B \to Q_B, C \to Q_C, D \to Q_D</math>
|}
মনে রাখো: ৭৪১৯৪ শুধুমাত্র ক্লকের উর্ধ্বপ্রান্তে (<math>\text{০}</math> থেকে <math>\text{১}</math> পরিবর্তনে) কাজ করে। ক্লিয়ার পিন অবশ্য যেকোনো সময় কাজ করে।
=== চিপের বিশেষ বৈশিষ্ট্য ===
{| class="wikitable" style="width:90%;"
|+ ৭৪১৯৪ চিপের প্রযুক্তিগত বিবরণ
! style="background:#2D4739; color:white;" | বৈশিষ্ট্য !! style="background:#2D4739; color:white;" | বিবরণ
|-
| ফ্লিপ-ফ্লপের ধরন || উর্ধ্বপ্রান্ত-ট্রিগারড ডি ফ্লিপ-ফ্লপ
|-
| ক্লিয়ারের ধরন || তাৎক্ষণিক (ক্লকের জন্য অপেক্ষা করে না)
|-
| সর্বোচ্চ ক্লক কম্পাঙ্ক || প্রায় ৩৬ মেগাহার্টজ
|-
| বিদ্যুৎ সরবরাহ || ৫ ভোল্ট ডিসি
|-
| সম্প্রসারণযোগ্যতা || দুটি চিপ সংযুক্ত করে ৮-বিট রেজিস্টার সম্ভব
|-
| একই পরিবারের বিকল্প || ৭৪এলএস১৯৪ (কম বিদ্যুৎ খরচ), ৭৪এইচসি১৯৪ (দ্রুতগতি)
|}
=== বাস্তব প্রয়োগে ব্যবহার ===
{| class="wikitable" style="width:100%;"
|+ ৭৪১৯৪ চিপের বাস্তব ব্যবহার
! style="background:#2D4739; color:white;" | প্রয়োগক্ষেত্র !! style="background:#2D4739; color:white;" | কীভাবে ব্যবহার হয়
|-
| সিরিয়াল-সমান্তরাল রূপান্তর || সমান্তরাল লোড করে একটি একটি করে বিট বের করা হয়
|-
| সমান্তরাল-সিরিয়াল রূপান্তর || একটি একটি করে বিট ঢুকিয়ে শেষে সমান্তরাল আউটপুট নেওয়া হয়
|-
| বৃত্তাকার বাফার || আউটপুটকে ইনপুটে সংযুক্ত করে ঘূর্ণায়মান প্যাটার্ন তৈরি হয়
|-
| ক্রম নিয়ন্ত্রক || নির্দিষ্ট বিট প্যাটার্ন তৈরি করে ডিজিটাল সিস্টেমের ধাপ নিয়ন্ত্রণ করা হয়
|-
| LED ডিসপ্লে নিয়ন্ত্রণ || LED আলোর নির্দিষ্ট ক্রম তৈরিতে, বিজ্ঞাপনের চলমান আলোয়
|-
| যোগাযোগ প্রোটোকল || SPI ও UART ধারাবাহিক যোগাযোগ প্রক্রিয়ায়
|-
| গণনা সার্কিট || শিফট দিয়ে গুণ ও ভাগের কাজ প্রসেসরে দ্রুত করতে
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ধারণ মোডের হাতে-কলমে হিসাব ===
একটি ৪-বিট সার্বজনীন রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1001</math>। মোড সংকেত <math>S_1 S_0 = \text{০০}</math>। পরের ক্লক চক্রে কী হবে?
মোড <math>\text{০০}</math> মানে ধারণ। রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_2 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_1 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_0 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_0 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
পরের অবস্থা: <math>Q = 1001</math> অপরিবর্তিত! ✓
অর্থাৎ ক্লক দিলেও কিছু বদলায় না। কম্পিউটারে যখন কোনো তথ্য সাময়িকভাবে ধরে রাখতে হয়, তখন এই মোড কাজে লাগে। ডেটা বাস ব্যবহারের মধ্যবর্তী সময়ে প্রসেসর এই মোড ব্যবহার করে।
=== উদাহরণ ২: ডানে শিফট মোডের ধাপে ধাপে বিশ্লেষণ ===
বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1100</math>। মোড <math>S_1 S_0 = \text{০১}</math> (ডানে শিফট)। সিরিয়াল ইনপুট <math>SR = \text{১}</math>।
রাশিতে দ্বিতীয় অংশ সক্রিয় (<math>\bar{S_1}S_0 = \text{১}</math>):
:<math>D_3 = \bar{\text{০}}\cdot\text{১} \cdot SR = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math> (সিরিয়াল ইনপুট ঢুকেছে)
:<math>D_2 = \bar{\text{০}}\cdot\text{১} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_1 = \bar{\text{০}}\cdot\text{১} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_0 = \bar{\text{০}}\cdot\text{১} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>1110</math>।
এভাবে তিনটি ক্লক চক্রে কী হয় দেখি (<math>SR</math> প্রতিবার ভিন্ন):
{| class="wikitable" style="text-align:center;"
|+ তিন চক্রে ডানে শিফটের ধাপ
! style="background:#3D405B; color:white;" | চক্র !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | <math>SR</math> (নতুন) !! style="background:#3D405B; color:white;" | বের হওয়া বিট
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ||
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
প্রতিটি চক্রে ডান থেকে এক বিট বেরিয়ে যাচ্ছে এবং বাম থেকে <math>SR</math> ঢুকছে। এটিই সমান্তরাল-সিরিয়াল রূপান্তরের ভিত্তি।
=== উদাহরণ ৩: বামে শিফট মোডে বাইনারি গুণ ===
বামে শিফটের একটি চমৎকার প্রয়োগ হলো ২ দিয়ে গুণ! বাইনারি সংখ্যাকে একবার বামে শিফট করলে সেটা ২ দিয়ে গুণ হয়ে যায়, ঠিক যেমন দশমিকে ১০ দিয়ে গুণ করলে শেষে একটি শূন্য বসে।
প্রমাণ:
* প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0011 = 3</math> দশমিকে
* মোড <math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>:
রাশিতে তৃতীয় অংশ সক্রিয় (<math>S_1\bar{S_0} = \text{১}</math>):
:<math>D_3 = Q_2 = \text{০}</math>
:<math>D_2 = Q_1 = \text{১}</math>
:<math>D_1 = Q_0 = \text{১}</math>
:<math>D_0 = SL = \text{০}</math>
* পরের অবস্থা: <math>0110 = 6</math> দশমিকে। <math>3 \times 2 = 6</math> ✓
আরও একবার শিফট করলে:
:<math>0110 \to 1100 = 12 = 3 \times 4</math> ✓
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফট দিয়ে ২ এর ঘাতে গুণ
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | বাইনারি !! style="background:#1B4332; color:white;" | দশমিক !! style="background:#1B4332; color:white;" | কার্যকর গুণ
|-
| ০ || <math>0011</math> || <math>3</math> || শুরু
|-
| ১ || <math>0110</math> || <math>6</math> || <math>3 \times 2</math>
|-
| ২ || <math>1100</math> || <math>12</math> || <math>3 \times 4</math>
|-
| ৩ || <math>1000</math> || <math>8</math> || উপচে পড়েছে! আসল: <math>3 \times 8 = 24</math>
|}
সাবধান: তৃতীয় চক্রে উপচে পড়েছে কারণ ৪ বিটে ২৪ ধরে না (সর্বোচ্চ ১৫)। এই কৌশলটি কম্পিউটার প্রসেসরে গুণের গতি বাড়াতে ব্যবহার করা হয়!
=== উদাহরণ ৪: সমান্তরাল লোড ও তারপর সিরিয়াল পাঠানো ===
এটি একটি বাস্তব প্রয়োগের উদাহরণ: সমান্তরাল ডেটা লোড করে তারপর সিরিয়ালভাবে পাঠানো। যেমন প্রিন্টারে ডেটা পাঠানোর সময় এই পদ্ধতি ব্যবহার হয়।
ধাপ ১: সমান্তরাল লোড করো।
* মোড <math>S_1 S_0 = \text{১১}</math>
* সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 1010</math>
* এক ক্লক চক্রে: <math>Q = 1010</math>
ধাপ ২: এক এক করে বিট বের করো (মোড <math>S_1 S_0 = \text{০১}</math>, ডানে শিফট, <math>SR = \text{০}</math>)।
{| class="wikitable" style="text-align:center;"
|+ সমান্তরাল থেকে সিরিয়াল রূপান্তর
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | <math>Q_3</math> !! style="background:#1B4332; color:white;" | <math>Q_2</math> !! style="background:#1B4332; color:white;" | <math>Q_1</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> এ বের হওয়া বিট
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> ||
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|}
চার চক্রে সিরিয়াল আউটপুটে পাওয়া গেল: <math>\text{০}, \text{১}, \text{০}, \text{১}</math> অর্থাৎ উলটো ক্রমে <math>1010</math>! গ্রাহক প্রান্তে উলটো করে পড়লে আসল ডেটা পাওয়া যাবে।
=== উদাহরণ ৫: ৭৪১৯৪ দিয়ে বৃত্তাকার বাফার ===
সবচেয়ে মজার প্রয়োগ: <math>Q_D</math> আউটপুটকে <math>SR</math> ইনপুটে সংযুক্ত করো এবং মোড <math>S_1 S_0 = \text{০১}</math> রাখো। তাহলে বিটগুলো ঘুরতে থাকবে!
প্রাথমিক অবস্থা (সমান্তরাল লোড দিয়ে): <math>Q_A Q_B Q_C Q_D = 1000</math>।
{| class="wikitable" style="text-align:center;"
|+ বৃত্তাকার ডান শিফটের প্যাটার্ন
! style="background:#44355B; color:white;" | চক্র !! style="background:#44355B; color:white;" | <math>Q_A</math> !! style="background:#44355B; color:white;" | <math>Q_B</math> !! style="background:#44355B; color:white;" | <math>Q_C</math> !! style="background:#44355B; color:white;" | <math>Q_D</math> !! style="background:#44355B; color:white;" | আলো জ্বলে কোথায়?
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রথম LED
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দ্বিতীয় LED
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় LED
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চতুর্থ LED
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার প্রথম (শুরুতে ফিরে)
|}
এই প্যাটার্নটি LED ডিসপ্লেতে ঘূর্ণায়মান আলো তৈরি করে! বিজ্ঞাপনের সাইনবোর্ডে যে আলো ঘোরে, তার পেছনে এই নীতিই কাজ করে। চক্রকাল হলো ৪, অর্থাৎ ৪ ক্লকে একটি পূর্ণ ঘূর্ণন।
== অনুশীলনী ==
'''সহজ স্তর:'''
'''১.''' একটি দ্বিমুখী শিফট রেজিস্টারে বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 0110</math>। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> হলে এক ক্লক চক্র পরে রেজিস্টারের অবস্থা কী হবে?
'''২.''' সার্বজনীন রেজিস্টারে <math>S_1 S_0 = \text{০০}</math> মোডে বর্তমান অবস্থা <math>Q = 1011</math> থাকলে পাঁচটি ক্লক চক্র পরে অবস্থা কী হবে?
'''৩.''' ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী ঘটে? ক্লকের অবস্থা কি তখন গুরুত্বপূর্ণ?
'''৪.''' সার্বজনীন রেজিস্টারের রাশি থেকে মোড <math>S_1 S_0 = \text{০১}</math> তে <math>D_i = Q_{i-1}</math> সত্য কিনা যাচাই করো।
'''মধ্যম স্তর:'''
'''৫.''' সার্বজনীন রেজিস্টারে প্রাথমিক অবস্থা <math>Q = 0000</math>। মোড <math>S_1 S_0 = \text{১১}</math> এ সমান্তরাল ইনপুট <math>P = 1101</math> লোড করার পর, মোড <math>S_1 S_0 = \text{০১}</math> এ তিনটি ক্লক চক্র চালাও (<math>SR = \text{০}</math>)। প্রতিটি চক্রের পরে অবস্থা লেখো।
'''৬.''' <math>Q = 0101</math> বাইনারি সংখ্যাটিকে বামে শিফটের মাধ্যমে ২ দিয়ে গুণ করো। ধাপগুলো দেখাও। ফলাফল কি ৪ বিটে ধরবে?
'''৭.''' দ্বিমুখী শিফট রেজিস্টারে <math>Q = 0001</math> থেকে শুরু করে শুধু বামে শিফট (<math>S = \text{০}</math>, <math>SI_L = \text{০}</math>) করলে কত চক্রের পরে সব বিট শূন্য হবে? প্রতিটি চক্র দেখাও।
'''৮.''' ৭৪১৯৪ চিপে সমান্তরাল লোড করার পরে ডানে শিফট ও বামে শিফটের মধ্যে পার্থক্য একটি উদাহরণ দিয়ে দেখাও। প্রাথমিক অবস্থা <math>Q = 1010</math> নাও।
'''কঠিন স্তর:'''
'''৯.''' দুটি ৭৪১৯৪ চিপ সংযুক্ত করে ৮-বিট সার্বজনীন রেজিস্টার তৈরি করতে হবে। প্রথম চিপের <math>Q_D</math> আউটপুটকে দ্বিতীয় চিপের <math>SR</math> ইনপুটে সংযুক্ত করো। উভয় চিপে <math>S_1 S_0 = \text{০১}</math> দিলে ডানে শিফট মোডে <math>Q = 11000000</math> থেকে শুরু করলে তিন চক্র পরে অবস্থা কী হবে (<math>SR = \text{০}</math>)?
'''১০.''' বৃত্তাকার বাফারে <math>Q_D \to SR</math> সংযোগ ব্যবহার করা হয়। <math>Q = 1100</math> থেকে শুরু করে আট চক্র পরের অবস্থা কী হবে? এই প্যাটার্নের পুনরাবৃত্তির চক্রকাল কত?
----
'''উত্তর:'''
'''১.''' <math>S = \text{১}</math> মানে ডানে শিফট, তাই প্রতিটি বিট এক ধাপ ডানে সরে এবং <math>SI_R = \text{০}</math> বামে ঢোকে:
:<math>Q_3^+ = SI_R = \text{০}</math>
:<math>Q_2^+ = Q_3 = \text{০}</math>
:<math>Q_1^+ = Q_2 = \text{১}</math>
:<math>Q_0^+ = Q_1 = \text{১}</math>
পরের অবস্থা: <math>Q = 0011</math>।
'''২.''' মোড <math>\text{০০}</math> মানে ধারণ, কিছুই পরিবর্তন হয় না। পাঁচ চক্র পরেও অবস্থা <math>Q = 1011</math> অপরিবর্তিত থাকবে।
'''৩.''' <math>\overline{CLR} = \text{০}</math> দিলে সব আউটপুট তাৎক্ষণিকভাবে শূন্য হয়ে যায়, অর্থাৎ <math>Q = 0000</math>। এটি তাৎক্ষণিক বা অ্যাসিঙ্ক্রোনাস, তাই ক্লকের অবস্থা একেবারেই গুরুত্বপূর্ণ নয়।
'''৪.''' মোড <math>S_1 S_0 = \text{০১}</math> অর্থাৎ <math>S_1 = \text{০}, S_0 = \text{১}</math>:
:<math>D_i = \underbrace{\bar{\text{০}}\cdot\bar{\text{১}}}_{=0} \cdot Q_i + \underbrace{\bar{\text{০}}\cdot\text{১}}_{=1} \cdot Q_{i-1} + \underbrace{\text{০}\cdot\bar{\text{১}}}_{=0} \cdot Q_{i+1} + \underbrace{\text{০}\cdot\text{১}}_{=0} \cdot P_i</math>
:<math>D_i = \text{০} + \text{১} \cdot Q_{i-1} + \text{০} + \text{০} = Q_{i-1}</math> ✓
'''৫.''' প্রথমে সমান্তরাল লোড: <math>Q = 1101</math>।
এরপর তিনটি ডানে শিফট (<math>SR = \text{০}</math>):
* চক্র ১: <math>Q_3^+ = \text{০}, Q_2^+ = Q_3 = \text{১}, Q_1^+ = Q_2 = \text{১}, Q_0^+ = Q_1 = \text{০}</math>, তাই <math>Q = 0110</math>
* চক্র ২: <math>Q = 0011</math>
* চক্র ৩: <math>Q = 0001</math>
'''৬.''' <math>Q = 0101 = 5</math> দশমিকে।
বামে শিফট (<math>SL = \text{০}</math>): <math>D_3 = Q_2 = \text{১}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = \text{০}</math>।
পরের অবস্থা: <math>Q = 1010 = 10</math>।
<math>5 \times 2 = 10</math> ✓ এবং <math>10 < 15</math>, তাই ৪ বিটে ধরবে।
'''৭.''' প্রতিটি চক্র:
* শুরু: <math>0001</math>
* চক্র ১: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = SL = \text{০}</math>; <math>Q = 0010</math>
* চক্র ২: <math>Q = 0100</math>
* চক্র ৩: <math>Q = 1000</math>
* চক্র ৪: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{০}, D_0 = \text{০}</math>; <math>Q = 0000</math>
৪ চক্রের পরে সব বিট শূন্য হয়।
'''৮.''' প্রাথমিক অবস্থা লোডের পরে: <math>Q = 1010</math>।
ডানে শিফট (<math>S_1 S_0 = \text{০১}</math>, <math>SR = \text{০}</math>): <math>Q = 0101</math>
বামে শিফট (<math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>): <math>Q = 0100</math>
দুই মোডে ফলাফল আলাদা। ডানে শিফটে সর্বোচ্চ বিট থেকে <math>\text{০}</math> ঢোকে, বামে শিফটে সর্বনিম্ন বিট থেকে <math>\text{০}</math> ঢোকে।
'''৯.''' ৮-বিট রেজিস্টার, প্রাথমিক অবস্থা <math>Q = 11000000</math>।
ডানে শিফট (<math>SR = \text{০}</math>), প্রতি চক্রে সর্বোচ্চ বিটে <math>\text{০}</math> ঢোকে:
* চক্র ১: <math>Q = 01100000</math>
* চক্র ২: <math>Q = 00110000</math>
* চক্র ৩: <math>Q = 00011000</math>
দুটি <math>\text{১}</math> বিট একসাথে ডানে সরে যাচ্ছে, মাঝের দূরত্ব অপরিবর্তিত।
'''১০.''' <math>Q_D \to SR</math> সংযোগ সহ ডানে বৃত্তাকার শিফট। প্রাথমিক অবস্থা: <math>Q = 1100</math>।
{| class="wikitable" style="text-align:center; width:60%;"
|+ বৃত্তাকার শিফটের ৮ চক্র
! style="background:#2E4057; color:white;" | চক্র !! style="background:#2E4057; color:white;" | <math>Q_3 Q_2 Q_1 Q_0</math>
|-
| ০ || <math>1100</math>
|-
| ১ || <math>0110</math>
|-
| ২ || <math>0011</math>
|-
| ৩ || <math>1001</math>
|-
| ৪ || <math>1100</math> (শুরুতে ফিরে এসেছে)
|-
| ৫ || <math>0110</math>
|-
| ৬ || <math>0011</math>
|-
| ৭ || <math>1001</math>
|}
পুনরাবৃত্তির চক্রকাল ৪। প্রতি ৪ ক্লকে প্যাটার্ন একই অবস্থায় ফিরে আসে। এই প্যাটার্নটি চারটি LED কে ঘুরিয়ে ঘুরিয়ে জ্বালাতে ব্যবহার করা যায়, যেখানে প্রতিবার দুটি LED জ্বলে।
== রিং কাউন্টার ও জনসন কাউন্টার ==
আগের ভাগে আমরা শিফট রেজিস্টার দেখেছিলাম — যেখানে ডেটা এক প্রান্ত থেকে ঢুকে অন্য প্রান্ত দিয়ে বেরিয়ে যায়। এই ভাগে আমরা দেখব যদি সেই বেরিয়ে যাওয়া ডেটা আবার ঢুকে যায় — অর্থাৎ সার্কিটটি একটি বৃত্তের মতো বন্ধ হয়ে যায়, তখন কী হয়। এই ধারণাটিই রিং কাউন্টারের মূল ভিত্তি।
=== রিং কাউন্টার কী ===
একটি গোল টেবিল কল্পনা করো। টেবিলে চারজন মানুষ বসে আছে। তাদের মধ্যে কেবল একজনের হাতে একটি লাল বল আছে। এখন নিয়ম হলো প্রতি মিনিটে বলটি পাশের জনের হাতে যাবে। বলটি ঘুরতে ঘুরতে আবার প্রথম জনের হাতে ফিরে আসবে, তারপর আবার সেই একই চক্র।
এটাই হলো রিং কাউন্টারের ধারণা। এখানে সেই লাল বলটি হলো <math>\text{১}</math>, আর বাকি সবার হাত হলো <math>\text{০}</math>। প্রতিটি ক্লকে <math>\text{১}</math>টি এক ঘর এগিয়ে যায় এবং শেষে আবার প্রথমে ফিরে আসে।
রিং কাউন্টার হলো এমন একটি শিফট রেজিস্টার যেখানে শেষ ফ্লিপ-ফ্লপের আউটপুট প্রথম ফ্লিপ-ফ্লপের ইনপুটে ফিরে সংযুক্ত থাকে।
=== রিং কাউন্টারের গঠন ===
<math>n</math>টি ডি ফ্লিপ-ফ্লপ পর পর সাজিয়ে রিং কাউন্টার তৈরি হয়। প্রতিটি ফ্লিপ-ফ্লপের আউটপুট <math>Q</math> পরের ফ্লিপ-ফ্লপের <math>D</math> ইনপুটে যায়। শেষটির আউটপুট ফিরে প্রথমটির ইনপুটে আসে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>Q</math> থেকে (ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে (ফিডব্যাক)
|}
=== প্রাথমিক অবস্থা লোড করা ===
রিং কাউন্টার চালু করতে হলে প্রথমে একটি নির্দিষ্ট প্রাথমিক অবস্থা লোড করতে হয়। সবচেয়ে স্বাভাবিক প্রাথমিক অবস্থা হলো <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math> অর্থাৎ কেবল প্রথম ফ্লিপ-ফ্লপে <math>\text{১}</math>, বাকি সব <math>\text{০}</math>।
এই কাজটি করা হয় প্রিসেট এবং ক্লিয়ার পিন ব্যবহার করে:
* <math>FF_0</math> এর প্রিসেট সক্রিয় করে <math>Q_0 = \text{১}</math> করা হয়
* <math>FF_1,\ FF_2,\ FF_3</math> এর ক্লিয়ার সক্রিয় করে <math>\text{০}</math> করা হয়
যদি রিং কাউন্টার ভুল অবস্থায় চলে যায় যেমন সব <math>\text{০}</math> হয়ে যায়, তাহলে এটি সেখানেই আটকে থাকবে কারণ <math>\text{০}</math>ই ঘুরতে থাকবে। তাই প্রাথমিক অবস্থা সঠিকভাবে লোড করা জরুরি।
=== ৪-বিট রিং কাউন্টারের সম্পূর্ণ টাইমিং বিশ্লেষণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রিং কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> শুরুতে <math>Q_0</math> তে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_1</math> তে
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_2</math> তে
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_3</math> তে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> ফিরে <math>Q_0</math> তে (চক্র পূর্ণ)
|-
| ৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার একই চক্র শুরু
|}
লক্ষ করো, ৪-বিট রিং কাউন্টারে মোট ৪টি ভিন্ন অবস্থা আছে এবং প্রতি ৪টি ক্লকে চক্র সম্পন্ন হয়। যেকোনো মুহূর্তে কেবল একটি মাত্র ফ্লিপ-ফ্লপে <math>\text{১}</math> থাকে।
=== <math>n</math>-বিট রিং কাউন্টারের বৈশিষ্ট্য ===
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| ফ্লিপ-ফ্লপ সংখ্যা || <math>n</math>
|-
| মোট অবস্থা সংখ্যা || <math>n</math>
|-
| চক্র দৈর্ঘ্য || <math>n</math> ক্লক
|-
| প্রতি মুহূর্তে সক্রিয় ফ্লিপ-ফ্লপ || কেবল ১টি
|-
| ডিকোডার প্রয়োজন || না
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন
|}
=== জনসন কাউন্টার: বাঁকানো রিং ===
এবার কল্পনা করো সেই গোল টেবিলের খেলাটাই, কিন্তু এবার নিয়মটা একটু অদ্ভুত। যে ব্যক্তির হাতে বল আছে সে পরের জনকে বল দেওয়ার সময় বলটা উল্টে দেয়: লাল বল দিলে নীল বল পায়, নীল বল দিলে লাল বল পায়।
এটাই হলো জনসন কাউন্টারের মূল ধারণা। রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটির ইনপুটে যায়। কিন্তু জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক আউটপুট) প্রথমটির ইনপুটে যায়।
এই একটি পরিবর্তনের কারণে অবস্থার সংখ্যা দ্বিগুণ হয়ে যায়। <math>n</math>-বিট জনসন কাউন্টারে <math>2n</math>টি অবস্থা থাকে।
=== জনসন কাউন্টারের গঠন ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ জনসন কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>\bar{Q}</math> থেকে (উল্টানো ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে <math>\bar{Q}</math> হিসেবে
|}
রিং ও জনসনের পার্থক্য কেবল একটি জায়গায়: শেষ ফ্লিপ-ফ্লপ থেকে প্রথমটিতে কী যাচ্ছে। রিংয়ে যাচ্ছে <math>Q</math>, জনসনে যাচ্ছে <math>\bar{Q}</math>।
=== ৪-বিট জনসন কাউন্টারের সম্পূর্ণ উদাহরণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
জনসন কাউন্টারে প্রাথমিক অবস্থা হিসেবে সব <math>\text{০}</math> ব্যবহার করা যায়, কারণ <math>FF_3</math> এর <math>\bar{Q}_3 = \text{১}</math>, তাই প্রথম ক্লকেই <math>Q_0 = \text{১}</math> হয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট জনসন কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_3</math> (পরের <math>D_0</math>) !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সব শূন্য, পরে <math>\text{১}</math> ঢুকবে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> বাম থেকে ঢুকছে
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> এগিয়ে চলছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আরও এগিয়ে
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সব <math>\text{১}</math>, এবার <math>\text{০}</math> ঢুকবে
|-
| ৫ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> বাম থেকে ঢুকছে
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> এগিয়ে চলছে
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আরও এগিয়ে
|-
| ৮ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরে এলো
|}
মোট ৮টি ভিন্ন অবস্থা, প্রতি ৮ ক্লকে চক্র সম্পন্ন। ৪টি ফ্লিপ-ফ্লপে <math>2 \times \text{৪} = \text{৮}</math>টি অবস্থা।
প্যাটার্নটা লক্ষ করো: প্রথমে ডান থেকে বামে <math>\text{১}</math> ভরতে থাকে, তারপর ডান থেকে বামে <math>\text{০}</math> ভরতে থাকে। এই ঢেউ-খেলানো প্যাটার্নই জনসন কাউন্টারের বিশেষত্ব।
=== রিং ও জনসন কাউন্টারের তুলনা ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং বনাম জনসন কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! জনসন কাউন্টার
|-
| ফিডব্যাক || <math>Q_{n-1}</math> সরাসরি || <math>\bar{Q}_{n-1}</math> উল্টানো
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2n</math>টি
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন (<math>\text{১}</math> দিয়ে শুরু) || সহজ (সব <math>\text{০}</math> থেকে স্বয়ংক্রিয়)
|-
| ডিকোডার প্রয়োজন || না || না (তবে আউটপুট রাশি লাগতে পারে)
|-
| প্যাটার্ন || একটি <math>\text{১}</math> ঘুরতে থাকে || <math>\text{১}</math> ভরে তারপর <math>\text{০}</math> ভরে
|-
| অবৈধ অবস্থা || আছে (সব <math>\text{০}</math>) || তুলনামূলক কম
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি (<math>n</math>টিতে <math>2n</math> অবস্থা)
|-
| প্রয়োগ || ডিকোডার বিকল্প, সিকোয়েন্সার || ফেজ জেনারেটর, ডিসপ্লে নিয়ন্ত্রণ
|}
=== রিং বনাম বাইনারি কাউন্টার ===
বাইনারি কাউন্টারও গণনা করে, কিন্তু পদ্ধতি সম্পূর্ণ আলাদা। কোনটা কখন ব্যবহার করবে সেটা বোঝার জন্য তুলনাটা জানা দরকার।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টার বনাম বাইনারি কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! বাইনারি কাউন্টার
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2^n</math>টি
|-
| ৪ ফ্লিপ-ফ্লপে অবস্থা || <math>\text{৪}</math>টি || <math>\text{১৬}</math>টি
|-
| নির্দিষ্ট অবস্থা চিনতে ডিকোডার || লাগে না || লাগে
|-
| সার্কিট জটিলতা || কম || বেশি
|-
| আউটপুট পড়া || সহজ (এক ফ্লিপ-ফ্লপ = এক অবস্থা) || জটিল (ডিকোডার লাগে)
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি
|-
| গতি || বেশি (গেট দেরি কম) || কম (রিপল ক্যারির কারণে)
|-
| উপযুক্ত প্রয়োগ || স্টেট মেশিন, সিকোয়েন্সার || বড় পরিসরের গণনা
|}
সহজ কথায়: কম অবস্থা কিন্তু সহজ ডিজাইন চাইলে রিং, বেশি অবস্থা চাইলে বাইনারি।
=== বাস্তব প্রয়োগ ===
==== ডিকোডার ছাড়া স্টেট মেশিন ====
একটি ট্রাফিক লাইট নিয়ন্ত্রক কল্পনা করো যার তিনটি অবস্থা: লাল, হলুদ, সবুজ। বাইনারি কাউন্টার ব্যবহার করলে তিনটি অবস্থা চেনাতে একটি ডিকোডার লাগবে। কিন্তু ৩-বিট রিং কাউন্টার ব্যবহার করলে তিনটি ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট সরাসরি লাল, হলুদ ও সবুজ আলোর সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টার দিয়ে ট্রাফিক লাইট
! <math>Q_2</math> (লাল) !! <math>Q_1</math> (হলুদ) !! <math>Q_0</math> (সবুজ) !! সক্রিয় আলো
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সবুজ জ্বলছে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || হলুদ জ্বলছে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || লাল জ্বলছে
|}
==== ফেজ জেনারেটর ====
জনসন কাউন্টার ফেজ জেনারেটর হিসেবে ব্যাপকভাবে ব্যবহৃত হয়। <math>n</math>-বিট জনসন কাউন্টার <math>2n</math>টি সমান ফেজে বিভক্ত সংকেত তৈরি করতে পারে।
তিন-ফেজ মোটর নিয়ন্ত্রণে ৩-বিট জনসন কাউন্টার ব্যবহার করা হয়। এটি ৬টি অবস্থায় ঘুরে মোটরের তিনটি তারে সঠিক সময়ে সংকেত পাঠায়।
==== ডিসপ্লে স্ক্যানিং ====
বড় এলইডি ডিসপ্লেতে একসাথে সব সারি জ্বালানো সম্ভব নয়, তাই রিং কাউন্টার দিয়ে একের পর এক সারি সক্রিয় করা হয়। এত দ্রুত ঘটে যে চোখে সব সারি একসাথে জ্বলছে মনে হয়।
==== স্টেপার মোটর নিয়ন্ত্রণ ====
স্টেপার মোটরে চারটি কয়েল আছে। প্রতিটি ক্লকে একটি করে কয়েল চালু হলে মোটর ঘোরে। ৪-বিট রিং কাউন্টারের চারটি আউটপুট সরাসরি চারটি কয়েলের সাথে সংযুক্ত করলেই কাজ হয়।
{| class="wikitable" style="width:100%;"
|+ রিং ও জনসন কাউন্টারের ব্যবহারিক প্রয়োগ
! প্রয়োগক্ষেত্র !! কোন কাউন্টার !! বিস্তারিত
|-
| ট্রাফিক লাইট সিকোয়েন্সার || রিং || প্রতিটি অবস্থা সরাসরি একটি আলোকে নিয়ন্ত্রণ করে, ডিকোডার লাগে না
|-
| এলইডি ম্যাট্রিক্স স্ক্যানিং || রিং || সারি ক্রমান্বয়ে সক্রিয় করে দ্রুতগতিতে
|-
| মোটর ড্রাইভ ফেজ নিয়ন্ত্রণ || জনসন || ৩-ফেজ বা ৬-ফেজ সংকেত তৈরি করে
|-
| স্টেপার মোটর নিয়ন্ত্রণ || রিং || মোটরের কয়েলগুলো ক্রমান্বয়ে চালু করে
|-
| সিউডো-র্যান্ডম প্যাটার্ন || জনসন || পরীক্ষামূলক সংকেত তৈরিতে
|-
| মেমোরি রিফ্রেশ নিয়ন্ত্রক || রিং || ডায়নামিক র্যামের সারি ক্রমান্বয়ে রিফ্রেশ করে
|-
| ডিজিটাল ঘড়ির নির্দেশক || রিং || এলইডি বৃত্তে সেকেন্ড দেখানোর জন্য
|}
== উদাহরণ ==
=== উদাহরণ ১: ৩-বিট রিং কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math>। প্রতিটি ক্লকের পর অবস্থা নির্ণয় করো এবং চক্রের দৈর্ঘ্য বলো।
ডি ফ্লিপ-ফ্লপের নিয়ম: <math>Q_{n+1} = D = Q_{আগের}</math> (রিং সংযোগে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রিং কাউন্টারের ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ব্যাখ্যা
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> একধাপ এগিয়েছে
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> আরও এগিয়েছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরেছে
|}
চক্রের দৈর্ঘ্য = ৩ ক্লক। মোট অবস্থা = ৩টি ✓
=== উদাহরণ ২: ৩-বিট জনসন কাউন্টারের বিশ্লেষণ ===
একটি ৩-বিট জনসন কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০০}</math>। সম্পূর্ণ চক্র বের করো।
জনসন নিয়ম: <math>D_0 = \bar{Q}_2</math>, <math>D_1 = Q_0</math>, <math>D_2 = Q_1</math>
ধাপে ধাপে হিসাব:
ক্লক ০ থেকে ১: <math>\bar{Q}_2 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{০}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০১}</math>
ক্লক ১ থেকে ২: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০১১}</math>
ক্লক ২ থেকে ৩: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১১}</math>
ক্লক ৩ থেকে ৪: <math>\bar{Q}_2 = \overline{\text{১}} = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১০}</math>
ক্লক ৪ থেকে ৫: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১০০}</math>
ক্লক ৫ থেকে ৬: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০০}</math> (প্রাথমিক অবস্থায় ফিরেছে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
মোট অবস্থা = ৬টি = <math>\text{২} \times \text{৩}</math> ✓
=== উদাহরণ ৩: রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার ===
একটি সার্কিটে চারটি কাজ ক্রমান্বয়ে করতে হবে: মোটর চালু, ভাল্ব খোলা, সেন্সর পড়া, ভাল্ব বন্ধ। বাইনারি কাউন্টার ব্যবহার করলে চারটি আউটপুটের জন্য ২-তে-৪ ডিকোডার লাগত। রিং কাউন্টারে ৪টি ফ্লিপ-ফ্লপের <math>Q_0, Q_1, Q_2, Q_3</math> সরাসরি চারটি কাজের সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার
! ক্লক !! <math>Q_0</math> (মোটর) !! <math>Q_1</math> (ভাল্ব খোলা) !! <math>Q_2</math> (সেন্সর) !! <math>Q_3</math> (ভাল্ব বন্ধ) !! সক্রিয় কাজ
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || মোটর চালু
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ভাল্ব খোলা
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সেন্সর পড়া
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ভাল্ব বন্ধ
|}
কোনো ডিকোডার ছাড়াই চারটি ধাপ সম্পন্ন হচ্ছে।
=== উদাহরণ ৪: জনসন কাউন্টার থেকে ফেজ সংকেত ===
একটি ২-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র বের করো এবং দেখাও এটি কীভাবে ৪টি ফেজ সংকেত তৈরি করে।
প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>, ফিডব্যাক: <math>D_0 = \bar{Q}_1</math>, <math>D_1 = Q_0</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ ২-বিট জনসন কাউন্টারের চক্র
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_1</math> (পরের <math>D_0</math>) !! ফেজ
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ফেজ খ
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ফেজ গ
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ফেজ ঘ
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক (পুনরায়)
|}
মোট <math>\text{২} \times \text{২} = \text{৪}</math>টি ভিন্ন ফেজ সংকেত ✓
=== উদাহরণ ৫: অবৈধ অবস্থা থেকে পুনরুদ্ধার বিশ্লেষণ ===
একটি ৪-বিট রিং কাউন্টার ভুলক্রমে <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math> অবস্থায় চলে গেছে (সব <math>\text{০}</math>)। পরের কয়েকটি ক্লকে কী হবে?
ধাপে ধাপে: প্রতিটি ক্লকে <math>FF_3</math> এর <math>Q_3 = \text{০}</math> ফিরে <math>D_0</math> তে যায়। তাই <math>Q_0</math> সবসময় <math>\text{০}</math> হয়। সব ফ্লিপ-ফ্লপই <math>\text{০}</math> পাচ্ছে, ফলে সব <math>\text{০}</math>ই থাকবে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ অবৈধ অবস্থা থেকে পুনরুদ্ধার হয় না
! ক্লক !! <math>Q_3 Q_2 Q_1 Q_0</math> !! মন্তব্য
|-
| ০ || <math>\text{০০০০}</math> || অবৈধ অবস্থা
|-
| ১ || <math>\text{০০০০}</math> || আটকে আছে
|-
| ২ || <math>\text{০০০০}</math> || আটকে আছে
|}
এই কারণে রিং কাউন্টারে স্ব-সংশোধন সার্কিট যোগ করা হয়। যখন সব আউটপুট <math>\text{০}</math> হয়, একটি নর গেট দিয়ে সেটি শনাক্ত করে <math>FF_0</math> এর ইনপুটে জোর করে <math>\text{১}</math> পাঠানো হয়:
:<math>D_0 = Q_3 + \overline{Q_0 + Q_1 + Q_2 + Q_3}</math>
যখন সব শূন্য: <math>\overline{Q_0 + Q_1 + Q_2 + Q_3} = \overline{\text{০}} = \text{১}</math>, তাই <math>D_0 = \text{১}</math> এবং কাউন্টার স্বয়ংক্রিয়ভাবে সচল হয়ে যায়।
== অনুশীলনী ==
# একটি <math>\text{৫}</math>-বিট রিং কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# একটি <math>\text{৫}</math>-বিট জনসন কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# ৩-বিট রিং কাউন্টারে প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{১০০}</math> হলে পরের দুটি অবস্থা কী কী?
# জনসন কাউন্টারে ফিডব্যাক সংযোগ রিং কাউন্টার থেকে কীভাবে আলাদা?
# ৪-বিট জনসন কাউন্টারে ক্লক ৩-এর পর অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math> হলে ক্লক ৪-এর পর অবস্থা কী হবে?
# কোন পরিস্থিতিতে বাইনারি কাউন্টারের চেয়ে রিং কাউন্টার বেশি সুবিধাজনক?
# একটি রিং কাউন্টার সব শূন্য অবস্থায় আটকে গেলে স্ব-সংশোধনের জন্য কোন গেট ব্যবহার করা যায়?
# ৪-বিট রিং কাউন্টারে কতটি ক্লকে চক্র সম্পন্ন হয় এবং ৪-বিট জনসন কাউন্টারে কতটি ক্লকে?
# একটি স্টেপার মোটরে ৪টি কয়েল ক্রমান্বয়ে চালু করতে কোন কাউন্টার ব্যবহার করবে এবং কেন?
# ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০১০}</math> হলে সম্পূর্ণ চক্রের অবস্থাগুলো টেবিল আকারে লেখো।
'''উত্তর:'''
# <math>\text{৫}</math>-বিট রিং কাউন্টারে <math>\text{৫}</math>টি ভিন্ন অবস্থা।
# <math>\text{৫}</math>-বিট জনসন কাউন্টারে <math>\text{২} \times \text{৫} = \text{১০}</math>টি ভিন্ন অবস্থা।
# ক্লক ১-এর পর: <math>\text{০১০}</math>। ক্লক ২-এর পর: <math>\text{০০১}</math>।
# রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটিতে যায়। জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক) যায়।
# <math>D_0 = \bar{Q}_3 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{১}</math>, <math>D_3 = Q_2 = \text{১}</math>। নতুন অবস্থা: <math>\text{১১১১}</math>।
# যখন অবস্থা সংখ্যা কম কিন্তু প্রতিটি অবস্থা সরাসরি একটি আউটপুট নিয়ন্ত্রণ করে এবং ডিকোডার ছাড়া কাজ করতে হয়।
# নর গেট দিয়ে সব আউটপুট শূন্য শনাক্ত করে <math>D_0</math> তে <math>\text{১}</math> পাঠানো যায়।
# ৪-বিট রিং কাউন্টারে <math>\text{৪}</math> ক্লকে এবং ৪-বিট জনসন কাউন্টারে <math>\text{৮}</math> ক্লকে চক্র সম্পন্ন হয়।
# রিং কাউন্টার। কারণ ৪টি ফ্লিপ-ফ্লপের প্রতিটি আউটপুট সরাসরি একটি কয়েলের সাথে সংযুক্ত করা যায়, কোনো ডিকোডার লাগে না।
# ক্লক ০: <math>\text{০১০}</math>; ক্লক ১: <math>\text{১০০}</math>; ক্লক ২: <math>\text{০০১}</math>; ক্লক ৩: <math>\text{০১০}</math> (পুনরাবৃত্তি)।
== রেজিস্টারের ব্যবহারিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা শিফট রেজিস্টার, রিং কাউন্টার এবং জনসন কাউন্টার দেখেছিলাম। সেগুলো ছিল রেজিস্টারের ভেতরের গল্প। এই ভাগে আমরা দেখব রেজিস্টার বাস্তব পৃথিবীতে কীভাবে কাজ করে। কম্পিউটার, মোবাইল ফোন, ইন্টারনেট সংযোগ, এমনকি তোমার মাউসের ক্লিক পর্যন্ত পৌঁছানোর পেছনে রেজিস্টার কাজ করছে।
=== ধারাবাহিক-সমান্তরাল ও সমান্তরাল-ধারাবাহিক রূপান্তর ===
একটু কল্পনা করো। তুমি ঢাকা থেকে চট্টগ্রামে আটটি বাক্স পাঠাবে। দুটো উপায় আছে। প্রথম উপায়: আটটি বাক্স একসাথে আটটি ট্রাকে তুলে একই সময়ে পাঠাও। দ্বিতীয় উপায়: একটি মাত্র ট্রাকে একটি একটি করে বাক্স আলাদা সময়ে পাঠাও।
প্রথম পদ্ধতিটা দ্রুত কিন্তু খরচ বেশি (আটটি ট্রাক লাগে)। দ্বিতীয় পদ্ধতিটা ধীর কিন্তু খরচ কম (একটি ট্রাকই যথেষ্ট)।
ডিজিটাল ইলেকট্রনিক্সেও ঠিক এই দুটো পদ্ধতি আছে। আটটি বিট একসাথে পাঠানো হলো সমান্তরাল পদ্ধতি, আর একটি একটি করে পাঠানো হলো ধারাবাহিক পদ্ধতি। ট্রাকের জায়গায় এখানে তার।
==== সমান্তরাল থেকে ধারাবাহিক রূপান্তর ====
প্রসেসরের ভেতরে সব বিট একসাথে চলাচল করে (সমান্তরাল)। কিন্তু যখন এই তথ্য বাইরে পাঠাতে হয়, যেমন ইন্টারনেট কেবলে বা ইউএসবিতে, তখন একটি মাত্র তারে একটি একটি করে পাঠানো হয় (ধারাবাহিক)। এই রূপান্তরের কাজটি করে সমান্তরাল থেকে ধারাবাহিক শিফট রেজিস্টার।
কীভাবে কাজ করে:
# প্রথমে সব বিট একসাথে রেজিস্টারে লোড হয় (সমান্তরাল লোড)
# তারপর প্রতিটি ক্লকে একটি করে বিট বাইরে বেরিয়ে যায়
# ৮ ক্লকে একটি বাইট (৮ বিট) সম্পূর্ণ বেরিয়ে যায়
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরের উদাহরণ
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ধারাবাহিক আউটপুট !! বিবরণ
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || || সব বিট একসাথে লোড
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> বেরিয়ে গেল
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_1</math> বেরিয়ে গেল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>Q_2</math> বেরিয়ে গেল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_3</math> বেরিয়ে গেল
|}
ধারাবাহিক আউটপুট ক্রম: <math>\text{১১০১}</math> (সর্বনিম্ন বিট আগে)
==== ধারাবাহিক থেকে সমান্তরাল রূপান্তর ====
অন্য প্রান্তে একই খেলার উল্টোটা হয়। একটি একটি করে বিট ঢুকছে আর রেজিস্টারে জমা হচ্ছে। সব বিট ঢুকে গেলে একসাথে সব পড়া যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট ধারাবাহিক থেকে সমান্তরাল রূপান্তরের উদাহরণ
! ক্লক !! ধারাবাহিক ইনপুট !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| শুরু || || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রেজিস্টার ফাঁকা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || চতুর্থ বিট ঢুকল, সম্পূর্ণ
|}
চার ক্লক পরে সমান্তরাল আউটপুট একসাথে পড়া যায়: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
==== যোগাযোগ ব্যবস্থায় প্রয়োগ ====
দৈনন্দিন জীবনে এই রূপান্তর কোথায় কোথায় দেখা যায় সেটা একটু বোঝা দরকার।
ইউএআরটি হলো সেই যন্ত্র যা কম্পিউটারের সমান্তরাল তথ্যকে ধারাবাহিকে পরিণত করে পাঠায় এবং আসা ধারাবাহিক তথ্যকে সমান্তরালে পরিণত করে গ্রহণ করে। পুরোনো মডেম, জিপিএস রিসিভার এবং অনেক মাইক্রোকন্ট্রোলার ইউএআরটি ব্যবহার করে।
ইউএসবিতেও একই কাজ হয়, তবে আরও দ্রুত এবং জটিল নিয়মে। কম্পিউটারের ভেতরে তথ্য ৩২ বা ৬৪ বিট সমান্তরালে চলে, কিন্তু ইউএসবি কেবলে মাত্র দুটো তারে ধারাবাহিকভাবে যায়।
{| class="wikitable" style="width:100%;"
|+ যোগাযোগ মানের তুলনা
! মান !! পদ্ধতি !! সর্বোচ্চ গতি !! তারের সংখ্যা !! প্রয়োগ
|-
| ইউএআরটি || ধারাবাহিক || কয়েক মেগাবিট/সেকেন্ড || ২ (পাঠানো ও গ্রহণ) || মাইক্রোকন্ট্রোলার, জিপিএস
|-
| ইউএসবি ২.০ || ধারাবাহিক || ৪৮০ মেগাবিট/সেকেন্ড || ৪ || মাউস, কীবোর্ড, পেনড্রাইভ
|-
| ইউএসবি ৩.০ || ধারাবাহিক || ৫ গিগাবিট/সেকেন্ড || ৯ || বাহ্যিক হার্ড ড্রাইভ
|-
| এসপিআই || ধারাবাহিক || কয়েকশো মেগাবিট/সেকেন্ড || ৪ || মেমোরি কার্ড, সেন্সর
|-
| সমান্তরাল বাস || সমান্তরাল || কম (তারের মধ্যে হস্তক্ষেপ) || ৩২ বা ৬৪ || পুরোনো কম্পিউটারের ভেতরে
|}
==== সম্পূর্ণ উদাহরণ: একটি বাইট পাঠানো ও গ্রহণ করা ====
ধরো, একটি কম্পিউটার থেকে আরেকটিতে 'A' অক্ষরটি পাঠাতে হবে। 'A' অক্ষরের বাইনারি কোড হলো <math>\text{০১০০০০০১}</math>।
পাঠানোর পদ্ধতি:
ধাপ ১: ৮ বিট একসাথে রেজিস্টারে লোড হয়: <math>Q_7 Q_6 Q_5 Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০১০০০০০১}</math>
ধাপ ২: প্রতিটি ক্লকে একটি বিট বেরিয়ে যায়, সর্বনিম্ন বিট আগে:
{| class="wikitable" style="text-align:center; width:90%;"
|+ 'A' অক্ষর পাঠানোর ধাপ
! ক্লক !! পাঠানো বিট !! অবশিষ্ট রেজিস্টার
|-
| ১ || <math>\text{১}</math> (<math>Q_0</math>) || <math>\text{০০১০০০০০}</math>
|-
| ২ || <math>\text{০}</math> (<math>Q_1</math>) || <math>\text{০০০১০০০০}</math>
|-
| ৩ || <math>\text{০}</math> (<math>Q_2</math>) || <math>\text{০০০০১০০০}</math>
|-
| ৪ || <math>\text{০}</math> (<math>Q_3</math>) || <math>\text{০০০০০১০০}</math>
|-
| ৫ || <math>\text{০}</math> (<math>Q_4</math>) || <math>\text{০০০০০০১০}</math>
|-
| ৬ || <math>\text{০}</math> (<math>Q_5</math>) || <math>\text{০০০০০০০১}</math>
|-
| ৭ || <math>\text{১}</math> (<math>Q_6</math>) || <math>\text{০০০০০০০০}</math>
|-
| ৮ || <math>\text{০}</math> (<math>Q_7</math>) || <math>\text{০০০০০০০০}</math>
|}
ধাপ ৩: গ্রহণকারী প্রান্তে আরেকটি শিফট রেজিস্টার এই বিটগুলো একটি একটি করে গ্রহণ করে। ৮ ক্লক পরে রেজিস্টারে জমা হয় <math>\text{০১০০০০০১}</math>, যা আবার 'A' অক্ষর।
এভাবে মাত্র দুটি তারে একটি সম্পূর্ণ অক্ষর পাঠানো হয়।
=== সময় বিলম্ব সার্কিট ===
জীবনে অনেক জায়গায় ইচ্ছাকৃতভাবে দেরি করা দরকার হয়। সিনেমায় গান শেষ হওয়ার পর আলো ধীরে জ্বলে ওঠে, মঞ্চে কথা বলার পর মাইক থেকে শব্দ একটু দেরিতে শোনা যায়, ক্যামেরায় ছবি তোলার পর ফ্ল্যাশ একটু পরে জ্বলে।
ডিজিটাল সার্কিটেও এই "ইচ্ছাকৃত দেরি" দরকার হয়। শিফট রেজিস্টার দিয়ে ঠিক এই কাজটি করা হয়।
==== কীভাবে বিলম্ব তৈরি হয় ====
ডি ফ্লিপ-ফ্লপে ইনপুট এক ক্লক পরে আউটপুটে আসে। তাই <math>n</math>টি ফ্লিপ-ফ্লপ শ্রেণিবদ্ধ করলে ইনপুট <math>n</math> ক্লক পরে আউটপুটে আসে।
:<math>\text{বিলম্ব} = n \times \text{ক্লক}</math>
যেখানে <math>\text{ক্লক}</math> হলো এক ক্লকের সময়কাল।
উদাহরণ: ক্লক কম্পাঙ্ক ১ মেগাহার্টজ হলে <math>\text{ক্লক} = \text{১}</math> মাইক্রোসেকেন্ড। ৮টি ফ্লিপ-ফ্লপ দিলে বিলম্ব হবে <math>\text{৮}</math> মাইক্রোসেকেন্ড।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বিলম্বের উদাহরণ (ক্লক = ১ মেগাহার্টজ)
! ফ্লিপ-ফ্লপ সংখ্যা !! বিলম্ব !! ব্যবহার
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> মাইক্রোসেকেন্ড || স্বল্প বিলম্ব সার্কিট
|-
| <math>\text{৮}</math> || <math>\text{৮}</math> মাইক্রোসেকেন্ড || বাইট সংরক্ষণ ও বিলম্ব
|-
| <math>\text{১৬}</math> || <math>\text{১৬}</math> মাইক্রোসেকেন্ড || পাইপলাইন সার্কিট
|-
| <math>\text{১০০০}</math> || <math>\text{১}</math> মিলিসেকেন্ড || শব্দ প্রক্রিয়াকরণ বিলম্ব
|}
==== টাইমিং বিশ্লেষণ ====
একটি ৪-বিট বিলম্ব রেজিস্টারে যদি ইনপুট প্যাটার্ন <math>\text{১০১১}</math> দেওয়া হয় (একটি বিট প্রতি ক্লকে), তাহলে আউটপুটে ঠিক ৪ ক্লক পরে একই প্যাটার্ন পাওয়া যাবে:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট বিলম্ব রেজিস্টারের টাইমিং
! ক্লক !! ইনপুট <math>D</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! আউটপুট <math>Q_3</math>
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৫ || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৬ || || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৭ || || || || <math>\text{০}</math> || <math>\text{১}</math>
|}
আউটপুটে ঠিক ৪ ক্লক পরে ইনপুটের প্যাটার্ন দেখা যাচ্ছে ✓
==== সংকেত প্রক্রিয়াকরণে প্রয়োগ ====
শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার অত্যন্ত গুরুত্বপূর্ণ। যখন দুটো মাইক্রোফোন থেকে শব্দ ধরা হয়, তখন একটি মাইক্রোফোনের শব্দ কিছুটা আগে আসে (সূত্রটি কাছে থাকায়)। বিলম্ব রেজিস্টার দিয়ে সেই পার্থক্য সমান করা হয়।
ডিজিটাল ইকো তৈরিতেও বিলম্ব রেজিস্টার ব্যবহার হয়। মূল শব্দ রেজিস্টারে ঢুকিয়ে নির্দিষ্ট বিলম্বের পর বের করলে সেটা ইকোর মতো শোনায়।
=== ক্রমানুসারী সংকেত তৈরি ===
কখনো কখনো একটি নির্দিষ্ট বিট প্যাটার্ন বারবার তৈরি করা দরকার হয়। যেমন রেডিও যোগাযোগে একটি পরিচিত প্যাটার্ন বারবার পাঠানো হয় যাতে গ্রহণকারী বুঝতে পারে সংকেত সঠিকভাবে আসছে।
==== রৈখিক প্রতিক্রিয়া শিফট রেজিস্টার ====
একটি শিফট রেজিস্টারের কয়েকটি নির্দিষ্ট আউটপুটকে এক্স-অর গেট দিয়ে যোগ করে প্রথম ফ্লিপ-ফ্লপের ইনপুটে দিলে একটি বিশেষ ধরনের সার্কিট তৈরি হয় যা দীর্ঘ কিন্তু নির্দিষ্ট প্যাটার্ন তৈরি করে।
এই সার্কিটে <math>n</math>টি ফ্লিপ-ফ্লপ থাকলে সর্বোচ্চ <math>2^n - \text{১}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সব শূন্য ছাড়া)। এই দীর্ঘ প্যাটার্নকে দেখতে এলোমেলো মনে হয় কিন্তু আসলে নির্দিষ্ট নিয়মে তৈরি।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারের উদাহরণ
! অবস্থা !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! পরের ইনপুট (<math>Q_2 \oplus Q_1</math>)
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \oplus \text{০} = \text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০} \oplus \text{১} = \text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \oplus \text{০} = \text{১}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চক্র পূর্ণ
|}
মোট <math>2^3 - \text{১} = \text{৭}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সঠিক ট্যাপ বিন্দু বেছে নিলে)।
==== পিআরবিএস সংকেতের প্রয়োগ ====
এই দীর্ঘ সিউডো-র্যান্ডম প্যাটার্ন কোথায় কাজে লাগে?
যোগাযোগ ব্যবস্থায় পরীক্ষার জন্য: একটি নির্দিষ্ট প্যাটার্ন পাঠিয়ে গ্রহণকারী প্রান্তে মিলিয়ে দেখা হয় কোনো বিট ভুল হয়েছে কিনা।
এনক্রিপশনে: এলোমেলো দেখতে বিটের সাথে মূল তথ্যের এক্স-অর করলে তথ্য লুকিয়ে ফেলা যায়।
ওয়াইফাই ও মোবাইল নেটওয়ার্কে: বিভিন্ন ব্যবহারকারীকে আলাদা করতে বিভিন্ন প্যাটার্ন ব্যবহার করা হয়।
=== কম্পিউটারের রেজিস্টার ===
এখন পর্যন্ত আমরা ট্রানজিস্টর ও গেটের স্তরে রেজিস্টার দেখেছি। এবার একটু উপরে উঠে দেখব কম্পিউটারের মাথার ভেতরে কীভাবে রেজিস্টার কাজ করে।
একটি কম্পিউটার মূলত একটি হিসাবের মেশিন। এই মেশিনে কিছু ছোট ছোট "নোটবুক" আছে যেখানে সাময়িক হিসাব লেখা হয়। এই নোটবুকগুলোই হলো রেজিস্টার।
==== সঞ্চয়ক রেজিস্টার ====
সঞ্চয়ক হলো প্রসেসরের সবচেয়ে গুরুত্বপূর্ণ রেজিস্টার। গণনার মাঝামাঝি ফলাফল এখানে রাখা হয়।
মনে করো, তুমি মাথায় হিসাব করছ: <math>\text{৫} + \text{৩} + \text{২}</math>। প্রথমে <math>\text{৫} + \text{৩} = \text{৮}</math> মনে রাখো, তারপর সেই <math>\text{৮}</math>-এর সাথে <math>\text{২}</math> যোগ করো। এই মনে রাখার জায়গাটাই সঞ্চয়ক।
একটি যোগ অপারেশন কীভাবে হয়:
ধাপ ১: সঞ্চয়কে প্রথম সংখ্যা লোড করো: <math>A \leftarrow \text{৫}</math>
ধাপ ২: সঞ্চয়কের সাথে দ্বিতীয় সংখ্যা যোগ করো: <math>A \leftarrow A + \text{৩} = \text{৮}</math>
ধাপ ৩: ফলাফল মেমোরিতে লেখো: <math>\text{মেমোরি}[\text{ঠিকানা}] \leftarrow A</math>
==== প্রোগ্রাম কাউন্টার ====
একটি বইতে তুমি যে পৃষ্ঠা পড়ছ তার নম্বর মনে রাখো। পরের বার পড়তে বসলে ওই পৃষ্ঠা থেকে শুরু করো। প্রোগ্রাম কাউন্টার ঠিক এই কাজটি করে।
প্রোগ্রাম কাউন্টারে থাকে পরবর্তী যে নির্দেশনাটি চালাতে হবে তার মেমোরি ঠিকানা।
{| class="wikitable" style="width:100%;"
|+ প্রোগ্রাম কাউন্টারের কার্যপ্রণালী
! পরিস্থিতি !! প্রোগ্রাম কাউন্টারে কী হয়
|-
| সাধারণ নির্দেশনা চলে || স্বয়ংক্রিয়ভাবে পরের ঠিকানায় এগিয়ে যায়
|-
| লাফানো নির্দেশনা আসে || নির্দিষ্ট ঠিকানায় সরাসরি চলে যায়
|-
| ফাংশন ডাকা হয় || ফাংশনের শুরুর ঠিকানায় যায়, পুরোনো ঠিকানা স্ট্যাকে রাখে
|-
| ফাংশন শেষ হয় || স্ট্যাক থেকে পুরোনো ঠিকানা ফিরিয়ে নেয়
|-
| বিঘ্ন আসে || বর্তমান ঠিকানা সংরক্ষণ করে বিঘ্ন-নিয়ন্ত্রকের ঠিকানায় যায়
|}
==== নির্দেশনা রেজিস্টার ====
প্রোগ্রাম কাউন্টারে যে ঠিকানা থাকে, সেই ঠিকানা থেকে নির্দেশনাটি মেমোরি থেকে নিয়ে আসা হয় এবং নির্দেশনা রেজিস্টারে রাখা হয়। তারপর প্রসেসর ওই নির্দেশনাটি পড়ে বুঝে কী করতে হবে।
মনে করো একটি ক্লাসে শিক্ষক প্রতিবার বোর্ড থেকে একটি অংক পড়েন এবং সেটা মাথায় রেখে সমাধান করেন। বোর্ড হলো মেমোরি, শিক্ষকের মাথায় রাখা অংকটি হলো নির্দেশনা রেজিস্টার।
==== সাধারণ উদ্দেশ্য রেজিস্টার ====
আধুনিক প্রসেসরে অনেকগুলো রেজিস্টার থাকে যেগুলো প্রোগ্রামার ইচ্ছামতো ব্যবহার করতে পারে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ প্রসেসরের রেজিস্টার ধরন
! রেজিস্টারের নাম !! সংক্ষেপ !! প্রধান কাজ !! আকার (সাধারণত)
|-
| সঞ্চয়ক || A || গণনার মধ্যবর্তী ফলাফল রাখে || ৮, ১৬, ৩২ বা ৬৪ বিট
|-
| প্রোগ্রাম কাউন্টার || PC || পরবর্তী নির্দেশনার ঠিকানা || ৩২ বা ৬৪ বিট
|-
| নির্দেশনা রেজিস্টার || IR || বর্তমান নির্দেশনা || ১৬ বা ৩২ বিট
|-
| স্ট্যাক পয়েন্টার || SP || স্ট্যাকের শীর্ষের ঠিকানা || ৩২ বা ৬৪ বিট
|-
| অবস্থা রেজিস্টার || SR || শূন্য, ঋণাত্মক, ক্যারি পতাকা || ৮ বা ১৬ বিট
|-
| সাধারণ উদ্দেশ্য || R0-R15 || যেকোনো ডেটা সংরক্ষণ || ৩২ বা ৬৪ বিট
|}
==== রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে ১৬ থেকে ৩২টি সাধারণ উদ্দেশ্য রেজিস্টার একসাথে থাকে। এই সংগ্রহটিকে রেজিস্টার ফাইল বলা হয়।
রেজিস্টার ফাইল কীভাবে কাজ করে: দুটো রেজিস্টারের নম্বর দিলে সেই দুটো রেজিস্টারের মান একসাথে পড়া যায় (দুটো পাঠ পোর্ট), এবং একটি রেজিস্টারে ফলাফল লেখা যায় (একটি লেখ পোর্ট)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রেজিস্টার ফাইলের পাঠ পোর্ট ও লেখ পোর্ট
! পোর্ট !! ধরন !! কাজ
|-
| পাঠ পোর্ট ১ || পাঠ || প্রথম অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| পাঠ পোর্ট ২ || পাঠ || দ্বিতীয় অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| লেখ পোর্ট || লেখ || ফলাফল রেজিস্টার নম্বর ও মান দিলে সেখানে লেখে
|}
উদাহরণ: <math>R3 \leftarrow R1 + R2</math> নির্দেশনায়:
ধাপ ১: পাঠ পোর্ট ১ দিয়ে <math>R1</math> এর মান পড়া হয়
ধাপ ২: পাঠ পোর্ট ২ দিয়ে <math>R2</math> এর মান পড়া হয়
ধাপ ৩: যোগ ফল হিসাব করা হয়
ধাপ ৪: লেখ পোর্ট দিয়ে <math>R3</math>-এ ফল লেখা হয়
এই পুরো কাজটা এক ক্লকেই হতে পারে।
=== মেমোরি বাস ও রেজিস্টারের মিথস্ক্রিয়া ===
এখন একটি বড় প্রশ্ন: রেজিস্টার ও মেমোরির মধ্যে তথ্য কীভাবে যাওয়া-আসা করে?
বাস হলো তারের সেই মহাসড়ক যার উপর দিয়ে প্রসেসর, মেমোরি ও অন্যান্য যন্ত্রাংশের মধ্যে তথ্য চলাচল করে। তিন ধরনের বাস থাকে:
{| class="wikitable" style="width:100%; text-align:center;"
|+ তিন ধরনের বাস
! বাসের ধরন !! কাজ !! তারের সংখ্যা (৩২-বিট প্রসেসরে)
|-
| ঠিকানা বাস || কোন মেমোরি ঘরে যেতে হবে তা জানায় || ৩২ (বা ৬৪)
|-
| ডেটা বাস || আসল তথ্য বহন করে || ৩২ (বা ৬৪)
|-
| নিয়ন্ত্রণ বাস || পড়া না লেখা, কখন সক্রিয় ইত্যাদি নির্ধারণ করে || কয়েকটি
|}
==== মেমোরি পড়া ====
প্রসেসর যখন মেমোরি থেকে কিছু পড়তে চায়:
ধাপ ১: প্রোগ্রাম কাউন্টার থেকে ঠিকানা ঠিকানা বাসে দেওয়া হয়
ধাপ ২: নিয়ন্ত্রণ বাসে "পড়া" সংকেত দেওয়া হয়
ধাপ ৩: মেমোরি সেই ঠিকানার তথ্য ডেটা বাসে রাখে
ধাপ ৪: প্রসেসর ডেটা বাস থেকে নির্দেশনা রেজিস্টারে তথ্য নেয়
==== মেমোরি লেখা ====
প্রসেসর যখন মেমোরিতে কিছু লিখতে চায়:
ধাপ ১: ঠিকানা বাসে গন্তব্য ঠিকানা দেওয়া হয়
ধাপ ২: ডেটা বাসে রেজিস্টার থেকে লেখার তথ্য দেওয়া হয়
ধাপ ৩: নিয়ন্ত্রণ বাসে "লেখা" সংকেত দেওয়া হয়
ধাপ ৪: মেমোরি সেই ঠিকানায় তথ্য সংরক্ষণ করে
==== ক্যাশ মেমোরি ====
মেমোরি ধীর, রেজিস্টার দ্রুত। এই পার্থক্য কমাতে মাঝখানে ক্যাশ মেমোরি ব্যবহার করা হয়, যা প্রায়শই ব্যবহৃত তথ্য প্রসেসরের কাছাকাছি রেখে দেয়। ক্যাশও আসলে রেজিস্টারের মতো ফ্লিপ-ফ্লপ দিয়ে তৈরি, তবে সংখ্যায় অনেক বেশি।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মেমোরি স্তরের তুলনা
! স্তর !! আকার !! গতি !! মূল উপাদান
|-
| রেজিস্টার || কয়েক শত বাইট || ১ ক্লক || ফ্লিপ-ফ্লপ
|-
| L1 ক্যাশ || কয়েক কিলোবাইট || ৩-৫ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| L2 ক্যাশ || কয়েক মেগাবাইট || ১০-৩০ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| প্রধান মেমোরি || গিগাবাইট || ১০০-২০০ ক্লক || ধারক (DRAM)
|-
| সংগ্রহণ স্তর || টেরাবাইট || লক্ষ ক্লক || চৌম্বক বা ফ্ল্যাশ
|}
=== বাস্তব প্রয়োগের বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ইউএআরটি দিয়ে তথ্য পাঠানো ====
একটি মাইক্রোকন্ট্রোলার থেকে 'B' অক্ষর (<math>\text{০১০০০০১০}</math>) একটি কম্পিউটারে পাঠাতে হবে। ইউএআরটি কীভাবে কাজ করে দেখাও।
পাঠানোর আগে: একটি শুরু বিট (<math>\text{০}</math>) যোগ করা হয়, তারপর ৮ বিট ডেটা, তারপর একটি শেষ বিট (<math>\text{১}</math>)।
{| class="wikitable" style="text-align:center; width:100%;"
|+ 'B' অক্ষর পাঠানোর পূর্ণ ক্রম
! ক্লক !! পাঠানো বিট !! বিটের ধরন !! বিবরণ
|-
| ১ || <math>\text{০}</math> || শুরু বিট || গ্রহণকারীকে সতর্ক করে
|-
| ২ || <math>\text{০}</math> || ডেটা বিট ০ (<math>Q_0</math>) || সর্বনিম্ন বিট
|-
| ৩ || <math>\text{১}</math> || ডেটা বিট ১ (<math>Q_1</math>) ||
|-
| ৪ || <math>\text{০}</math> || ডেটা বিট ২ (<math>Q_2</math>) ||
|-
| ৫ || <math>\text{০}</math> || ডেটা বিট ৩ (<math>Q_3</math>) ||
|-
| ৬ || <math>\text{০}</math> || ডেটা বিট ৪ (<math>Q_4</math>) ||
|-
| ৭ || <math>\text{০}</math> || ডেটা বিট ৫ (<math>Q_5</math>) ||
|-
| ৮ || <math>\text{১}</math> || ডেটা বিট ৬ (<math>Q_6</math>) ||
|-
| ৯ || <math>\text{০}</math> || ডেটা বিট ৭ (<math>Q_7</math>) || সর্বোচ্চ বিট
|-
| ১০ || <math>\text{১}</math> || শেষ বিট || প্রেরণ সম্পন্ন
|}
গ্রহণকারী প্রান্তে: শুরু বিট দেখে রেজিস্টার প্রস্তুত হয়, তারপর ৮টি বিট একে একে রেজিস্টারে ঢোকে। শেষ বিট দেখে বোঝে প্রেরণ শেষ। তারপর রেজিস্টারের সমান্তরাল আউটপুট থেকে 'B' অক্ষর পাওয়া যায়।
==== উদাহরণ ২: ৪-ধাপের পাইপলাইন ====
পাইপলাইন হলো বিলম্ব রেজিস্টারের একটি চমৎকার প্রয়োগ। একটি কাপড় কারখানা কল্পনা করো: একজন কাটে, আরেকজন সেলাই করে, আরেকজন বোতাম লাগায়, আরেকজন প্যাক করে। প্রত্যেকে আলাদা কাজে ব্যস্ত, কেউ বসে নেই।
প্রসেসরে একটি নির্দেশনা চালাতে চারটি ধাপ লাগে: আনো, পড়ো, চালাও, লেখো। পাইপলাইনে প্রতিটি ধাপে একটি আলাদা নির্দেশনা থাকে।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-ধাপ পাইপলাইনের সময় বিশ্লেষণ
! ক্লক !! আনো !! পড়ো !! চালাও !! লেখো
|-
| ১ || নির্দেশনা ১ || || ||
|-
| ২ || নির্দেশনা ২ || নির্দেশনা ১ || ||
|-
| ৩ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১ ||
|-
| ৪ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১
|-
| ৫ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২
|-
| ৬ || নির্দেশনা ৬ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩
|}
৪ ক্লকের বিলম্বের পর প্রতি ক্লকে একটি নির্দেশনা সম্পন্ন হচ্ছে। পাইপলাইন না থাকলে প্রতিটি নির্দেশনায় ৪ ক্লক লাগত।
প্রতিটি ধাপের মধ্যে পাইপলাইন রেজিস্টার থাকে। এই রেজিস্টারগুলোই এক ধাপের ফলাফল পরের ধাপে পৌঁছে দেয়।
==== উদাহরণ ৩: একটি সরল প্রোগ্রামের রেজিস্টার ব্যবহার ====
নিচের সরল হিসাব: <math>\text{৫} + \text{৩} - \text{২}</math> কম্পিউটার কীভাবে রেজিস্টার ব্যবহার করে করে?
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার ব্যবহারের ধাপ
! ধাপ !! নির্দেশনা !! রেজিস্টার অবস্থা !! বিবরণ
|-
| ১ || মেমোরি থেকে R1 তে ৫ লোড করো || <math>R1 = \text{৫}</math> || মেমোরি পড়া
|-
| ২ || মেমোরি থেকে R2 তে ৩ লোড করো || <math>R2 = \text{৩}</math> || মেমোরি পড়া
|-
| ৩ || R1 এবং R2 যোগ করে R3 তে রাখো || <math>R3 = \text{৮}</math> || যোগ অপারেশন
|-
| ৪ || মেমোরি থেকে R4 তে ২ লোড করো || <math>R4 = \text{২}</math> || মেমোরি পড়া
|-
| ৫ || R3 থেকে R4 বিয়োগ করে R5 তে রাখো || <math>R5 = \text{৬}</math> || বিয়োগ অপারেশন
|-
| ৬ || R5 থেকে মেমোরিতে ফল লেখো || মেমোরি = <math>\text{৬}</math> || মেমোরি লেখা
|}
প্রতিটি ধাপেই রেজিস্টার সাময়িক স্থান হিসেবে কাজ করছে।
==== উদাহরণ ৪: শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার ====
একটি ডিজিটাল ইকো যন্ত্র তৈরি করতে হবে। মূল শব্দ শোনার পরে ঠিক ০.৫ সেকেন্ড বিলম্বে একই শব্দ আবার শোনাবে।
ধরো, শব্দ নমুনার হার ৮০০০ হার্টজ অর্থাৎ প্রতি সেকেন্ডে ৮০০০টি নমুনা নেওয়া হয়।
<math>\text{বিলম্ব} = \text{০.৫} \times \text{৮০০০} = \text{৪০০০}</math> নমুনা
তাই ৪০০০টি নমুনার একটি শিফট রেজিস্টার দরকার। প্রতিটি নমুনা ৮ বিটের হলে মোট ৩২০০০টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ইকো যন্ত্রের রেজিস্টার বিন্যাস
! উপাদান !! বিবরণ
|-
| নমুনার হার || ৮০০০ হার্টজ
|-
| বিলম্ব || ০.৫ সেকেন্ড
|-
| বিলম্বের নমুনা সংখ্যা || <math>\text{৪০০০}</math>
|-
| প্রতি নমুনার বিট || <math>\text{৮}</math>
|-
| মোট ফ্লিপ-ফ্লপ || <math>\text{৩২০০০}</math>
|-
| বাস্তবে ব্যবহার || র্যাম বা বিশেষ ডিজিটাল বিলম্ব রেখা
|}
আধুনিক যন্ত্রে এতগুলো ফ্লিপ-ফ্লপের বদলে র্যাম ব্যবহার হয়, কিন্তু ধারণাটা একই।
==== উদাহরণ ৫: প্রোগ্রাম কাউন্টারের ধাপ বিশ্লেষণ ====
একটি সরল প্রসেসরে নির্দেশনাগুলো মেমোরিতে ঠিকানা ১০০, ১০২, ১০৪, ১০৬ তে আছে (প্রতিটি নির্দেশনা ২ বাইট)। ঠিকানা ১০৪ তে একটি লাফানো নির্দেশনা আছে যা ঠিকানা ১০০ তে ফিরে যাবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ প্রোগ্রাম কাউন্টারের পরিবর্তন
! ক্লক !! প্রোগ্রাম কাউন্টার !! চলমান নির্দেশনা !! প্রোগ্রাম কাউন্টার পরিবর্তন
|-
| ১ || <math>\text{১০০}</math> || নির্দেশনা পড়ো || <math>\text{১০০} \to \text{১০২}</math>
|-
| ২ || <math>\text{১০২}</math> || নির্দেশনা পড়ো || <math>\text{১০২} \to \text{১০৪}</math>
|-
| ৩ || <math>\text{১০৪}</math> || লাফানো নির্দেশনা পড়ো || <math>\text{১০৪} \to \text{১০০}</math> (লাফ)
|-
| ৪ || <math>\text{১০০}</math> || আবার প্রথম নির্দেশনা || <math>\text{১০০} \to \text{১০২}</math>
|-
| ৫ || <math>\text{১০২}</math> || দ্বিতীয় নির্দেশনা || <math>\text{১০২} \to \text{১০৪}</math>
|}
লাফানো নির্দেশনায় প্রোগ্রাম কাউন্টার স্বাভাবিকভাবে এগোনোর বদলে ১০০-তে সরাসরি যাচ্ছে। এভাবে লুপ তৈরি হয়।
== অনুশীলনী ==
# একটি ৮-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরকারী রেজিস্টারে <math>Q_7 \ldots Q_0 = \text{১১০১০১১০}</math> লোড করা আছে। সর্বনিম্ন বিট আগে পাঠানো হলে প্রথম তিনটি ক্লকে কোন বিটগুলো বেরোবে?
# ক্লক কম্পাঙ্ক ৫ মেগাহার্টজ হলে ১০ মাইক্রোসেকেন্ড বিলম্ব পেতে কতটি ফ্লিপ-ফ্লপের শিফট রেজিস্টার দরকার?
# ইউএআরটিতে শুরু বিট কেন পাঠানো হয়?
# একটি ৪-বিট ধারাবাহিক থেকে সমান্তরাল রেজিস্টারে একে একে <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math> ঢোকানো হলে (সর্বনিম্ন বিট আগে) চার ক্লক পরে <math>Q_3 Q_2 Q_1 Q_0</math> কত হবে?
# পাইপলাইন প্রসেসরে ৪-ধাপের পাইপলাইনে ১০০টি নির্দেশনা সম্পন্ন করতে কত ক্লক লাগবে?
# রেজিস্টার ফাইলে দুটি পাঠ পোর্ট থাকার কারণ কী?
# প্রোগ্রাম কাউন্টার সাধারণত প্রতিটি নির্দেশনার পর কতটুকু বাড়ে এবং কেন?
# একটি ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারে ফিডব্যাক রাশি <math>D = Q_2 \oplus Q_0</math> এবং প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math> হলে পরের তিনটি অবস্থা কী কী?
# ক্যাশ মেমোরি কেন রেজিস্টার দিয়ে তৈরি হয়, সাধারণ মেমোরি দিয়ে নয়?
# 'Z' অক্ষরের বাইনারি কোড <math>\text{০১০১১০১০}</math>। ইউএআরটিতে সর্বনিম্ন বিট আগে পাঠানো হলে বিটগুলোর ক্রম কী হবে (শুরু ও শেষ বিটসহ)?
'''উত্তর:'''
# প্রথম ক্লক: <math>Q_0 = \text{০}</math>; দ্বিতীয় ক্লক: <math>Q_1 = \text{১}</math>; তৃতীয় ক্লক: <math>Q_2 = \text{১}</math>।
# বিলম্ব = <math>n \times T_{ক্লক}</math>। <math>T_{ক্লক} = \frac{\text{১}}{\text{৫} \times \text{১০}^6} = \text{০.২}</math> মাইক্রোসেকেন্ড। তাই <math>n = \frac{\text{১০}}{\text{০.২}} = \text{৫০}</math>টি ফ্লিপ-ফ্লপ।
# শুরু বিট গ্রহণকারীকে জানায় যে ডেটা আসা শুরু হচ্ছে। এটি ছাড়া গ্রহণকারী বুঝতে পারবে না কখন থেকে বিট গণনা শুরু করবে।
# সর্বনিম্ন বিট আগে ঢোকায় বলে চার ক্লক পরে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>। (বিটগুলো ডানে থেকে বামে সরে গেছে: প্রথম বিট <math>\text{১}</math> হলো <math>Q_0</math>, দ্বিতীয় <math>\text{০}</math> হলো <math>Q_1</math>, তৃতীয় <math>\text{১}</math> হলো <math>Q_2</math>, চতুর্থ <math>\text{১}</math> হলো <math>Q_3</math>।)
# পাইপলাইন ভরতে ৩ অতিরিক্ত ক্লক লাগে। তারপর প্রতি ক্লকে একটি নির্দেশনা শেষ হয়। মোট = <math>\text{১০০} + (\text{৪} - \text{১}) = \text{১০৩}</math> ক্লক।
# একটি যোগ নির্দেশনায় দুটো রেজিস্টারের মান একই সময়ে পড়া দরকার। দুটো পাঠ পোর্ট থাকলে এই কাজ একক ক্লকেই সম্পন্ন হয়, আলাদা দুটো ক্লক লাগে না।
# প্রতিটি নির্দেশনা সাধারণত ২ বা ৪ বাইট হয় বলে প্রোগ্রাম কাউন্টার ২ বা ৪ করে বাড়ে। (৩২-বিট প্রসেসরে সাধারণত ৪ করে বাড়ে কারণ প্রতিটি নির্দেশনা ৪ বাইট।)
# ক্লক ১: <math>D = Q_2 \oplus Q_0 = \text{০} \oplus \text{১} = \text{১}</math>। নতুন অবস্থা: <math>\text{০০০} \to Q_0=\text{১},\ \text{অবস্থা} = \text{০০১}</math> না, সঠিকভাবে: প্রাথমিক <math>\text{০০১}</math>; ক্লক ১: <math>D=\text{০}\oplus\text{১}=\text{১}</math>, নতুন: <math>\text{০১০} \to Q_0=\text{১}</math> না। ধাপে ধাপে: <math>Q_2 Q_1 Q_0 = \text{০০১}</math>; <math>D = \text{০} \oplus \text{১} = \text{১}</math>; পরের অবস্থা <math>\text{১০০} \to</math> না, শিফট বাম: <math>Q_2 \leftarrow Q_1 = \text{০},\ Q_1 \leftarrow Q_0 = \text{০},\ Q_0 \leftarrow D = \text{১}</math>। তাই: ক্লক ১: <math>\text{০০১}</math>; ক্লক ২: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{০১১}</math>; ক্লক ৩: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{১১১}</math>।
# রেজিস্টার (ফ্লিপ-ফ্লপ) ক্লক-সিঙ্ক্রোনাস এবং প্রসেসরের মতোই দ্রুত কারণ একই চিপে তৈরি। সাধারণ মেমোরি (ডিআরএম) অনেক ধীর এবং আলাদা ঘড়ি দরকার।
# পাঠানোর ক্রম: <math>\text{০}</math> (শুরু), <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math> (শেষ)। (<math>\text{০১০১১০১০}</math> এর সর্বনিম্ন বিট থেকে: <math>Q_0=\text{০}, Q_1=\text{১}, Q_2=\text{০}, Q_3=\text{১}, Q_4=\text{১}, Q_5=\text{০}, Q_6=\text{১}, Q_7=\text{০}</math>।)
== উন্নত রেজিস্টার ও আধুনিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা রেজিস্টারের মূল ধারণা, সমান্তরাল লোড, শিফট রেজিস্টার এবং সার্বজনীন রেজিস্টার দেখেছি। এই শেষ ভাগে আমরা দেখব কীভাবে রেজিস্টারের ধারণাগুলো একত্রিত হয়ে আরও শক্তিশালী কাঠামো তৈরি করে, যেগুলো আধুনিক কম্পিউটার ও ডিজিটাল ব্যবস্থার মেরুদণ্ড।
=== ফিফো রেজিস্টার ===
==== সুপারশপের লাইনের উপমা ====
একটি সুপারশপে ক্যাশ কাউন্টারে লাইন ভাবো। যে প্রথমে লাইনে দাঁড়ায়, সে প্রথমে সেবা পায় এবং প্রথমে বেরিয়ে যায়। শেষে যে আসে, সে সবার পরে বেরোয়। কেউ লাইন টপকে আগে যেতে পারে না।
এটাই ফিফো-এর মূল নীতি। বাংলায় বলা যায় প্রথম-ঢোকা-প্রথম-বেরোনো। ডিজিটাল সার্কিটে এই ধারণা দিয়ে এমন একটি সংরক্ষণ ব্যবস্থা তৈরি হয় যেখানে ডেটা যে ক্রমে ঢোকে সেই ক্রমেই বেরোয়।
প্রিন্টারের উদাহরণ আরও পরিচিত। তুমি যখন একসাথে তিনটি ডকুমেন্ট প্রিন্ট করতে পাঠাও, প্রিন্টার সেগুলো যে ক্রমে পেয়েছে সেই ক্রমেই ছাপে। প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হয়।
==== ফিফো রেজিস্টারের গঠন ====
ফিফো রেজিস্টার মূলত একটি শিফট রেজিস্টার যেখানে ডেটা এক প্রান্ত থেকে ঢোকে এবং অন্য প্রান্ত থেকে বেরোয়।
একটি চার-ঘর ফিফো-তে চারটি সংরক্ষণ ঘর আছে। নতুন ডেটা সর্বদা লেখার প্রান্তে ঢোকে এবং পুরনো ডেটা পড়ার প্রান্ত থেকে বেরোয়। প্রতিটি ঘড়ির পালসে ডেটা এক ঘর এগিয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো রেজিস্টারের অংশ
! style="background:#4472C4; color:white;" | অংশ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | কাজ
|-
| লেখার প্রান্ত || ইনপুট || নতুন ডেটা এখানে ঢোকে
|-
| পড়ার প্রান্ত || আউটপুট || পুরনো ডেটা এখান থেকে বেরোয়
|-
| লেখার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে নতুন ডেটা ঢোকে
|-
| পড়ার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে ডেটা বেরোয়
|-
| পূর্ণ সংকেত || আউটপুট || সব ঘর ভরা থাকলে এটি সক্রিয় হয়
|-
| খালি সংকেত || আউটপুট || সব ঘর খালি থাকলে এটি সক্রিয় হয়
|}
==== পূর্ণ ও খালি সংকেত ====
ফিফো-র দুটি বিশেষ সংকেত আছে যা ব্যবস্থাপনায় সাহায্য করে।
'''পূর্ণ সংকেত:''' যখন ফিফো-র সব ঘর ভরা থাকে, তখন পূর্ণ সংকেত সক্রিয় হয়। এই সময় নতুন ডেটা ঢোকানো যাবে না। যদি ঢোকানো হয়, পুরনো ডেটা হারিয়ে যাবে। এটি সুপারশপের লাইন পূর্ণ হয়ে যাওয়ার মতো, নতুন কেউ লাইনে দাঁড়াতে পারছে না।
'''খালি সংকেত:''' যখন ফিফো-র সব ঘর খালি থাকে, তখন খালি সংকেত সক্রিয় হয়। এই সময় পড়ার চেষ্টা করলে অর্থহীন ডেটা আসবে। এটি খালি লাইন থেকে ক্যাশিয়ার কাউকে ডাকার চেষ্টার মতো।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফিফো-র অবস্থা ও সংকেত
! style="background:#4472C4; color:white;" | অবস্থা
! style="background:#70AD47; color:white;" | পূর্ণ সংকেত
! style="background:#C00000; color:white;" | খালি সংকেত
! style="background:#ED7D31; color:white;" | অনুমোদিত কাজ
|-
| সব ঘর খালি || <math>\text{০}</math> || <math>\text{১}</math> || শুধু লেখা
|-
| কিছু ঘর ভরা || <math>\text{০}</math> || <math>\text{০}</math> || লেখা ও পড়া উভয়ই
|-
| সব ঘর ভরা || <math>\text{১}</math> || <math>\text{০}</math> || শুধু পড়া
|}
==== ধাপে ধাপে ফিফো কাজের উদাহরণ ====
ধরো একটি চার-ঘর ফিফো খালি আছে। একে একে <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>, <math>\text{০০০১}</math> ডেটা ঢোকানো হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো-তে ডেটা ঢোকানো
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | ঘর ১ (পুরনো)
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#70AD47; color:white;" | ঘর ৪ (নতুন)
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || খালি || - || - || - || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || - || - || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০১১০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || - || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১১০০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ৪ || লেখা <math>\text{০০০১}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || পূর্ণ সংকেত সক্রিয়
|}
এখন একে একে পড়া হলো:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো থেকে ডেটা পড়া
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | পড়া ডেটা
! style="background:#70AD47; color:white;" | ঘর ১
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| ১ || পড়া || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || প্রথম ঢোকা প্রথম বেরোল
|-
| ২ || পড়া || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || দ্বিতীয়টি বেরোল
|-
| ৩ || পড়া || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || - || তৃতীয়টি বেরোল
|-
| ৪ || পড়া || <math>\text{০০০১}</math> || - || - || - || শেষেরটি বেরোল, এখন খালি
|}
ক্রম একদম ঠিক রইল। প্রথমে যা ঢুকেছিল, প্রথমে বেরিয়েছে।
==== বাস্তব প্রয়োগ ====
'''নেটওয়ার্ক বাফারিং:''' ইন্টারনেটে ডেটা প্যাকেট আসে ঝাঁকে ঝাঁকে। কখনো অনেক প্যাকেট একসাথে আসে, কখনো কম আসে। নেটওয়ার্ক কার্ডে ফিফো বাফার থাকে যা প্যাকেটগুলো সাময়িকভাবে ধরে রাখে এবং কম্পিউটারকে যখন সুবিধা হয় তখন প্রক্রিয়া করতে দেয়। এতে প্যাকেট হারিয়ে যাওয়ার ঝুঁকি কমে।
'''প্রিন্টার স্পুলিং:''' তুমি যখন অনেকগুলো ডকুমেন্ট প্রিন্ট করতে পাঠাও, অপারেটিং সিস্টেম সেগুলো একটি ফিফো সারিতে রাখে। প্রিন্টার একটি শেষ করলে পরেরটি নেয়। তুমি এর মধ্যে অন্য কাজ করতে পারো।
'''অডিও ও ভিডিও বাফারিং:''' ইউটিউবে ভিডিও দেখার সময় নেটওয়ার্ক থেকে আসা ডেটা একটি ফিফো বাফারে জমে। খেলার গতি সমান রাখতে এই বাফার সাহায্য করে।
'''কীবোর্ড বাফার:''' তুমি দ্রুত টাইপ করলে কম্পিউটার সঙ্গে সঙ্গে প্রক্রিয়া করতে নাও পারে। কীবোর্ড বাফারে চাপা বোতামের ক্রম ফিফো হিসেবে জমে থাকে।
=== লাইফো রেজিস্টার বা স্ট্যাক ===
==== থালার স্তূপের উপমা ====
রান্নাঘরে ধোয়া থালার স্তূপ ভাবো। নতুন ধোয়া থালা সবসময় উপরে রাখা হয়। থালা নেওয়ার সময়ও সবসময় উপর থেকে নেওয়া হয়। সবশেষে রাখা থালাটি সবার আগে নেওয়া হয়।
এটাই লাইফো-এর মূল নীতি। বাংলায় বলা যায় শেষ-ঢোকা-প্রথম-বেরোনো।
আরেকটি উদাহরণ: বইয়ের স্তূপ। তুমি একটার উপর একটা বই রাখলে। পরে বই নিতে গেলে সবার উপরের বই, অর্থাৎ সবার শেষে রাখা বই, আগে হাতে আসে।
==== পুশ ও পপ অপারেশন ====
স্ট্যাকে দুটি মূল অপারেশন হয়।
'''পুশ:''' স্ট্যাকের উপরে নতুন ডেটা রাখা। থালার স্তূপে নতুন থালা উপরে দেওয়ার মতো। প্রতিটি পুশে একটি বিশেষ নির্দেশক এক ঘর উপরে ওঠে যা বলে স্ট্যাকের উপর কোথায়।
'''পপ:''' স্ট্যাকের উপর থেকে ডেটা তোলা। থালার স্তূপ থেকে উপরের থালা সরানোর মতো। প্রতিটি পপে নির্দেশক এক ঘর নিচে নামে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ স্ট্যাক অপারেশনের উদাহরণ
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা (উপর থেকে নিচে)
! style="background:#ED7D31; color:white;" | নির্দেশক অবস্থান
|-
| শুরু || খালি || - || খালি || ০
|-
| ১ || পুশ || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১
|-
| ২ || পুশ || <math>\text{০১১০}</math> || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৩ || পুশ || <math>\text{১১০০}</math> || <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ৩
|-
| ৪ || পপ || <math>\text{১১০০}</math> বেরোল || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৫ || পপ || <math>\text{০১১০}</math> বেরোল || <math>\text{১০১১}</math> || ১
|-
| ৬ || পপ || <math>\text{১০১১}</math> বেরোল || খালি || ০
|}
লক্ষ করো ঢোকার ক্রম ছিল: <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>। বেরোনোর ক্রম হলো: <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math>। একদম উল্টো!
==== স্ট্যাক উপচানো ও খালি থেকে পপ ====
স্ট্যাকে দুটি বিপদ আছে।
'''স্ট্যাক উপচানো:''' স্ট্যাক পূর্ণ থাকলে আরও পুশ করলে পুরনো ডেটা হারিয়ে যায়। কম্পিউটারে এটি একটি মারাত্মক ত্রুটি। অনেক নিরাপত্তা সমস্যার মূলে এই ত্রুটি আছে।
'''খালি স্ট্যাক থেকে পপ:''' স্ট্যাক খালি থাকলে পপ করলে অর্থহীন মান আসে। এটিও একটি গুরুতর ত্রুটি।
==== কম্পিউটারের ফাংশন কল স্ট্যাক ====
কম্পিউটার প্রোগ্রামে স্ট্যাকের সবচেয়ে গুরুত্বপূর্ণ প্রয়োগ হলো ফাংশন কল পরিচালনা।
ধরো তুমি একটি প্রোগ্রাম লিখেছ। মূল অংশ থেকে প্রথম ফাংশন ডাকা হলো। সেই ফাংশন থেকে দ্বিতীয় ফাংশন ডাকা হলো। দ্বিতীয় ফাংশন থেকে তৃতীয় ফাংশন ডাকা হলো।
তৃতীয় ফাংশন শেষ হলে কোথায় ফিরবে? দ্বিতীয় ফাংশনে। দ্বিতীয় ফাংশন শেষ হলে কোথায় ফিরবে? প্রথম ফাংশনে। প্রথম ফাংশন শেষ হলে কোথায় ফিরবে? মূল অংশে।
এই ফেরার ঠিকানাগুলো একটি স্ট্যাকে জমা থাকে। প্রতিটি ফাংশন ডাকার সময় ফেরার ঠিকানা স্ট্যাকে পুশ হয়। ফাংশন শেষ হলে স্ট্যাক থেকে পপ করে ফেরার ঠিকানা পাওয়া যায়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফাংশন কলের স্ট্যাক ব্যবহার
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | ঘটনা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা
|-
| ১ || মূল অংশ থেকে ফাংশন ক ডাকা হলো || ফেরার ঠিকানা ক পুশ
|-
| ২ || ফাংশন ক থেকে ফাংশন খ ডাকা হলো || ফেরার ঠিকানা খ পুশ
|-
| ৩ || ফাংশন খ থেকে ফাংশন গ ডাকা হলো || ফেরার ঠিকানা গ পুশ
|-
| ৪ || ফাংশন গ শেষ, ফিরল || ঠিকানা গ পপ, ফাংশন খ-তে ফিরল
|-
| ৫ || ফাংশন খ শেষ, ফিরল || ঠিকানা খ পপ, ফাংশন ক-তে ফিরল
|-
| ৬ || ফাংশন ক শেষ, ফিরল || ঠিকানা ক পপ, মূল অংশে ফিরল
|}
==== ফিফো ও লাইফো-র তুলনা ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো ও লাইফো-র তুলনামূলক সারণি
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ফিফো
! style="background:#C00000; color:white;" | লাইফো
|-
| বাংলা নাম || প্রথম-ঢোকা-প্রথম-বেরোনো || শেষ-ঢোকা-প্রথম-বেরোনো
|-
| উপমা || সুপারশপের লাইন || থালার স্তূপ
|-
| ঢোকার প্রান্ত || এক প্রান্ত || উপর
|-
| বেরোনোর প্রান্ত || অন্য প্রান্ত || উপর (একই)
|-
| মূল অপারেশন || লেখা ও পড়া || পুশ ও পপ
|-
| বেরোনোর ক্রম || ঢোকার একই ক্রম || ঢোকার উল্টো ক্রম
|-
| প্রধান ব্যবহার || বাফারিং, সারি || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| বিপদ || পূর্ণ বা খালি থেকে পড়া || উপচানো বা খালি থেকে পপ
|}
=== রেজিস্টার ফাইল ===
==== কেন একাধিক রেজিস্টার দরকার? ====
একটি ক্লাসঘরে একজন মাত্র ছাত্র থাকলে পড়াশোনা হবে কিন্তু একই সময়ে একাধিক বিষয় আলোচনা করা যাবে না। কিন্তু ৩০ জন ছাত্র থাকলে একটি দল গণিত করছে, আরেকটি বিজ্ঞান করছে, এভাবে একসাথে অনেক কাজ এগোতে পারে।
কম্পিউটারের প্রসেসরেও তাই। একটিমাত্র রেজিস্টার থাকলে হিসাব করার সময় বারবার মেমোরিতে যেতে হতো। কিন্তু একাধিক রেজিস্টার থাকলে মাঝখানের ফলাফল দ্রুত কাছাকাছি রাখা যায়।
আধুনিক প্রসেসরে ৮ থেকে ৩২টি সাধারণ-উদ্দেশ্য রেজিস্টার থাকে। এই রেজিস্টারগুলো একসাথে মিলে রেজিস্টার ফাইল তৈরি করে।
==== ঠিকানা দিয়ে রেজিস্টার নির্বাচন ====
রেজিস্টার ফাইলকে একটি ছোট ডাকঘরের মতো ভাবো যেখানে প্রতিটি খোপের একটি নম্বর আছে। তুমি নম্বর বললেই সঠিক খোপ খুলে যায়।
রেজিস্টার ফাইলে প্রতিটি রেজিস্টারের একটি ঠিকানা থাকে। ঠিকানা দিলে সেই রেজিস্টারে লেখা বা পড়া যায়।
৮টি রেজিস্টার থাকলে ৩ বিটের ঠিকানা দরকার (কারণ <math>\text{২}^\text{৩} = \text{৮}</math>)। ১৬টি থাকলে ৪ বিটের ঠিকানা দরকার।
==== রেজিস্টার ফাইলের গঠন ====
একটি সহজ ৪-রেজিস্টার ফাইলের গঠন:
* ৪টি রেজিস্টার: <math>R_0, R_1, R_2, R_3</math>
* প্রতিটি ৪ বিট প্রশস্ত
* পড়ার ঠিকানা: ২ বিট (<math>RA_1, RA_0</math>)
* লেখার ঠিকানা: ২ বিট (<math>WA_1, WA_0</math>)
* লেখার সক্রিয়করণ: ১ বিট
* ডেটা ইনপুট: ৪ বিট
* ডেটা আউটপুট: ৪ বিট
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৪-রেজিস্টার ফাইলের ঠিকানা সারণি
! style="background:#4472C4; color:white;" | ঠিকানা <math>A_1A_0</math>
! style="background:#70AD47; color:white;" | নির্বাচিত রেজিস্টার
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| <math>\text{০০}</math> || <math>R_0</math> || প্রথম রেজিস্টার
|-
| <math>\text{০১}</math> || <math>R_1</math> || দ্বিতীয় রেজিস্টার
|-
| <math>\text{১০}</math> || <math>R_2</math> || তৃতীয় রেজিস্টার
|-
| <math>\text{১১}</math> || <math>R_3</math> || চতুর্থ রেজিস্টার
|}
==== দ্বি-পোর্ট রেজিস্টার ফাইল ====
সাধারণ রেজিস্টার ফাইলে একবারে একটি রেজিস্টার পড়া বা লেখা যায়। কিন্তু আধুনিক প্রসেসরে যোগকারী সার্কিটকে একই সময়ে দুটি রেজিস্টার পড়তে হয় এবং ফলাফল একটিতে লিখতে হয়।
এই কারণে দ্বি-পোর্ট রেজিস্টার ফাইল তৈরি হয়েছে। এতে দুটি পড়ার পোর্ট এবং একটি লেখার পোর্ট থাকে। একসাথে দুটি রেজিস্টার পড়া এবং একটিতে লেখা সম্ভব।
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বি-পোর্ট রেজিস্টার ফাইলের সংযোগ
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | বিট সংখ্যা
! style="background:#ED7D31; color:white;" | কাজ
|-
| পড়ার ঠিকানা ১ (<math>RS1</math>) || ঠিকানা বিট || প্রথম উৎস রেজিস্টার নির্বাচন
|-
| পড়ার ঠিকানা ২ (<math>RS2</math>) || ঠিকানা বিট || দ্বিতীয় উৎস রেজিস্টার নির্বাচন
|-
| লেখার ঠিকানা (<math>RD</math>) || ঠিকানা বিট || গন্তব্য রেজিস্টার নির্বাচন
|-
| পড়ার ডেটা ১ (<math>RD1</math>) || ডেটা বিট || প্রথম রেজিস্টারের মান
|-
| পড়ার ডেটা ২ (<math>RD2</math>) || ডেটা বিট || দ্বিতীয় রেজিস্টারের মান
|-
| লেখার ডেটা (<math>WD</math>) || ডেটা বিট || রেজিস্টারে যা লেখা হবে
|-
| লেখার সক্রিয়করণ || ১ বিট || সক্রিয় হলে লেখা হয়
|}
==== আধুনিক প্রসেসরে রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে রেজিস্টার ফাইল অত্যন্ত গুরুত্বপূর্ণ।
'''এআরএম প্রসেসর:''' স্মার্টফোনে ব্যাপকভাবে ব্যবহৃত এআরএম প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে। প্রতিটি ৩২ বিট প্রশস্ত।
'''ইন্টেল প্রসেসর:''' আধুনিক ইন্টেল প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে যার প্রতিটি ৬৪ বিট প্রশস্ত।
'''সুপারস্কেলার প্রসেসর:''' আধুনিক প্রসেসরে একই সময়ে একাধিক নির্দেশ চালানো যায়। এর জন্য রেজিস্টার ফাইলে বহু পোর্ট থাকে।
'''রেজিস্টার পুনর্নামকরণ:''' উচ্চ কর্মক্ষমতার প্রসেসরে বাস্তব রেজিস্টারের চেয়ে অনেক বেশি ভৌত রেজিস্টার থাকে। যখন একটি নির্দেশ একটি রেজিস্টারে লিখতে চায়, তখন একটি অব্যবহৃত ভৌত রেজিস্টার দিয়ে দেওয়া হয়। এটি রেজিস্টার পুনর্নামকরণ। এতে একই রেজিস্টারে লেখার জন্য অপেক্ষা করতে হয় না।
=== রেজিস্টার সংক্রান্ত গুরুত্বপূর্ণ পরিভাষার তালিকা ===
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার পরিভাষার তালিকা
! style="background:#4472C4; color:white;" | পরিভাষা
! style="background:#ED7D31; color:white;" | সংজ্ঞা
! style="background:#70AD47; color:white;" | উদাহরণ বা মন্তব্য
|-
| রেজিস্টার || একটি বা একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি দ্রুত সংরক্ষণ ব্যবস্থা || ৮-বিট রেজিস্টার = ৮টি ডি ফ্লিপ-ফ্লপ
|-
| ডি ফ্লিপ-ফ্লপ || এক বিট সংরক্ষণকারী প্রাথমিক উপাদান || <math>Q(t+\text{১}) = D(t)</math>
|-
| ঘড়ি || নিয়মিত পর্যায়ক্রমিক বর্গ তরঙ্গ যা ফ্লিপ-ফ্লপের কাজ নিয়ন্ত্রণ করে || উর্ধ্বমুখী প্রান্তে কাজ হয়
|-
| লোড || রেজিস্টারে নতুন মান ঢোকানো || লোড = <math>\text{১}</math> হলে ঘড়ির পালসে মান ঢোকে
|-
| ধারণ || রেজিস্টারের মান অপরিবর্তিত রাখা || লোড = <math>\text{০}</math> হলে মান ধরে থাকে
|-
| পরিষ্কার || রেজিস্টারের সব বিট শূন্য করা || প্রাথমিক অবস্থায় আনতে ব্যবহার হয়
|-
| শিফট || বিট এক ঘর বামে বা ডানে সরানো || বাইনারি গুণ ও ভাগে ব্যবহার হয়
|-
| ধারাবাহিক ইনপুট || শিফটের সময় প্রান্তে যে বিট ঢোকে || ডানে শিফটে বামে নতুন বিট ঢোকে
|-
| সমান্তরাল || একসাথে সব বিট || সমান্তরাল লোডে চার বিট একসাথে ঢোকে
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || প্রিন্টার সারি, নেটওয়ার্ক বাফার
|-
| লাইফো || শেষ-ঢোকা-প্রথম-বেরোনো || ফাংশন কল স্ট্যাক
|-
| পুশ || স্ট্যাকে উপরে যোগ করা || স্ট্যাক নির্দেশক এক বাড়ে
|-
| পপ || স্ট্যাকের উপর থেকে তোলা || স্ট্যাক নির্দেশক এক কমে
|-
| রেজিস্টার ফাইল || একাধিক রেজিস্টারের সমষ্টি যেখানে ঠিকানা দিয়ে প্রবেশ করা যায় || প্রসেসরে ৮ থেকে ৩২টি রেজিস্টার
|-
| সেটআপ সময় || ঘড়ির প্রান্তের আগে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| হোল্ড সময় || ঘড়ির প্রান্তের পরে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| প্রসারণ বিলম্ব || ঘড়ির প্রান্ত থেকে আউটপুট স্থির হওয়ার সময় || সার্কিটের সর্বোচ্চ গতি নির্ধারণ করে
|-
| কম্পাঙ্ক বিভাজক || <math>\bar{Q}</math> কে <math>D</math>-তে দিলে আউটপুট কম্পাঙ্ক অর্ধেক হয় || এক বিটের গণনাকারীও বলা যায়
|-
| পূর্ণ সংকেত || ফিফো পূর্ণ হলে সক্রিয় হয় || নতুন ডেটা ঢোকানো বন্ধ করতে সংকেত
|-
| খালি সংকেত || ফিফো খালি হলে সক্রিয় হয় || পড়া বন্ধ করতে সংকেত
|-
| স্ট্যাক নির্দেশক || স্ট্যাকের বর্তমান শীর্ষ ঘরের ঠিকানা ধরে রাখে || পুশে বাড়ে, পপে কমে
|}
=== সমগ্র রেজিস্টার অধ্যায়ের সারসংক্ষেপ সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ রেজিস্টারের প্রকারভেদ ও তুলনা
! style="background:#4472C4; color:white;" | রেজিস্টারের ধরন
! style="background:#4472C4; color:white;" | মূল বৈশিষ্ট্য
! style="background:#4472C4; color:white;" | ইনপুট পদ্ধতি
! style="background:#4472C4; color:white;" | আউটপুট পদ্ধতি
! style="background:#4472C4; color:white;" | নিয়ন্ত্রণ সংকেত
! style="background:#ED7D31; color:white;" | প্রধান ব্যবহার
|-
| সরল সমান্তরাল রেজিস্টার || প্রতি পালসে লোড হয় || সমান্তরাল || সমান্তরাল || ঘড়ি || সাধারণ ডেটা সংরক্ষণ
|-
| লোড সক্রিয়করণ সহ রেজিস্টার || লোড সংকেত দিয়ে নিয়ন্ত্রিত || সমান্তরাল || সমান্তরাল || ঘড়ি, লোড || বাস ব্যবস্থা, রেজিস্টার ফাইল
|-
| ডানমুখী শিফট রেজিস্টার || বিট ডানে সরে || ধারাবাহিক (বামে) || ধারাবাহিক (ডানে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| বামমুখী শিফট রেজিস্টার || বিট বামে সরে || ধারাবাহিক (ডানে) || ধারাবাহিক (বামে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| দ্বিমুখী শিফট রেজিস্টার || দুই দিকেই শিফট || দুই প্রান্তে ধারাবাহিক || দুই প্রান্তে ধারাবাহিক বা সমান্তরাল || ঘড়ি, দিক (<math>S</math>) || গুণ ও ভাগ, ডেটা রূপান্তর
|-
| সার্বজনীন রেজিস্টার || চারটি মোড || সমান্তরাল ও ধারাবাহিক || সমান্তরাল ও ধারাবাহিক || ঘড়ি, <math>S_1</math>, <math>S_0</math> || বহুমুখী ব্যবহার
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || এক প্রান্তে || অন্য প্রান্তে || লেখা ও পড়া সক্রিয়করণ || বাফারিং, সারি
|-
| লাইফো/স্ট্যাক || শেষ-ঢোকা-প্রথম-বেরোনো || উপরে (পুশ) || উপর থেকে (পপ) || পুশ, পপ || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| রেজিস্টার ফাইল || ঠিকানা দিয়ে প্রবেশ || লেখার ঠিকানায় || পড়ার ঠিকানায় || ঠিকানা, লেখার সক্রিয়করণ || প্রসেসর রেজিস্টার
|}
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ফিফো-তে লেখা ও পড়া মিশিয়ে ====
একটি চার-ঘর ফিফো নিয়ে কাজ করা হচ্ছে। নিচের ধারাবাহিক ক্রিয়ার পর ফিফো-র অবস্থা কী হবে?
ক্রিয়ার তালিকা:
১. লেখো <math>\text{১১০০}</math>
২. লেখো <math>\text{০০১১}</math>
৩. লেখো <math>\text{১০১০}</math>
৪. পড়ো
৫. লেখো <math>\text{০১১০}</math>
৬. লেখো <math>\text{১১১১}</math>
৭. পড়ো
৮. পড়ো
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | ফিফো (পুরনো থেকে নতুন)
! style="background:#C00000; color:white;" | পড়া মান
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || - || খালি || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১১০০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০০১১}</math> || <math>\text{১১০০}, \text{০০১১}</math> || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১০১০}</math> || <math>\text{১১০০}, \text{০০১১}, \text{১০১০}</math> || - || আংশিক ভরা
|-
| ৪ || পড়া || <math>\text{০০১১}, \text{১০১০}</math> || <math>\text{১১০০}</math> || আংশিক ভরা
|-
| ৫ || লেখা <math>\text{০১১০}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}</math> || - || আংশিক ভরা
|-
| ৬ || লেখা <math>\text{১১১১}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}, \text{১১১১}</math> || - || পূর্ণ সংকেত সক্রিয়
|-
| ৭ || পড়া || <math>\text{১০১০}, \text{০১১০}, \text{১১১১}</math> || <math>\text{০০১১}</math> || আংশিক ভরা
|-
| ৮ || পড়া || <math>\text{০১১০}, \text{১১১১}</math> || <math>\text{১০১০}</math> || আংশিক ভরা
|}
শেষ অবস্থায় ফিফো-তে আছে <math>\text{০১১০}</math> ও <math>\text{১১১১}</math>।
==== উদাহরণ ২: স্ট্যাকে পুশ ও পপ ====
একটি স্ট্যাকে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে স্ট্যাকের অবস্থা দেখাও।
ক্রিয়ার তালিকা:
১. পুশ <math>\text{১০১০}</math>
২. পুশ <math>\text{১১০০}</math>
৩. পুশ <math>\text{০১১১}</math>
৪. পপ
৫. পুশ <math>\text{০০০১}</math>
৬. পপ
৭. পপ
৮. পপ
{| class="wikitable" style="text-align:center; width:90%;"
|+ উদাহরণ ২-এর স্ট্যাক অপারেশন
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | স্ট্যাক (উপর থেকে নিচে)
! style="background:#C00000; color:white;" | পপ করা মান
|-
| শুরু || - || খালি || -
|-
| ১ || পুশ <math>\text{১০১০}</math> || <math>\text{১০১০}</math> || -
|-
| ২ || পুশ <math>\text{১১০০}</math> || <math>\text{১১০০}, \text{১০১০}</math> || -
|-
| ৩ || পুশ <math>\text{০১১১}</math> || <math>\text{০১১১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৪ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০১১১}</math>
|-
| ৫ || পুশ <math>\text{০০০১}</math> || <math>\text{০০০১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৬ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০০০১}</math>
|-
| ৭ || পপ || <math>\text{১০১০}</math> || <math>\text{১১০০}</math>
|-
| ৮ || পপ || খালি || <math>\text{১০১০}</math>
|}
==== উদাহরণ ৩: রেজিস্টার ফাইলে লেখা ও পড়া ====
একটি ৪-রেজিস্টার ফাইলে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে রেজিস্টার ফাইলের অবস্থা কী?
ক্রিয়ার তালিকা:
১. ঠিকানা <math>\text{০০}</math>-তে লেখো <math>\text{১০১০}</math>
২. ঠিকানা <math>\text{০১}</math>-তে লেখো <math>\text{০১১০}</math>
৩. ঠিকানা <math>\text{১০}</math>-তে লেখো <math>\text{১১০০}</math>
৪. ঠিকানা <math>\text{০০}</math> পড়ো
৫. ঠিকানা <math>\text{০১}</math> ও <math>\text{১০}</math> একসাথে পড়ো (দ্বি-পোর্ট)
৬. ঠিকানা <math>\text{১১}</math>-তে লেখো <math>\text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৩-এর রেজিস্টার ফাইল
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | <math>R_0</math> (<math>\text{০০}</math>)
! style="background:#70AD47; color:white;" | <math>R_1</math> (<math>\text{০১}</math>)
! style="background:#70AD47; color:white;" | <math>R_2</math> (<math>\text{১০}</math>)
! style="background:#70AD47; color:white;" | <math>R_3</math> (<math>\text{১১}</math>)
! style="background:#ED7D31; color:white;" | পড়া মান
|-
| শুরু || - || অজানা || অজানা || অজানা || অজানা || -
|-
| ১ || লেখা <math>\text{০০}</math> || <math>\text{১০১০}</math> || অজানা || অজানা || অজানা || -
|-
| ২ || লেখা <math>\text{০১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || অজানা || অজানা || -
|-
| ৩ || লেখা <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || -
|-
| ৪ || পড়া <math>\text{০০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{১০১০}</math>
|-
| ৫ || পড়া <math>\text{০১}</math> ও <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{০১১০}</math> ও <math>\text{১১০০}</math>
|-
| ৬ || লেখা <math>\text{১১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || -
|}
==== উদাহরণ ৪: শিফট রেজিস্টার দিয়ে বাইনারি গুণ ====
<math>\text{০০১১}</math> (দশমিকে ৩) কে ৪ দিয়ে গুণ করো বামে শিফট রেজিস্টার ব্যবহার করে।
৪ দিয়ে গুণ মানে বামে দুই শিফট। <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:90%;"
|+ বাইনারি গুণের ধাপ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#70AD47; color:white;" | রেজিস্টার
! style="background:#ED7D31; color:white;" | দশমিক মান
|-
| শুরু || - || <math>\text{০০১১}</math> || ৩
|-
| ১ || বামে এক শিফট || <math>\text{০১১০}</math> || ৬ (৩ × ২)
|-
| ২ || বামে এক শিফট || <math>\text{১১০০}</math> || ১২ (৩ × ৪)
|}
ফলাফল: <math>\text{১১০০}</math> যা দশমিকে ১২। ৩ × ৪ = ১২ ✓
কিন্তু লক্ষ করো: যদি সংখ্যা বড় হতো যেমন <math>\text{১০১১}</math> (দশমিকে ১১), বামে দুই শিফটে উচ্চ বিট বেরিয়ে যেত। ৪ বিটের রেজিস্টারে ফলাফল ধরবে না। এটি উপচানোর সমস্যা।
==== উদাহরণ ৫: সার্বজনীন রেজিস্টার দিয়ে সম্পূর্ণ প্রক্রিয়া ====
একটি সার্বজনীন রেজিস্টার দিয়ে <math>\text{১০১১}</math> লোড করে, তা দুই বার ডানে শিফট করো, তারপর ধরে রাখো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৫-এর সম্পূর্ণ প্রক্রিয়া
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || - || <math>\text{০০০০}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১১}</math> || সমান্তরাল লোড || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড সম্পন্ন
|-
| ২ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০১০১}</math> || ডানে এক শিফট
|-
| ৩ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০০১০}</math> || আবার ডানে এক শিফট
|-
| ৪ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || মান ধরে রাখা হলো
|-
| ৫ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || এখনও অপরিবর্তিত
|}
<math>\text{১০১১}</math> (দশমিকে ১১) কে ডানে দুই শিফট করে <math>\text{০০১০}</math> (দশমিকে ২) পাওয়া গেল। ১১ ÷ ৪ = ২ (ভাগশেষ ৩)। ✓
=== অনুশীলনী ===
# একটি চার-ঘর ফিফো-তে <math>\text{১০১০}</math>, <math>\text{০১০১}</math>, <math>\text{১১০০}</math> ঢোকানো হলো। এরপর দুটি পড়া হলো। তারপর <math>\text{০০১১}</math> ঢোকানো হলো। এখন ফিফো-তে কী আছে?
# একটি স্ট্যাকে পুশ <math>\text{ক}</math>, পুশ <math>\text{খ}</math>, পুশ <math>\text{গ}</math>, পপ, পপ, পুশ <math>\text{ঘ}</math>, পপ করা হলো। পপ করা তিনটি মান কী ছিল?
# ফিফো-র খালি সংকেত কখন সক্রিয় হয় এবং এই অবস্থায় পড়ার চেষ্টা করলে কী সমস্যা হয়?
# লাইফো ও ফিফো-র মধ্যে মূল পার্থক্য কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-রেজিস্টার ফাইলে ২ বিটের ঠিকানা ব্যবহার হয়। ৮-রেজিস্টার ফাইলে কত বিটের ঠিকানা দরকার?
# <math>\text{০১০১}</math> (দশমিকে ৫) কে বামে দুই শিফট করলে কী হবে? ফলাফলের দশমিক মান কত? এটি কোন গাণিতিক অপারেশনের সমতুল?
# <math>\text{১০০০}</math> (দশমিকে ৮) কে ডানে তিন শিফট করলে কী হবে? দশমিক মান কত? (<math>SI_R = \text{০}</math>)
# রেজিস্টার ফাইলে দ্বি-পোর্ট থাকার কী সুবিধা? প্রসেসরের কোন কাজে এটি দরকার?
# একটি চার-ঘর ফিফো-তে নিচের ক্রিয়াগুলো করো এবং প্রতিটি পালসের পর অবস্থা দেখাও:
** পালস ১: লেখা <math>\text{১১১১}</math>
** পালস ২: লেখা <math>\text{০০০০}</math>
** পালস ৩: পড়া
** পালস ৪: লেখা <math>\text{১০১০}</math>
** পালস ৫: পড়া
** পালস ৬: পড়া
# ফিফো পূর্ণ থাকলে আরও লেখার চেষ্টা করলে কী হতে পারে? কীভাবে এই সমস্যা এড়ানো যায়?
# স্ট্যাকে নিচের ক্রিয়াগুলো করো এবং প্রতিটি ধাপে স্ট্যাক নির্দেশকের মান দেখাও (শুরুতে নির্দেশক = ০):
** পুশ <math>\text{১০১০}</math>
** পুশ <math>\text{০১১০}</math>
** পপ
** পুশ <math>\text{১১০০}</math>
** পুশ <math>\text{০০০১}</math>
** পপ
** পপ
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> এবং <math>SI_R = \text{১}</math> দিয়ে চারটি পালস দিলে যেকোনো প্রাথমিক অবস্থা থেকে রেজিস্টার কী হবে?
# বামে শিফট করার সময় <math>SI_L = \text{১}</math> রাখলে কী ঘটে? একটি উদাহরণ দিয়ে দেখাও।
# রেজিস্টার ফাইলে একটি রেজিস্টার থেকে পড়ে অন্য রেজিস্টারে লেখার অপারেশন (<math>R_2 \leftarrow R_0 + R_1</math>) করতে কতটি পোর্ট দরকার এবং কেন?
# নিচের ফিফো ও স্ট্যাক ব্যবহারের পরিস্থিতিগুলোতে কোনটি বেশি উপযুক্ত এবং কেন:
** ক. অপারেটিং সিস্টেমে প্রিন্ট সারি
** খ. প্রোগ্রামের ফাংশন কল
** গ. নেটওয়ার্ক প্যাকেট বাফার
** ঘ. পূর্বের অবস্থায় ফেরার সুবিধা
'''উত্তর:'''
# পড়া হলো <math>\text{১০১০}</math> ও <math>\text{০১০১}</math>; তারপর <math>\text{০০১১}</math> ঢুকল; এখন ফিফো-তে আছে <math>\text{১১০০}</math> ও <math>\text{০০১১}</math>
# প্রথম পপে <math>\text{গ}</math>, দ্বিতীয় পপে <math>\text{খ}</math>, তৃতীয় পপে <math>\text{ঘ}</math> (পুশ ঘ-র পরে করা হয়েছিল)
# খালি সংকেত সক্রিয় হয় যখন ফিফো-র সব ঘর খালি থাকে; পড়ার চেষ্টা করলে অর্থহীন বা ভুল মান আসে যা সিস্টেমে ত্রুটি তৈরি করতে পারে
# ফিফো-তে ঢোকার ক্রমেই বেরোয় (সুপারশপের লাইনের মতো, যেমন প্রিন্ট সারি); লাইফো-তে শেষে ঢোকাটা আগে বেরোয় (থালার স্তূপের মতো, যেমন ব্রাউজারের পেছনে যাওয়ার বোতাম)
# ৩ বিটের ঠিকানা দরকার কারণ <math>\text{২}^\text{৩} = \text{৮}</math>
# <math>\text{০১০১}</math> বামে দুই শিফটে <math>\text{০১০১}</math> প্রথম শিফটে <math>\text{১০১০}</math> (১০), দ্বিতীয় শিফটে <math>\text{০১০০}</math> (২০); ৫ × ৪ = ২০ ✓; এটি ৪ দিয়ে গুণের সমতুল
# <math>\text{১০০০}</math> ডানে তিন শিফটে (<math>SI_R = \text{০}</math>): প্রথমে <math>\text{০১০০}</math> (৪), দ্বিতীয়ে <math>\text{০০১০}</math> (২), তৃতীয়ে <math>\text{০০০১}</math> (১); ৮ ÷ ৮ = ১ ✓
# দ্বি-পোর্টে একই সময়ে দুটি রেজিস্টার পড়া যায়; গাণিতিক লজিক ইউনিটে <math>A + B</math> করতে <math>A</math> ও <math>B</math> একসাথে পড়তে হয়, তাই দুটি পড়ার পোর্ট দরকার
# পালস ১ পরে: <math>\text{১১১১}</math>; পালস ২ পরে: <math>\text{১১১১}, \text{০০০০}</math>; পালস ৩ পরে পড়া <math>\text{১১১১}</math>, ফিফো: <math>\text{০০০০}</math>; পালস ৪ পরে: <math>\text{০০০০}, \text{১০১০}</math>; পালস ৫ পরে পড়া <math>\text{০০০০}</math>, ফিফো: <math>\text{১০১০}</math>; পালস ৬ পরে পড়া <math>\text{১০১০}</math>, ফিফো: খালি
# পূর্ণ থাকলে সবচেয়ে পুরনো ডেটা হারিয়ে যায়; এড়াতে লেখার আগে পূর্ণ সংকেত পরীক্ষা করতে হবে এবং পূর্ণ হলে না লেখা বা বাফার বড় করতে হবে
# নির্দেশক ০; পুশ ১০১০ পরে নির্দেশক ১; পুশ ০১১০ পরে নির্দেশক ২; পপ পরে নির্দেশক ১ (<math>\text{০১১০}</math> বেরোল); পুশ ১১০০ পরে নির্দেশক ২; পুশ ০০০১ পরে নির্দেশক ৩; পপ পরে নির্দেশক ২ (<math>\text{০০০১}</math> বেরোল); পপ পরে নির্দেশক ১ (<math>\text{১১০০}</math> বেরোল)
# যেকোনো প্রাথমিক অবস্থা থেকে চার পালস পর রেজিস্টার হবে <math>\text{১১১১}</math>, কারণ প্রতিটি পালসে বামে <math>SI_R = \text{১}</math> ঢুকছে এবং চার পালস পর সব ঘর <math>\text{১}</math> হয়ে যায়
# <math>SI_L = \text{১}</math> রেখে বামে শিফট করলে ডান প্রান্তে <math>\text{১}</math> ঢোকে; যেমন <math>\text{১০১০}</math> এক বামে শিফট করলে <math>\text{০১০১}</math> হয় (<math>\text{০}</math> বেরোয়, <math>\text{১}</math> ঢোকে)
# তিনটি পোর্ট দরকার: দুটি পড়ার পোর্ট <math>R_0</math> ও <math>R_1</math>-এর মান একসাথে পেতে এবং একটি লেখার পোর্ট ফলাফল <math>R_2</math>-তে রাখতে
# ক. প্রিন্ট সারি: ফিফো উপযুক্ত কারণ প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হওয়া উচিত; খ. ফাংশন কল: লাইফো উপযুক্ত কারণ সর্বশেষ ডাকা ফাংশন থেকে প্রথমে ফিরতে হয়; গ. নেটওয়ার্ক প্যাকেট: ফিফো উপযুক্ত কারণ প্যাকেটের ক্রম বজায় রাখা দরকার; ঘ. পূর্বাবস্থায় ফেরা: লাইফো উপযুক্ত কারণ সর্বশেষ কাজটি প্রথমে পূর্বাবস্থায় ফেরানো হয়
[[{{BOOKCATEGORY}}]]
8xxd9t2vfhqorr1e1t65nucu6jgzlkk
106500
106499
2026-06-05T09:26:23Z
R1F4T
9121
106500
wikitext
text/x-wiki
'''রেজিস্টার''' শব্দটা শুনলেই মাথায় আসে স্কুলের খাতা, ক্লাসের উপস্থিতির রেজিস্টার। সেই রেজিস্টারে শিক্ষক প্রতিদিন প্রতিটি ছাত্রের উপস্থিতি লিখে রাখেন। ডিজিটাল ইলেকট্রনিক্সের রেজিস্টারও ঠিক এইভাবে তথ্য লিখে রাখে তবে পার্থক্য হলো এখানে তথ্য থাকে বাইনারি সংখ্যায়, আর লেখার কাজটা করে ফ্লিপ-ফ্লপ।
একটু অন্যভাবে বলি। তুমি এখন যে কম্পিউটার বা মোবাইলে এই লেখা পড়ছ, সেটা প্রতি সেকেন্ডে কোটি কোটি গণনা করছে। সেই গণনার প্রতিটি ধাপে মধ্যবর্তী ফলাফল কোথাও সাময়িকভাবে রাখতে হয় ঠিক যেমন গণিত করার সময় তুমি কাগজের একপাশে হিসাব টুকে রাখো। কম্পিউটারে এই কাজটা করে রেজিস্টার। এটি ডিজিটাল সার্কিটের কাজের মেমরি।
== রেজিস্টার কী ==
'''রেজিস্টার''' হলো একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি একটি সার্কিট যা একসাথে একাধিক বিট তথ্য সংরক্ষণ করতে পারে। যেখানে একটি ফ্লিপ-ফ্লপ কেবল একটি বিট (<math>\text{০}</math> বা <math>\text{১}</math>) ধরে রাখে, সেখানে একটি রেজিস্টার একসাথে <math>n</math>টি বিট ধরে রাখতে পারে।
সহজ কথায়:
{| class="wikitable" style="width:100%; text-align:center;"
|+ ফ্লিপ-ফ্লপ ও রেজিস্টারের তুলনা
! বিষয় !! ফ্লিপ-ফ্লপ !! রেজিস্টার
|-
| সংরক্ষিত বিটের সংখ্যা || <math>\text{১}</math>টি || <math>n</math>টি
|-
| উদাহরণ || একটি লকার || একটি লকার সারি
|-
| ব্যবহার || একটি অবস্থা মনে রাখা || একটি সংখ্যা বা শব্দ মনে রাখা
|-
| প্রধান উপাদান || একটি ডি বা জেকে ফ্লিপ-ফ্লপ || একাধিক ডি ফ্লিপ-ফ্লপ
|}
=== উপমা: লকারের সারি ===
বাস স্টেশনে বা রেলওয়ে স্টেশনে যে লকারগুলো থাকে, সেগুলো কল্পনা করো। একটিমাত্র লকার একটি ব্যাগ রাখতে পারে। কিন্তু যদি পাশাপাশি ৮টি লকার একটি সারিতে সাজানো থাকে এবং সবগুলো একই মাস্টার চাবিতে খোলে-বন্ধ হয়, তাহলে সেটাই হলো রেজিস্টার।
এখানে:
* প্রতিটি লকার = একটি ফ্লিপ-ফ্লপ (একটি বিট সংরক্ষণ করে)
* সারির সব লকার = রেজিস্টার (একসাথে ৮টি বিট সংরক্ষণ করে)
* মাস্টার চাবি = ঘড়ি সংকেত (একসাথে সব ফ্লিপ-ফ্লপ নিয়ন্ত্রণ করে)
== রেজিস্টারের গুরুত্ব ==
রেজিস্টার কেন এত গুরুত্বপূর্ণ তা একটু ভেবে দেখি। ধরো তুমি <math>\text{১৩} + \text{২৭}</math> যোগ করছ। মাথায় প্রথমে আনতে হয় ১৩ কে, তারপর ২৭ কে, মধ্যবর্তী ধাপ মনে রাখতে হয়, তারপর উত্তর দিতে হয়। কম্পিউটারও এইভাবেই কাজ করে প্রতিটি সংখ্যা রেজিস্টারে রাখা হয়, গণনার মধ্যবর্তী ফলাফলও রেজিস্টারে যায়।
{| class="wikitable" style="width:100%;"
|+ বাস্তব জীবনে রেজিস্টারের প্রয়োজনীয়তা
! পরিস্থিতি !! রেজিস্টারের ভূমিকা
|-
| কম্পিউটারের গণনা || যোগ করার আগে দুটি সংখ্যা আলাদা রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ঘড়ি || বর্তমান সময় (ঘণ্টা, মিনিট, সেকেন্ড) রেজিস্টারে সংরক্ষিত
|-
| যোগাযোগ ব্যবস্থা || পাঠানোর আগে তথ্য সাময়িকভাবে রেজিস্টারে রাখা হয়
|-
| ডিজিটাল ক্যামেরা || ছবির পিক্সেল ডেটা প্রক্রিয়াকরণের সময় রেজিস্টারে থাকে
|-
| মোটরগাড়ির কম্পিউটার || ইঞ্জিনের সব পরামিতি রেজিস্টারে সংরক্ষিত ও পর্যবেক্ষিত
|-
| ব্যাংকের এটিএম || লেনদেনের মধ্যবর্তী তথ্য রেজিস্টারে থাকে
|}
== রেজিস্টারের প্রকারভেদ ==
রেজিস্টার অনেক ধরনের হয়। তথ্য কীভাবে ঢোকানো হয় এবং কীভাবে বের করা হয় তার উপর ভিত্তি করে রেজিস্টারের চারটি মূল প্রকার:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রেজিস্টারের প্রকারভেদ
! ধরন !! তথ্য ঢোকে || তথ্য বের হয় !! ব্যবহার
|-
| সমান্তরাল-ইন, সমান্তরাল-আউট || সব বিট একসাথে || সব বিট একসাথে || সাধারণ সংরক্ষণ
|-
| ধারাবাহিক-ইন, ধারাবাহিক-আউট || একটি একটি করে || একটি একটি করে || বিলম্ব সার্কিট
|-
| ধারাবাহিক-ইন, সমান্তরাল-আউট || একটি একটি করে || সব বিট একসাথে || রিসিভার সার্কিট
|-
| সমান্তরাল-ইন, ধারাবাহিক-আউট || সব বিট একসাথে || একটি একটি করে || ট্রান্সমিটার সার্কিট
|}
এই চারটি ধরনের পাশাপাশি আরো বিশেষ ধরনের রেজিস্টার আছে দ্বিমুখী শিফট রেজিস্টার, রিং কাউন্টার, স্ট্যাক এগুলো পরের ভাগে বিস্তারিত আলোচনা করা হবে।
== সবচেয়ে সরল রেজিস্টার: ৪-বিট সমান্তরাল রেজিস্টার ==
সবচেয়ে সহজ রেজিস্টার হলো সমান্তরাল লোড রেজিস্টার। এতে চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো থাকে এবং সবগুলো একই ঘড়ি সংকেত ব্যবহার করে।
=== গঠন ===
একটি ৪-বিট রেজিস্টারে:
* ৪টি ইনপুট: <math>D_3,\ D_2,\ D_1,\ D_0</math> (উঁচু বিট থেকে নিচু বিট)
* ৪টি আউটপুট: <math>Q_3,\ Q_2,\ Q_1,\ Q_0</math>
* একটি ঘড়ি ইনপুট: <math>CLK</math>
=== কার্যক্রম ===
ঘড়ির প্রতিটি উর্ধ্বগামী প্রান্তে (<math>\uparrow</math>) চারটি ইনপুটের মান একসাথে চারটি ফ্লিপ-ফ্লপে সংরক্ষিত হয়।
:<math>Q_3^+ = D_3,\quad Q_2^+ = D_2,\quad Q_1^+ = D_1,\quad Q_0^+ = D_0</math>
এটা বোঝার সহজ উপায়: ঘড়ির প্রান্তে একটি ''ছবি তোলা'' হয় সেই মুহূর্তে ইনপুটে যা আছে তার হুবহু ছাপ রেজিস্টারে পড়ে।
=== সত্যক সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! <math>CLK</math> !! <math>D_3 D_2 D_1 D_0</math> !! <math>Q_3 Q_2 Q_1 Q_0</math> !! ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ইনপুট হুবহু সংরক্ষিত
|-
| <math>\uparrow</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || পুরনো মান মুছে নতুন মান এলো
|-
| <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সব বিট ১
|-
| <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || সব বিট মুছে গেল
|-
| <math>\text{০}</math> বা <math>\text{১}</math> || যেকোনো || <math>Q</math> অপরিবর্তিত || ঘড়ির প্রান্ত নেই → পরিবর্তন নেই
|}
=== ধাপে ধাপে উদাহরণ ===
ধরো প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। এখন পরপর তিনটি ঘড়ির প্রান্তে ইনপুট দেওয়া হলো:
'''প্রান্ত ১:''' ইনপুট <math>D_3 D_2 D_1 D_0 = \text{১০১১}</math>
রেজিস্টারে সংরক্ষিত হলো: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
দশমিকে: <math>\text{১১}</math>
'''প্রান্ত ২:''' ইনপুট পরিবর্তন হলো <math>D_3 D_2 D_1 D_0 = \text{০১০১}</math>
রেজিস্টারে এখন: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math>
দশমিকে: <math>\text{৫}</math> (আগের <math>\text{১১}</math> মুছে গেল)
'''প্রান্ত ৩:''' ইনপুট দেওয়া হলো না (<math>D</math> অপরিবর্তিত)
রেজিস্টারে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১০১}</math> (অপরিবর্তিত)
লক্ষ করো ঘড়ির প্রান্ত না পেলে রেজিস্টার তার তথ্য ধরে রাখে।
== রেজিস্টারের আকার ==
রেজিস্টার কত বিটের হবে তা নির্ভর করে কী ধরনের তথ্য সংরক্ষণ করতে হবে তার উপর।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের আকার ও প্রয়োজনীয় ফ্লিপ-ফ্লপ
! রেজিস্টারের আকার !! ফ্লিপ-ফ্লপের সংখ্যা !! সর্বোচ্চ মান !! সাধারণ ব্যবহার
|-
| ৪-বিট || <math>\text{৪}</math> || <math>\text{১৫}</math> | BCD সংখ্যা, ছোট গণনা
|-
| ৮-বিট || <math>\text{৮}</math> || <math>\text{২৫৫}</math> || একটি অক্ষর (ASCII), রঙের মান
|-
| ১৬-বিট || <math>\text{১৬}</math> || <math>\text{৬৫৫৩৫}</math> || ছোট পূর্ণসংখ্যা
|-
| ৩২-বিট || <math>\text{৩২}</math> || <math>\approx \text{৪.৩ বিলিয়ন}</math> || সাধারণ কম্পিউটার রেজিস্টার
|-
| ৬৪-বিট || <math>\text{৬৪}</math> || <math>\approx \text{১৮.৪ কুইন্টিলিয়ন}</math> || আধুনিক ৬৪-বিট প্রসেসর
|}
<math>n</math>-বিট রেজিস্টারে সংরক্ষণযোগ্য সর্বোচ্চ মান: <math>\text{২}^n - \text{১}</math>
== মৌলিক রেজিস্টার অপারেশন ==
প্রতিটি রেজিস্টার মূলত তিনটি কাজ করতে পারে:
=== ১. লোড করা ===
নতুন তথ্য রেজিস্টারে লেখা। ঘড়ির প্রান্তে ইনপুটের মান আউটপুটে চলে আসে।
=== ২. ধারণ করা ===
বর্তমান তথ্য অপরিবর্তিত রাখা। ঘড়ির প্রান্ত না পেলে বা লোড নিষ্ক্রিয় থাকলে রেজিস্টার তার মান ধরে রাখে।
=== ৩. পরিষ্কার করা ===
সব বিট <math>\text{০}</math> করে দেওয়া। এটি সাধারণত একটি বিশেষ ক্লিয়ার (<math>\overline{CLR}</math>) ইনপুট দিয়ে করা হয়।
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের মৌলিক অপারেশন
! অপারেশন !! শর্ত !! আউটপুট <math>Q^+</math> !! উপমা
|-
| লোড || <math>CLK \uparrow</math> সক্রিয় || <math>D</math> (নতুন মান) || নতুন ছবি তোলা
|-
| ধারণ || <math>CLK \uparrow</math> নেই || <math>Q</math> (আগের মান) || পুরনো ছবি রাখা
|-
| পরিষ্কার || <math>\overline{CLR} = \text{০}</math> || <math>\text{০০...০}</math> || ছবি মুছে ফেলা
|}
== রেজিস্টারে ব্যবহৃত ফ্লিপ-ফ্লপের পছন্দ ==
রেজিস্টার তৈরিতে ডি ফ্লিপ-ফ্লপ কেন সবচেয়ে বেশি ব্যবহৃত হয় তা বোঝা দরকার।
{| class="wikitable" style="width:100%;"
|+ রেজিস্টারে ডি ফ্লিপ-ফ্লপ পছন্দের কারণ
! কারণ !! বিবরণ
|-
| সহজ বৈশিষ্ট্য সমীকরণ || <math>Q^+ = D</math> যা ইনপুট দেবে তাই সংরক্ষিত হবে
|-
| কোনো নিষিদ্ধ অবস্থা নেই || এসআর ফ্লিপ-ফ্লপের মতো ভুল অবস্থার ঝুঁকি নেই
|-
| একটিমাত্র ইনপুট || সরল সার্কিট, কম গেট, কম জায়গা
|-
| সরল সক্রিয়করণ || কাঙ্ক্ষিত আউটপুটই সরাসরি ইনপুট দাও
|-
| শিফট রেজিস্টারে আদর্শ || আগের ফ্লিপ-ফ্লপের আউটপুট সরাসরি পরেরটির ইনপুটে দেওয়া যায়
|}
== একটি রেজিস্টারের ভেতরে কী ঘটে ==
ধরো একটি ৪-বিট ডি ফ্লিপ-ফ্লপ রেজিস্টার। প্রতিটি ফ্লিপ-ফ্লপ স্বাধীনভাবে কাজ করে কিন্তু সবাই একই ঘড়ির প্রান্তে একসাথে কাজ শুরু করে।
ধাপে ধাপে ঘটনার ক্রম:
'''ঘড়ির প্রান্ত আসার আগে:'''
* ইনপুট লাইন <math>D_3, D_2, D_1, D_0</math> তে মান প্রস্তুত
* রেজিস্টার আগের মান ধরে রেখেছে
'''ঘড়ির উর্ধ্বগামী প্রান্তে (মুহূর্তিকভাবে):'''
* চারটি ফ্লিপ-ফ্লপ একসাথে ইনপুটের মান গ্রহণ করে
* পুরনো মান মুছে নতুন মান সংরক্ষিত হয়
'''ঘড়ির প্রান্তের পরে (বিস্তার বিলম্বের পরে):'''
* আউটপুট <math>Q_3, Q_2, Q_1, Q_0</math> তে নতুন মান প্রকাশ পায়
* পরবর্তী প্রান্ত না আসা পর্যন্ত এই মান স্থির থাকে
{| class="wikitable" style="text-align:center;"
|+ রেজিস্টারের সময়-সংক্রান্ত বৈশিষ্ট্য
! সময়-বৈশিষ্ট্য !! চিহ্ন !! অর্থ
|-
| স্থাপন সময় || <math>t_{su}</math> || প্রান্তের আগে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| ধারণ সময় || <math>t_h</math> || প্রান্তের পরে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
|-
| বিস্তার বিলম্ব || <math>t_{pd}</math> || প্রান্ত থেকে আউটপুট পরিবর্তনের সময়
|-
| সর্বোচ্চ কম্পাঙ্ক || <math>f_{max}</math> || রেজিস্টার কত দ্রুত কাজ করতে পারে
|}
== বিট-ক্রম নিয়ে সতর্কতা ==
রেজিস্টারে বিট কোন ক্রমে থাকে তা জানা গুরুত্বপূর্ণ। দুটি প্রচলিত পদ্ধতি আছে:
=== মোস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বোচ্চ মানের বিট (<math>Q_3</math>) বাম দিকে থাকে। এটি স্বাভাবিক বাইনারি লেখার মতো।
উদাহরণ: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math> মানে দশমিকে <math>\text{৮}+\text{০}+\text{২}+\text{১} = \text{১১}</math>
=== লিস্ট সিগনিফিক্যান্ট বিট প্রথমে ===
সর্বনিম্ন মানের বিট (<math>Q_0</math>) প্রথমে প্রেরণ করা হয়। ধারাবাহিক যোগাযোগে এই পদ্ধতি সাধারণ।
== উদাহরণ ==
=== উদাহরণ ১: বাইনারি সংখ্যা সংরক্ষণ ===
<math>\text{১৩}</math> দশমিক সংখ্যাটি একটি ৪-বিট রেজিস্টারে সংরক্ষণ করো।
প্রথমে দশমিক থেকে বাইনারি:
:<math>\text{১৩} = \text{৮}+\text{৪}+\text{১} = \text{১১০১}</math>
তাহলে ইনপুট: <math>D_3 D_2 D_1 D_0 = \text{১১০১}</math>
ঘড়ির প্রান্তে রেজিস্টারে সংরক্ষিত হবে:
:<math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>
যাচাই: <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
=== উদাহরণ ২: ধারণ অপারেশন ===
একটি রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> সংরক্ষিত আছে। পরবর্তী দুটি ঘড়ির প্রান্তের মধ্যে কোনো ইনপুট পরিবর্তন হলো না। রেজিস্টারের মান কী থাকবে?
উত্তর: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১০}</math> (অপরিবর্তিত)
ফ্লিপ-ফ্লপ তার তথ্য ধরে রাখে নতুন ঘড়ির প্রান্ত না আসলে পরিবর্তন হয় না।
=== উদাহরণ ৩: ক্রমানুসারে লোড করা ===
প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>। পরপর চারটি ঘড়ির প্রান্তে নিচের ইনপুট দেওয়া হলো। প্রতিটি প্রান্তের পরে রেজিস্টারের মান কী?
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ৩ ক্রমানুসারে লোড
! প্রান্ত !! ইনপুট <math>D_3 D_2 D_1 D_0</math> !! আউটপুট <math>Q_3 Q_2 Q_1 Q_0</math> !! দশমিক মান
|-
| শুরু || || <math>\text{০০০০}</math> || <math>\text{০}</math>
|-
| ১ম || <math>\text{০১০১}</math> || <math>\text{০১০১}</math> || <math>\text{৫}</math>
|-
| ২য় || <math>\text{১০০০}</math> || <math>\text{১০০০}</math> || <math>\text{৮}</math>
|-
| ৩য় || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || <math>\text{১৫}</math>
|-
| ৪র্থ || <math>\text{০০১১}</math> || <math>\text{০০১১}</math> || <math>\text{৩}</math>
|}
প্রতিটি প্রান্তে রেজিস্টার নতুন মান গ্রহণ করেছে এবং পুরনো মান সম্পূর্ণ মুছে গেছে।
=== উদাহরণ ৪: রেজিস্টারের সীমা পরীক্ষা ===
একটি ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব কিনা?
৩-বিট রেজিস্টারের সর্বোচ্চ মান: <math>\text{২}^\text{৩} - \text{১} = \text{৭}</math>
<math>\text{৯} > \text{৭}</math>, তাই ৩-বিট রেজিস্টারে <math>\text{৯}</math> সংরক্ষণ করা সম্ভব নয়। কমপক্ষে ৪-বিট রেজিস্টার দরকার (সর্বোচ্চ মান <math>\text{১৫}</math>)।
== অনুশীলনী ==
# একটি ৫-বিট রেজিস্টার সর্বোচ্চ কত মান সংরক্ষণ করতে পারে?
# দশমিক <math>\text{২৫}</math> সংরক্ষণ করতে কমপক্ষে কত বিটের রেজিস্টার প্রয়োজন?
# একটি ৪-বিট রেজিস্টারে <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math> আছে। এটি দশমিকে কত?
# রেজিস্টার ও ফ্লিপ-ফ্লপের মধ্যে মূল পার্থক্য কী?
# একটি ৪-বিট রেজিস্টারে ক্রমানুসারে নিচের মানগুলো লোড করা হলো: <math>\text{০৭, ১২, ০৩, ০৯}</math> (দশমিক)। প্রতিটি লোডের পরে রেজিস্টারে বাইনারিতে কী থাকবে?
# কোন ধরনের ফ্লিপ-ফ্লপ রেজিস্টার তৈরিতে সবচেয়ে বেশি ব্যবহৃত হয় এবং কেন?
# একটি ৮-বিট রেজিস্টারে দশমিক <math>\text{১৭৮}</math> সংরক্ষণ করো। বাইনারিতে ইনপুট কী হবে?
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার কীভাবে আচরণ করে?
'''উত্তর:'''
# <math>\text{২}^\text{৫} - \text{১} = \text{৩১}</math>
# <math>\text{২}^\text{৪} = \text{১৬} < \text{২৫} \leq \text{৩২} = \text{২}^\text{৫}</math> → কমপক্ষে ৫-বিট রেজিস্টার
# <math>\text{১} \times \text{৮} + \text{১} \times \text{৪} + \text{০} \times \text{২} + \text{১} \times \text{১} = \text{১৩}</math>
# ফ্লিপ-ফ্লপ একটিমাত্র বিট সংরক্ষণ করে; রেজিস্টার একাধিক ফ্লিপ-ফ্লপ একত্রিত করে বহু বিট সংরক্ষণ করে
# <math>\text{৭} = \text{০১১১}</math>, <math>\text{১২} = \text{১১০০}</math>, <math>\text{৩} = \text{০০১১}</math>, <math>\text{৯} = \text{১০০১}</math>
# ডি ফ্লিপ-ফ্লপ সরল বৈশিষ্ট্য সমীকরণ (<math>Q^+ = D</math>), নিষিদ্ধ অবস্থা নেই, একটিমাত্র ইনপুট
# <math>\text{১৭৮} = \text{১}0\text{১১০০১০}</math> → <math>D_7 D_6 D_5 D_4 D_3 D_2 D_1 D_0 = \text{১০১১০০১০}</math>
# ঘড়ির প্রান্ত না থাকলে রেজিস্টার তার বর্তমান মান অপরিবর্তিত ধরে রাখে ইনপুটে যাই থাকুক প্রভাব পড়ে না।
== সমান্তরাল লোড রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম ডি ফ্লিপ-ফ্লপ কীভাবে একটি বিট মনে রাখতে পারে। এবার সেই ধারণার উপর দাঁড়িয়ে আমরা দেখব কীভাবে একসাথে অনেকগুলো বিট মনে রাখা যায়।
=== সমান্তরাল লোড কী? ===
একটি ড্রয়ারের কথা ভাবো। ধরো তোমার কাছে একটি ড্রয়ার আছে যেখানে চারটি ছোট খোপ আছে। তুমি যখন চাইলে চারটি খোপে একসাথে চারটি জিনিস রাখতে পারো। পরে যখন দরকার, চারটি জিনিস একসাথে বের করতে পারো। ড্রয়ার বন্ধ থাকলে ভেতরের জিনিস কেউ বদলাতে পারে না, কিন্তু খুললেই সব জিনিস দেখা যায় ও বদলানো যায়।
সমান্তরাল লোড রেজিস্টার ঠিক এই ড্রয়ারের মতো কাজ করে। চারটি বিট একসাথে ভেতরে ঢোকে এবং একসাথে বাইরে আসে। "একসাথে" মানে একই ঘড়ির পালসে, পরপর নয়।
এর বিপরীতে ধারাবাহিক রেজিস্টারে বিট একটা একটা করে ঢোকে এবং একটা একটা করে বের হয়, অনেকটা একটা নলের মধ্যে দিয়ে পাথর একটার পর একটা যাওয়ার মতো। সমান্তরাল রেজিস্টারে সব বিট একসাথে যায়, যেন চারটি নল দিয়ে চারটি পাথর একসাথে যাচ্ছে।
=== কেন সমান্তরাল লোড দরকার? ===
ধরো তুমি একটি বাসে উঠতে চাও। একজন একজন করে উঠলে সময় লাগে। কিন্তু যদি চারটি দরজা দিয়ে একসাথে চারজন উঠতে পারে, সময় চারভাগের একভাগ লাগে।
কম্পিউটারে হিসাব করতে গেলে একটি সংখ্যার সব বিট একসাথে প্রক্রিয়া করতে হয়। যদি একটা একটা করে বিট নেওয়া হয়, কাজ অনেক ধীর হয়ে যায়। তাই গাণিতিক লজিক ইউনিট, রেজিস্টার এবং মেমোরির মধ্যে ডেটা সমান্তরালভাবে চলাচল করে। এই কারণেই সমান্তরাল লোড রেজিস্টার ডিজিটাল সিস্টেমের এত গুরুত্বপূর্ণ অংশ।
=== লোড সক্রিয়করণ ছাড়া সরল ৪-বিট সমান্তরাল রেজিস্টার ===
সবচেয়ে সহজ সমান্তরাল রেজিস্টারে কোনো নিয়ন্ত্রণ নেই। প্রতিটি ঘড়ির পালসে যা ইনপুটে থাকে তাই রেজিস্টারে ঢুকে যায়।
==== সার্কিটের গঠন ====
চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো। প্রতিটি ফ্লিপ-ফ্লপ একটি করে বিট সংরক্ষণ করে।
* চারটি ফ্লিপ-ফ্লপ: <math>FF_3</math>, <math>FF_2</math>, <math>FF_1</math>, <math>FF_0</math>
* চারটি ডেটা ইনপুট: <math>D_3</math>, <math>D_2</math>, <math>D_1</math>, <math>D_0</math>
* চারটি আউটপুট: <math>Q_3</math>, <math>Q_2</math>, <math>Q_1</math>, <math>Q_0</math>
* একটি মাত্র ঘড়ি সংকেত সবগুলো ফ্লিপ-ফ্লপে একসাথে সংযুক্ত
এখানে গুরুত্বপূর্ণ বিষয় হলো সব ফ্লিপ-ফ্লপ একই ঘড়ির পালসে সাড়া দেয়। তাই ঘড়ির উর্ধ্বমুখী প্রান্তে চারটি বিট একসাথে লোড হয়।
প্রতিটি ফ্লিপ-ফ্লপের বৈশিষ্ট্য সমীকরণ:
:<math>Q_3(t+\text{১}) = D_3(t)</math>
:<math>Q_2(t+\text{১}) = D_2(t)</math>
:<math>Q_1(t+\text{১}) = D_1(t)</math>
:<math>Q_0(t+\text{১}) = D_0(t)</math>
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সরল ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | <math>D_3</math>
! style="background:#4472C4; color:white;" | <math>D_2</math>
! style="background:#4472C4; color:white;" | <math>D_1</math>
! style="background:#4472C4; color:white;" | <math>D_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\uparrow</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শূন্য লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\uparrow</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ১১১১ লোড হয়েছে
|-
| স্তর || <math>X</math> || <math>X</math> || <math>X</math> || <math>X</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || আগের মান ধরে রাখে
|}
<math>\uparrow</math> মানে উর্ধ্বমুখী প্রান্ত, <math>X</math> মানে যেকোনো মান।
==== ধাপে ধাপে উদাহরণ: <math>\text{১০১১}</math> লোড করা ====
ধরো রেজিস্টারে এখন <math>\text{০০০০}</math> আছে। আমরা <math>\text{১০১১}</math> লোড করতে চাই।
'''প্রস্তুতি:'''
ইনপুটে বসাই: <math>D_3 = \text{১}</math>, <math>D_2 = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_0 = \text{১}</math>।
'''ঘড়ির উর্ধ্বমুখী প্রান্তে কী হয়:'''
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড করার ধাপ
! style="background:#4472C4; color:white;" | ফ্লিপ-ফ্লপ
! style="background:#4472C4; color:white;" | ডি ইনপুট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#70AD47; color:white;" | নতুন কিউ
! style="background:#ED7D31; color:white;" | কী হলো
|-
| <math>FF_3</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_2</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || অপরিবর্তিত রইল
|-
| <math>FF_1</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|-
| <math>FF_0</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ০ থেকে ১ হলো
|}
'''ফলাফল:''' <math>Q_3Q_2Q_1Q_0 = \text{১০১১}</math>। রেজিস্টার সফলভাবে <math>\text{১০১১}</math> সংরক্ষণ করেছে।
এখন ঘড়ির পালস না দিলে রেজিস্টারে <math>\text{১০১১}</math> থেকেই যাবে, ইনপুট যতই বদলাক না কেন।
=== লোড সক্রিয়করণ সহ রেজিস্টার ===
==== কেন লোড সক্রিয়করণ দরকার? ====
একটি ব্যাংক লকারের কথা ভাবো। লকারে টাকা রাখতে হলে চাবি লাগে। চাবি না থাকলে কেউ ভেতরে কিছু রাখতে বা বের করতে পারে না। ভেতরের টাকা নিরাপদে থাকে।
সরল রেজিস্টারে সমস্যা হলো প্রতিটি ঘড়ির পালসে ডেটা বদলে যায়। কিন্তু অনেক সময় আমরা চাই রেজিস্টারের মান ধরে রাখতে, বদলাতে নয়। কম্পিউটারে একটি রেজিস্টার অনেকক্ষণ ধরে একটি মান ধরে রাখতে পারে এবং শুধু নির্দিষ্ট সময়ে আপডেট হয়।
এই সমস্যার সমাধান হলো লোড সক্রিয়করণ সংকেত। এটি ব্যাংক লকারের চাবির মতো। লোড = <math>\text{১}</math> হলে নতুন ডেটা ঢোকে, লোড = <math>\text{০}</math> হলে আগের মান অপরিবর্তিত থাকে।
==== বুলিয়ান রাশি ====
লোড সক্রিয়করণ সহ প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটে যা যাবে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
এই রাশিটি একটু ভেঙে বোঝা যাক।
যখন <math>Load = \text{১}</math>:
:<math>D_i = \text{১} \cdot Data_i + \text{০} \cdot Q_i = Data_i + \text{০} = Data_i</math>
তাই ফ্লিপ-ফ্লপে নতুন ডেটা লোড হবে।
যখন <math>Load = \text{০}</math>:
:<math>D_i = \text{০} \cdot Data_i + \text{১} \cdot Q_i = \text{০} + Q_i = Q_i</math>
তাই ফ্লিপ-ফ্লপ আগের মান ধরে রাখবে কারণ ডি ইনপুটে কিউ-এর মানই যাচ্ছে। পরের কিউ = বর্তমান কিউ।
এই রাশিটি একটি মাল্টিপ্লেক্সারের মতো কাজ করে। লোড সংকেত ঠিক করে কোন পথে ডেটা ফ্লিপ-ফ্লপে যাবে।
==== লোড সক্রিয়করণ সহ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{০}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || আগের কিউ অপরিবর্তিত || ধারণ অবস্থা: কিছু বদলায় না
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || আগের কিউ অপরিবর্তিত || লোড নিষ্ক্রিয়, ইনপুট উপেক্ষিত
|-
| <math>\text{০}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
{| class="wikitable" style="text-align:center; width:100%;"
|+ লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = <math>\text{১}</math>)
! style="background:#C00000; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শূন্য লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১০১১ লোড হয়েছে
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || ১১১১ লোড হয়েছে
|-
| <math>\text{১}</math> || স্তর || যেকোনো || আগের কিউ অপরিবর্তিত || ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
|}
==== লজিক সার্কিটে ব্যবহৃত গেট ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ লোড সক্রিয়করণ সহ রেজিস্টারের গেট সারণি
! style="background:#4472C4; color:white;" | গেটের ধরন
! style="background:#4472C4; color:white;" | সংখ্যা
! style="background:#4472C4; color:white;" | প্রতিটির ইনপুট
! style="background:#ED7D31; color:white;" | কাজ
|-
| অ্যান্ড গেট (প্রথম দল) || ৪টি || <math>Load</math>, <math>Data_i</math> || <math>Load \cdot Data_i</math> তৈরি করে
|-
| নট গেট || ১টি || <math>Load</math> || <math>\overline{Load}</math> তৈরি করে
|-
| অ্যান্ড গেট (দ্বিতীয় দল) || ৪টি || <math>\overline{Load}</math>, <math>Q_i</math> || <math>\overline{Load} \cdot Q_i</math> তৈরি করে
|-
| অর গেট || ৪টি || দুটি অ্যান্ড গেটের আউটপুট || <math>D_i</math> তৈরি করে
|-
| ডি ফ্লিপ-ফ্লপ || ৪টি || <math>D_i</math>, ঘড়ি || বিট সংরক্ষণ করে
|}
মোট গেট: ১টি নট গেট, ৮টি অ্যান্ড গেট, ৪টি অর গেট এবং ৪টি ডি ফ্লিপ-ফ্লপ।
লক্ষ করো নট গেট মাত্র একটি। কারণ <math>\overline{Load}</math> একবার তৈরি হলে চারটি ফ্লিপ-ফ্লপে একই সংকেত দেওয়া যায়। এটি সার্কিট সহজ রাখে।
==== মাল্টিপ্লেক্সার দিয়ে বিকল্প বাস্তবায়ন ====
লোড সক্রিয়করণ সহ রেজিস্টার আসলে প্রতিটি বিটে একটি ২-থেকে-১ মাল্টিপ্লেক্সার ব্যবহার করে। এই মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়।
* পথ ১ (লোড = <math>\text{১}</math>): নতুন ডেটা ফ্লিপ-ফ্লপে যায়
* পথ ২ (লোড = <math>\text{০}</math>): ফ্লিপ-ফ্লপের আউটপুট আবার ফ্লিপ-ফ্লপের ইনপুটে ফেরত যায়
এই ফেরত যাওয়ার পথকে প্রতিক্রিয়া পথ বলে। এই পথের কারণে ফ্লিপ-ফ্লপ তার নিজের মান বারবার নিজেকেই ফিরিয়ে দেয়, ফলে মান অপরিবর্তিত থাকে।
=== ক্লিয়ার অপারেশন ===
রেজিস্টারের সব বিট শূন্য করার প্রয়োজন হয় অনেক ক্ষেত্রে। কম্পিউটার চালু হওয়ার সময়, নতুন হিসাব শুরু করার আগে বা কোনো ত্রুটি পুনরুদ্ধারের সময় রেজিস্টার পরিষ্কার করতে হয়।
==== তুলনা ====
পরিষ্কার অপারেশন দুটি পদ্ধতিতে করা যায়।
'''ঘড়ি-নির্ভর পরিষ্কার:''' একটি নিয়ন্ত্রণ সংকেত দিয়ে ফ্লিপ-ফ্লপের ডি ইনপুটকে শূন্য করা হয় এবং পরের ঘড়ির পালসে শূন্য লোড হয়। এই পদ্ধতি নিরাপদ কারণ ঘড়ির সাথে তাল মিলিয়ে কাজ হয়।
এই পদ্ধতিতে:
:<math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i \cdot \overline{Clear}</math>
যখন <math>Clear = \text{১}</math> এবং <math>Load = \text{০}</math>:
:<math>D_i = \text{০} + Q_i \cdot \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে সব ফ্লিপ-ফ্লপ শূন্য হয়।
'''ঘড়ি-স্বাধীন পরিষ্কার:''' ফ্লিপ-ফ্লপের ক্লিয়ার পিন সরাসরি ব্যবহার করা হয়। ঘড়ির পালসের জন্য অপেক্ষা করতে হয় না। এটি দ্রুত কিন্তু ঘড়ির সাথে তাল মেলায় না।
আধুনিক ডিজিটাল সিস্টেমে ঘড়ি-নির্ভর পরিষ্কার পছন্দ করা হয় কারণ এতে সার্কিটের আচরণ আরও অনুমানযোগ্য থাকে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দুটি পরিষ্কার পদ্ধতির তুলনা
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ঘড়ি-নির্ভর পরিষ্কার
! style="background:#C00000; color:white;" | ঘড়ি-স্বাধীন পরিষ্কার
|-
| কখন কার্যকর হয় || পরের ঘড়ির পালসে || তাৎক্ষণিক
|-
| ঘড়ির সাথে তাল || হ্যাঁ || না
|-
| ব্যবহারের সুবিধা || নিরাপদ, অনুমানযোগ্য || দ্রুত
|-
| পিন || নিয়ন্ত্রণ ইনপুট || ফ্লিপ-ফ্লপের ক্লিয়ার পিন
|-
| আধুনিক সিস্টেমে পছন্দ || বেশি পছন্দনীয় || কম পছন্দনীয়
|}
=== ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি ===
একটি পূর্ণাঙ্গ ৪-বিট রেজিস্টারে তিনটি অপারেশন হতে পারে: লোড, ধারণ এবং পরিষ্কার।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#70AD47; color:white;" | কিউ আউটপুট
! style="background:#ED7D31; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>\text{১}</math> || <math>X</math> || <math>\uparrow</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার || সব বিট শূন্য হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>X</math> || আগের কিউ || ধারণ || মান অপরিবর্তিত
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড || নতুন মান লোড হয়
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || লোড || শূন্য লোড হয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|-
| <math>\text{০}</math> || <math>\text{১}</math> || স্তর || <math>X</math> || আগের কিউ || ধারণ || ঘড়ি প্রান্ত নেই
|}
এই সারণি থেকে গুরুত্বপূর্ণ বিষয়:
* পরিষ্কার সংকেত সবচেয়ে বেশি অগ্রাধিকার পায়
* ঘড়ির প্রান্ত ছাড়া কিছুই বদলায় না (ঘড়ি-স্বাধীন পরিষ্কার ছাড়া)
* লোড = <math>\text{০}</math> হলে ঘড়ির পালস আসলেও মান বদলায় না
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: পরপর তিনটি অপারেশন ====
একটি ৪-বিট রেজিস্টার শুরুতে অজানা অবস্থায় আছে। নিচের ক্রমে অপারেশন করা হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | পরিষ্কার
! style="background:#4472C4; color:white;" | লোড
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | কিউ (পরে)
! style="background:#ED7D31; color:white;" | কী হলো
|-
| শুরু || - || - || - || অজানা || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>X</math> || <math>X</math> || <math>\text{০০০০}</math> || পরিষ্কার হলো
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১১০১}</math> || <math>\text{১১০১}</math> || ১১০১ লোড হলো
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{১১০১}</math> || মান ধরে রইল, ইনপুট উপেক্ষিত
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১১১১}</math> || <math>\text{১১০১}</math> || এখনও ধরে রইল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১০}</math> || ০১১০ লোড হলো
|}
ধাপ ৩ ও ৪-এ লক্ষ করো, ইনপুটে যাই থাকুক লোড = <math>\text{০}</math> থাকায় রেজিস্টারের মান বদলায়নি। এটাই ধারণ অপারেশন।
==== উদাহরণ ২: লোড সক্রিয়করণ রাশি যাচাই ====
রেজিস্টারে <math>Q = \text{১১০০}</math> আছে। লোড = <math>\text{০}</math> এবং ডেটা = <math>\text{১০১০}</math> দিলে প্রতিটি বিটের ডি ইনপুট হিসাব করো।
বিট ৩-এর জন্য:
:<math>D_3 = Load \cdot Data_3 + \overline{Load} \cdot Q_3 = \text{০} \cdot \text{১} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{০} \cdot \text{০} + \text{১} \cdot \text{১} = \text{০} + \text{১} = \text{১}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{০} \cdot \text{১} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{০} \cdot \text{০} + \text{১} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = D_3D_2D_1D_0 = \text{১১০০}</math>।
রেজিস্টারের মান অপরিবর্তিত রইল কারণ ডি ইনপুটে আগের কিউ-এর মানই গেল।
==== উদাহরণ ৩: লোড সংকেত = <math>\text{১}</math> দিয়ে মান পরিবর্তন ====
একই রেজিস্টারে <math>Q = \text{১১০০}</math>। এবার লোড = <math>\text{১}</math> এবং ডেটা = <math>\text{১০১০}</math>।
বিট ৩-এর জন্য:
:<math>D_3 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>
বিট ২-এর জন্য:
:<math>D_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০} + \text{০} = \text{০}</math>
বিট ১-এর জন্য:
:<math>D_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১} + \text{০} = \text{১}</math>
বিট ০-এর জন্য:
:<math>D_0 = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০} + \text{০} = \text{০}</math>
তাই পরের ঘড়ির পালসে: <math>Q = \text{১০১০}</math>।
নতুন ডেটা <math>\text{১০১০}</math> লোড হয়েছে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ উদাহরণ ২ ও ৩-এর পাশাপাশি তুলনা
! style="background:#4472C4; color:white;" | বিট
! style="background:#4472C4; color:white;" | আগের কিউ
! style="background:#4472C4; color:white;" | ডেটা ইনপুট
! style="background:#C00000; color:white;" | লোড=০, নতুন কিউ
! style="background:#70AD47; color:white;" | লোড=১, নতুন কিউ
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| style="background:#f2f2f2;" colspan="2" | ফলাফল || style="background:#f2f2f2;" | || style="background:#f2f2f2;" | <math>\text{১১০০}</math> (অপরিবর্তিত) || style="background:#f2f2f2;" | <math>\text{১০১০}</math> (নতুন)
|}
=== বাস্তব প্রয়োগ ===
==== প্রসেসর রেজিস্টার ====
কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ অংশে অনেকগুলো রেজিস্টার থাকে। এগুলো সব সমান্তরাল লোড রেজিস্টার। গাণিতিক লজিক ইউনিট যখন দুটি সংখ্যা যোগ করে, ফলাফল একটি রেজিস্টারে লোড হয়। পরের নির্দেশ না আসা পর্যন্ত সেই মান ধরে রাখে।
==== বাস ব্যবস্থা ====
কম্পিউটারে বিভিন্ন অংশের মধ্যে ডেটা বাস দিয়ে চলাচল করে। বাস একটি ভাগ করা পথ, তাই একবারে শুধু একটি অংশ ডেটা পাঠাতে পারে। লোড সক্রিয়করণ সংকেত ঠিক করে কোন রেজিস্টার বাস থেকে ডেটা নেবে। এতে একাধিক রেজিস্টার একই বাসে সংযুক্ত থাকলেও শুধু নির্দিষ্ট রেজিস্টারে ডেটা লোড হয়।
==== ডেটা ধারণ ====
ডিজিটাল নিয়ন্ত্রণ ব্যবস্থায় একটি পরিমাপ নিয়ে কিছুক্ষণ ধরে রাখার দরকার হয়। যেমন তাপমাত্রা পরিমাপ করে রেখে পরে তুলনা করা। সমান্তরাল লোড রেজিস্টারের ধারণ অপারেশন এই কাজ করে।
=== অনুশীলনী ===
# একটি ৪-বিট সমান্তরাল রেজিস্টারে <math>Q = \text{১০১০}</math> আছে। লোড = <math>\text{০}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# লোড সক্রিয়করণ সহ রেজিস্টারে প্রতিটি বিটের ডি ইনপুটের বুলিয়ান রাশি লেখো।
# একটি ৪-বিট রেজিস্টারে <math>Q = \text{০১১১}</math> আছে। লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০০১}</math> দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
# নিচের ধাপগুলোর পর রেজিস্টারের মান কী হবে?
** শুরু: <math>Q = \text{১১১১}</math>
** ধাপ ১: পরিষ্কার সক্রিয়, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{১}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: লোড = <math>\text{০}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
# লোড সক্রিয়করণ সহ রেজিস্টারে <math>Q = \text{১১০০}</math> এবং লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১০০}</math> দিলে বিট ২-এর ডি ইনপুট হিসাব করো।
# ঘড়ি-নির্ভর এবং ঘড়ি-স্বাধীন পরিষ্কারের মধ্যে দুটি পার্থক্য লেখো।
# লোড সক্রিয়করণ ছাড়া সরল রেজিস্টারে সমস্যা কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-বিট রেজিস্টারে প্রাথমিকভাবে <math>Q = \text{০০০০}</math>। নিচের ক্রমে অপারেশন করলে প্রতিটি ধাপে কিউ কী হবে?
** ধাপ ১: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১০১০}</math>, ঘড়ির পালস
** ধাপ ২: লোড = <math>\text{০}</math>, ডেটা = <math>\text{০১০১}</math>, ঘড়ির পালস
** ধাপ ৩: পরিষ্কার, ঘড়ির পালস
** ধাপ ৪: লোড = <math>\text{১}</math>, ডেটা = <math>\text{১১১১}</math>, ঘড়ির পালস
'''উত্তর:'''
# <math>Q = \text{১০১০}</math> অপরিবর্তিত থাকবে কারণ লোড = <math>\text{০}</math> মানে ধারণ অপারেশন
# <math>D_i = Load \cdot Data_i + \overline{Load} \cdot Q_i</math>
# <math>Q = \text{১০০১}</math>; লোড = <math>\text{১}</math> হওয়ায় নতুন ডেটা সরাসরি লোড হয়েছে
# ধাপ ১ পরে: <math>\text{০০০০}</math>; ধাপ ২ পরে: <math>\text{০১০১}</math>; ধাপ ৩ পরে: <math>\text{০১০১}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে)
# বিট ২ এর জন্য: <math>D_2 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১} + \text{০} = \text{১}</math>; তাই <math>Q_2</math> পালসের পরে <math>\text{১}</math> হবে
# পার্থক্য ১: ঘড়ি-নির্ভর পরিষ্কার পরের ঘড়ির পালসে কার্যকর হয়, ঘড়ি-স্বাধীন পরিষ্কার তাৎক্ষণিক কার্যকর হয়। পার্থক্য ২: ঘড়ি-নির্ভর পরিষ্কার ঘড়ির সাথে তাল মেলায় তাই আধুনিক সিস্টেমে বেশি পছন্দনীয়, ঘড়ি-স্বাধীন পরিষ্কার ঘড়ির সাথে তাল মেলায় না তাই কম ব্যবহৃত হয়
# সমস্যা হলো প্রতিটি ঘড়ির পালসে ইনপুটের মান রেজিস্টারে ঢুকে যায়, চাই বা না চাই। বাস্তব উদাহরণ: কম্পিউটারে যদি রেজিস্টারের লোড সক্রিয়করণ না থাকে, তাহলে বাসে অন্য ডিভাইসের ডেটা থাকলেও সেই ডেটা রেজিস্টারে ঢুকে আগের মান নষ্ট হয়ে যাবে
# ধাপ ১ পরে: <math>Q = \text{১০১০}</math>; ধাপ ২ পরে: <math>Q = \text{১০১০}</math> (লোড = <math>\text{০}</math> তাই মান ধরে রেখেছে); ধাপ ৩ পরে: <math>Q = \text{০০০০}</math>; ধাপ ৪ পরে: <math>Q = \text{১১১১}</math>
== দ্বিমুখী শিফট রেজিস্টার ও সার্বজনীন রেজিস্টার ==
আগের ভাগে আমরা দেখেছিলাম শিফট রেজিস্টার কীভাবে বিট একদিকে সরায়। কিন্তু শুধু একদিকে সরাতে পারলে কাজের অনেক সীমাবদ্ধতা থাকে। এই ভাগে আমরা দেখব কীভাবে দুই দিকেই শিফট করা যায় এবং কীভাবে একটিমাত্র রেজিস্টার দিয়ে চারটি আলাদা কাজ করা যায়।
=== দ্বিমুখী শিফট: দুই দিকের এস্কালেটর ===
বিমানবন্দরে এমন এস্কালেটর থাকে যা দুই দিকেই চলতে পারে। সকালে যাত্রীরা আসে তখন এস্কালেটর একদিকে চলে, বিকেলে সবাই ফেরে তখন অন্যদিকে চলে। একটি বোতাম টিপলেই দিক বদলে যায়।
দ্বিমুখী শিফট রেজিস্টার ঠিক এই এস্কালেটরের মতো। একটি নিয়ন্ত্রণ সংকেত দিয়ে বিটগুলো ডানে বা বামে সরানো যায়। নিয়ন্ত্রণ সংকেত <math>S = \text{১}</math> হলে ডানে, <math>S = \text{০}</math> হলে বামে।
কেন দুই দিকে শিফট দরকার? ভাবো একটি সংখ্যাকে দুই দিয়ে গুণ করতে বাইনারিতে বামে এক শিফট করলেই হয়। দুই দিয়ে ভাগ করতে ডানে এক শিফট করলেই হয়। তাই দ্বিমুখী শিফট রেজিস্টার দিয়ে দ্রুত গুণ ও ভাগ করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ শিফটের গাণিতিক অর্থ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | শিফটের দিক
! style="background:#4472C4; color:white;" | উদাহরণ
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| দুই দিয়ে গুণ || বামে এক শিফট || <math>\text{০০১১}</math> → <math>\text{০১১০}</math> || ৩ × ২ = ৬
|-
| দুই দিয়ে ভাগ || ডানে এক শিফট || <math>\text{১১০০}</math> → <math>\text{০১১০}</math> || ১২ ÷ ২ = ৬
|-
| চার দিয়ে গুণ || বামে দুই শিফট || <math>\text{০০০১}</math> → <math>\text{০১০০}</math> || ১ × ৪ = ৪
|-
| চার দিয়ে ভাগ || ডানে দুই শিফট || <math>\text{১০০০}</math> → <math>\text{০০১০}</math> || ৮ ÷ ৪ = ২
|}
=== দ্বিমুখী শিফট রেজিস্টারের গঠন ===
একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে চারটি ডি ফ্লিপ-ফ্লপ থাকে। পার্থক্য হলো প্রতিটি ফ্লিপ-ফ্লপের আগে একটি মাল্টিপ্লেক্সার থাকে।
মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়:
* ডানে শিফটের পথ: বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* বামে শিফটের পথ: ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
নিয়ন্ত্রণ সংকেত <math>S</math> মাল্টিপ্লেক্সারকে বলে কোন পথ বেছে নিতে।
==== বুলিয়ান রাশি ====
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটের রাশি:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এখানে:
* <math>Q_{i-1}</math> মানে বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
* <math>Q_{i+1}</math> মানে ডান পাশের ফ্লিপ-ফ্লপের আউটপুট
যখন <math>S = \text{১}</math> (ডানে শিফট):
:<math>D_i = \text{১} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} = Q_{i-1}</math>
প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়, ফলে সব বিট ডানে সরে।
যখন <math>S = \text{০}</math> (বামে শিফট):
:<math>D_i = \text{০} \cdot Q_{i-1} + \text{১} \cdot Q_{i+1} = Q_{i+1}</math>
প্রতিটি ফ্লিপ-ফ্লপ ডান পাশের মান নেয়, ফলে সব বিট বামে সরে।
==== প্রান্তের ফ্লিপ-ফ্লপের বিশেষ ব্যবস্থা ====
সবচেয়ে বাম ফ্লিপ-ফ্লপ (<math>FF_3</math>) এর বাম পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই ডানে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে ডানমুখী ধারাবাহিক ইনপুট বলে।
সবচেয়ে ডান ফ্লিপ-ফ্লপ (<math>FF_0</math>) এর ডান পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই বামে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে বামমুখী ধারাবাহিক ইনপুট বলে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ দ্বিমুখী শিফট রেজিস্টারের ইনপুট-আউটপুট
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | ব্যাখ্যা
|-
| <math>S</math> || নিয়ন্ত্রণ ইনপুট || <math>\text{১}</math> = ডানে, <math>\text{০}</math> = বামে
|-
| ডানমুখী ধারাবাহিক ইনপুট (<math>SI_R</math>) || ইনপুট || ডানে শিফটের সময় বাম প্রান্তে যে বিট ঢোকে
|-
| বামমুখী ধারাবাহিক ইনপুট (<math>SI_L</math>) || ইনপুট || বামে শিফটের সময় ডান প্রান্তে যে বিট ঢোকে
|-
| <math>Q_3, Q_2, Q_1, Q_0</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| ঘড়ি || ইনপুট || সব ফ্লিপ-ফ্লপে একই ঘড়ি
|}
==== সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বিমুখী শিফট রেজিস্টারের সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | আগের অবস্থা
! style="background:#70AD47; color:white;" | পরের অবস্থা
! style="background:#ED7D31; color:white;" | অপারেশন
|-
| <math>\text{১}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>SI_R \cdot Q_3Q_2Q_1</math> || ডানে শিফট, <math>SI_R</math> বাম প্রান্তে ঢোকে
|-
| <math>\text{০}</math> || <math>\uparrow</math> || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_2Q_1Q_0 \cdot SI_L</math> || বামে শিফট, <math>SI_L</math> ডান প্রান্তে ঢোকে
|-
| <math>X</math> || স্তর || <math>Q_3Q_2Q_1Q_0</math> || <math>Q_3Q_2Q_1Q_0</math> || ধারণ, কিছু বদলায় না
|}
==== উদাহরণ: ডানে ও বামে শিফট ====
ধরো রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>SI_R = \text{০}</math> এবং <math>SI_L = \text{১}</math>।
ডানে শিফট (<math>S = \text{১}</math>), তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_R</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
এখন বামে শিফট (<math>S = \text{০}</math>), শুরু থেকে তিনটি পালস:
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>Q_3</math>
! style="background:#4472C4; color:white;" | <math>Q_2</math>
! style="background:#4472C4; color:white;" | <math>Q_1</math>
! style="background:#4472C4; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | <math>SI_L</math>
|-
| শুরু || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
লক্ষ করো বামে শিফটে ডান প্রান্ত থেকে <math>SI_L = \text{১}</math> ঢুকছে, তাই ডান দিকের বিটগুলো একে একে <math>\text{১}</math> হয়ে যাচ্ছে।
=== সার্বজনীন রেজিস্টার ===
==== সার্বজনীন মানে কী? ====
একটি সুইস আর্মি ছুরির কথা ভাবো। এতে একসাথে ছুরি, কাঁচি, স্ক্রু ড্রাইভার, করাত সব আছে। একটি যন্ত্র দিয়ে অনেক কাজ হয়। একটি বোতাম বা লিভার দিয়ে সঠিক যন্ত্র বের করা যায়।
সার্বজনীন রেজিস্টার ঠিক এই সুইস আর্মি ছুরির মতো। দুটি মোড নির্বাচন বিট <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি আলাদা অপারেশন করা যায়।
==== মোড নির্বাচন সারণি ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ সার্বজনীন রেজিস্টারের মোড সারণি
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#70AD47; color:white;" | অপারেশন
! style="background:#ED7D31; color:white;" | বিস্তারিত
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || রেজিস্টারের মান অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || বিট ডানে সরে, বাম প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || বিট বামে সরে, ডান প্রান্তে ধারাবাহিক ইনপুট ঢোকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || চার বিট একসাথে লোড হয়
|}
==== চারটি মোডের বুলিয়ান রাশি ====
সার্বজনীন রেজিস্টারে প্রতিটি ফ্লিপ-ফ্লপের আগে একটি ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে। মাল্টিপ্লেক্সার <math>S_1</math> ও <math>S_0</math> দিয়ে চারটি পথের একটি বেছে নেয়।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1S_0 \cdot Data_i</math>
এই রাশিটি ভেঙে বোঝা যাক:
* <math>S_1S_0 = \text{০০}</math>: <math>D_i = Q_i</math>, নিজের মান নিজেই ফেরত পায়, ধারণ
* <math>S_1S_0 = \text{০১}</math>: <math>D_i = Q_{i-1}</math>, বাম পাশের মান নেয়, ডানে শিফট
* <math>S_1S_0 = \text{১০}</math>: <math>D_i = Q_{i+1}</math>, ডান পাশের মান নেয়, বামে শিফট
* <math>S_1S_0 = \text{১১}</math>: <math>D_i = Data_i</math>, নতুন ডেটা লোড হয়
==== মোড ০০: ধারণ ====
এই মোডে রেজিস্টার একটি তথ্য আঁকড়ে ধরে রাখে। বাইরে যাই হোক না কেন, ভেতরের মান নিরাপদ।
প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট সেই ফ্লিপ-ফ্লপের আউটপুটই পায়। তাই পরের ঘড়ির পালসেও মান বদলায় না।
==== মোড ০১: ডানে শিফট ====
ট্রেনের কামরার মতো ভাবো। একটি কামরা সরে গেলে পরের কামরা সেই জায়গায় আসে। ডানে শিফটে প্রতিটি বিট ডান পাশের ফ্লিপ-ফ্লপে চলে যায়। বাম প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১০: বামে শিফট ====
বিপরীতভাবে প্রতিটি বিট বাম পাশের ফ্লিপ-ফ্লপে চলে যায়। ডান প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।
==== মোড ১১: সমান্তরাল লোড ====
এই মোড আগের ভাগে দেখা সমান্তরাল লোড রেজিস্টারের মতো। চারটি বিট একসাথে রেজিস্টারে ঢোকে।
==== সম্পূর্ণ সত্যক সারণী ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_2</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_1</math> (পরে)
! style="background:#70AD47; color:white;" | <math>Q_0</math> (পরে)
! style="background:#ED7D31; color:white;" | মোড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>SI_R</math> || <math>SI_R</math> || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || ডানে শিফট
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || <math>SI_L</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || <math>SI_L</math> || বামে শিফট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || <math>D_3D_2D_1D_0</math> || <math>D_3</math> || <math>D_2</math> || <math>D_1</math> || <math>D_0</math> || সমান্তরাল লোড
|-
| <math>X</math> || <math>X</math> || স্তর || যেকোনো || <math>Q_3</math> || <math>Q_2</math> || <math>Q_1</math> || <math>Q_0</math> || ধারণ (ঘড়ি প্রান্ত নেই)
|}
==== সার্বজনীন রেজিস্টারের উপমা ====
একটি চার লেনের রাস্তার কথা ভাবো। রাস্তার একটি কেন্দ্রীয় নিয়ন্ত্রণ কক্ষ আছে। সেখান থেকে দুটি সুইচ দিয়ে রাস্তার আচরণ বদলানো যায়।
* সুইচ ০০: সব গাড়ি থামো, যে যেখানে আছ
* সুইচ ০১: সব গাড়ি এক লেন ডানে সরো
* সুইচ ১০: সব গাড়ি এক লেন বামে সরো
* সুইচ ১১: নতুন গাড়ি সব লেনে একসাথে প্রবেশ করো
সার্বজনীন রেজিস্টারের <math>S_1</math> ও <math>S_0</math> সেই দুটি সুইচের মতো।
=== ৭৪১৯৪ চিপের পরিচয় ===
বাস্তব জীবনে সার্বজনীন রেজিস্টার হিসেবে ৭৪১৯৪ চিপ সবচেয়ে পরিচিত। এটি একটি ৪-বিট দ্বিমুখী সার্বজনীন শিফট রেজিস্টার।
==== পিন বিন্যাস ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৭৪১৯৪ চিপের পিন বিবরণ
! style="background:#4472C4; color:white;" | পিনের নাম
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | বিবরণ
|-
| <math>A, B, C, D</math> || সমান্তরাল ডেটা ইনপুট || চারটি বিট একসাথে লোড করার ইনপুট
|-
| <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || চারটি ফ্লিপ-ফ্লপের আউটপুট
|-
| <math>S_0, S_1</math> || মোড নির্বাচন || দুটি নিয়ন্ত্রণ বিট
|-
| <math>SR</math> (ডানমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || ডানে শিফটের সময় বাম প্রান্তে ঢোকে
|-
| <math>SL</math> (বামমুখী ধারাবাহিক ইনপুট) || ধারাবাহিক ইনপুট || বামে শিফটের সময় ডান প্রান্তে ঢোকে
|-
| <math>CLK</math> || ঘড়ি || উর্ধ্বমুখী প্রান্ত-ট্রিগার
|-
| <math>\overline{CLR}</math> || ক্লিয়ার || সক্রিয়-নিম্ন, তাৎক্ষণিক পরিষ্কার
|-
| <math>V_{CC}</math> || বিদ্যুৎ || <math>+\text{৫V}</math>
|-
| <math>GND</math> || ভূমি || <math>\text{০V}</math>
|}
==== ৭৪১৯৪ চিপের কার্যক্রম ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ এর কার্যক্রম সারণি
! style="background:#C00000; color:white;" | <math>\overline{CLR}</math>
! style="background:#4472C4; color:white;" | <math>S_1</math>
! style="background:#4472C4; color:white;" | <math>S_0</math>
! style="background:#4472C4; color:white;" | ঘড়ি
! style="background:#70AD47; color:white;" | অপারেশন
|-
| <math>\text{০}</math> || <math>X</math> || <math>X</math> || <math>X</math> || তাৎক্ষণিক পরিষ্কার, সব আউটপুট <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\uparrow</math> || ধারণ
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\uparrow</math> || ডানে শিফট, <math>SR</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\uparrow</math> || বামে শিফট, <math>SL</math> থেকে ইনপুট
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\uparrow</math> || সমান্তরাল লোড
|}
লক্ষ করো ৭৪১৯৪-তে <math>S_0</math> ও <math>S_1</math>-এর সংজ্ঞা আগের সারণির বিপরীত দিক থেকে আসা। চিপের ডেটাশিট দেখে নিশ্চিত হওয়া ভালো।
==== বাস্তব প্রয়োগে ৭৪১৯৪ ====
'''ধারাবাহিক থেকে সমান্তরাল রূপান্তর:''' ধারাবাহিকভাবে আসা ডেটা শিফট করে রেজিস্টারে জমা হয়, তারপর সমান্তরালভাবে বের হয়। যোগাযোগ ব্যবস্থায় এই প্রক্রিয়া সাধারণ।
'''সমান্তরাল থেকে ধারাবাহিক রূপান্তর:''' সমান্তরালভাবে ডেটা লোড করে শিফট করে ধারাবাহিকভাবে বের করা হয়।
'''বৃত্তাকার রেজিস্টার:''' আউটপুটকে আবার ইনপুটে দিলে বিট বৃত্তাকারে ঘোরে। কখনো একই প্যাটার্ন বারবার তৈরি করতে এটি ব্যবহার হয়।
'''ক্রমিক গণনাকারী:''' বিশেষভাবে সংযুক্ত করলে ৭৪১৯৪ একটি জনসন গণনাকারী বা রিপল গণনাকারী তৈরি করতে পারে।
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ধারণ মোড (মোড ০০) ====
রেজিস্টারে <math>\text{১০১১}</math> আছে। <math>S_1S_0 = \text{০০}</math> দিয়ে তিনটি ঘড়ির পালস দেওয়া হলো।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ধারণ মোডের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১০১১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ২ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|-
| ৩ || <math>\text{০০}</math> || <math>\text{১০১১}</math> || অপরিবর্তিত
|}
ঘড়ি পালস দেওয়া হচ্ছে কিন্তু মোড ০০ থাকায় রেজিস্টারের মান বদলাচ্ছে না। এটাই ধারণ মোডের কাজ।
==== উদাহরণ ২: ডানে শিফট মোড (মোড ০১) ====
রেজিস্টারে <math>\text{১১০০}</math> আছে। <math>S_1S_0 = \text{০১}</math>, ধারাবাহিক ইনপুট <math>SI_R = \text{১}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ডানে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রাথমিক
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>SI_R</math> বামে ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এবার <math>\text{০}</math> ঢুকল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার <math>\text{০}</math>
|}
প্রতিটি পালসে বিট ডানে এক ঘর সরছে। বাম প্রান্ত থেকে <math>SI_R</math>-এর মান ঢুকছে। ডান প্রান্তের বিট বেরিয়ে যাচ্ছে।
==== উদাহরণ ৩: বামে শিফট মোড (মোড ১০) ====
রেজিস্টারে <math>\text{০০১১}</math> আছে। <math>S_1S_0 = \text{১০}</math>, ধারাবাহিক ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফটের ক্রম
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>SI_L</math>
! style="background:#70AD47; color:white;" | <math>Q_3</math>
! style="background:#70AD47; color:white;" | <math>Q_2</math>
! style="background:#70AD47; color:white;" | <math>Q_1</math>
! style="background:#70AD47; color:white;" | <math>Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রাথমিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || বামে গেল, ডানে <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার বামে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সব বিট বেরিয়ে গেল
|}
<math>\text{০০১১}</math> কে বামে চার বার শিফট করলে সব বিট বেরিয়ে যায় এবং <math>SI_L = \text{০}</math> থেকে শূন্য ঢোকায় রেজিস্টার শূন্য হয়ে যায়। এটি দুই দিয়ে বারবার গুণ করার মতো।
==== উদাহরণ ৪: সমান্তরাল লোড (মোড ১১) ====
রেজিস্টারে <math>\text{০০০০}</math> আছে। <math>S_1S_0 = \text{১১}</math>, ডেটা ইনপুট = <math>\text{১০১০}</math>।
একটি ঘড়ির পালসে:
:<math>Q_3 = D_3 = \text{১}</math>
:<math>Q_2 = D_2 = \text{০}</math>
:<math>Q_1 = D_1 = \text{১}</math>
:<math>Q_0 = D_0 = \text{০}</math>
রেজিস্টারে এখন <math>\text{১০১০}</math>। মাত্র একটি পালসে চারটি বিট একসাথে লোড হয়েছে।
==== উদাহরণ ৫: মোড পরিবর্তন করে ধারাবাহিক থেকে সমান্তরাল ====
ধরো ধারাবাহিকভাবে <math>\text{১, ১, ০, ১}</math> বিট আসছে। আমরা এগুলো শিফট রেজিস্টারে জমিয়ে সমান্তরালভাবে পড়তে চাই।
প্রথমে মোড ০১ (ডানে শিফট) দিয়ে চারটি পালস:
{| class="wikitable" style="text-align:center; width:90%;"
|+ ধারাবাহিক থেকে সমান্তরাল রূপান্তর
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | <math>SI_R</math>
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || <math>\text{০০০০}</math> || খালি রেজিস্টার
|-
| ১ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০০০}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১১০০}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০১}</math> || <math>\text{০}</math> || <math>\text{০১১০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{০১}</math> || <math>\text{১}</math> || <math>\text{১০১১}</math> || চতুর্থ বিট ঢুকল
|-
| ৫ || <math>\text{০০}</math> || - || <math>\text{১০১১}</math> || মোড ০০, সমান্তরাল পড়া
|}
চার পালস পর রেজিস্টারে <math>\text{১০১১}</math> আছে। এখন মোড ০০-এ গিয়ে সমান্তরালভাবে চারটি বিট একসাথে পড়া যাবে।
=== সার্বজনীন রেজিস্টারের সুবিধা ও সীমাবদ্ধতা ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ সার্বজনীন রেজিস্টারের তুলনামূলক বিশ্লেষণ
! style="background:#4472C4; color:white;" | দিক
! style="background:#70AD47; color:white;" | সুবিধা
! style="background:#C00000; color:white;" | সীমাবদ্ধতা
|-
| কার্যকারিতা || চারটি মোড, একটি চিপে সব || সরল রেজিস্টারের চেয়ে জটিল
|-
| নমনীয়তা || প্রয়োজনমতো মোড বদলানো যায় || দুটি অতিরিক্ত নিয়ন্ত্রণ সংকেত দরকার
|-
| খরচ || একটি চিপে সব কাজ, খরচ কম || অতিরিক্ত মাল্টিপ্লেক্সার গেট লাগে
|-
| গতি || ঘড়ির একটি পালসে মোড বদলানো যায় || সমান্তরাল লোড একটি পালস নেয়
|-
| জায়গা || একটি চিপ, কম জায়গা || সরল রেজিস্টারের চেয়ে বেশি ট্রানজিস্টর
|}
=== অনুশীলনী ===
# একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে <math>\text{১০১০}</math> আছে। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> দিয়ে দুটি পালস দিলে রেজিস্টারে কী থাকবে?
# একই রেজিস্টারে <math>\text{১০১০}</math> আছে। এবার <math>S = \text{০}</math> এবং <math>SI_L = \text{১}</math> দিয়ে দুটি পালস দিলে কী হবে?
# দ্বিমুখী শিফট রেজিস্টারে বিট ডানে শিফট হলে কোন পাশ থেকে নতুন বিট ঢোকে?
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> মানে কোন মোড? এই মোডে <math>D_i</math>-এর রাশি কী?
# একটি সার্বজনীন রেজিস্টারে <math>\text{০০০০}</math> আছে। নিচের ধাপে কী হবে?
** ধাপ ১: মোড <math>\text{১১}</math>, ডেটা = <math>\text{১১০১}</math>, একটি পালস
** ধাপ ২: মোড <math>\text{০১}</math>, <math>SI_R = \text{০}</math>, দুটি পালস
** ধাপ ৩: মোড <math>\text{০০}</math>, একটি পালস
# ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী হয় এবং এটি কোন ধরনের পরিষ্কার?
# বামে এক শিফট করলে একটি বাইনারি সংখ্যার কী গাণিতিক পরিবর্তন হয়? <math>\text{০০১১}</math> (দশমিকে ৩) এর উদাহরণ দিয়ে দেখাও।
# সার্বজনীন রেজিস্টারের প্রতিটি ফ্লিপ-ফ্লপের আগে কত ইনপুটের মাল্টিপ্লেক্সার থাকে এবং কেন?
# ধারাবাহিক থেকে সমান্তরাল রূপান্তরে কোন দুটি মোড ব্যবহার হয় এবং কেন?
# একটি সার্বজনীন রেজিস্টারে <math>\text{১১১১}</math> আছে। মোড ১০ (<math>SI_L = \text{০}</math>) দিয়ে চারটি পালস দিলে কী হবে এবং দশমিক মানের কী পরিবর্তন হলো?
'''উত্তর:'''
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{০০১০}</math>; ডানে দুই শিফট, বাম প্রান্তে <math>\text{০}</math> ঢুকেছে
# প্রথম পালসে: <math>\text{০১০১}</math>; দ্বিতীয় পালসে: <math>\text{১০১১}</math>; বামে দুই শিফট, ডান প্রান্তে <math>\text{১}</math> ঢুকেছে
# বাম পাশ থেকে ধারাবাহিক ইনপুট <math>SI_R</math> ঢোকে
# মোড ০১ মানে ডানে শিফট; <math>D_i = Q_{i-1}</math> অর্থাৎ প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়
# ধাপ ১ পরে: <math>\text{১১০১}</math>; ধাপ ২ এর প্রথম পালসে: <math>\text{০১১০}</math>; ধাপ ২ এর দ্বিতীয় পালসে: <math>\text{০০১১}</math>; ধাপ ৩ পরে: <math>\text{০০১১}</math> (অপরিবর্তিত)
# <math>\overline{CLR} = \text{০}</math> দিলে তাৎক্ষণিক সব আউটপুট <math>\text{০}</math> হয়ে যায়; এটি ঘড়ি-স্বাধীন পরিষ্কার
# বামে এক শিফট মানে সংখ্যা দুই দিয়ে গুণ হওয়া; <math>\text{০০১১}</math> (দশমিকে ৩) বামে এক শিফটে <math>\text{০১১০}</math> (দশমিকে ৬) হয়, যা ৩ × ২ = ৬
# ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে কারণ চারটি মোডে চারটি আলাদা পথ থেকে একটি বেছে নিতে হয়
# প্রথমে মোড ০১ (ডানে শিফট) দিয়ে ধারাবাহিক বিট ঢোকানো হয়; চারটি পালস পর সব বিট রেজিস্টারে জমা হলে মোড ০০ (ধারণ) এ গিয়ে সমান্তরালভাবে পড়া হয়
# পালস ১: <math>\text{০১১১}</math>; পালস ২: <math>\text{০০১১}</math>; পালস ৩: <math>\text{০০০১}</math>; পালস ৪: <math>\text{০০০০}</math>; দশমিক মান: ১৫ থেকে ৭ থেকে ৩ থেকে ১ থেকে ০, প্রতিটি পালসে দুই দিয়ে ভাগ হচ্ছে
আগের ভাগে আমরা দেখেছিলাম কীভাবে শিফট রেজিস্টার ডেটাকে একদিকে সরায়, ঠিক যেমন সারিতে দাঁড়ানো মানুষ একদিকে সরে যায়। কিন্তু বাস্তব জীবনে তো শুধু এক দিকে যাওয়া হয় না, কখনো কখনো পেছনেও ফিরতে হয়! এই ভাগে আমরা শিখব এমন রেজিস্টার যা দুই দিকেই সরতে পারে, এবং তার চেয়েও বেশি, এমন একটি রেজিস্টার যা চারটি কাজ করতে পারে।
=== দুই-দিকে চলা এস্কালেটরের উপমা ===
বিমানবন্দরে গিয়েছ কখনো? সেখানে এমন চলমান বেল্ট থাকে যেটা কখনো এক দিকে যাত্রীদের নিয়ে যায়, আবার নিয়ন্ত্রণকক্ষ থেকে নির্দেশ দিলে বিপরীত দিকেও চালানো যায়। একটি বোতাম টিপলে ডানে, আরেকটি বোতাম টিপলে বামে।
দ্বিমুখী শিফট রেজিস্টার ঠিক এইরকম। একটি নিয়ন্ত্রণ সংকেত <math>S</math> দিলে ডেটা ডানে সরে, আর <math>S</math> উলটো হলে বামে সরে। ভেতরের বিটগুলো হলো যাত্রী, এবং নিয়ন্ত্রণ সংকেতটি হলো বেল্টের দিক নির্ধারক বোতাম।
এবার ধরো, তোমার কাছে চারটি বিট আছে: <math>Q_3 Q_2 Q_1 Q_0 = 1011</math>।
* <math>S = \text{১}</math> হলে (ডানে শিফট): <math>0101</math> হয়ে যাবে।
* <math>S = \text{০}</math> হলে (বামে শিফট): <math>0110</math> হয়ে যাবে।
একই হার্ডওয়্যার, শুধু একটি সংকেতের পরিবর্তনে দুই ধরনের কাজ!
== দ্বিমুখী শিফট রেজিস্টারের গঠন ==
=== নিয়ন্ত্রণ সংকেত <math>S</math> ===
দ্বিমুখী শিফট রেজিস্টারে একটি বিশেষ নিয়ন্ত্রণ সংকেত <math>S</math> থাকে যা সিদ্ধান্ত নেয় ডেটা কোন দিকে যাবে।
{| class="wikitable" style="width:60%; text-align:center;"
|+ নিয়ন্ত্রণ সংকেত <math>S</math> এর ভূমিকা
! style="background:#2E4057; color:white;" | <math>S</math> এর মান !! style="background:#2E4057; color:white;" | কাজ !! style="background:#2E4057; color:white;" | উপমা
|-
| <math>\text{১}</math> || ডানে শিফট || বেল্ট ডানে চলছে
|-
| <math>\text{০}</math> || বামে শিফট || বেল্ট বামে চলছে
|}
মনে রাখার সহজ উপায়: <math>S = \text{১}</math> মানে "সরাসরি ডানে", <math>S = \text{০}</math> মানে "উলটো দিকে মানে বামে"।
=== বুলিয়ান রাশি ===
প্রতিটি ফ্লিপ-ফ্লপের ইনপুট <math>D_i</math> নির্ধারিত হয় এই রাশি দিয়ে:
:<math>D_i = S \cdot Q_{i-1} + \bar{S} \cdot Q_{i+1}</math>
এই রাশিটা একটু বিশ্লেষণ করি:
* <math>S \cdot Q_{i-1}</math>: যদি <math>S = \text{১}</math> হয়, তাহলে বামের প্রতিবেশী <math>Q_{i-1}</math> এর মান নিজের মধ্যে আসে, মানে ডানে শিফট।
* <math>\bar{S} \cdot Q_{i+1}</math>: যদি <math>S = \text{০}</math> হয়, তাহলে ডানের প্রতিবেশী <math>Q_{i+1}</math> এর মান নিজের মধ্যে আসে, মানে বামে শিফট।
এই দুই অংশ একটি মাক্সটিপ্লেক্সারের মতো কাজ করে: <math>S</math> এর মান দেখে সিদ্ধান্ত নেয় কোন প্রতিবেশীর মান নেবে।
{| class="wikitable" style="width:80%; text-align:center;"
|+ প্রতিটি বিটের ইনপুট কীভাবে নির্ধারিত হয়
! style="background:#1B4332; color:white;" | বিট !! style="background:#1B4332; color:white;" | <math>D_i</math> এর রাশি !! style="background:#1B4332; color:white;" | <math>S=\text{১}</math> (ডানে) !! style="background:#1B4332; color:white;" | <math>S=\text{০}</math> (বামে)
|-
| <math>D_3</math> (MSB) || <math>S \cdot SI_R + \bar{S} \cdot Q_2</math> || ডান সিরিয়াল ইনপুট || <math>Q_2</math> থেকে আসে
|-
| <math>D_2</math> || <math>S \cdot Q_3 + \bar{S} \cdot Q_1</math> || <math>Q_3</math> থেকে আসে || <math>Q_1</math> থেকে আসে
|-
| <math>D_1</math> || <math>S \cdot Q_2 + \bar{S} \cdot Q_0</math> || <math>Q_2</math> থেকে আসে || <math>Q_0</math> থেকে আসে
|-
| <math>D_0</math> (LSB) || <math>S \cdot Q_1 + \bar{S} \cdot SI_L</math> || <math>Q_1</math> থেকে আসে || বাম সিরিয়াল ইনপুট
|}
এখানে <math>SI_R</math> হলো ডানে শিফটের সময় সবচেয়ে বাম বিটে ঢোকানো নতুন বিট, আর <math>SI_L</math> হলো বামে শিফটের সময় সবচেয়ে ডান বিটে ঢোকানো নতুন বিট।
=== সার্কিট গঠন ===
চার-বিটের দ্বিমুখী শিফট রেজিস্টারে থাকে:
* চারটি ডি ফ্লিপ-ফ্লপ (<math>FF_3, FF_2, FF_1, FF_0</math>)
* প্রতিটি ফ্লিপ-ফ্লপের আগে একটি করে ২-থেকে-১ মাক্সটিপ্লেক্সার
* মাক্সটিপ্লেক্সারের নির্বাচন সংকেত হিসেবে <math>S</math>
প্রতিটি মাক্সটিপ্লেক্সার দুটি ইনপুট পায়: বাম প্রতিবেশীর আউটপুট ও ডান প্রতিবেশীর আউটপুট। <math>S</math> এর মান দেখে সে সিদ্ধান্ত নেয় কোনটা ফ্লিপ-ফ্লপে পাঠাবে।
=== সত্যক সারণী ও উদাহরণ ===
ধরো চার-বিট রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1101</math> এবং সিরিয়াল ইনপুট উভয় দিকেই <math>\text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ দ্বিমুখী শিফটের উদাহরণ
! style="background:#3D405B; color:white;" | ক্লক চক্র !! style="background:#3D405B; color:white;" | <math>S</math> !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | কাজ
|-
| শুরু || || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ডানে শিফট (MSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আবার ডানে শিফট
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || বামে শিফট (LSB তে <math>\text{০}</math> ঢুকেছে)
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার বামে শিফট
|}
দেখো, <math>S</math> পরিবর্তন করে দিকও পরিবর্তন হয়ে যাচ্ছে।
=== হাতে-কলমে হিসাব ===
চক্র ১ যাচাই করা যাক: <math>Q_3 Q_2 Q_1 Q_0 = 1101</math>, <math>S = \text{১}</math>, <math>SI_R = \text{০}</math>।
:<math>D_3 = S \cdot SI_R + \bar{S} \cdot Q_2 = \text{১} \cdot \text{০} + \text{০} \cdot \text{১} = \text{০}</math>
:<math>D_2 = S \cdot Q_3 + \bar{S} \cdot Q_1 = \text{১} \cdot \text{১} + \text{০} \cdot \text{০} = \text{১}</math>
:<math>D_1 = S \cdot Q_2 + \bar{S} \cdot Q_0 = \text{১} \cdot \text{১} + \text{০} \cdot \text{১} = \text{১}</math>
:<math>D_0 = S \cdot Q_1 + \bar{S} \cdot SI_L = \text{১} \cdot \text{০} + \text{০} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0110</math> ✓
== সার্বজনীন রেজিস্টার ==
=== মাক্সওয়েল রেজিস্টারের উপমা ===
কল্পনা করো একজন দক্ষ অফিস সহকারী যে চারটি কাজ করতে পারে: যখন তাকে বলো "স্থির থাকো" সে কিছু পরিবর্তন করে না। যখন বলো "ডানে সরো" সে ডানে যায়। যখন বলো "বামে সরো" সে বামে যায়। আর যখন বলো "সব একসাথে বদলাও" সে পুরো বিষয়টা নতুন করে সাজিয়ে নেয়।
সার্বজনীন রেজিস্টার ঠিক এই সহকারীর মতো। দুটি নিয়ন্ত্রণ সংকেত <math>S_1</math> এবং <math>S_0</math> মিলে চারটি আলাদা আলাদা নির্দেশ দিতে পারে। এই চারটি নির্দেশ হলো সার্বজনীন রেজিস্টারের চারটি মোড।
ঠিক যেমন একটি সুইস আর্মি ছুরিতে চারটি হাতিয়ার থাকে কিন্তু একটিই বস্তু, সার্বজনীন রেজিস্টার একটিই চিপ কিন্তু চারটি কাজ করতে পারে।
=== মোড নির্বাচন সারণি ===
দুটি নিয়ন্ত্রণ সংকেত <math>S_1 S_0</math> মিলে চারটি সমন্বয় সম্ভব:
{| class="wikitable" style="width:90%; text-align:center;"
|+ সার্বজনীন রেজিস্টারের চারটি মোড
! style="background:#1A535C; color:white;" | <math>S_1</math> !! style="background:#1A535C; color:white;" | <math>S_0</math> !! style="background:#1A535C; color:white;" | মোড !! style="background:#1A535C; color:white;" | কাজ !! style="background:#1A535C; color:white;" | বাস্তব উপমা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ মোড || বর্তমান অবস্থা অপরিবর্তিত থাকে || স্থির দাঁড়িয়ে থাকা
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট মোড || সব বিট একটু ডানে সরে || সারি ডানে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট মোড || সব বিট একটু বামে সরে || সারি বামে এগিয়ে যাওয়া
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড মোড || বাইরে থেকে নতুন ডেটা একসাথে ঢোকে || সবাই একসাথে বদলে যাওয়া
|}
মনে রাখার কৌশল: <math>S_1 S_0</math> কে বাইনারি সংখ্যা হিসেবে দেখো: <math>\text{০০}</math> = স্থির, <math>\text{০১}</math> = ডানে, <math>\text{১০}</math> = বামে, <math>\text{১১}</math> = লোড।
=== প্রতিটি মোডের বিস্তারিত বুলিয়ান রাশি ===
প্রতিটি বিট <math>Q_i</math> এর পরবর্তী অবস্থা নির্ধারণ করে এই রাশি:
:<math>D_i = \bar{S_1}\bar{S_0} \cdot Q_i + \bar{S_1}S_0 \cdot Q_{i-1} + S_1\bar{S_0} \cdot Q_{i+1} + S_1 S_0 \cdot P_i</math>
এখানে <math>P_i</math> হলো সমান্তরাল ইনপুটের <math>i</math> নম্বর বিট।
রাশিটার চারটি অংশ চারটি মোডের জন্য:
{| class="wikitable" style="width:100%; text-align:center;"
|+ রাশির প্রতিটি অংশের ব্যাখ্যা
! style="background:#6B2737; color:white;" | অংশ !! style="background:#6B2737; color:white;" | মোড !! style="background:#6B2737; color:white;" | সক্রিয় হয় কখন !! style="background:#6B2737; color:white;" | কী করে
|-
| <math>\bar{S_1}\bar{S_0} \cdot Q_i</math> || ধারণ || <math>S_1=\text{০}, S_0=\text{০}</math> || নিজের মান নিজে রাখে
|-
| <math>\bar{S_1}S_0 \cdot Q_{i-1}</math> || ডানে শিফট || <math>S_1=\text{০}, S_0=\text{১}</math> || বাম প্রতিবেশীর মান নেয়
|-
| <math>S_1\bar{S_0} \cdot Q_{i+1}</math> || বামে শিফট || <math>S_1=\text{১}, S_0=\text{০}</math> || ডান প্রতিবেশীর মান নেয়
|-
| <math>S_1 S_0 \cdot P_i</math> || সমান্তরাল লোড || <math>S_1=\text{১}, S_0=\text{১}</math> || বাইরের ইনপুট নেয়
|}
=== মোড ০০: ধারণ মোড ===
এই মোডে রেজিস্টার কিছুই করে না, বর্তমান অবস্থা ধরে রাখে।
উপমা: ক্লাসরুমে শিক্ষক বলেছেন "এখন চুপ করে বসো।" কেউ নড়াচড়া করছে না, সবাই যেখানে ছিল সেখানেই আছে।
রাশি: <math>D_i = Q_i</math>
যাচাই: <math>S_1 = \text{০}, S_0 = \text{০}</math> রাখলে মূল রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_i = \text{১} \cdot Q_i + \text{০} \cdot Q_{i-1} + \text{০} \cdot Q_{i+1} + \text{০} \cdot P_i = Q_i</math>
=== মোড ০১: ডানে শিফট মোড ===
এই মোডে প্রতিটি বিট তার ডানের প্রতিবেশীর জায়গায় যায়।
উপমা: সারিতে দাঁড়ানো মানুষদের শিক্ষক বললেন "সবাই এক ধাপ ডানে সরো।" <math>Q_3</math> এর জায়গায় যাবে বাইরের সিরিয়াল ইনপুট, আর <math>Q_0</math> থেকে বিটটা বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i-1}</math> (সর্বোচ্চ বিটের জন্য: <math>D_{n-1} = SI_R</math>)
=== মোড ১০: বামে শিফট মোড ===
এই মোডে প্রতিটি বিট তার বামের প্রতিবেশীর জায়গায় যায়।
উপমা: একই সারিতে এবার শিক্ষক বললেন "সবাই এক ধাপ বামে সরো।" এবার <math>Q_0</math> এর জায়গায় আসবে সিরিয়াল ইনপুট, আর <math>Q_3</math> থেকে বিট বেরিয়ে যাবে।
রাশি: <math>D_i = Q_{i+1}</math> (সর্বনিম্ন বিটের জন্য: <math>D_0 = SI_L</math>)
=== মোড ১১: সমান্তরাল লোড মোড ===
এই মোডে বাইরের চারটি ইনপুট <math>P_3 P_2 P_1 P_0</math> একসাথে রেজিস্টারে ঢোকে।
উপমা: ক্লাস শুরুতে শিক্ষক বললেন "সবাই নিজের নতুন বই তুলে নাও।" একসাথে সবাই নতুন বই নিল, আগের সব তথ্য বাতিল।
রাশি: <math>D_i = P_i</math>
=== সম্পূর্ণ সত্যক সারণী ===
ধরো বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1010</math>, সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 0110</math>, ডানে শিফটের সিরিয়াল ইনপুট <math>SI_R = \text{১}</math>, বামে শিফটের সিরিয়াল ইনপুট <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center;"
|+ সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
! style="background:#2C3E50; color:white;" | <math>S_1</math> !! style="background:#2C3E50; color:white;" | <math>S_0</math> !! style="background:#2C3E50; color:white;" | মোড !! style="background:#2C3E50; color:white;" | <math>Q_3^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_2^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_1^+</math> !! style="background:#2C3E50; color:white;" | <math>Q_0^+</math> !! style="background:#2C3E50; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || ধারণ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || অপরিবর্তিত থাকে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>SI_R=\text{১}</math> ঢুকেছে বাম থেকে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>SI_L=\text{০}</math> ঢুকেছে ডান থেকে
|-
| <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>P=0110</math> লোড হয়েছে
|}
=== সমান্তরাল লোড মোডের বিস্তারিত যাচাই ===
মোড <math>S_1 S_0 = \text{১১}</math>, সমান্তরাল ইনপুট <math>P = 0110</math>:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{১}} \cdot Q_3 + \bar{\text{০}}\cdot\text{১} \cdot Q_2 + \text{০}\cdot\bar{\text{১}} \cdot Q_1 + \text{১}\cdot\text{১} \cdot P_3</math>
শুধুমাত্র চতুর্থ অংশ সক্রিয় (কারণ <math>S_1 S_0 = \text{১১}</math>):
:<math>D_3 = \text{১} \cdot \text{১} \cdot P_3 = P_3 = \text{০}</math>
:<math>D_2 = P_2 = \text{১}</math>
:<math>D_1 = P_1 = \text{১}</math>
:<math>D_0 = P_0 = \text{০}</math>
পরের অবস্থা: <math>0110</math> ✓
== ৭৪১৯৪ চিপের পরিচয় ==
=== চিপটি কী? ===
৭৪১৯৪ হলো একটি বাস্তব সমন্বিত সার্কিট যা সার্বজনীন রেজিস্টার হিসেবে কাজ করে। এটির পুরো নাম "৭৪ সিরিজের ১৯৪ নম্বর চিপ" এবং এটি ৪-বিট সার্বজনীন দ্বিমুখী শিফট রেজিস্টার।
বাজারে এই চিপটি অনেক সহজলভ্য এবং ডিজিটাল ইলেকট্রনিক্স শেখার জন্য অত্যন্ত জনপ্রিয়। একটি ছোট প্লাস্টিকের আবরণে ষোলটি পিন আছে, আর ভেতরে লুকিয়ে আছে সম্পূর্ণ সার্বজনীন রেজিস্টারের সার্কিট।
=== পিন বিন্যাস ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ ৭৪১৯৪ চিপের পিন বর্ণনা
! style="background:#4A4E69; color:white;" | পিন নম্বর !! style="background:#4A4E69; color:white;" | নাম !! style="background:#4A4E69; color:white;" | ধরন !! style="background:#4A4E69; color:white;" | কাজ
|-
| ১ || <math>\overline{CLR}</math> || ইনপুট || সক্রিয়-নিম্ন ক্লিয়ার: <math>\text{০}</math> দিলে সব বিট শূন্য হয়
|-
| ২ || <math>SR</math> || ইনপুট || ডানে শিফটের সিরিয়াল ইনপুট (<math>SI_R</math>)
|-
| ৩, ৪, ৫, ৬ || <math>A, B, C, D</math> || ইনপুট || সমান্তরাল ইনপুট (<math>P_0</math> থেকে <math>P_3</math>)
|-
| ৭ || <math>S_0</math> || ইনপুট || মোড নির্বাচন বিট ০
|-
| ৮ || GND || বিদ্যুৎ || ভূমি সংযোগ (<math>\text{০}</math> ভোল্ট)
|-
| ৯ || <math>S_1</math> || ইনপুট || মোড নির্বাচন বিট ১
|-
| ১০ || <math>CLK</math> || ইনপুট || ক্লক সংকেত
|-
| ১১ || <math>SL</math> || ইনপুট || বামে শিফটের সিরিয়াল ইনপুট (<math>SI_L</math>)
|-
| ১২, ১৩, ১৪, ১৫ || <math>Q_A, Q_B, Q_C, Q_D</math> || আউটপুট || রেজিস্টারের চারটি বিট আউটপুট
|-
| ১৬ || VCC || বিদ্যুৎ || সরবরাহ বিদ্যুৎ (<math>+5</math> ভোল্ট)
|}
=== চিপের কার্যক্রম সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭৪১৯৪ চিপের সম্পূর্ণ কার্যক্রম
! style="background:#6B4226; color:white;" | <math>\overline{CLR}</math> !! style="background:#6B4226; color:white;" | <math>CLK</math> !! style="background:#6B4226; color:white;" | <math>S_1</math> !! style="background:#6B4226; color:white;" | <math>S_0</math> !! style="background:#6B4226; color:white;" | কার্যক্রম
|-
| <math>\text{০}</math> || যাই হোক || যাই হোক || যাই হোক || তাৎক্ষণিক ক্লিয়ার: সব আউটপুট শূন্য
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{০}</math> || ধারণ: অপরিবর্তিত
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{০}</math> || <math>\text{১}</math> || ডানে শিফট: <math>SR \to Q_A \to Q_B \to Q_C \to Q_D</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{০}</math> || বামে শিফট: <math>SL \to Q_D \to Q_C \to Q_B \to Q_A</math>
|-
| <math>\text{১}</math> || উর্ধ্বপ্রান্ত || <math>\text{১}</math> || <math>\text{১}</math> || সমান্তরাল লোড: <math>A \to Q_A, B \to Q_B, C \to Q_C, D \to Q_D</math>
|}
মনে রাখো: ৭৪১৯৪ শুধুমাত্র ক্লকের উর্ধ্বপ্রান্তে (<math>\text{০}</math> থেকে <math>\text{১}</math> পরিবর্তনে) কাজ করে। ক্লিয়ার পিন অবশ্য যেকোনো সময় কাজ করে।
=== চিপের বিশেষ বৈশিষ্ট্য ===
{| class="wikitable" style="width:90%;"
|+ ৭৪১৯৪ চিপের প্রযুক্তিগত বিবরণ
! style="background:#2D4739; color:white;" | বৈশিষ্ট্য !! style="background:#2D4739; color:white;" | বিবরণ
|-
| ফ্লিপ-ফ্লপের ধরন || উর্ধ্বপ্রান্ত-ট্রিগারড ডি ফ্লিপ-ফ্লপ
|-
| ক্লিয়ারের ধরন || তাৎক্ষণিক (ক্লকের জন্য অপেক্ষা করে না)
|-
| সর্বোচ্চ ক্লক কম্পাঙ্ক || প্রায় ৩৬ মেগাহার্টজ
|-
| বিদ্যুৎ সরবরাহ || ৫ ভোল্ট ডিসি
|-
| সম্প্রসারণযোগ্যতা || দুটি চিপ সংযুক্ত করে ৮-বিট রেজিস্টার সম্ভব
|-
| একই পরিবারের বিকল্প || ৭৪এলএস১৯৪ (কম বিদ্যুৎ খরচ), ৭৪এইচসি১৯৪ (দ্রুতগতি)
|}
=== বাস্তব প্রয়োগে ব্যবহার ===
{| class="wikitable" style="width:100%;"
|+ ৭৪১৯৪ চিপের বাস্তব ব্যবহার
! style="background:#2D4739; color:white;" | প্রয়োগক্ষেত্র !! style="background:#2D4739; color:white;" | কীভাবে ব্যবহার হয়
|-
| সিরিয়াল-সমান্তরাল রূপান্তর || সমান্তরাল লোড করে একটি একটি করে বিট বের করা হয়
|-
| সমান্তরাল-সিরিয়াল রূপান্তর || একটি একটি করে বিট ঢুকিয়ে শেষে সমান্তরাল আউটপুট নেওয়া হয়
|-
| বৃত্তাকার বাফার || আউটপুটকে ইনপুটে সংযুক্ত করে ঘূর্ণায়মান প্যাটার্ন তৈরি হয়
|-
| ক্রম নিয়ন্ত্রক || নির্দিষ্ট বিট প্যাটার্ন তৈরি করে ডিজিটাল সিস্টেমের ধাপ নিয়ন্ত্রণ করা হয়
|-
| LED ডিসপ্লে নিয়ন্ত্রণ || LED আলোর নির্দিষ্ট ক্রম তৈরিতে, বিজ্ঞাপনের চলমান আলোয়
|-
| যোগাযোগ প্রোটোকল || SPI ও UART ধারাবাহিক যোগাযোগ প্রক্রিয়ায়
|-
| গণনা সার্কিট || শিফট দিয়ে গুণ ও ভাগের কাজ প্রসেসরে দ্রুত করতে
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ধারণ মোডের হাতে-কলমে হিসাব ===
একটি ৪-বিট সার্বজনীন রেজিস্টারের বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1001</math>। মোড সংকেত <math>S_1 S_0 = \text{০০}</math>। পরের ক্লক চক্রে কী হবে?
মোড <math>\text{০০}</math> মানে ধারণ। রাশিতে শুধু প্রথম অংশ সক্রিয়:
:<math>D_3 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_2 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_1 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
:<math>D_0 = \bar{\text{০}}\cdot\bar{\text{০}} \cdot Q_0 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
পরের অবস্থা: <math>Q = 1001</math> অপরিবর্তিত! ✓
অর্থাৎ ক্লক দিলেও কিছু বদলায় না। কম্পিউটারে যখন কোনো তথ্য সাময়িকভাবে ধরে রাখতে হয়, তখন এই মোড কাজে লাগে। ডেটা বাস ব্যবহারের মধ্যবর্তী সময়ে প্রসেসর এই মোড ব্যবহার করে।
=== উদাহরণ ২: ডানে শিফট মোডের ধাপে ধাপে বিশ্লেষণ ===
বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 1100</math>। মোড <math>S_1 S_0 = \text{০১}</math> (ডানে শিফট)। সিরিয়াল ইনপুট <math>SR = \text{১}</math>।
রাশিতে দ্বিতীয় অংশ সক্রিয় (<math>\bar{S_1}S_0 = \text{১}</math>):
:<math>D_3 = \bar{\text{০}}\cdot\text{১} \cdot SR = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math> (সিরিয়াল ইনপুট ঢুকেছে)
:<math>D_2 = \bar{\text{০}}\cdot\text{১} \cdot Q_3 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_1 = \bar{\text{০}}\cdot\text{১} \cdot Q_2 = \text{১} \cdot \text{১} \cdot \text{১} = \text{১}</math>
:<math>D_0 = \bar{\text{০}}\cdot\text{১} \cdot Q_1 = \text{১} \cdot \text{১} \cdot \text{০} = \text{০}</math>
পরের অবস্থা: <math>1110</math>।
এভাবে তিনটি ক্লক চক্রে কী হয় দেখি (<math>SR</math> প্রতিবার ভিন্ন):
{| class="wikitable" style="text-align:center;"
|+ তিন চক্রে ডানে শিফটের ধাপ
! style="background:#3D405B; color:white;" | চক্র !! style="background:#3D405B; color:white;" | <math>Q_3</math> !! style="background:#3D405B; color:white;" | <math>Q_2</math> !! style="background:#3D405B; color:white;" | <math>Q_1</math> !! style="background:#3D405B; color:white;" | <math>Q_0</math> !! style="background:#3D405B; color:white;" | <math>SR</math> (নতুন) !! style="background:#3D405B; color:white;" | বের হওয়া বিট
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ||
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|}
প্রতিটি চক্রে ডান থেকে এক বিট বেরিয়ে যাচ্ছে এবং বাম থেকে <math>SR</math> ঢুকছে। এটিই সমান্তরাল-সিরিয়াল রূপান্তরের ভিত্তি।
=== উদাহরণ ৩: বামে শিফট মোডে বাইনারি গুণ ===
বামে শিফটের একটি চমৎকার প্রয়োগ হলো ২ দিয়ে গুণ! বাইনারি সংখ্যাকে একবার বামে শিফট করলে সেটা ২ দিয়ে গুণ হয়ে যায়, ঠিক যেমন দশমিকে ১০ দিয়ে গুণ করলে শেষে একটি শূন্য বসে।
প্রমাণ:
* প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = 0011 = 3</math> দশমিকে
* মোড <math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>:
রাশিতে তৃতীয় অংশ সক্রিয় (<math>S_1\bar{S_0} = \text{১}</math>):
:<math>D_3 = Q_2 = \text{০}</math>
:<math>D_2 = Q_1 = \text{১}</math>
:<math>D_1 = Q_0 = \text{১}</math>
:<math>D_0 = SL = \text{০}</math>
* পরের অবস্থা: <math>0110 = 6</math> দশমিকে। <math>3 \times 2 = 6</math> ✓
আরও একবার শিফট করলে:
:<math>0110 \to 1100 = 12 = 3 \times 4</math> ✓
{| class="wikitable" style="text-align:center; width:80%;"
|+ বামে শিফট দিয়ে ২ এর ঘাতে গুণ
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | বাইনারি !! style="background:#1B4332; color:white;" | দশমিক !! style="background:#1B4332; color:white;" | কার্যকর গুণ
|-
| ০ || <math>0011</math> || <math>3</math> || শুরু
|-
| ১ || <math>0110</math> || <math>6</math> || <math>3 \times 2</math>
|-
| ২ || <math>1100</math> || <math>12</math> || <math>3 \times 4</math>
|-
| ৩ || <math>1000</math> || <math>8</math> || উপচে পড়েছে! আসল: <math>3 \times 8 = 24</math>
|}
সাবধান: তৃতীয় চক্রে উপচে পড়েছে কারণ ৪ বিটে ২৪ ধরে না (সর্বোচ্চ ১৫)। এই কৌশলটি কম্পিউটার প্রসেসরে গুণের গতি বাড়াতে ব্যবহার করা হয়!
=== উদাহরণ ৪: সমান্তরাল লোড ও তারপর সিরিয়াল পাঠানো ===
এটি একটি বাস্তব প্রয়োগের উদাহরণ: সমান্তরাল ডেটা লোড করে তারপর সিরিয়ালভাবে পাঠানো। যেমন প্রিন্টারে ডেটা পাঠানোর সময় এই পদ্ধতি ব্যবহার হয়।
ধাপ ১: সমান্তরাল লোড করো।
* মোড <math>S_1 S_0 = \text{১১}</math>
* সমান্তরাল ইনপুট <math>P_3 P_2 P_1 P_0 = 1010</math>
* এক ক্লক চক্রে: <math>Q = 1010</math>
ধাপ ২: এক এক করে বিট বের করো (মোড <math>S_1 S_0 = \text{০১}</math>, ডানে শিফট, <math>SR = \text{০}</math>)।
{| class="wikitable" style="text-align:center;"
|+ সমান্তরাল থেকে সিরিয়াল রূপান্তর
! style="background:#1B4332; color:white;" | চক্র !! style="background:#1B4332; color:white;" | <math>Q_3</math> !! style="background:#1B4332; color:white;" | <math>Q_2</math> !! style="background:#1B4332; color:white;" | <math>Q_1</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> !! style="background:#1B4332; color:white;" | <math>Q_0</math> এ বের হওয়া বিট
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> ||
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|}
চার চক্রে সিরিয়াল আউটপুটে পাওয়া গেল: <math>\text{০}, \text{১}, \text{০}, \text{১}</math> অর্থাৎ উলটো ক্রমে <math>1010</math>! গ্রাহক প্রান্তে উলটো করে পড়লে আসল ডেটা পাওয়া যাবে।
=== উদাহরণ ৫: ৭৪১৯৪ দিয়ে বৃত্তাকার বাফার ===
সবচেয়ে মজার প্রয়োগ: <math>Q_D</math> আউটপুটকে <math>SR</math> ইনপুটে সংযুক্ত করো এবং মোড <math>S_1 S_0 = \text{০১}</math> রাখো। তাহলে বিটগুলো ঘুরতে থাকবে!
প্রাথমিক অবস্থা (সমান্তরাল লোড দিয়ে): <math>Q_A Q_B Q_C Q_D = 1000</math>।
{| class="wikitable" style="text-align:center;"
|+ বৃত্তাকার ডান শিফটের প্যাটার্ন
! style="background:#44355B; color:white;" | চক্র !! style="background:#44355B; color:white;" | <math>Q_A</math> !! style="background:#44355B; color:white;" | <math>Q_B</math> !! style="background:#44355B; color:white;" | <math>Q_C</math> !! style="background:#44355B; color:white;" | <math>Q_D</math> !! style="background:#44355B; color:white;" | আলো জ্বলে কোথায়?
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রথম LED
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দ্বিতীয় LED
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় LED
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চতুর্থ LED
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার প্রথম (শুরুতে ফিরে)
|}
এই প্যাটার্নটি LED ডিসপ্লেতে ঘূর্ণায়মান আলো তৈরি করে! বিজ্ঞাপনের সাইনবোর্ডে যে আলো ঘোরে, তার পেছনে এই নীতিই কাজ করে। চক্রকাল হলো ৪, অর্থাৎ ৪ ক্লকে একটি পূর্ণ ঘূর্ণন।
== অনুশীলনী ==
'''সহজ স্তর:'''
'''১.''' একটি দ্বিমুখী শিফট রেজিস্টারে বর্তমান অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = 0110</math>। <math>S = \text{১}</math> এবং <math>SI_R = \text{০}</math> হলে এক ক্লক চক্র পরে রেজিস্টারের অবস্থা কী হবে?
'''২.''' সার্বজনীন রেজিস্টারে <math>S_1 S_0 = \text{০০}</math> মোডে বর্তমান অবস্থা <math>Q = 1011</math> থাকলে পাঁচটি ক্লক চক্র পরে অবস্থা কী হবে?
'''৩.''' ৭৪১৯৪ চিপে <math>\overline{CLR} = \text{০}</math> দিলে কী ঘটে? ক্লকের অবস্থা কি তখন গুরুত্বপূর্ণ?
'''৪.''' সার্বজনীন রেজিস্টারের রাশি থেকে মোড <math>S_1 S_0 = \text{০১}</math> তে <math>D_i = Q_{i-1}</math> সত্য কিনা যাচাই করো।
'''মধ্যম স্তর:'''
'''৫.''' সার্বজনীন রেজিস্টারে প্রাথমিক অবস্থা <math>Q = 0000</math>। মোড <math>S_1 S_0 = \text{১১}</math> এ সমান্তরাল ইনপুট <math>P = 1101</math> লোড করার পর, মোড <math>S_1 S_0 = \text{০১}</math> এ তিনটি ক্লক চক্র চালাও (<math>SR = \text{০}</math>)। প্রতিটি চক্রের পরে অবস্থা লেখো।
'''৬.''' <math>Q = 0101</math> বাইনারি সংখ্যাটিকে বামে শিফটের মাধ্যমে ২ দিয়ে গুণ করো। ধাপগুলো দেখাও। ফলাফল কি ৪ বিটে ধরবে?
'''৭.''' দ্বিমুখী শিফট রেজিস্টারে <math>Q = 0001</math> থেকে শুরু করে শুধু বামে শিফট (<math>S = \text{০}</math>, <math>SI_L = \text{০}</math>) করলে কত চক্রের পরে সব বিট শূন্য হবে? প্রতিটি চক্র দেখাও।
'''৮.''' ৭৪১৯৪ চিপে সমান্তরাল লোড করার পরে ডানে শিফট ও বামে শিফটের মধ্যে পার্থক্য একটি উদাহরণ দিয়ে দেখাও। প্রাথমিক অবস্থা <math>Q = 1010</math> নাও।
'''কঠিন স্তর:'''
'''৯.''' দুটি ৭৪১৯৪ চিপ সংযুক্ত করে ৮-বিট সার্বজনীন রেজিস্টার তৈরি করতে হবে। প্রথম চিপের <math>Q_D</math> আউটপুটকে দ্বিতীয় চিপের <math>SR</math> ইনপুটে সংযুক্ত করো। উভয় চিপে <math>S_1 S_0 = \text{০১}</math> দিলে ডানে শিফট মোডে <math>Q = 11000000</math> থেকে শুরু করলে তিন চক্র পরে অবস্থা কী হবে (<math>SR = \text{০}</math>)?
'''১০.''' বৃত্তাকার বাফারে <math>Q_D \to SR</math> সংযোগ ব্যবহার করা হয়। <math>Q = 1100</math> থেকে শুরু করে আট চক্র পরের অবস্থা কী হবে? এই প্যাটার্নের পুনরাবৃত্তির চক্রকাল কত?
----
'''উত্তর:'''
'''১.''' <math>S = \text{১}</math> মানে ডানে শিফট, তাই প্রতিটি বিট এক ধাপ ডানে সরে এবং <math>SI_R = \text{০}</math> বামে ঢোকে:
:<math>Q_3^+ = SI_R = \text{০}</math>
:<math>Q_2^+ = Q_3 = \text{০}</math>
:<math>Q_1^+ = Q_2 = \text{১}</math>
:<math>Q_0^+ = Q_1 = \text{১}</math>
পরের অবস্থা: <math>Q = 0011</math>।
'''২.''' মোড <math>\text{০০}</math> মানে ধারণ, কিছুই পরিবর্তন হয় না। পাঁচ চক্র পরেও অবস্থা <math>Q = 1011</math> অপরিবর্তিত থাকবে।
'''৩.''' <math>\overline{CLR} = \text{০}</math> দিলে সব আউটপুট তাৎক্ষণিকভাবে শূন্য হয়ে যায়, অর্থাৎ <math>Q = 0000</math>। এটি তাৎক্ষণিক বা অ্যাসিঙ্ক্রোনাস, তাই ক্লকের অবস্থা একেবারেই গুরুত্বপূর্ণ নয়।
'''৪.''' মোড <math>S_1 S_0 = \text{০১}</math> অর্থাৎ <math>S_1 = \text{০}, S_0 = \text{১}</math>:
:<math>D_i = \underbrace{\bar{\text{০}}\cdot\bar{\text{১}}}_{=0} \cdot Q_i + \underbrace{\bar{\text{০}}\cdot\text{১}}_{=1} \cdot Q_{i-1} + \underbrace{\text{০}\cdot\bar{\text{১}}}_{=0} \cdot Q_{i+1} + \underbrace{\text{০}\cdot\text{১}}_{=0} \cdot P_i</math>
:<math>D_i = \text{০} + \text{১} \cdot Q_{i-1} + \text{০} + \text{০} = Q_{i-1}</math> ✓
'''৫.''' প্রথমে সমান্তরাল লোড: <math>Q = 1101</math>।
এরপর তিনটি ডানে শিফট (<math>SR = \text{০}</math>):
* চক্র ১: <math>Q_3^+ = \text{০}, Q_2^+ = Q_3 = \text{১}, Q_1^+ = Q_2 = \text{১}, Q_0^+ = Q_1 = \text{০}</math>, তাই <math>Q = 0110</math>
* চক্র ২: <math>Q = 0011</math>
* চক্র ৩: <math>Q = 0001</math>
'''৬.''' <math>Q = 0101 = 5</math> দশমিকে।
বামে শিফট (<math>SL = \text{০}</math>): <math>D_3 = Q_2 = \text{১}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = \text{০}</math>।
পরের অবস্থা: <math>Q = 1010 = 10</math>।
<math>5 \times 2 = 10</math> ✓ এবং <math>10 < 15</math>, তাই ৪ বিটে ধরবে।
'''৭.''' প্রতিটি চক্র:
* শুরু: <math>0001</math>
* চক্র ১: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{১}, D_0 = SL = \text{০}</math>; <math>Q = 0010</math>
* চক্র ২: <math>Q = 0100</math>
* চক্র ৩: <math>Q = 1000</math>
* চক্র ৪: <math>D_3 = Q_2 = \text{০}, D_2 = Q_1 = \text{০}, D_1 = Q_0 = \text{০}, D_0 = \text{০}</math>; <math>Q = 0000</math>
৪ চক্রের পরে সব বিট শূন্য হয়।
'''৮.''' প্রাথমিক অবস্থা লোডের পরে: <math>Q = 1010</math>।
ডানে শিফট (<math>S_1 S_0 = \text{০১}</math>, <math>SR = \text{০}</math>): <math>Q = 0101</math>
বামে শিফট (<math>S_1 S_0 = \text{১০}</math>, <math>SL = \text{০}</math>): <math>Q = 0100</math>
দুই মোডে ফলাফল আলাদা। ডানে শিফটে সর্বোচ্চ বিট থেকে <math>\text{০}</math> ঢোকে, বামে শিফটে সর্বনিম্ন বিট থেকে <math>\text{০}</math> ঢোকে।
'''৯.''' ৮-বিট রেজিস্টার, প্রাথমিক অবস্থা <math>Q = 11000000</math>।
ডানে শিফট (<math>SR = \text{০}</math>), প্রতি চক্রে সর্বোচ্চ বিটে <math>\text{০}</math> ঢোকে:
* চক্র ১: <math>Q = 01100000</math>
* চক্র ২: <math>Q = 00110000</math>
* চক্র ৩: <math>Q = 00011000</math>
দুটি <math>\text{১}</math> বিট একসাথে ডানে সরে যাচ্ছে, মাঝের দূরত্ব অপরিবর্তিত।
'''১০.''' <math>Q_D \to SR</math> সংযোগ সহ ডানে বৃত্তাকার শিফট। প্রাথমিক অবস্থা: <math>Q = 1100</math>।
{| class="wikitable" style="text-align:center; width:60%;"
|+ বৃত্তাকার শিফটের ৮ চক্র
! style="background:#2E4057; color:white;" | চক্র !! style="background:#2E4057; color:white;" | <math>Q_3 Q_2 Q_1 Q_0</math>
|-
| ০ || <math>1100</math>
|-
| ১ || <math>0110</math>
|-
| ২ || <math>0011</math>
|-
| ৩ || <math>1001</math>
|-
| ৪ || <math>1100</math> (শুরুতে ফিরে এসেছে)
|-
| ৫ || <math>0110</math>
|-
| ৬ || <math>0011</math>
|-
| ৭ || <math>1001</math>
|}
পুনরাবৃত্তির চক্রকাল ৪। প্রতি ৪ ক্লকে প্যাটার্ন একই অবস্থায় ফিরে আসে। এই প্যাটার্নটি চারটি LED কে ঘুরিয়ে ঘুরিয়ে জ্বালাতে ব্যবহার করা যায়, যেখানে প্রতিবার দুটি LED জ্বলে।
== রিং কাউন্টার ও জনসন কাউন্টার ==
আগের ভাগে আমরা শিফট রেজিস্টার দেখেছিলাম — যেখানে ডেটা এক প্রান্ত থেকে ঢুকে অন্য প্রান্ত দিয়ে বেরিয়ে যায়। এই ভাগে আমরা দেখব যদি সেই বেরিয়ে যাওয়া ডেটা আবার ঢুকে যায় — অর্থাৎ সার্কিটটি একটি বৃত্তের মতো বন্ধ হয়ে যায়, তখন কী হয়। এই ধারণাটিই রিং কাউন্টারের মূল ভিত্তি।
=== রিং কাউন্টার কী ===
একটি গোল টেবিল কল্পনা করো। টেবিলে চারজন মানুষ বসে আছে। তাদের মধ্যে কেবল একজনের হাতে একটি লাল বল আছে। এখন নিয়ম হলো প্রতি মিনিটে বলটি পাশের জনের হাতে যাবে। বলটি ঘুরতে ঘুরতে আবার প্রথম জনের হাতে ফিরে আসবে, তারপর আবার সেই একই চক্র।
এটাই হলো রিং কাউন্টারের ধারণা। এখানে সেই লাল বলটি হলো <math>\text{১}</math>, আর বাকি সবার হাত হলো <math>\text{০}</math>। প্রতিটি ক্লকে <math>\text{১}</math>টি এক ঘর এগিয়ে যায় এবং শেষে আবার প্রথমে ফিরে আসে।
রিং কাউন্টার হলো এমন একটি শিফট রেজিস্টার যেখানে শেষ ফ্লিপ-ফ্লপের আউটপুট প্রথম ফ্লিপ-ফ্লপের ইনপুটে ফিরে সংযুক্ত থাকে।
=== রিং কাউন্টারের গঠন ===
<math>n</math>টি ডি ফ্লিপ-ফ্লপ পর পর সাজিয়ে রিং কাউন্টার তৈরি হয়। প্রতিটি ফ্লিপ-ফ্লপের আউটপুট <math>Q</math> পরের ফ্লিপ-ফ্লপের <math>D</math> ইনপুটে যায়। শেষটির আউটপুট ফিরে প্রথমটির ইনপুটে আসে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>Q</math> থেকে (ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে (ফিডব্যাক)
|}
=== প্রাথমিক অবস্থা লোড করা ===
রিং কাউন্টার চালু করতে হলে প্রথমে একটি নির্দিষ্ট প্রাথমিক অবস্থা লোড করতে হয়। সবচেয়ে স্বাভাবিক প্রাথমিক অবস্থা হলো <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math> অর্থাৎ কেবল প্রথম ফ্লিপ-ফ্লপে <math>\text{১}</math>, বাকি সব <math>\text{০}</math>।
এই কাজটি করা হয় প্রিসেট এবং ক্লিয়ার পিন ব্যবহার করে:
* <math>FF_0</math> এর প্রিসেট সক্রিয় করে <math>Q_0 = \text{১}</math> করা হয়
* <math>FF_1,\ FF_2,\ FF_3</math> এর ক্লিয়ার সক্রিয় করে <math>\text{০}</math> করা হয়
যদি রিং কাউন্টার ভুল অবস্থায় চলে যায় যেমন সব <math>\text{০}</math> হয়ে যায়, তাহলে এটি সেখানেই আটকে থাকবে কারণ <math>\text{০}</math>ই ঘুরতে থাকবে। তাই প্রাথমিক অবস্থা সঠিকভাবে লোড করা জরুরি।
=== ৪-বিট রিং কাউন্টারের সম্পূর্ণ টাইমিং বিশ্লেষণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট রিং কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> শুরুতে <math>Q_0</math> তে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_1</math> তে
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_2</math> তে
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> এগিয়ে <math>Q_3</math> তে
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> ফিরে <math>Q_0</math> তে (চক্র পূর্ণ)
|-
| ৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || আবার একই চক্র শুরু
|}
লক্ষ করো, ৪-বিট রিং কাউন্টারে মোট ৪টি ভিন্ন অবস্থা আছে এবং প্রতি ৪টি ক্লকে চক্র সম্পন্ন হয়। যেকোনো মুহূর্তে কেবল একটি মাত্র ফ্লিপ-ফ্লপে <math>\text{১}</math> থাকে।
=== <math>n</math>-বিট রিং কাউন্টারের বৈশিষ্ট্য ===
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| ফ্লিপ-ফ্লপ সংখ্যা || <math>n</math>
|-
| মোট অবস্থা সংখ্যা || <math>n</math>
|-
| চক্র দৈর্ঘ্য || <math>n</math> ক্লক
|-
| প্রতি মুহূর্তে সক্রিয় ফ্লিপ-ফ্লপ || কেবল ১টি
|-
| ডিকোডার প্রয়োজন || না
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন
|}
=== জনসন কাউন্টার: বাঁকানো রিং ===
এবার কল্পনা করো সেই গোল টেবিলের খেলাটাই, কিন্তু এবার নিয়মটা একটু অদ্ভুত। যে ব্যক্তির হাতে বল আছে সে পরের জনকে বল দেওয়ার সময় বলটা উল্টে দেয়: লাল বল দিলে নীল বল পায়, নীল বল দিলে লাল বল পায়।
এটাই হলো জনসন কাউন্টারের মূল ধারণা। রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটির ইনপুটে যায়। কিন্তু জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক আউটপুট) প্রথমটির ইনপুটে যায়।
এই একটি পরিবর্তনের কারণে অবস্থার সংখ্যা দ্বিগুণ হয়ে যায়। <math>n</math>-বিট জনসন কাউন্টারে <math>2n</math>টি অবস্থা থাকে।
=== জনসন কাউন্টারের গঠন ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ জনসন কাউন্টারের সংযোগ বিবরণ
! ফ্লিপ-ফ্লপ !! <math>D</math> ইনপুট কোথা থেকে আসে !! <math>Q</math> আউটপুট কোথায় যায়
|-
| <math>FF_0</math> || <math>FF_{n-1}</math> এর <math>\bar{Q}</math> থেকে (উল্টানো ফিডব্যাক) || <math>FF_1</math> এর <math>D</math> তে
|-
| <math>FF_1</math> || <math>FF_0</math> এর <math>Q</math> থেকে || <math>FF_2</math> এর <math>D</math> তে
|-
| <math>FF_2</math> || <math>FF_1</math> এর <math>Q</math> থেকে || <math>FF_3</math> এর <math>D</math> তে
|-
| <math>FF_3</math> || <math>FF_2</math> এর <math>Q</math> থেকে || <math>FF_0</math> এর <math>D</math> তে <math>\bar{Q}</math> হিসেবে
|}
রিং ও জনসনের পার্থক্য কেবল একটি জায়গায়: শেষ ফ্লিপ-ফ্লপ থেকে প্রথমটিতে কী যাচ্ছে। রিংয়ে যাচ্ছে <math>Q</math>, জনসনে যাচ্ছে <math>\bar{Q}</math>।
=== ৪-বিট জনসন কাউন্টারের সম্পূর্ণ উদাহরণ ===
প্রাথমিক অবস্থা: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
জনসন কাউন্টারে প্রাথমিক অবস্থা হিসেবে সব <math>\text{০}</math> ব্যবহার করা যায়, কারণ <math>FF_3</math> এর <math>\bar{Q}_3 = \text{১}</math>, তাই প্রথম ক্লকেই <math>Q_0 = \text{১}</math> হয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট জনসন কাউন্টারের অবস্থা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_3</math> (পরের <math>D_0</math>) !! বিবরণ
|-
| প্রাথমিক || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সব শূন্য, পরে <math>\text{১}</math> ঢুকবে
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> বাম থেকে ঢুকছে
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> এগিয়ে চলছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || আরও এগিয়ে
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সব <math>\text{১}</math>, এবার <math>\text{০}</math> ঢুকবে
|-
| ৫ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> বাম থেকে ঢুকছে
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> এগিয়ে চলছে
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আরও এগিয়ে
|-
| ৮ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরে এলো
|}
মোট ৮টি ভিন্ন অবস্থা, প্রতি ৮ ক্লকে চক্র সম্পন্ন। ৪টি ফ্লিপ-ফ্লপে <math>2 \times \text{৪} = \text{৮}</math>টি অবস্থা।
প্যাটার্নটা লক্ষ করো: প্রথমে ডান থেকে বামে <math>\text{১}</math> ভরতে থাকে, তারপর ডান থেকে বামে <math>\text{০}</math> ভরতে থাকে। এই ঢেউ-খেলানো প্যাটার্নই জনসন কাউন্টারের বিশেষত্ব।
=== রিং ও জনসন কাউন্টারের তুলনা ===
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং বনাম জনসন কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! জনসন কাউন্টার
|-
| ফিডব্যাক || <math>Q_{n-1}</math> সরাসরি || <math>\bar{Q}_{n-1}</math> উল্টানো
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2n</math>টি
|-
| প্রাথমিক অবস্থা লোড || প্রয়োজন (<math>\text{১}</math> দিয়ে শুরু) || সহজ (সব <math>\text{০}</math> থেকে স্বয়ংক্রিয়)
|-
| ডিকোডার প্রয়োজন || না || না (তবে আউটপুট রাশি লাগতে পারে)
|-
| প্যাটার্ন || একটি <math>\text{১}</math> ঘুরতে থাকে || <math>\text{১}</math> ভরে তারপর <math>\text{০}</math> ভরে
|-
| অবৈধ অবস্থা || আছে (সব <math>\text{০}</math>) || তুলনামূলক কম
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি (<math>n</math>টিতে <math>2n</math> অবস্থা)
|-
| প্রয়োগ || ডিকোডার বিকল্প, সিকোয়েন্সার || ফেজ জেনারেটর, ডিসপ্লে নিয়ন্ত্রণ
|}
=== রিং বনাম বাইনারি কাউন্টার ===
বাইনারি কাউন্টারও গণনা করে, কিন্তু পদ্ধতি সম্পূর্ণ আলাদা। কোনটা কখন ব্যবহার করবে সেটা বোঝার জন্য তুলনাটা জানা দরকার।
{| class="wikitable" style="width:100%; text-align:center;"
|+ রিং কাউন্টার বনাম বাইনারি কাউন্টার
! বৈশিষ্ট্য !! রিং কাউন্টার !! বাইনারি কাউন্টার
|-
| <math>n</math> ফ্লিপ-ফ্লপে অবস্থা || <math>n</math>টি || <math>2^n</math>টি
|-
| ৪ ফ্লিপ-ফ্লপে অবস্থা || <math>\text{৪}</math>টি || <math>\text{১৬}</math>টি
|-
| নির্দিষ্ট অবস্থা চিনতে ডিকোডার || লাগে না || লাগে
|-
| সার্কিট জটিলতা || কম || বেশি
|-
| আউটপুট পড়া || সহজ (এক ফ্লিপ-ফ্লপ = এক অবস্থা) || জটিল (ডিকোডার লাগে)
|-
| ফ্লিপ-ফ্লপের দক্ষতা || কম || বেশি
|-
| গতি || বেশি (গেট দেরি কম) || কম (রিপল ক্যারির কারণে)
|-
| উপযুক্ত প্রয়োগ || স্টেট মেশিন, সিকোয়েন্সার || বড় পরিসরের গণনা
|}
সহজ কথায়: কম অবস্থা কিন্তু সহজ ডিজাইন চাইলে রিং, বেশি অবস্থা চাইলে বাইনারি।
=== বাস্তব প্রয়োগ ===
==== ডিকোডার ছাড়া স্টেট মেশিন ====
একটি ট্রাফিক লাইট নিয়ন্ত্রক কল্পনা করো যার তিনটি অবস্থা: লাল, হলুদ, সবুজ। বাইনারি কাউন্টার ব্যবহার করলে তিনটি অবস্থা চেনাতে একটি ডিকোডার লাগবে। কিন্তু ৩-বিট রিং কাউন্টার ব্যবহার করলে তিনটি ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট সরাসরি লাল, হলুদ ও সবুজ আলোর সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রিং কাউন্টার দিয়ে ট্রাফিক লাইট
! <math>Q_2</math> (লাল) !! <math>Q_1</math> (হলুদ) !! <math>Q_0</math> (সবুজ) !! সক্রিয় আলো
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || সবুজ জ্বলছে
|-
| <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || হলুদ জ্বলছে
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || লাল জ্বলছে
|}
==== ফেজ জেনারেটর ====
জনসন কাউন্টার ফেজ জেনারেটর হিসেবে ব্যাপকভাবে ব্যবহৃত হয়। <math>n</math>-বিট জনসন কাউন্টার <math>2n</math>টি সমান ফেজে বিভক্ত সংকেত তৈরি করতে পারে।
তিন-ফেজ মোটর নিয়ন্ত্রণে ৩-বিট জনসন কাউন্টার ব্যবহার করা হয়। এটি ৬টি অবস্থায় ঘুরে মোটরের তিনটি তারে সঠিক সময়ে সংকেত পাঠায়।
==== ডিসপ্লে স্ক্যানিং ====
বড় এলইডি ডিসপ্লেতে একসাথে সব সারি জ্বালানো সম্ভব নয়, তাই রিং কাউন্টার দিয়ে একের পর এক সারি সক্রিয় করা হয়। এত দ্রুত ঘটে যে চোখে সব সারি একসাথে জ্বলছে মনে হয়।
==== স্টেপার মোটর নিয়ন্ত্রণ ====
স্টেপার মোটরে চারটি কয়েল আছে। প্রতিটি ক্লকে একটি করে কয়েল চালু হলে মোটর ঘোরে। ৪-বিট রিং কাউন্টারের চারটি আউটপুট সরাসরি চারটি কয়েলের সাথে সংযুক্ত করলেই কাজ হয়।
{| class="wikitable" style="width:100%;"
|+ রিং ও জনসন কাউন্টারের ব্যবহারিক প্রয়োগ
! প্রয়োগক্ষেত্র !! কোন কাউন্টার !! বিস্তারিত
|-
| ট্রাফিক লাইট সিকোয়েন্সার || রিং || প্রতিটি অবস্থা সরাসরি একটি আলোকে নিয়ন্ত্রণ করে, ডিকোডার লাগে না
|-
| এলইডি ম্যাট্রিক্স স্ক্যানিং || রিং || সারি ক্রমান্বয়ে সক্রিয় করে দ্রুতগতিতে
|-
| মোটর ড্রাইভ ফেজ নিয়ন্ত্রণ || জনসন || ৩-ফেজ বা ৬-ফেজ সংকেত তৈরি করে
|-
| স্টেপার মোটর নিয়ন্ত্রণ || রিং || মোটরের কয়েলগুলো ক্রমান্বয়ে চালু করে
|-
| সিউডো-র্যান্ডম প্যাটার্ন || জনসন || পরীক্ষামূলক সংকেত তৈরিতে
|-
| মেমোরি রিফ্রেশ নিয়ন্ত্রক || রিং || ডায়নামিক র্যামের সারি ক্রমান্বয়ে রিফ্রেশ করে
|-
| ডিজিটাল ঘড়ির নির্দেশক || রিং || এলইডি বৃত্তে সেকেন্ড দেখানোর জন্য
|}
== উদাহরণ ==
=== উদাহরণ ১: ৩-বিট রিং কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math>। প্রতিটি ক্লকের পর অবস্থা নির্ণয় করো এবং চক্রের দৈর্ঘ্য বলো।
ডি ফ্লিপ-ফ্লপের নিয়ম: <math>Q_{n+1} = D = \text{আগের}</math> (রিং সংযোগে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রিং কাউন্টারের ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ব্যাখ্যা
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> একধাপ এগিয়েছে
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> আরও এগিয়েছে
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রাথমিক অবস্থায় ফিরেছে
|}
চক্রের দৈর্ঘ্য = ৩ ক্লক। মোট অবস্থা = ৩টি ✓
=== উদাহরণ ২: ৩-বিট জনসন কাউন্টারের বিশ্লেষণ ===
একটি ৩-বিট জনসন কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০০}</math>। সম্পূর্ণ চক্র বের করো।
জনসন নিয়ম: <math>D_0 = \bar{Q}_2</math>, <math>D_1 = Q_0</math>, <math>D_2 = Q_1</math>
ধাপে ধাপে হিসাব:
ক্লক ০ থেকে ১: <math>\bar{Q}_2 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{০}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০১}</math>
ক্লক ১ থেকে ২: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০১১}</math>
ক্লক ২ থেকে ৩: <math>\bar{Q}_2 = \text{১}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১১}</math>
ক্লক ৩ থেকে ৪: <math>\bar{Q}_2 = \overline{\text{১}} = \text{০}</math>, <math>D_1 = \text{১}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১১০}</math>
ক্লক ৪ থেকে ৫: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{১}</math>।
নতুন অবস্থা: <math>\text{১০০}</math>
ক্লক ৫ থেকে ৬: <math>\bar{Q}_2 = \text{০}</math>, <math>D_1 = \text{০}</math>, <math>D_2 = \text{০}</math>।
নতুন অবস্থা: <math>\text{০০০}</math> (প্রাথমিক অবস্থায় ফিরেছে)
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math>
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
মোট অবস্থা = ৬টি = <math>\text{২} \times \text{৩}</math> ✓
=== উদাহরণ ৩: রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার ===
একটি সার্কিটে চারটি কাজ ক্রমান্বয়ে করতে হবে: মোটর চালু, ভাল্ব খোলা, সেন্সর পড়া, ভাল্ব বন্ধ। বাইনারি কাউন্টার ব্যবহার করলে চারটি আউটপুটের জন্য ২-তে-৪ ডিকোডার লাগত। রিং কাউন্টারে ৪টি ফ্লিপ-ফ্লপের <math>Q_0, Q_1, Q_2, Q_3</math> সরাসরি চারটি কাজের সাথে সংযুক্ত করা যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার
! ক্লক !! <math>Q_0</math> (মোটর) !! <math>Q_1</math> (ভাল্ব খোলা) !! <math>Q_2</math> (সেন্সর) !! <math>Q_3</math> (ভাল্ব বন্ধ) !! সক্রিয় কাজ
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || মোটর চালু
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ভাল্ব খোলা
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || সেন্সর পড়া
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ভাল্ব বন্ধ
|}
কোনো ডিকোডার ছাড়াই চারটি ধাপ সম্পন্ন হচ্ছে।
=== উদাহরণ ৪: জনসন কাউন্টার থেকে ফেজ সংকেত ===
একটি ২-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র বের করো এবং দেখাও এটি কীভাবে ৪টি ফেজ সংকেত তৈরি করে।
প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>, ফিডব্যাক: <math>D_0 = \bar{Q}_1</math>, <math>D_1 = Q_0</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ ২-বিট জনসন কাউন্টারের চক্র
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! <math>\bar{Q}_1</math> (পরের <math>D_0</math>) !! ফেজ
|-
| ০ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || ফেজ খ
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ফেজ গ
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ফেজ ঘ
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ফেজ ক (পুনরায়)
|}
মোট <math>\text{২} \times \text{২} = \text{৪}</math>টি ভিন্ন ফেজ সংকেত ✓
=== উদাহরণ ৫: অবৈধ অবস্থা থেকে পুনরুদ্ধার বিশ্লেষণ ===
একটি ৪-বিট রিং কাউন্টার ভুলক্রমে <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math> অবস্থায় চলে গেছে (সব <math>\text{০}</math>)। পরের কয়েকটি ক্লকে কী হবে?
ধাপে ধাপে: প্রতিটি ক্লকে <math>FF_3</math> এর <math>Q_3 = \text{০}</math> ফিরে <math>D_0</math> তে যায়। তাই <math>Q_0</math> সবসময় <math>\text{০}</math> হয়। সব ফ্লিপ-ফ্লপই <math>\text{০}</math> পাচ্ছে, ফলে সব <math>\text{০}</math>ই থাকবে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ অবৈধ অবস্থা থেকে পুনরুদ্ধার হয় না
! ক্লক !! <math>Q_3 Q_2 Q_1 Q_0</math> !! মন্তব্য
|-
| ০ || <math>\text{০০০০}</math> || অবৈধ অবস্থা
|-
| ১ || <math>\text{০০০০}</math> || আটকে আছে
|-
| ২ || <math>\text{০০০০}</math> || আটকে আছে
|}
এই কারণে রিং কাউন্টারে স্ব-সংশোধন সার্কিট যোগ করা হয়। যখন সব আউটপুট <math>\text{০}</math> হয়, একটি নর গেট দিয়ে সেটি শনাক্ত করে <math>FF_0</math> এর ইনপুটে জোর করে <math>\text{১}</math> পাঠানো হয়:
:<math>D_0 = Q_3 + \overline{Q_0 + Q_1 + Q_2 + Q_3}</math>
যখন সব শূন্য: <math>\overline{Q_0 + Q_1 + Q_2 + Q_3} = \overline{\text{০}} = \text{১}</math>, তাই <math>D_0 = \text{১}</math> এবং কাউন্টার স্বয়ংক্রিয়ভাবে সচল হয়ে যায়।
== অনুশীলনী ==
# একটি <math>\text{৫}</math>-বিট রিং কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# একটি <math>\text{৫}</math>-বিট জনসন কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
# ৩-বিট রিং কাউন্টারে প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{১০০}</math> হলে পরের দুটি অবস্থা কী কী?
# জনসন কাউন্টারে ফিডব্যাক সংযোগ রিং কাউন্টার থেকে কীভাবে আলাদা?
# ৪-বিট জনসন কাউন্টারে ক্লক ৩-এর পর অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math> হলে ক্লক ৪-এর পর অবস্থা কী হবে?
# কোন পরিস্থিতিতে বাইনারি কাউন্টারের চেয়ে রিং কাউন্টার বেশি সুবিধাজনক?
# একটি রিং কাউন্টার সব শূন্য অবস্থায় আটকে গেলে স্ব-সংশোধনের জন্য কোন গেট ব্যবহার করা যায়?
# ৪-বিট রিং কাউন্টারে কতটি ক্লকে চক্র সম্পন্ন হয় এবং ৪-বিট জনসন কাউন্টারে কতটি ক্লকে?
# একটি স্টেপার মোটরে ৪টি কয়েল ক্রমান্বয়ে চালু করতে কোন কাউন্টার ব্যবহার করবে এবং কেন?
# ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০১০}</math> হলে সম্পূর্ণ চক্রের অবস্থাগুলো টেবিল আকারে লেখো।
'''উত্তর:'''
# <math>\text{৫}</math>-বিট রিং কাউন্টারে <math>\text{৫}</math>টি ভিন্ন অবস্থা।
# <math>\text{৫}</math>-বিট জনসন কাউন্টারে <math>\text{২} \times \text{৫} = \text{১০}</math>টি ভিন্ন অবস্থা।
# ক্লক ১-এর পর: <math>\text{০১০}</math>। ক্লক ২-এর পর: <math>\text{০০১}</math>।
# রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>Q</math> সরাসরি প্রথমটিতে যায়। জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের <math>\bar{Q}</math> (পরিপূরক) যায়।
# <math>D_0 = \bar{Q}_3 = \overline{\text{০}} = \text{১}</math>, <math>D_1 = Q_0 = \text{১}</math>, <math>D_2 = Q_1 = \text{১}</math>, <math>D_3 = Q_2 = \text{১}</math>। নতুন অবস্থা: <math>\text{১১১১}</math>।
# যখন অবস্থা সংখ্যা কম কিন্তু প্রতিটি অবস্থা সরাসরি একটি আউটপুট নিয়ন্ত্রণ করে এবং ডিকোডার ছাড়া কাজ করতে হয়।
# নর গেট দিয়ে সব আউটপুট শূন্য শনাক্ত করে <math>D_0</math> তে <math>\text{১}</math> পাঠানো যায়।
# ৪-বিট রিং কাউন্টারে <math>\text{৪}</math> ক্লকে এবং ৪-বিট জনসন কাউন্টারে <math>\text{৮}</math> ক্লকে চক্র সম্পন্ন হয়।
# রিং কাউন্টার। কারণ ৪টি ফ্লিপ-ফ্লপের প্রতিটি আউটপুট সরাসরি একটি কয়েলের সাথে সংযুক্ত করা যায়, কোনো ডিকোডার লাগে না।
# ক্লক ০: <math>\text{০১০}</math>; ক্লক ১: <math>\text{১০০}</math>; ক্লক ২: <math>\text{০০১}</math>; ক্লক ৩: <math>\text{০১০}</math> (পুনরাবৃত্তি)।
== রেজিস্টারের ব্যবহারিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা শিফট রেজিস্টার, রিং কাউন্টার এবং জনসন কাউন্টার দেখেছিলাম। সেগুলো ছিল রেজিস্টারের ভেতরের গল্প। এই ভাগে আমরা দেখব রেজিস্টার বাস্তব পৃথিবীতে কীভাবে কাজ করে। কম্পিউটার, মোবাইল ফোন, ইন্টারনেট সংযোগ, এমনকি তোমার মাউসের ক্লিক পর্যন্ত পৌঁছানোর পেছনে রেজিস্টার কাজ করছে।
=== ধারাবাহিক-সমান্তরাল ও সমান্তরাল-ধারাবাহিক রূপান্তর ===
একটু কল্পনা করো। তুমি ঢাকা থেকে চট্টগ্রামে আটটি বাক্স পাঠাবে। দুটো উপায় আছে। প্রথম উপায়: আটটি বাক্স একসাথে আটটি ট্রাকে তুলে একই সময়ে পাঠাও। দ্বিতীয় উপায়: একটি মাত্র ট্রাকে একটি একটি করে বাক্স আলাদা সময়ে পাঠাও।
প্রথম পদ্ধতিটা দ্রুত কিন্তু খরচ বেশি (আটটি ট্রাক লাগে)। দ্বিতীয় পদ্ধতিটা ধীর কিন্তু খরচ কম (একটি ট্রাকই যথেষ্ট)।
ডিজিটাল ইলেকট্রনিক্সেও ঠিক এই দুটো পদ্ধতি আছে। আটটি বিট একসাথে পাঠানো হলো সমান্তরাল পদ্ধতি, আর একটি একটি করে পাঠানো হলো ধারাবাহিক পদ্ধতি। ট্রাকের জায়গায় এখানে তার।
==== সমান্তরাল থেকে ধারাবাহিক রূপান্তর ====
প্রসেসরের ভেতরে সব বিট একসাথে চলাচল করে (সমান্তরাল)। কিন্তু যখন এই তথ্য বাইরে পাঠাতে হয়, যেমন ইন্টারনেট কেবলে বা ইউএসবিতে, তখন একটি মাত্র তারে একটি একটি করে পাঠানো হয় (ধারাবাহিক)। এই রূপান্তরের কাজটি করে সমান্তরাল থেকে ধারাবাহিক শিফট রেজিস্টার।
কীভাবে কাজ করে:
# প্রথমে সব বিট একসাথে রেজিস্টারে লোড হয় (সমান্তরাল লোড)
# তারপর প্রতিটি ক্লকে একটি করে বিট বাইরে বেরিয়ে যায়
# ৮ ক্লকে একটি বাইট (৮ বিট) সম্পূর্ণ বেরিয়ে যায়
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরের উদাহরণ
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! ধারাবাহিক আউটপুট !! বিবরণ
|-
| লোড || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || || সব বিট একসাথে লোড
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> বেরিয়ে গেল
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_1</math> বেরিয়ে গেল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>Q_2</math> বেরিয়ে গেল
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>Q_3</math> বেরিয়ে গেল
|}
ধারাবাহিক আউটপুট ক্রম: <math>\text{১১০১}</math> (সর্বনিম্ন বিট আগে)
==== ধারাবাহিক থেকে সমান্তরাল রূপান্তর ====
অন্য প্রান্তে একই খেলার উল্টোটা হয়। একটি একটি করে বিট ঢুকছে আর রেজিস্টারে জমা হচ্ছে। সব বিট ঢুকে গেলে একসাথে সব পড়া যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট ধারাবাহিক থেকে সমান্তরাল রূপান্তরের উদাহরণ
! ক্লক !! ধারাবাহিক ইনপুট !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বিবরণ
|-
| শুরু || || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রেজিস্টার ফাঁকা
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || প্রথম বিট ঢুকল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || দ্বিতীয় বিট ঢুকল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || তৃতীয় বিট ঢুকল
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || চতুর্থ বিট ঢুকল, সম্পূর্ণ
|}
চার ক্লক পরে সমান্তরাল আউটপুট একসাথে পড়া যায়: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০১১}</math>
==== যোগাযোগ ব্যবস্থায় প্রয়োগ ====
দৈনন্দিন জীবনে এই রূপান্তর কোথায় কোথায় দেখা যায় সেটা একটু বোঝা দরকার।
ইউএআরটি হলো সেই যন্ত্র যা কম্পিউটারের সমান্তরাল তথ্যকে ধারাবাহিকে পরিণত করে পাঠায় এবং আসা ধারাবাহিক তথ্যকে সমান্তরালে পরিণত করে গ্রহণ করে। পুরোনো মডেম, জিপিএস রিসিভার এবং অনেক মাইক্রোকন্ট্রোলার ইউএআরটি ব্যবহার করে।
ইউএসবিতেও একই কাজ হয়, তবে আরও দ্রুত এবং জটিল নিয়মে। কম্পিউটারের ভেতরে তথ্য ৩২ বা ৬৪ বিট সমান্তরালে চলে, কিন্তু ইউএসবি কেবলে মাত্র দুটো তারে ধারাবাহিকভাবে যায়।
{| class="wikitable" style="width:100%;"
|+ যোগাযোগ মানের তুলনা
! মান !! পদ্ধতি !! সর্বোচ্চ গতি !! তারের সংখ্যা !! প্রয়োগ
|-
| ইউএআরটি || ধারাবাহিক || কয়েক মেগাবিট/সেকেন্ড || ২ (পাঠানো ও গ্রহণ) || মাইক্রোকন্ট্রোলার, জিপিএস
|-
| ইউএসবি ২.০ || ধারাবাহিক || ৪৮০ মেগাবিট/সেকেন্ড || ৪ || মাউস, কীবোর্ড, পেনড্রাইভ
|-
| ইউএসবি ৩.০ || ধারাবাহিক || ৫ গিগাবিট/সেকেন্ড || ৯ || বাহ্যিক হার্ড ড্রাইভ
|-
| এসপিআই || ধারাবাহিক || কয়েকশো মেগাবিট/সেকেন্ড || ৪ || মেমোরি কার্ড, সেন্সর
|-
| সমান্তরাল বাস || সমান্তরাল || কম (তারের মধ্যে হস্তক্ষেপ) || ৩২ বা ৬৪ || পুরোনো কম্পিউটারের ভেতরে
|}
==== সম্পূর্ণ উদাহরণ: একটি বাইট পাঠানো ও গ্রহণ করা ====
ধরো, একটি কম্পিউটার থেকে আরেকটিতে 'A' অক্ষরটি পাঠাতে হবে। 'A' অক্ষরের বাইনারি কোড হলো <math>\text{০১০০০০০১}</math>।
পাঠানোর পদ্ধতি:
ধাপ ১: ৮ বিট একসাথে রেজিস্টারে লোড হয়: <math>Q_7 Q_6 Q_5 Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০১০০০০০১}</math>
ধাপ ২: প্রতিটি ক্লকে একটি বিট বেরিয়ে যায়, সর্বনিম্ন বিট আগে:
{| class="wikitable" style="text-align:center; width:90%;"
|+ 'A' অক্ষর পাঠানোর ধাপ
! ক্লক !! পাঠানো বিট !! অবশিষ্ট রেজিস্টার
|-
| ১ || <math>\text{১}</math> (<math>Q_0</math>) || <math>\text{০০১০০০০০}</math>
|-
| ২ || <math>\text{০}</math> (<math>Q_1</math>) || <math>\text{০০০১০০০০}</math>
|-
| ৩ || <math>\text{০}</math> (<math>Q_2</math>) || <math>\text{০০০০১০০০}</math>
|-
| ৪ || <math>\text{০}</math> (<math>Q_3</math>) || <math>\text{০০০০০১০০}</math>
|-
| ৫ || <math>\text{০}</math> (<math>Q_4</math>) || <math>\text{০০০০০০১০}</math>
|-
| ৬ || <math>\text{০}</math> (<math>Q_5</math>) || <math>\text{০০০০০০০১}</math>
|-
| ৭ || <math>\text{১}</math> (<math>Q_6</math>) || <math>\text{০০০০০০০০}</math>
|-
| ৮ || <math>\text{০}</math> (<math>Q_7</math>) || <math>\text{০০০০০০০০}</math>
|}
ধাপ ৩: গ্রহণকারী প্রান্তে আরেকটি শিফট রেজিস্টার এই বিটগুলো একটি একটি করে গ্রহণ করে। ৮ ক্লক পরে রেজিস্টারে জমা হয় <math>\text{০১০০০০০১}</math>, যা আবার 'A' অক্ষর।
এভাবে মাত্র দুটি তারে একটি সম্পূর্ণ অক্ষর পাঠানো হয়।
=== সময় বিলম্ব সার্কিট ===
জীবনে অনেক জায়গায় ইচ্ছাকৃতভাবে দেরি করা দরকার হয়। সিনেমায় গান শেষ হওয়ার পর আলো ধীরে জ্বলে ওঠে, মঞ্চে কথা বলার পর মাইক থেকে শব্দ একটু দেরিতে শোনা যায়, ক্যামেরায় ছবি তোলার পর ফ্ল্যাশ একটু পরে জ্বলে।
ডিজিটাল সার্কিটেও এই "ইচ্ছাকৃত দেরি" দরকার হয়। শিফট রেজিস্টার দিয়ে ঠিক এই কাজটি করা হয়।
==== কীভাবে বিলম্ব তৈরি হয় ====
ডি ফ্লিপ-ফ্লপে ইনপুট এক ক্লক পরে আউটপুটে আসে। তাই <math>n</math>টি ফ্লিপ-ফ্লপ শ্রেণিবদ্ধ করলে ইনপুট <math>n</math> ক্লক পরে আউটপুটে আসে।
:<math>\text{বিলম্ব} = n \times \text{ক্লক}</math>
যেখানে <math>\text{ক্লক}</math> হলো এক ক্লকের সময়কাল।
উদাহরণ: ক্লক কম্পাঙ্ক ১ মেগাহার্টজ হলে <math>\text{ক্লক} = \text{১}</math> মাইক্রোসেকেন্ড। ৮টি ফ্লিপ-ফ্লপ দিলে বিলম্ব হবে <math>\text{৮}</math> মাইক্রোসেকেন্ড।
{| class="wikitable" style="text-align:center; width:80%;"
|+ বিলম্বের উদাহরণ (ক্লক = ১ মেগাহার্টজ)
! ফ্লিপ-ফ্লপ সংখ্যা !! বিলম্ব !! ব্যবহার
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> মাইক্রোসেকেন্ড || স্বল্প বিলম্ব সার্কিট
|-
| <math>\text{৮}</math> || <math>\text{৮}</math> মাইক্রোসেকেন্ড || বাইট সংরক্ষণ ও বিলম্ব
|-
| <math>\text{১৬}</math> || <math>\text{১৬}</math> মাইক্রোসেকেন্ড || পাইপলাইন সার্কিট
|-
| <math>\text{১০০০}</math> || <math>\text{১}</math> মিলিসেকেন্ড || শব্দ প্রক্রিয়াকরণ বিলম্ব
|}
==== টাইমিং বিশ্লেষণ ====
একটি ৪-বিট বিলম্ব রেজিস্টারে যদি ইনপুট প্যাটার্ন <math>\text{১০১১}</math> দেওয়া হয় (একটি বিট প্রতি ক্লকে), তাহলে আউটপুটে ঠিক ৪ ক্লক পরে একই প্যাটার্ন পাওয়া যাবে:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট বিলম্ব রেজিস্টারের টাইমিং
! ক্লক !! ইনপুট <math>D</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! আউটপুট <math>Q_3</math>
|-
| ০ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৫ || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| ৬ || || || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|-
| ৭ || || || || <math>\text{০}</math> || <math>\text{১}</math>
|}
আউটপুটে ঠিক ৪ ক্লক পরে ইনপুটের প্যাটার্ন দেখা যাচ্ছে ✓
==== সংকেত প্রক্রিয়াকরণে প্রয়োগ ====
শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার অত্যন্ত গুরুত্বপূর্ণ। যখন দুটো মাইক্রোফোন থেকে শব্দ ধরা হয়, তখন একটি মাইক্রোফোনের শব্দ কিছুটা আগে আসে (সূত্রটি কাছে থাকায়)। বিলম্ব রেজিস্টার দিয়ে সেই পার্থক্য সমান করা হয়।
ডিজিটাল ইকো তৈরিতেও বিলম্ব রেজিস্টার ব্যবহার হয়। মূল শব্দ রেজিস্টারে ঢুকিয়ে নির্দিষ্ট বিলম্বের পর বের করলে সেটা ইকোর মতো শোনায়।
=== ক্রমানুসারী সংকেত তৈরি ===
কখনো কখনো একটি নির্দিষ্ট বিট প্যাটার্ন বারবার তৈরি করা দরকার হয়। যেমন রেডিও যোগাযোগে একটি পরিচিত প্যাটার্ন বারবার পাঠানো হয় যাতে গ্রহণকারী বুঝতে পারে সংকেত সঠিকভাবে আসছে।
==== রৈখিক প্রতিক্রিয়া শিফট রেজিস্টার ====
একটি শিফট রেজিস্টারের কয়েকটি নির্দিষ্ট আউটপুটকে এক্স-অর গেট দিয়ে যোগ করে প্রথম ফ্লিপ-ফ্লপের ইনপুটে দিলে একটি বিশেষ ধরনের সার্কিট তৈরি হয় যা দীর্ঘ কিন্তু নির্দিষ্ট প্যাটার্ন তৈরি করে।
এই সার্কিটে <math>n</math>টি ফ্লিপ-ফ্লপ থাকলে সর্বোচ্চ <math>2^n - \text{১}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সব শূন্য ছাড়া)। এই দীর্ঘ প্যাটার্নকে দেখতে এলোমেলো মনে হয় কিন্তু আসলে নির্দিষ্ট নিয়মে তৈরি।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারের উদাহরণ
! অবস্থা !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! পরের ইনপুট (<math>Q_2 \oplus Q_1</math>)
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \oplus \text{০} = \text{০}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০} \oplus \text{১} = \text{১}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \oplus \text{০} = \text{১}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || চক্র পূর্ণ
|}
মোট <math>2^3 - \text{১} = \text{৭}</math>টি ভিন্ন অবস্থা তৈরি হতে পারে (সঠিক ট্যাপ বিন্দু বেছে নিলে)।
==== পিআরবিএস সংকেতের প্রয়োগ ====
এই দীর্ঘ সিউডো-র্যান্ডম প্যাটার্ন কোথায় কাজে লাগে?
যোগাযোগ ব্যবস্থায় পরীক্ষার জন্য: একটি নির্দিষ্ট প্যাটার্ন পাঠিয়ে গ্রহণকারী প্রান্তে মিলিয়ে দেখা হয় কোনো বিট ভুল হয়েছে কিনা।
এনক্রিপশনে: এলোমেলো দেখতে বিটের সাথে মূল তথ্যের এক্স-অর করলে তথ্য লুকিয়ে ফেলা যায়।
ওয়াইফাই ও মোবাইল নেটওয়ার্কে: বিভিন্ন ব্যবহারকারীকে আলাদা করতে বিভিন্ন প্যাটার্ন ব্যবহার করা হয়।
=== কম্পিউটারের রেজিস্টার ===
এখন পর্যন্ত আমরা ট্রানজিস্টর ও গেটের স্তরে রেজিস্টার দেখেছি। এবার একটু উপরে উঠে দেখব কম্পিউটারের মাথার ভেতরে কীভাবে রেজিস্টার কাজ করে।
একটি কম্পিউটার মূলত একটি হিসাবের মেশিন। এই মেশিনে কিছু ছোট ছোট "নোটবুক" আছে যেখানে সাময়িক হিসাব লেখা হয়। এই নোটবুকগুলোই হলো রেজিস্টার।
==== সঞ্চয়ক রেজিস্টার ====
সঞ্চয়ক হলো প্রসেসরের সবচেয়ে গুরুত্বপূর্ণ রেজিস্টার। গণনার মাঝামাঝি ফলাফল এখানে রাখা হয়।
মনে করো, তুমি মাথায় হিসাব করছ: <math>\text{৫} + \text{৩} + \text{২}</math>। প্রথমে <math>\text{৫} + \text{৩} = \text{৮}</math> মনে রাখো, তারপর সেই <math>\text{৮}</math>-এর সাথে <math>\text{২}</math> যোগ করো। এই মনে রাখার জায়গাটাই সঞ্চয়ক।
একটি যোগ অপারেশন কীভাবে হয়:
ধাপ ১: সঞ্চয়কে প্রথম সংখ্যা লোড করো: <math>A \leftarrow \text{৫}</math>
ধাপ ২: সঞ্চয়কের সাথে দ্বিতীয় সংখ্যা যোগ করো: <math>A \leftarrow A + \text{৩} = \text{৮}</math>
ধাপ ৩: ফলাফল মেমোরিতে লেখো: <math>\text{মেমোরি}[\text{ঠিকানা}] \leftarrow A</math>
==== প্রোগ্রাম কাউন্টার ====
একটি বইতে তুমি যে পৃষ্ঠা পড়ছ তার নম্বর মনে রাখো। পরের বার পড়তে বসলে ওই পৃষ্ঠা থেকে শুরু করো। প্রোগ্রাম কাউন্টার ঠিক এই কাজটি করে।
প্রোগ্রাম কাউন্টারে থাকে পরবর্তী যে নির্দেশনাটি চালাতে হবে তার মেমোরি ঠিকানা।
{| class="wikitable" style="width:100%;"
|+ প্রোগ্রাম কাউন্টারের কার্যপ্রণালী
! পরিস্থিতি !! প্রোগ্রাম কাউন্টারে কী হয়
|-
| সাধারণ নির্দেশনা চলে || স্বয়ংক্রিয়ভাবে পরের ঠিকানায় এগিয়ে যায়
|-
| লাফানো নির্দেশনা আসে || নির্দিষ্ট ঠিকানায় সরাসরি চলে যায়
|-
| ফাংশন ডাকা হয় || ফাংশনের শুরুর ঠিকানায় যায়, পুরোনো ঠিকানা স্ট্যাকে রাখে
|-
| ফাংশন শেষ হয় || স্ট্যাক থেকে পুরোনো ঠিকানা ফিরিয়ে নেয়
|-
| বিঘ্ন আসে || বর্তমান ঠিকানা সংরক্ষণ করে বিঘ্ন-নিয়ন্ত্রকের ঠিকানায় যায়
|}
==== নির্দেশনা রেজিস্টার ====
প্রোগ্রাম কাউন্টারে যে ঠিকানা থাকে, সেই ঠিকানা থেকে নির্দেশনাটি মেমোরি থেকে নিয়ে আসা হয় এবং নির্দেশনা রেজিস্টারে রাখা হয়। তারপর প্রসেসর ওই নির্দেশনাটি পড়ে বুঝে কী করতে হবে।
মনে করো একটি ক্লাসে শিক্ষক প্রতিবার বোর্ড থেকে একটি অংক পড়েন এবং সেটা মাথায় রেখে সমাধান করেন। বোর্ড হলো মেমোরি, শিক্ষকের মাথায় রাখা অংকটি হলো নির্দেশনা রেজিস্টার।
==== সাধারণ উদ্দেশ্য রেজিস্টার ====
আধুনিক প্রসেসরে অনেকগুলো রেজিস্টার থাকে যেগুলো প্রোগ্রামার ইচ্ছামতো ব্যবহার করতে পারে।
{| class="wikitable" style="width:100%; text-align:center;"
|+ প্রসেসরের রেজিস্টার ধরন
! রেজিস্টারের নাম !! সংক্ষেপ !! প্রধান কাজ !! আকার (সাধারণত)
|-
| সঞ্চয়ক || A || গণনার মধ্যবর্তী ফলাফল রাখে || ৮, ১৬, ৩২ বা ৬৪ বিট
|-
| প্রোগ্রাম কাউন্টার || PC || পরবর্তী নির্দেশনার ঠিকানা || ৩২ বা ৬৪ বিট
|-
| নির্দেশনা রেজিস্টার || IR || বর্তমান নির্দেশনা || ১৬ বা ৩২ বিট
|-
| স্ট্যাক পয়েন্টার || SP || স্ট্যাকের শীর্ষের ঠিকানা || ৩২ বা ৬৪ বিট
|-
| অবস্থা রেজিস্টার || SR || শূন্য, ঋণাত্মক, ক্যারি পতাকা || ৮ বা ১৬ বিট
|-
| সাধারণ উদ্দেশ্য || R0-R15 || যেকোনো ডেটা সংরক্ষণ || ৩২ বা ৬৪ বিট
|}
==== রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে ১৬ থেকে ৩২টি সাধারণ উদ্দেশ্য রেজিস্টার একসাথে থাকে। এই সংগ্রহটিকে রেজিস্টার ফাইল বলা হয়।
রেজিস্টার ফাইল কীভাবে কাজ করে: দুটো রেজিস্টারের নম্বর দিলে সেই দুটো রেজিস্টারের মান একসাথে পড়া যায় (দুটো পাঠ পোর্ট), এবং একটি রেজিস্টারে ফলাফল লেখা যায় (একটি লেখ পোর্ট)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ রেজিস্টার ফাইলের পাঠ পোর্ট ও লেখ পোর্ট
! পোর্ট !! ধরন !! কাজ
|-
| পাঠ পোর্ট ১ || পাঠ || প্রথম অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| পাঠ পোর্ট ২ || পাঠ || দ্বিতীয় অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
|-
| লেখ পোর্ট || লেখ || ফলাফল রেজিস্টার নম্বর ও মান দিলে সেখানে লেখে
|}
উদাহরণ: <math>R3 \leftarrow R1 + R2</math> নির্দেশনায়:
ধাপ ১: পাঠ পোর্ট ১ দিয়ে <math>R1</math> এর মান পড়া হয়
ধাপ ২: পাঠ পোর্ট ২ দিয়ে <math>R2</math> এর মান পড়া হয়
ধাপ ৩: যোগ ফল হিসাব করা হয়
ধাপ ৪: লেখ পোর্ট দিয়ে <math>R3</math>-এ ফল লেখা হয়
এই পুরো কাজটা এক ক্লকেই হতে পারে।
=== মেমোরি বাস ও রেজিস্টারের মিথস্ক্রিয়া ===
এখন একটি বড় প্রশ্ন: রেজিস্টার ও মেমোরির মধ্যে তথ্য কীভাবে যাওয়া-আসা করে?
বাস হলো তারের সেই মহাসড়ক যার উপর দিয়ে প্রসেসর, মেমোরি ও অন্যান্য যন্ত্রাংশের মধ্যে তথ্য চলাচল করে। তিন ধরনের বাস থাকে:
{| class="wikitable" style="width:100%; text-align:center;"
|+ তিন ধরনের বাস
! বাসের ধরন !! কাজ !! তারের সংখ্যা (৩২-বিট প্রসেসরে)
|-
| ঠিকানা বাস || কোন মেমোরি ঘরে যেতে হবে তা জানায় || ৩২ (বা ৬৪)
|-
| ডেটা বাস || আসল তথ্য বহন করে || ৩২ (বা ৬৪)
|-
| নিয়ন্ত্রণ বাস || পড়া না লেখা, কখন সক্রিয় ইত্যাদি নির্ধারণ করে || কয়েকটি
|}
==== মেমোরি পড়া ====
প্রসেসর যখন মেমোরি থেকে কিছু পড়তে চায়:
ধাপ ১: প্রোগ্রাম কাউন্টার থেকে ঠিকানা ঠিকানা বাসে দেওয়া হয়
ধাপ ২: নিয়ন্ত্রণ বাসে "পড়া" সংকেত দেওয়া হয়
ধাপ ৩: মেমোরি সেই ঠিকানার তথ্য ডেটা বাসে রাখে
ধাপ ৪: প্রসেসর ডেটা বাস থেকে নির্দেশনা রেজিস্টারে তথ্য নেয়
==== মেমোরি লেখা ====
প্রসেসর যখন মেমোরিতে কিছু লিখতে চায়:
ধাপ ১: ঠিকানা বাসে গন্তব্য ঠিকানা দেওয়া হয়
ধাপ ২: ডেটা বাসে রেজিস্টার থেকে লেখার তথ্য দেওয়া হয়
ধাপ ৩: নিয়ন্ত্রণ বাসে "লেখা" সংকেত দেওয়া হয়
ধাপ ৪: মেমোরি সেই ঠিকানায় তথ্য সংরক্ষণ করে
==== ক্যাশ মেমোরি ====
মেমোরি ধীর, রেজিস্টার দ্রুত। এই পার্থক্য কমাতে মাঝখানে ক্যাশ মেমোরি ব্যবহার করা হয়, যা প্রায়শই ব্যবহৃত তথ্য প্রসেসরের কাছাকাছি রেখে দেয়। ক্যাশও আসলে রেজিস্টারের মতো ফ্লিপ-ফ্লপ দিয়ে তৈরি, তবে সংখ্যায় অনেক বেশি।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মেমোরি স্তরের তুলনা
! স্তর !! আকার !! গতি !! মূল উপাদান
|-
| রেজিস্টার || কয়েক শত বাইট || ১ ক্লক || ফ্লিপ-ফ্লপ
|-
| L1 ক্যাশ || কয়েক কিলোবাইট || ৩-৫ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| L2 ক্যাশ || কয়েক মেগাবাইট || ১০-৩০ ক্লক || ফ্লিপ-ফ্লপ (SRAM)
|-
| প্রধান মেমোরি || গিগাবাইট || ১০০-২০০ ক্লক || ধারক (DRAM)
|-
| সংগ্রহণ স্তর || টেরাবাইট || লক্ষ ক্লক || চৌম্বক বা ফ্ল্যাশ
|}
=== বাস্তব প্রয়োগের বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ইউএআরটি দিয়ে তথ্য পাঠানো ====
একটি মাইক্রোকন্ট্রোলার থেকে 'B' অক্ষর (<math>\text{০১০০০০১০}</math>) একটি কম্পিউটারে পাঠাতে হবে। ইউএআরটি কীভাবে কাজ করে দেখাও।
পাঠানোর আগে: একটি শুরু বিট (<math>\text{০}</math>) যোগ করা হয়, তারপর ৮ বিট ডেটা, তারপর একটি শেষ বিট (<math>\text{১}</math>)।
{| class="wikitable" style="text-align:center; width:100%;"
|+ 'B' অক্ষর পাঠানোর পূর্ণ ক্রম
! ক্লক !! পাঠানো বিট !! বিটের ধরন !! বিবরণ
|-
| ১ || <math>\text{০}</math> || শুরু বিট || গ্রহণকারীকে সতর্ক করে
|-
| ২ || <math>\text{০}</math> || ডেটা বিট ০ (<math>Q_0</math>) || সর্বনিম্ন বিট
|-
| ৩ || <math>\text{১}</math> || ডেটা বিট ১ (<math>Q_1</math>) ||
|-
| ৪ || <math>\text{০}</math> || ডেটা বিট ২ (<math>Q_2</math>) ||
|-
| ৫ || <math>\text{০}</math> || ডেটা বিট ৩ (<math>Q_3</math>) ||
|-
| ৬ || <math>\text{০}</math> || ডেটা বিট ৪ (<math>Q_4</math>) ||
|-
| ৭ || <math>\text{০}</math> || ডেটা বিট ৫ (<math>Q_5</math>) ||
|-
| ৮ || <math>\text{১}</math> || ডেটা বিট ৬ (<math>Q_6</math>) ||
|-
| ৯ || <math>\text{০}</math> || ডেটা বিট ৭ (<math>Q_7</math>) || সর্বোচ্চ বিট
|-
| ১০ || <math>\text{১}</math> || শেষ বিট || প্রেরণ সম্পন্ন
|}
গ্রহণকারী প্রান্তে: শুরু বিট দেখে রেজিস্টার প্রস্তুত হয়, তারপর ৮টি বিট একে একে রেজিস্টারে ঢোকে। শেষ বিট দেখে বোঝে প্রেরণ শেষ। তারপর রেজিস্টারের সমান্তরাল আউটপুট থেকে 'B' অক্ষর পাওয়া যায়।
==== উদাহরণ ২: ৪-ধাপের পাইপলাইন ====
পাইপলাইন হলো বিলম্ব রেজিস্টারের একটি চমৎকার প্রয়োগ। একটি কাপড় কারখানা কল্পনা করো: একজন কাটে, আরেকজন সেলাই করে, আরেকজন বোতাম লাগায়, আরেকজন প্যাক করে। প্রত্যেকে আলাদা কাজে ব্যস্ত, কেউ বসে নেই।
প্রসেসরে একটি নির্দেশনা চালাতে চারটি ধাপ লাগে: আনো, পড়ো, চালাও, লেখো। পাইপলাইনে প্রতিটি ধাপে একটি আলাদা নির্দেশনা থাকে।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-ধাপ পাইপলাইনের সময় বিশ্লেষণ
! ক্লক !! আনো !! পড়ো !! চালাও !! লেখো
|-
| ১ || নির্দেশনা ১ || || ||
|-
| ২ || নির্দেশনা ২ || নির্দেশনা ১ || ||
|-
| ৩ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১ ||
|-
| ৪ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২ || নির্দেশনা ১
|-
| ৫ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩ || নির্দেশনা ২
|-
| ৬ || নির্দেশনা ৬ || নির্দেশনা ৫ || নির্দেশনা ৪ || নির্দেশনা ৩
|}
৪ ক্লকের বিলম্বের পর প্রতি ক্লকে একটি নির্দেশনা সম্পন্ন হচ্ছে। পাইপলাইন না থাকলে প্রতিটি নির্দেশনায় ৪ ক্লক লাগত।
প্রতিটি ধাপের মধ্যে পাইপলাইন রেজিস্টার থাকে। এই রেজিস্টারগুলোই এক ধাপের ফলাফল পরের ধাপে পৌঁছে দেয়।
==== উদাহরণ ৩: একটি সরল প্রোগ্রামের রেজিস্টার ব্যবহার ====
নিচের সরল হিসাব: <math>\text{৫} + \text{৩} - \text{২}</math> কম্পিউটার কীভাবে রেজিস্টার ব্যবহার করে করে?
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার ব্যবহারের ধাপ
! ধাপ !! নির্দেশনা !! রেজিস্টার অবস্থা !! বিবরণ
|-
| ১ || মেমোরি থেকে R1 তে ৫ লোড করো || <math>R1 = \text{৫}</math> || মেমোরি পড়া
|-
| ২ || মেমোরি থেকে R2 তে ৩ লোড করো || <math>R2 = \text{৩}</math> || মেমোরি পড়া
|-
| ৩ || R1 এবং R2 যোগ করে R3 তে রাখো || <math>R3 = \text{৮}</math> || যোগ অপারেশন
|-
| ৪ || মেমোরি থেকে R4 তে ২ লোড করো || <math>R4 = \text{২}</math> || মেমোরি পড়া
|-
| ৫ || R3 থেকে R4 বিয়োগ করে R5 তে রাখো || <math>R5 = \text{৬}</math> || বিয়োগ অপারেশন
|-
| ৬ || R5 থেকে মেমোরিতে ফল লেখো || মেমোরি = <math>\text{৬}</math> || মেমোরি লেখা
|}
প্রতিটি ধাপেই রেজিস্টার সাময়িক স্থান হিসেবে কাজ করছে।
==== উদাহরণ ৪: শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার ====
একটি ডিজিটাল ইকো যন্ত্র তৈরি করতে হবে। মূল শব্দ শোনার পরে ঠিক ০.৫ সেকেন্ড বিলম্বে একই শব্দ আবার শোনাবে।
ধরো, শব্দ নমুনার হার ৮০০০ হার্টজ অর্থাৎ প্রতি সেকেন্ডে ৮০০০টি নমুনা নেওয়া হয়।
<math>\text{বিলম্ব} = \text{০.৫} \times \text{৮০০০} = \text{৪০০০}</math> নমুনা
তাই ৪০০০টি নমুনার একটি শিফট রেজিস্টার দরকার। প্রতিটি নমুনা ৮ বিটের হলে মোট ৩২০০০টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ ইকো যন্ত্রের রেজিস্টার বিন্যাস
! উপাদান !! বিবরণ
|-
| নমুনার হার || ৮০০০ হার্টজ
|-
| বিলম্ব || ০.৫ সেকেন্ড
|-
| বিলম্বের নমুনা সংখ্যা || <math>\text{৪০০০}</math>
|-
| প্রতি নমুনার বিট || <math>\text{৮}</math>
|-
| মোট ফ্লিপ-ফ্লপ || <math>\text{৩২০০০}</math>
|-
| বাস্তবে ব্যবহার || র্যাম বা বিশেষ ডিজিটাল বিলম্ব রেখা
|}
আধুনিক যন্ত্রে এতগুলো ফ্লিপ-ফ্লপের বদলে র্যাম ব্যবহার হয়, কিন্তু ধারণাটা একই।
==== উদাহরণ ৫: প্রোগ্রাম কাউন্টারের ধাপ বিশ্লেষণ ====
একটি সরল প্রসেসরে নির্দেশনাগুলো মেমোরিতে ঠিকানা ১০০, ১০২, ১০৪, ১০৬ তে আছে (প্রতিটি নির্দেশনা ২ বাইট)। ঠিকানা ১০৪ তে একটি লাফানো নির্দেশনা আছে যা ঠিকানা ১০০ তে ফিরে যাবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ প্রোগ্রাম কাউন্টারের পরিবর্তন
! ক্লক !! প্রোগ্রাম কাউন্টার !! চলমান নির্দেশনা !! প্রোগ্রাম কাউন্টার পরিবর্তন
|-
| ১ || <math>\text{১০০}</math> || নির্দেশনা পড়ো || <math>\text{১০০} \to \text{১০২}</math>
|-
| ২ || <math>\text{১০২}</math> || নির্দেশনা পড়ো || <math>\text{১০২} \to \text{১০৪}</math>
|-
| ৩ || <math>\text{১০৪}</math> || লাফানো নির্দেশনা পড়ো || <math>\text{১০৪} \to \text{১০০}</math> (লাফ)
|-
| ৪ || <math>\text{১০০}</math> || আবার প্রথম নির্দেশনা || <math>\text{১০০} \to \text{১০২}</math>
|-
| ৫ || <math>\text{১০২}</math> || দ্বিতীয় নির্দেশনা || <math>\text{১০২} \to \text{১০৪}</math>
|}
লাফানো নির্দেশনায় প্রোগ্রাম কাউন্টার স্বাভাবিকভাবে এগোনোর বদলে ১০০-তে সরাসরি যাচ্ছে। এভাবে লুপ তৈরি হয়।
== অনুশীলনী ==
# একটি ৮-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরকারী রেজিস্টারে <math>Q_7 \ldots Q_0 = \text{১১০১০১১০}</math> লোড করা আছে। সর্বনিম্ন বিট আগে পাঠানো হলে প্রথম তিনটি ক্লকে কোন বিটগুলো বেরোবে?
# ক্লক কম্পাঙ্ক ৫ মেগাহার্টজ হলে ১০ মাইক্রোসেকেন্ড বিলম্ব পেতে কতটি ফ্লিপ-ফ্লপের শিফট রেজিস্টার দরকার?
# ইউএআরটিতে শুরু বিট কেন পাঠানো হয়?
# একটি ৪-বিট ধারাবাহিক থেকে সমান্তরাল রেজিস্টারে একে একে <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math> ঢোকানো হলে (সর্বনিম্ন বিট আগে) চার ক্লক পরে <math>Q_3 Q_2 Q_1 Q_0</math> কত হবে?
# পাইপলাইন প্রসেসরে ৪-ধাপের পাইপলাইনে ১০০টি নির্দেশনা সম্পন্ন করতে কত ক্লক লাগবে?
# রেজিস্টার ফাইলে দুটি পাঠ পোর্ট থাকার কারণ কী?
# প্রোগ্রাম কাউন্টার সাধারণত প্রতিটি নির্দেশনার পর কতটুকু বাড়ে এবং কেন?
# একটি ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারে ফিডব্যাক রাশি <math>D = Q_2 \oplus Q_0</math> এবং প্রাথমিক অবস্থা <math>Q_2 Q_1 Q_0 = \text{০০১}</math> হলে পরের তিনটি অবস্থা কী কী?
# ক্যাশ মেমোরি কেন রেজিস্টার দিয়ে তৈরি হয়, সাধারণ মেমোরি দিয়ে নয়?
# 'Z' অক্ষরের বাইনারি কোড <math>\text{০১০১১০১০}</math>। ইউএআরটিতে সর্বনিম্ন বিট আগে পাঠানো হলে বিটগুলোর ক্রম কী হবে (শুরু ও শেষ বিটসহ)?
'''উত্তর:'''
# প্রথম ক্লক: <math>Q_0 = \text{০}</math>; দ্বিতীয় ক্লক: <math>Q_1 = \text{১}</math>; তৃতীয় ক্লক: <math>Q_2 = \text{১}</math>।
# বিলম্ব = <math>n \times T_{ক্লক}</math>। <math>T_{ক্লক} = \frac{\text{১}}{\text{৫} \times \text{১০}^6} = \text{০.২}</math> মাইক্রোসেকেন্ড। তাই <math>n = \frac{\text{১০}}{\text{০.২}} = \text{৫০}</math>টি ফ্লিপ-ফ্লপ।
# শুরু বিট গ্রহণকারীকে জানায় যে ডেটা আসা শুরু হচ্ছে। এটি ছাড়া গ্রহণকারী বুঝতে পারবে না কখন থেকে বিট গণনা শুরু করবে।
# সর্বনিম্ন বিট আগে ঢোকায় বলে চার ক্লক পরে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১১০১}</math>। (বিটগুলো ডানে থেকে বামে সরে গেছে: প্রথম বিট <math>\text{১}</math> হলো <math>Q_0</math>, দ্বিতীয় <math>\text{০}</math> হলো <math>Q_1</math>, তৃতীয় <math>\text{১}</math> হলো <math>Q_2</math>, চতুর্থ <math>\text{১}</math> হলো <math>Q_3</math>।)
# পাইপলাইন ভরতে ৩ অতিরিক্ত ক্লক লাগে। তারপর প্রতি ক্লকে একটি নির্দেশনা শেষ হয়। মোট = <math>\text{১০০} + (\text{৪} - \text{১}) = \text{১০৩}</math> ক্লক।
# একটি যোগ নির্দেশনায় দুটো রেজিস্টারের মান একই সময়ে পড়া দরকার। দুটো পাঠ পোর্ট থাকলে এই কাজ একক ক্লকেই সম্পন্ন হয়, আলাদা দুটো ক্লক লাগে না।
# প্রতিটি নির্দেশনা সাধারণত ২ বা ৪ বাইট হয় বলে প্রোগ্রাম কাউন্টার ২ বা ৪ করে বাড়ে। (৩২-বিট প্রসেসরে সাধারণত ৪ করে বাড়ে কারণ প্রতিটি নির্দেশনা ৪ বাইট।)
# ক্লক ১: <math>D = Q_2 \oplus Q_0 = \text{০} \oplus \text{১} = \text{১}</math>। নতুন অবস্থা: <math>\text{০০০} \to Q_0=\text{১},\ \text{অবস্থা} = \text{০০১}</math> না, সঠিকভাবে: প্রাথমিক <math>\text{০০১}</math>; ক্লক ১: <math>D=\text{০}\oplus\text{১}=\text{১}</math>, নতুন: <math>\text{০১০} \to Q_0=\text{১}</math> না। ধাপে ধাপে: <math>Q_2 Q_1 Q_0 = \text{০০১}</math>; <math>D = \text{০} \oplus \text{১} = \text{১}</math>; পরের অবস্থা <math>\text{১০০} \to</math> না, শিফট বাম: <math>Q_2 \leftarrow Q_1 = \text{০},\ Q_1 \leftarrow Q_0 = \text{০},\ Q_0 \leftarrow D = \text{১}</math>। তাই: ক্লক ১: <math>\text{০০১}</math>; ক্লক ২: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{০১১}</math>; ক্লক ৩: <math>D = \text{০}\oplus\text{১}=\text{১}</math>, অবস্থা <math>\text{১১১}</math>।
# রেজিস্টার (ফ্লিপ-ফ্লপ) ক্লক-সিঙ্ক্রোনাস এবং প্রসেসরের মতোই দ্রুত কারণ একই চিপে তৈরি। সাধারণ মেমোরি (ডিআরএম) অনেক ধীর এবং আলাদা ঘড়ি দরকার।
# পাঠানোর ক্রম: <math>\text{০}</math> (শুরু), <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math>, <math>\text{০}</math>, <math>\text{১}</math> (শেষ)। (<math>\text{০১০১১০১০}</math> এর সর্বনিম্ন বিট থেকে: <math>Q_0=\text{০}, Q_1=\text{১}, Q_2=\text{০}, Q_3=\text{১}, Q_4=\text{১}, Q_5=\text{০}, Q_6=\text{১}, Q_7=\text{০}</math>।)
== উন্নত রেজিস্টার ও আধুনিক প্রয়োগ ==
আগের ভাগগুলোতে আমরা রেজিস্টারের মূল ধারণা, সমান্তরাল লোড, শিফট রেজিস্টার এবং সার্বজনীন রেজিস্টার দেখেছি। এই শেষ ভাগে আমরা দেখব কীভাবে রেজিস্টারের ধারণাগুলো একত্রিত হয়ে আরও শক্তিশালী কাঠামো তৈরি করে, যেগুলো আধুনিক কম্পিউটার ও ডিজিটাল ব্যবস্থার মেরুদণ্ড।
=== ফিফো রেজিস্টার ===
==== সুপারশপের লাইনের উপমা ====
একটি সুপারশপে ক্যাশ কাউন্টারে লাইন ভাবো। যে প্রথমে লাইনে দাঁড়ায়, সে প্রথমে সেবা পায় এবং প্রথমে বেরিয়ে যায়। শেষে যে আসে, সে সবার পরে বেরোয়। কেউ লাইন টপকে আগে যেতে পারে না।
এটাই ফিফো-এর মূল নীতি। বাংলায় বলা যায় প্রথম-ঢোকা-প্রথম-বেরোনো। ডিজিটাল সার্কিটে এই ধারণা দিয়ে এমন একটি সংরক্ষণ ব্যবস্থা তৈরি হয় যেখানে ডেটা যে ক্রমে ঢোকে সেই ক্রমেই বেরোয়।
প্রিন্টারের উদাহরণ আরও পরিচিত। তুমি যখন একসাথে তিনটি ডকুমেন্ট প্রিন্ট করতে পাঠাও, প্রিন্টার সেগুলো যে ক্রমে পেয়েছে সেই ক্রমেই ছাপে। প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হয়।
==== ফিফো রেজিস্টারের গঠন ====
ফিফো রেজিস্টার মূলত একটি শিফট রেজিস্টার যেখানে ডেটা এক প্রান্ত থেকে ঢোকে এবং অন্য প্রান্ত থেকে বেরোয়।
একটি চার-ঘর ফিফো-তে চারটি সংরক্ষণ ঘর আছে। নতুন ডেটা সর্বদা লেখার প্রান্তে ঢোকে এবং পুরনো ডেটা পড়ার প্রান্ত থেকে বেরোয়। প্রতিটি ঘড়ির পালসে ডেটা এক ঘর এগিয়ে যায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো রেজিস্টারের অংশ
! style="background:#4472C4; color:white;" | অংশ
! style="background:#4472C4; color:white;" | ধরন
! style="background:#ED7D31; color:white;" | কাজ
|-
| লেখার প্রান্ত || ইনপুট || নতুন ডেটা এখানে ঢোকে
|-
| পড়ার প্রান্ত || আউটপুট || পুরনো ডেটা এখান থেকে বেরোয়
|-
| লেখার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে নতুন ডেটা ঢোকে
|-
| পড়ার সক্রিয়করণ || নিয়ন্ত্রণ || এটি সক্রিয় হলে ডেটা বেরোয়
|-
| পূর্ণ সংকেত || আউটপুট || সব ঘর ভরা থাকলে এটি সক্রিয় হয়
|-
| খালি সংকেত || আউটপুট || সব ঘর খালি থাকলে এটি সক্রিয় হয়
|}
==== পূর্ণ ও খালি সংকেত ====
ফিফো-র দুটি বিশেষ সংকেত আছে যা ব্যবস্থাপনায় সাহায্য করে।
'''পূর্ণ সংকেত:''' যখন ফিফো-র সব ঘর ভরা থাকে, তখন পূর্ণ সংকেত সক্রিয় হয়। এই সময় নতুন ডেটা ঢোকানো যাবে না। যদি ঢোকানো হয়, পুরনো ডেটা হারিয়ে যাবে। এটি সুপারশপের লাইন পূর্ণ হয়ে যাওয়ার মতো, নতুন কেউ লাইনে দাঁড়াতে পারছে না।
'''খালি সংকেত:''' যখন ফিফো-র সব ঘর খালি থাকে, তখন খালি সংকেত সক্রিয় হয়। এই সময় পড়ার চেষ্টা করলে অর্থহীন ডেটা আসবে। এটি খালি লাইন থেকে ক্যাশিয়ার কাউকে ডাকার চেষ্টার মতো।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফিফো-র অবস্থা ও সংকেত
! style="background:#4472C4; color:white;" | অবস্থা
! style="background:#70AD47; color:white;" | পূর্ণ সংকেত
! style="background:#C00000; color:white;" | খালি সংকেত
! style="background:#ED7D31; color:white;" | অনুমোদিত কাজ
|-
| সব ঘর খালি || <math>\text{০}</math> || <math>\text{১}</math> || শুধু লেখা
|-
| কিছু ঘর ভরা || <math>\text{০}</math> || <math>\text{০}</math> || লেখা ও পড়া উভয়ই
|-
| সব ঘর ভরা || <math>\text{১}</math> || <math>\text{০}</math> || শুধু পড়া
|}
==== ধাপে ধাপে ফিফো কাজের উদাহরণ ====
ধরো একটি চার-ঘর ফিফো খালি আছে। একে একে <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>, <math>\text{০০০১}</math> ডেটা ঢোকানো হলো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো-তে ডেটা ঢোকানো
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | ঘর ১ (পুরনো)
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#70AD47; color:white;" | ঘর ৪ (নতুন)
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || খালি || - || - || - || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || - || - || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০১১০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || - || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১১০০}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ৪ || লেখা <math>\text{০০০১}</math> || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || পূর্ণ সংকেত সক্রিয়
|}
এখন একে একে পড়া হলো:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো থেকে ডেটা পড়া
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | কাজ
! style="background:#70AD47; color:white;" | পড়া ডেটা
! style="background:#70AD47; color:white;" | ঘর ১
! style="background:#70AD47; color:white;" | ঘর ২
! style="background:#70AD47; color:white;" | ঘর ৩
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| ১ || পড়া || <math>\text{১০১১}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || প্রথম ঢোকা প্রথম বেরোল
|-
| ২ || পড়া || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || দ্বিতীয়টি বেরোল
|-
| ৩ || পড়া || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || - || - || তৃতীয়টি বেরোল
|-
| ৪ || পড়া || <math>\text{০০০১}</math> || - || - || - || শেষেরটি বেরোল, এখন খালি
|}
ক্রম একদম ঠিক রইল। প্রথমে যা ঢুকেছিল, প্রথমে বেরিয়েছে।
==== বাস্তব প্রয়োগ ====
'''নেটওয়ার্ক বাফারিং:''' ইন্টারনেটে ডেটা প্যাকেট আসে ঝাঁকে ঝাঁকে। কখনো অনেক প্যাকেট একসাথে আসে, কখনো কম আসে। নেটওয়ার্ক কার্ডে ফিফো বাফার থাকে যা প্যাকেটগুলো সাময়িকভাবে ধরে রাখে এবং কম্পিউটারকে যখন সুবিধা হয় তখন প্রক্রিয়া করতে দেয়। এতে প্যাকেট হারিয়ে যাওয়ার ঝুঁকি কমে।
'''প্রিন্টার স্পুলিং:''' তুমি যখন অনেকগুলো ডকুমেন্ট প্রিন্ট করতে পাঠাও, অপারেটিং সিস্টেম সেগুলো একটি ফিফো সারিতে রাখে। প্রিন্টার একটি শেষ করলে পরেরটি নেয়। তুমি এর মধ্যে অন্য কাজ করতে পারো।
'''অডিও ও ভিডিও বাফারিং:''' ইউটিউবে ভিডিও দেখার সময় নেটওয়ার্ক থেকে আসা ডেটা একটি ফিফো বাফারে জমে। খেলার গতি সমান রাখতে এই বাফার সাহায্য করে।
'''কীবোর্ড বাফার:''' তুমি দ্রুত টাইপ করলে কম্পিউটার সঙ্গে সঙ্গে প্রক্রিয়া করতে নাও পারে। কীবোর্ড বাফারে চাপা বোতামের ক্রম ফিফো হিসেবে জমে থাকে।
=== লাইফো রেজিস্টার বা স্ট্যাক ===
==== থালার স্তূপের উপমা ====
রান্নাঘরে ধোয়া থালার স্তূপ ভাবো। নতুন ধোয়া থালা সবসময় উপরে রাখা হয়। থালা নেওয়ার সময়ও সবসময় উপর থেকে নেওয়া হয়। সবশেষে রাখা থালাটি সবার আগে নেওয়া হয়।
এটাই লাইফো-এর মূল নীতি। বাংলায় বলা যায় শেষ-ঢোকা-প্রথম-বেরোনো।
আরেকটি উদাহরণ: বইয়ের স্তূপ। তুমি একটার উপর একটা বই রাখলে। পরে বই নিতে গেলে সবার উপরের বই, অর্থাৎ সবার শেষে রাখা বই, আগে হাতে আসে।
==== পুশ ও পপ অপারেশন ====
স্ট্যাকে দুটি মূল অপারেশন হয়।
'''পুশ:''' স্ট্যাকের উপরে নতুন ডেটা রাখা। থালার স্তূপে নতুন থালা উপরে দেওয়ার মতো। প্রতিটি পুশে একটি বিশেষ নির্দেশক এক ঘর উপরে ওঠে যা বলে স্ট্যাকের উপর কোথায়।
'''পপ:''' স্ট্যাকের উপর থেকে ডেটা তোলা। থালার স্তূপ থেকে উপরের থালা সরানোর মতো। প্রতিটি পপে নির্দেশক এক ঘর নিচে নামে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ স্ট্যাক অপারেশনের উদাহরণ
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#4472C4; color:white;" | ডেটা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা (উপর থেকে নিচে)
! style="background:#ED7D31; color:white;" | নির্দেশক অবস্থান
|-
| শুরু || খালি || - || খালি || ০
|-
| ১ || পুশ || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || ১
|-
| ২ || পুশ || <math>\text{০১১০}</math> || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৩ || পুশ || <math>\text{১১০০}</math> || <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ৩
|-
| ৪ || পপ || <math>\text{১১০০}</math> বেরোল || <math>\text{০১১০}</math>, <math>\text{১০১১}</math> || ২
|-
| ৫ || পপ || <math>\text{০১১০}</math> বেরোল || <math>\text{১০১১}</math> || ১
|-
| ৬ || পপ || <math>\text{১০১১}</math> বেরোল || খালি || ০
|}
লক্ষ করো ঢোকার ক্রম ছিল: <math>\text{১০১১}</math>, <math>\text{০১১০}</math>, <math>\text{১১০০}</math>। বেরোনোর ক্রম হলো: <math>\text{১১০০}</math>, <math>\text{০১১০}</math>, <math>\text{১০১১}</math>। একদম উল্টো!
==== স্ট্যাক উপচানো ও খালি থেকে পপ ====
স্ট্যাকে দুটি বিপদ আছে।
'''স্ট্যাক উপচানো:''' স্ট্যাক পূর্ণ থাকলে আরও পুশ করলে পুরনো ডেটা হারিয়ে যায়। কম্পিউটারে এটি একটি মারাত্মক ত্রুটি। অনেক নিরাপত্তা সমস্যার মূলে এই ত্রুটি আছে।
'''খালি স্ট্যাক থেকে পপ:''' স্ট্যাক খালি থাকলে পপ করলে অর্থহীন মান আসে। এটিও একটি গুরুতর ত্রুটি।
==== কম্পিউটারের ফাংশন কল স্ট্যাক ====
কম্পিউটার প্রোগ্রামে স্ট্যাকের সবচেয়ে গুরুত্বপূর্ণ প্রয়োগ হলো ফাংশন কল পরিচালনা।
ধরো তুমি একটি প্রোগ্রাম লিখেছ। মূল অংশ থেকে প্রথম ফাংশন ডাকা হলো। সেই ফাংশন থেকে দ্বিতীয় ফাংশন ডাকা হলো। দ্বিতীয় ফাংশন থেকে তৃতীয় ফাংশন ডাকা হলো।
তৃতীয় ফাংশন শেষ হলে কোথায় ফিরবে? দ্বিতীয় ফাংশনে। দ্বিতীয় ফাংশন শেষ হলে কোথায় ফিরবে? প্রথম ফাংশনে। প্রথম ফাংশন শেষ হলে কোথায় ফিরবে? মূল অংশে।
এই ফেরার ঠিকানাগুলো একটি স্ট্যাকে জমা থাকে। প্রতিটি ফাংশন ডাকার সময় ফেরার ঠিকানা স্ট্যাকে পুশ হয়। ফাংশন শেষ হলে স্ট্যাক থেকে পপ করে ফেরার ঠিকানা পাওয়া যায়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ফাংশন কলের স্ট্যাক ব্যবহার
! style="background:#4472C4; color:white;" | পদক্ষেপ
! style="background:#4472C4; color:white;" | ঘটনা
! style="background:#70AD47; color:white;" | স্ট্যাকের অবস্থা
|-
| ১ || মূল অংশ থেকে ফাংশন ক ডাকা হলো || ফেরার ঠিকানা ক পুশ
|-
| ২ || ফাংশন ক থেকে ফাংশন খ ডাকা হলো || ফেরার ঠিকানা খ পুশ
|-
| ৩ || ফাংশন খ থেকে ফাংশন গ ডাকা হলো || ফেরার ঠিকানা গ পুশ
|-
| ৪ || ফাংশন গ শেষ, ফিরল || ঠিকানা গ পপ, ফাংশন খ-তে ফিরল
|-
| ৫ || ফাংশন খ শেষ, ফিরল || ঠিকানা খ পপ, ফাংশন ক-তে ফিরল
|-
| ৬ || ফাংশন ক শেষ, ফিরল || ঠিকানা ক পপ, মূল অংশে ফিরল
|}
==== ফিফো ও লাইফো-র তুলনা ====
{| class="wikitable" style="text-align:center; width:100%;"
|+ ফিফো ও লাইফো-র তুলনামূলক সারণি
! style="background:#4472C4; color:white;" | বৈশিষ্ট্য
! style="background:#70AD47; color:white;" | ফিফো
! style="background:#C00000; color:white;" | লাইফো
|-
| বাংলা নাম || প্রথম-ঢোকা-প্রথম-বেরোনো || শেষ-ঢোকা-প্রথম-বেরোনো
|-
| উপমা || সুপারশপের লাইন || থালার স্তূপ
|-
| ঢোকার প্রান্ত || এক প্রান্ত || উপর
|-
| বেরোনোর প্রান্ত || অন্য প্রান্ত || উপর (একই)
|-
| মূল অপারেশন || লেখা ও পড়া || পুশ ও পপ
|-
| বেরোনোর ক্রম || ঢোকার একই ক্রম || ঢোকার উল্টো ক্রম
|-
| প্রধান ব্যবহার || বাফারিং, সারি || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| বিপদ || পূর্ণ বা খালি থেকে পড়া || উপচানো বা খালি থেকে পপ
|}
=== রেজিস্টার ফাইল ===
==== কেন একাধিক রেজিস্টার দরকার? ====
একটি ক্লাসঘরে একজন মাত্র ছাত্র থাকলে পড়াশোনা হবে কিন্তু একই সময়ে একাধিক বিষয় আলোচনা করা যাবে না। কিন্তু ৩০ জন ছাত্র থাকলে একটি দল গণিত করছে, আরেকটি বিজ্ঞান করছে, এভাবে একসাথে অনেক কাজ এগোতে পারে।
কম্পিউটারের প্রসেসরেও তাই। একটিমাত্র রেজিস্টার থাকলে হিসাব করার সময় বারবার মেমোরিতে যেতে হতো। কিন্তু একাধিক রেজিস্টার থাকলে মাঝখানের ফলাফল দ্রুত কাছাকাছি রাখা যায়।
আধুনিক প্রসেসরে ৮ থেকে ৩২টি সাধারণ-উদ্দেশ্য রেজিস্টার থাকে। এই রেজিস্টারগুলো একসাথে মিলে রেজিস্টার ফাইল তৈরি করে।
==== ঠিকানা দিয়ে রেজিস্টার নির্বাচন ====
রেজিস্টার ফাইলকে একটি ছোট ডাকঘরের মতো ভাবো যেখানে প্রতিটি খোপের একটি নম্বর আছে। তুমি নম্বর বললেই সঠিক খোপ খুলে যায়।
রেজিস্টার ফাইলে প্রতিটি রেজিস্টারের একটি ঠিকানা থাকে। ঠিকানা দিলে সেই রেজিস্টারে লেখা বা পড়া যায়।
৮টি রেজিস্টার থাকলে ৩ বিটের ঠিকানা দরকার (কারণ <math>\text{২}^\text{৩} = \text{৮}</math>)। ১৬টি থাকলে ৪ বিটের ঠিকানা দরকার।
==== রেজিস্টার ফাইলের গঠন ====
একটি সহজ ৪-রেজিস্টার ফাইলের গঠন:
* ৪টি রেজিস্টার: <math>R_0, R_1, R_2, R_3</math>
* প্রতিটি ৪ বিট প্রশস্ত
* পড়ার ঠিকানা: ২ বিট (<math>RA_1, RA_0</math>)
* লেখার ঠিকানা: ২ বিট (<math>WA_1, WA_0</math>)
* লেখার সক্রিয়করণ: ১ বিট
* ডেটা ইনপুট: ৪ বিট
* ডেটা আউটপুট: ৪ বিট
{| class="wikitable" style="text-align:center; width:90%;"
|+ ৪-রেজিস্টার ফাইলের ঠিকানা সারণি
! style="background:#4472C4; color:white;" | ঠিকানা <math>A_1A_0</math>
! style="background:#70AD47; color:white;" | নির্বাচিত রেজিস্টার
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| <math>\text{০০}</math> || <math>R_0</math> || প্রথম রেজিস্টার
|-
| <math>\text{০১}</math> || <math>R_1</math> || দ্বিতীয় রেজিস্টার
|-
| <math>\text{১০}</math> || <math>R_2</math> || তৃতীয় রেজিস্টার
|-
| <math>\text{১১}</math> || <math>R_3</math> || চতুর্থ রেজিস্টার
|}
==== দ্বি-পোর্ট রেজিস্টার ফাইল ====
সাধারণ রেজিস্টার ফাইলে একবারে একটি রেজিস্টার পড়া বা লেখা যায়। কিন্তু আধুনিক প্রসেসরে যোগকারী সার্কিটকে একই সময়ে দুটি রেজিস্টার পড়তে হয় এবং ফলাফল একটিতে লিখতে হয়।
এই কারণে দ্বি-পোর্ট রেজিস্টার ফাইল তৈরি হয়েছে। এতে দুটি পড়ার পোর্ট এবং একটি লেখার পোর্ট থাকে। একসাথে দুটি রেজিস্টার পড়া এবং একটিতে লেখা সম্ভব।
{| class="wikitable" style="text-align:center; width:100%;"
|+ দ্বি-পোর্ট রেজিস্টার ফাইলের সংযোগ
! style="background:#4472C4; color:white;" | সংযোগ
! style="background:#4472C4; color:white;" | বিট সংখ্যা
! style="background:#ED7D31; color:white;" | কাজ
|-
| পড়ার ঠিকানা ১ (<math>RS1</math>) || ঠিকানা বিট || প্রথম উৎস রেজিস্টার নির্বাচন
|-
| পড়ার ঠিকানা ২ (<math>RS2</math>) || ঠিকানা বিট || দ্বিতীয় উৎস রেজিস্টার নির্বাচন
|-
| লেখার ঠিকানা (<math>RD</math>) || ঠিকানা বিট || গন্তব্য রেজিস্টার নির্বাচন
|-
| পড়ার ডেটা ১ (<math>RD1</math>) || ডেটা বিট || প্রথম রেজিস্টারের মান
|-
| পড়ার ডেটা ২ (<math>RD2</math>) || ডেটা বিট || দ্বিতীয় রেজিস্টারের মান
|-
| লেখার ডেটা (<math>WD</math>) || ডেটা বিট || রেজিস্টারে যা লেখা হবে
|-
| লেখার সক্রিয়করণ || ১ বিট || সক্রিয় হলে লেখা হয়
|}
==== আধুনিক প্রসেসরে রেজিস্টার ফাইল ====
আধুনিক প্রসেসরে রেজিস্টার ফাইল অত্যন্ত গুরুত্বপূর্ণ।
'''এআরএম প্রসেসর:''' স্মার্টফোনে ব্যাপকভাবে ব্যবহৃত এআরএম প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে। প্রতিটি ৩২ বিট প্রশস্ত।
'''ইন্টেল প্রসেসর:''' আধুনিক ইন্টেল প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে যার প্রতিটি ৬৪ বিট প্রশস্ত।
'''সুপারস্কেলার প্রসেসর:''' আধুনিক প্রসেসরে একই সময়ে একাধিক নির্দেশ চালানো যায়। এর জন্য রেজিস্টার ফাইলে বহু পোর্ট থাকে।
'''রেজিস্টার পুনর্নামকরণ:''' উচ্চ কর্মক্ষমতার প্রসেসরে বাস্তব রেজিস্টারের চেয়ে অনেক বেশি ভৌত রেজিস্টার থাকে। যখন একটি নির্দেশ একটি রেজিস্টারে লিখতে চায়, তখন একটি অব্যবহৃত ভৌত রেজিস্টার দিয়ে দেওয়া হয়। এটি রেজিস্টার পুনর্নামকরণ। এতে একই রেজিস্টারে লেখার জন্য অপেক্ষা করতে হয় না।
=== রেজিস্টার সংক্রান্ত গুরুত্বপূর্ণ পরিভাষার তালিকা ===
{| class="wikitable" style="width:100%;"
|+ রেজিস্টার পরিভাষার তালিকা
! style="background:#4472C4; color:white;" | পরিভাষা
! style="background:#ED7D31; color:white;" | সংজ্ঞা
! style="background:#70AD47; color:white;" | উদাহরণ বা মন্তব্য
|-
| রেজিস্টার || একটি বা একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি দ্রুত সংরক্ষণ ব্যবস্থা || ৮-বিট রেজিস্টার = ৮টি ডি ফ্লিপ-ফ্লপ
|-
| ডি ফ্লিপ-ফ্লপ || এক বিট সংরক্ষণকারী প্রাথমিক উপাদান || <math>Q(t+\text{১}) = D(t)</math>
|-
| ঘড়ি || নিয়মিত পর্যায়ক্রমিক বর্গ তরঙ্গ যা ফ্লিপ-ফ্লপের কাজ নিয়ন্ত্রণ করে || উর্ধ্বমুখী প্রান্তে কাজ হয়
|-
| লোড || রেজিস্টারে নতুন মান ঢোকানো || লোড = <math>\text{১}</math> হলে ঘড়ির পালসে মান ঢোকে
|-
| ধারণ || রেজিস্টারের মান অপরিবর্তিত রাখা || লোড = <math>\text{০}</math> হলে মান ধরে থাকে
|-
| পরিষ্কার || রেজিস্টারের সব বিট শূন্য করা || প্রাথমিক অবস্থায় আনতে ব্যবহার হয়
|-
| শিফট || বিট এক ঘর বামে বা ডানে সরানো || বাইনারি গুণ ও ভাগে ব্যবহার হয়
|-
| ধারাবাহিক ইনপুট || শিফটের সময় প্রান্তে যে বিট ঢোকে || ডানে শিফটে বামে নতুন বিট ঢোকে
|-
| সমান্তরাল || একসাথে সব বিট || সমান্তরাল লোডে চার বিট একসাথে ঢোকে
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || প্রিন্টার সারি, নেটওয়ার্ক বাফার
|-
| লাইফো || শেষ-ঢোকা-প্রথম-বেরোনো || ফাংশন কল স্ট্যাক
|-
| পুশ || স্ট্যাকে উপরে যোগ করা || স্ট্যাক নির্দেশক এক বাড়ে
|-
| পপ || স্ট্যাকের উপর থেকে তোলা || স্ট্যাক নির্দেশক এক কমে
|-
| রেজিস্টার ফাইল || একাধিক রেজিস্টারের সমষ্টি যেখানে ঠিকানা দিয়ে প্রবেশ করা যায় || প্রসেসরে ৮ থেকে ৩২টি রেজিস্টার
|-
| সেটআপ সময় || ঘড়ির প্রান্তের আগে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| হোল্ড সময় || ঘড়ির প্রান্তের পরে ডি স্থির থাকার ন্যূনতম সময় || না মানলে ভুল মান সংরক্ষণ হয়
|-
| প্রসারণ বিলম্ব || ঘড়ির প্রান্ত থেকে আউটপুট স্থির হওয়ার সময় || সার্কিটের সর্বোচ্চ গতি নির্ধারণ করে
|-
| কম্পাঙ্ক বিভাজক || <math>\bar{Q}</math> কে <math>D</math>-তে দিলে আউটপুট কম্পাঙ্ক অর্ধেক হয় || এক বিটের গণনাকারীও বলা যায়
|-
| পূর্ণ সংকেত || ফিফো পূর্ণ হলে সক্রিয় হয় || নতুন ডেটা ঢোকানো বন্ধ করতে সংকেত
|-
| খালি সংকেত || ফিফো খালি হলে সক্রিয় হয় || পড়া বন্ধ করতে সংকেত
|-
| স্ট্যাক নির্দেশক || স্ট্যাকের বর্তমান শীর্ষ ঘরের ঠিকানা ধরে রাখে || পুশে বাড়ে, পপে কমে
|}
=== সমগ্র রেজিস্টার অধ্যায়ের সারসংক্ষেপ সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ রেজিস্টারের প্রকারভেদ ও তুলনা
! style="background:#4472C4; color:white;" | রেজিস্টারের ধরন
! style="background:#4472C4; color:white;" | মূল বৈশিষ্ট্য
! style="background:#4472C4; color:white;" | ইনপুট পদ্ধতি
! style="background:#4472C4; color:white;" | আউটপুট পদ্ধতি
! style="background:#4472C4; color:white;" | নিয়ন্ত্রণ সংকেত
! style="background:#ED7D31; color:white;" | প্রধান ব্যবহার
|-
| সরল সমান্তরাল রেজিস্টার || প্রতি পালসে লোড হয় || সমান্তরাল || সমান্তরাল || ঘড়ি || সাধারণ ডেটা সংরক্ষণ
|-
| লোড সক্রিয়করণ সহ রেজিস্টার || লোড সংকেত দিয়ে নিয়ন্ত্রিত || সমান্তরাল || সমান্তরাল || ঘড়ি, লোড || বাস ব্যবস্থা, রেজিস্টার ফাইল
|-
| ডানমুখী শিফট রেজিস্টার || বিট ডানে সরে || ধারাবাহিক (বামে) || ধারাবাহিক (ডানে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| বামমুখী শিফট রেজিস্টার || বিট বামে সরে || ধারাবাহিক (ডানে) || ধারাবাহিক (বামে) বা সমান্তরাল || ঘড়ি || ধারাবাহিক যোগাযোগ
|-
| দ্বিমুখী শিফট রেজিস্টার || দুই দিকেই শিফট || দুই প্রান্তে ধারাবাহিক || দুই প্রান্তে ধারাবাহিক বা সমান্তরাল || ঘড়ি, দিক (<math>S</math>) || গুণ ও ভাগ, ডেটা রূপান্তর
|-
| সার্বজনীন রেজিস্টার || চারটি মোড || সমান্তরাল ও ধারাবাহিক || সমান্তরাল ও ধারাবাহিক || ঘড়ি, <math>S_1</math>, <math>S_0</math> || বহুমুখী ব্যবহার
|-
| ফিফো || প্রথম-ঢোকা-প্রথম-বেরোনো || এক প্রান্তে || অন্য প্রান্তে || লেখা ও পড়া সক্রিয়করণ || বাফারিং, সারি
|-
| লাইফো/স্ট্যাক || শেষ-ঢোকা-প্রথম-বেরোনো || উপরে (পুশ) || উপর থেকে (পপ) || পুশ, পপ || ফাংশন কল, পূর্বাবস্থায় ফেরা
|-
| রেজিস্টার ফাইল || ঠিকানা দিয়ে প্রবেশ || লেখার ঠিকানায় || পড়ার ঠিকানায় || ঠিকানা, লেখার সক্রিয়করণ || প্রসেসর রেজিস্টার
|}
=== বিস্তারিত উদাহরণ ===
==== উদাহরণ ১: ফিফো-তে লেখা ও পড়া মিশিয়ে ====
একটি চার-ঘর ফিফো নিয়ে কাজ করা হচ্ছে। নিচের ধারাবাহিক ক্রিয়ার পর ফিফো-র অবস্থা কী হবে?
ক্রিয়ার তালিকা:
১. লেখো <math>\text{১১০০}</math>
২. লেখো <math>\text{০০১১}</math>
৩. লেখো <math>\text{১০১০}</math>
৪. পড়ো
৫. লেখো <math>\text{০১১০}</math>
৬. লেখো <math>\text{১১১১}</math>
৭. পড়ো
৮. পড়ো
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | ফিফো (পুরনো থেকে নতুন)
! style="background:#C00000; color:white;" | পড়া মান
! style="background:#ED7D31; color:white;" | অবস্থা
|-
| শুরু || - || খালি || - || খালি সংকেত সক্রিয়
|-
| ১ || লেখা <math>\text{১১০০}</math> || <math>\text{১১০০}</math> || - || আংশিক ভরা
|-
| ২ || লেখা <math>\text{০০১১}</math> || <math>\text{১১০০}, \text{০০১১}</math> || - || আংশিক ভরা
|-
| ৩ || লেখা <math>\text{১০১০}</math> || <math>\text{১১০০}, \text{০০১১}, \text{১০১০}</math> || - || আংশিক ভরা
|-
| ৪ || পড়া || <math>\text{০০১১}, \text{১০১০}</math> || <math>\text{১১০০}</math> || আংশিক ভরা
|-
| ৫ || লেখা <math>\text{০১১০}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}</math> || - || আংশিক ভরা
|-
| ৬ || লেখা <math>\text{১১১১}</math> || <math>\text{০০১১}, \text{১০১০}, \text{০১১০}, \text{১১১১}</math> || - || পূর্ণ সংকেত সক্রিয়
|-
| ৭ || পড়া || <math>\text{১০১০}, \text{০১১০}, \text{১১১১}</math> || <math>\text{০০১১}</math> || আংশিক ভরা
|-
| ৮ || পড়া || <math>\text{০১১০}, \text{১১১১}</math> || <math>\text{১০১০}</math> || আংশিক ভরা
|}
শেষ অবস্থায় ফিফো-তে আছে <math>\text{০১১০}</math> ও <math>\text{১১১১}</math>।
==== উদাহরণ ২: স্ট্যাকে পুশ ও পপ ====
একটি স্ট্যাকে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে স্ট্যাকের অবস্থা দেখাও।
ক্রিয়ার তালিকা:
১. পুশ <math>\text{১০১০}</math>
২. পুশ <math>\text{১১০০}</math>
৩. পুশ <math>\text{০১১১}</math>
৪. পপ
৫. পুশ <math>\text{০০০১}</math>
৬. পপ
৭. পপ
৮. পপ
{| class="wikitable" style="text-align:center; width:90%;"
|+ উদাহরণ ২-এর স্ট্যাক অপারেশন
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | স্ট্যাক (উপর থেকে নিচে)
! style="background:#C00000; color:white;" | পপ করা মান
|-
| শুরু || - || খালি || -
|-
| ১ || পুশ <math>\text{১০১০}</math> || <math>\text{১০১০}</math> || -
|-
| ২ || পুশ <math>\text{১১০০}</math> || <math>\text{১১০০}, \text{১০১০}</math> || -
|-
| ৩ || পুশ <math>\text{০১১১}</math> || <math>\text{০১১১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৪ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০১১১}</math>
|-
| ৫ || পুশ <math>\text{০০০১}</math> || <math>\text{০০০১}, \text{১১০০}, \text{১০১০}</math> || -
|-
| ৬ || পপ || <math>\text{১১০০}, \text{১০১০}</math> || <math>\text{০০০১}</math>
|-
| ৭ || পপ || <math>\text{১০১০}</math> || <math>\text{১১০০}</math>
|-
| ৮ || পপ || খালি || <math>\text{১০১০}</math>
|}
==== উদাহরণ ৩: রেজিস্টার ফাইলে লেখা ও পড়া ====
একটি ৪-রেজিস্টার ফাইলে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে রেজিস্টার ফাইলের অবস্থা কী?
ক্রিয়ার তালিকা:
১. ঠিকানা <math>\text{০০}</math>-তে লেখো <math>\text{১০১০}</math>
২. ঠিকানা <math>\text{০১}</math>-তে লেখো <math>\text{০১১০}</math>
৩. ঠিকানা <math>\text{১০}</math>-তে লেখো <math>\text{১১০০}</math>
৪. ঠিকানা <math>\text{০০}</math> পড়ো
৫. ঠিকানা <math>\text{০১}</math> ও <math>\text{১০}</math> একসাথে পড়ো (দ্বি-পোর্ট)
৬. ঠিকানা <math>\text{১১}</math>-তে লেখো <math>\text{০০০১}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৩-এর রেজিস্টার ফাইল
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | ক্রিয়া
! style="background:#70AD47; color:white;" | <math>R_0</math> (<math>\text{০০}</math>)
! style="background:#70AD47; color:white;" | <math>R_1</math> (<math>\text{০১}</math>)
! style="background:#70AD47; color:white;" | <math>R_2</math> (<math>\text{১০}</math>)
! style="background:#70AD47; color:white;" | <math>R_3</math> (<math>\text{১১}</math>)
! style="background:#ED7D31; color:white;" | পড়া মান
|-
| শুরু || - || অজানা || অজানা || অজানা || অজানা || -
|-
| ১ || লেখা <math>\text{০০}</math> || <math>\text{১০১০}</math> || অজানা || অজানা || অজানা || -
|-
| ২ || লেখা <math>\text{০১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || অজানা || অজানা || -
|-
| ৩ || লেখা <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || -
|-
| ৪ || পড়া <math>\text{০০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{১০১০}</math>
|-
| ৫ || পড়া <math>\text{০১}</math> ও <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || অজানা || <math>\text{০১১০}</math> ও <math>\text{১১০০}</math>
|-
| ৬ || লেখা <math>\text{১১}</math> || <math>\text{১০১০}</math> || <math>\text{০১১০}</math> || <math>\text{১১০০}</math> || <math>\text{০০০১}</math> || -
|}
==== উদাহরণ ৪: শিফট রেজিস্টার দিয়ে বাইনারি গুণ ====
<math>\text{০০১১}</math> (দশমিকে ৩) কে ৪ দিয়ে গুণ করো বামে শিফট রেজিস্টার ব্যবহার করে।
৪ দিয়ে গুণ মানে বামে দুই শিফট। <math>SI_L = \text{০}</math>।
{| class="wikitable" style="text-align:center; width:90%;"
|+ বাইনারি গুণের ধাপ
! style="background:#4472C4; color:white;" | ধাপ
! style="background:#4472C4; color:white;" | অপারেশন
! style="background:#70AD47; color:white;" | রেজিস্টার
! style="background:#ED7D31; color:white;" | দশমিক মান
|-
| শুরু || - || <math>\text{০০১১}</math> || ৩
|-
| ১ || বামে এক শিফট || <math>\text{০১১০}</math> || ৬ (৩ × ২)
|-
| ২ || বামে এক শিফট || <math>\text{১১০০}</math> || ১২ (৩ × ৪)
|}
ফলাফল: <math>\text{১১০০}</math> যা দশমিকে ১২। ৩ × ৪ = ১২ ✓
কিন্তু লক্ষ করো: যদি সংখ্যা বড় হতো যেমন <math>\text{১০১১}</math> (দশমিকে ১১), বামে দুই শিফটে উচ্চ বিট বেরিয়ে যেত। ৪ বিটের রেজিস্টারে ফলাফল ধরবে না। এটি উপচানোর সমস্যা।
==== উদাহরণ ৫: সার্বজনীন রেজিস্টার দিয়ে সম্পূর্ণ প্রক্রিয়া ====
একটি সার্বজনীন রেজিস্টার দিয়ে <math>\text{১০১১}</math> লোড করে, তা দুই বার ডানে শিফট করো, তারপর ধরে রাখো।
{| class="wikitable" style="text-align:center; width:100%;"
|+ উদাহরণ ৫-এর সম্পূর্ণ প্রক্রিয়া
! style="background:#4472C4; color:white;" | পালস
! style="background:#4472C4; color:white;" | <math>S_1S_0</math>
! style="background:#4472C4; color:white;" | মোড
! style="background:#4472C4; color:white;" | ইনপুট
! style="background:#70AD47; color:white;" | <math>Q_3Q_2Q_1Q_0</math>
! style="background:#ED7D31; color:white;" | মন্তব্য
|-
| শুরু || - || - || - || <math>\text{০০০০}</math> || প্রাথমিক অবস্থা
|-
| ১ || <math>\text{১১}</math> || সমান্তরাল লোড || <math>\text{১০১১}</math> || <math>\text{১০১১}</math> || লোড সম্পন্ন
|-
| ২ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০১০১}</math> || ডানে এক শিফট
|-
| ৩ || <math>\text{০১}</math> || ডানে শিফট || <math>SI_R = \text{০}</math> || <math>\text{০০১০}</math> || আবার ডানে এক শিফট
|-
| ৪ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || মান ধরে রাখা হলো
|-
| ৫ || <math>\text{০০}</math> || ধারণ || - || <math>\text{০০১০}</math> || এখনও অপরিবর্তিত
|}
<math>\text{১০১১}</math> (দশমিকে ১১) কে ডানে দুই শিফট করে <math>\text{০০১০}</math> (দশমিকে ২) পাওয়া গেল। ১১ ÷ ৪ = ২ (ভাগশেষ ৩)। ✓
=== অনুশীলনী ===
# একটি চার-ঘর ফিফো-তে <math>\text{১০১০}</math>, <math>\text{০১০১}</math>, <math>\text{১১০০}</math> ঢোকানো হলো। এরপর দুটি পড়া হলো। তারপর <math>\text{০০১১}</math> ঢোকানো হলো। এখন ফিফো-তে কী আছে?
# একটি স্ট্যাকে পুশ <math>\text{ক}</math>, পুশ <math>\text{খ}</math>, পুশ <math>\text{গ}</math>, পপ, পপ, পুশ <math>\text{ঘ}</math>, পপ করা হলো। পপ করা তিনটি মান কী ছিল?
# ফিফো-র খালি সংকেত কখন সক্রিয় হয় এবং এই অবস্থায় পড়ার চেষ্টা করলে কী সমস্যা হয়?
# লাইফো ও ফিফো-র মধ্যে মূল পার্থক্য কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
# একটি ৪-রেজিস্টার ফাইলে ২ বিটের ঠিকানা ব্যবহার হয়। ৮-রেজিস্টার ফাইলে কত বিটের ঠিকানা দরকার?
# <math>\text{০১০১}</math> (দশমিকে ৫) কে বামে দুই শিফট করলে কী হবে? ফলাফলের দশমিক মান কত? এটি কোন গাণিতিক অপারেশনের সমতুল?
# <math>\text{১০০০}</math> (দশমিকে ৮) কে ডানে তিন শিফট করলে কী হবে? দশমিক মান কত? (<math>SI_R = \text{০}</math>)
# রেজিস্টার ফাইলে দ্বি-পোর্ট থাকার কী সুবিধা? প্রসেসরের কোন কাজে এটি দরকার?
# একটি চার-ঘর ফিফো-তে নিচের ক্রিয়াগুলো করো এবং প্রতিটি পালসের পর অবস্থা দেখাও:
** পালস ১: লেখা <math>\text{১১১১}</math>
** পালস ২: লেখা <math>\text{০০০০}</math>
** পালস ৩: পড়া
** পালস ৪: লেখা <math>\text{১০১০}</math>
** পালস ৫: পড়া
** পালস ৬: পড়া
# ফিফো পূর্ণ থাকলে আরও লেখার চেষ্টা করলে কী হতে পারে? কীভাবে এই সমস্যা এড়ানো যায়?
# স্ট্যাকে নিচের ক্রিয়াগুলো করো এবং প্রতিটি ধাপে স্ট্যাক নির্দেশকের মান দেখাও (শুরুতে নির্দেশক = ০):
** পুশ <math>\text{১০১০}</math>
** পুশ <math>\text{০১১০}</math>
** পপ
** পুশ <math>\text{১১০০}</math>
** পুশ <math>\text{০০০১}</math>
** পপ
** পপ
# সার্বজনীন রেজিস্টারে <math>S_1S_0 = \text{০১}</math> এবং <math>SI_R = \text{১}</math> দিয়ে চারটি পালস দিলে যেকোনো প্রাথমিক অবস্থা থেকে রেজিস্টার কী হবে?
# বামে শিফট করার সময় <math>SI_L = \text{১}</math> রাখলে কী ঘটে? একটি উদাহরণ দিয়ে দেখাও।
# রেজিস্টার ফাইলে একটি রেজিস্টার থেকে পড়ে অন্য রেজিস্টারে লেখার অপারেশন (<math>R_2 \leftarrow R_0 + R_1</math>) করতে কতটি পোর্ট দরকার এবং কেন?
# নিচের ফিফো ও স্ট্যাক ব্যবহারের পরিস্থিতিগুলোতে কোনটি বেশি উপযুক্ত এবং কেন:
** ক. অপারেটিং সিস্টেমে প্রিন্ট সারি
** খ. প্রোগ্রামের ফাংশন কল
** গ. নেটওয়ার্ক প্যাকেট বাফার
** ঘ. পূর্বের অবস্থায় ফেরার সুবিধা
'''উত্তর:'''
# পড়া হলো <math>\text{১০১০}</math> ও <math>\text{০১০১}</math>; তারপর <math>\text{০০১১}</math> ঢুকল; এখন ফিফো-তে আছে <math>\text{১১০০}</math> ও <math>\text{০০১১}</math>
# প্রথম পপে <math>\text{গ}</math>, দ্বিতীয় পপে <math>\text{খ}</math>, তৃতীয় পপে <math>\text{ঘ}</math> (পুশ ঘ-র পরে করা হয়েছিল)
# খালি সংকেত সক্রিয় হয় যখন ফিফো-র সব ঘর খালি থাকে; পড়ার চেষ্টা করলে অর্থহীন বা ভুল মান আসে যা সিস্টেমে ত্রুটি তৈরি করতে পারে
# ফিফো-তে ঢোকার ক্রমেই বেরোয় (সুপারশপের লাইনের মতো, যেমন প্রিন্ট সারি); লাইফো-তে শেষে ঢোকাটা আগে বেরোয় (থালার স্তূপের মতো, যেমন ব্রাউজারের পেছনে যাওয়ার বোতাম)
# ৩ বিটের ঠিকানা দরকার কারণ <math>\text{২}^\text{৩} = \text{৮}</math>
# <math>\text{০১০১}</math> বামে দুই শিফটে <math>\text{০১০১}</math> প্রথম শিফটে <math>\text{১০১০}</math> (১০), দ্বিতীয় শিফটে <math>\text{০১০০}</math> (২০); ৫ × ৪ = ২০ ✓; এটি ৪ দিয়ে গুণের সমতুল
# <math>\text{১০০০}</math> ডানে তিন শিফটে (<math>SI_R = \text{০}</math>): প্রথমে <math>\text{০১০০}</math> (৪), দ্বিতীয়ে <math>\text{০০১০}</math> (২), তৃতীয়ে <math>\text{০০০১}</math> (১); ৮ ÷ ৮ = ১ ✓
# দ্বি-পোর্টে একই সময়ে দুটি রেজিস্টার পড়া যায়; গাণিতিক লজিক ইউনিটে <math>A + B</math> করতে <math>A</math> ও <math>B</math> একসাথে পড়তে হয়, তাই দুটি পড়ার পোর্ট দরকার
# পালস ১ পরে: <math>\text{১১১১}</math>; পালস ২ পরে: <math>\text{১১১১}, \text{০০০০}</math>; পালস ৩ পরে পড়া <math>\text{১১১১}</math>, ফিফো: <math>\text{০০০০}</math>; পালস ৪ পরে: <math>\text{০০০০}, \text{১০১০}</math>; পালস ৫ পরে পড়া <math>\text{০০০০}</math>, ফিফো: <math>\text{১০১০}</math>; পালস ৬ পরে পড়া <math>\text{১০১০}</math>, ফিফো: খালি
# পূর্ণ থাকলে সবচেয়ে পুরনো ডেটা হারিয়ে যায়; এড়াতে লেখার আগে পূর্ণ সংকেত পরীক্ষা করতে হবে এবং পূর্ণ হলে না লেখা বা বাফার বড় করতে হবে
# নির্দেশক ০; পুশ ১০১০ পরে নির্দেশক ১; পুশ ০১১০ পরে নির্দেশক ২; পপ পরে নির্দেশক ১ (<math>\text{০১১০}</math> বেরোল); পুশ ১১০০ পরে নির্দেশক ২; পুশ ০০০১ পরে নির্দেশক ৩; পপ পরে নির্দেশক ২ (<math>\text{০০০১}</math> বেরোল); পপ পরে নির্দেশক ১ (<math>\text{১১০০}</math> বেরোল)
# যেকোনো প্রাথমিক অবস্থা থেকে চার পালস পর রেজিস্টার হবে <math>\text{১১১১}</math>, কারণ প্রতিটি পালসে বামে <math>SI_R = \text{১}</math> ঢুকছে এবং চার পালস পর সব ঘর <math>\text{১}</math> হয়ে যায়
# <math>SI_L = \text{১}</math> রেখে বামে শিফট করলে ডান প্রান্তে <math>\text{১}</math> ঢোকে; যেমন <math>\text{১০১০}</math> এক বামে শিফট করলে <math>\text{০১০১}</math> হয় (<math>\text{০}</math> বেরোয়, <math>\text{১}</math> ঢোকে)
# তিনটি পোর্ট দরকার: দুটি পড়ার পোর্ট <math>R_0</math> ও <math>R_1</math>-এর মান একসাথে পেতে এবং একটি লেখার পোর্ট ফলাফল <math>R_2</math>-তে রাখতে
# ক. প্রিন্ট সারি: ফিফো উপযুক্ত কারণ প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হওয়া উচিত; খ. ফাংশন কল: লাইফো উপযুক্ত কারণ সর্বশেষ ডাকা ফাংশন থেকে প্রথমে ফিরতে হয়; গ. নেটওয়ার্ক প্যাকেট: ফিফো উপযুক্ত কারণ প্যাকেটের ক্রম বজায় রাখা দরকার; ঘ. পূর্বাবস্থায় ফেরা: লাইফো উপযুক্ত কারণ সর্বশেষ কাজটি প্রথমে পূর্বাবস্থায় ফেরানো হয়
[[{{BOOKCATEGORY}}]]
3dkh4hzh5o5w4npyl8mzuolxhz1jub9
লজিক গেট/অ্যাসিনক্রোনাস কাউন্টার
0
30326
106495
98831
2026-06-05T09:20:19Z
R1F4T
9121
106495
wikitext
text/x-wiki
মনে করো তুমি একটি স্কুলের মাঠে দাঁড়িয়ে আছ। মাঠের পাশে একটি লম্বা পাইপ থেকে পানি পড়ছে। এক ফোঁটা পড়ল, দুই ফোঁটা পড়ল, তিন ফোঁটা পড়ল... তুমি মনে মনে গণনা করছ। এটাই গণনার সবচেয়ে সহজ রূপ।
ডিজিটাল ইলেকট্রনিক্সেও এইভাবে গণনা করা হয়। পার্থক্য শুধু এটুকু যে এখানে পানির ফোঁটার বদলে বৈদ্যুতিক পালস গণনা করা হয়, আর গণনার ফলাফল থাকে বাইনারি সংখ্যায়। এই গণনার কাজটি করে '''কাউন্টার''' নামের সার্কিট।
কাউন্টার দুই রকমের। এই অধ্যায়ে আমরা শিখব '''অ্যাসিনক্রোনাস কাউন্টার''', যাকে বাংলায় বলা যায় '''অসমকালীন কাউন্টার''' বা '''রিপল কাউন্টার'''। পরের অধ্যায়ে থাকবে সমকালীন কাউন্টার।
কিন্তু এই দুটোর মধ্যে পার্থক্য কী? সেটা বুঝতে হলে আগে একটা মজার উপমা দেখি।
== বাস্তব উদাহরণ ==
একটি সামরিক কুচকাওয়াজ কল্পনা করো। সামরিক কুচকাওয়াজে সব সৈনিক একসাথে পা ফেলে। ব্যান্ডের ড্রামের প্রতিটি বিটে সব সৈনিক একই সময়ে একই পা তোলে। এটা হলো '''সমকালীন''' পদ্ধতি।
এখন অন্য একটা দৃশ্য কল্পনা করো। একটা দীর্ঘ সারিতে মানুষ দাঁড়িয়ে আছে। সামনের মানুষ পিছনের মানুষের কাঁধ ধরেছে। যখন সারির একেবারে সামনের মানুষ ঠেলা খেয়ে সামনে এগোয়, সেই ঠেলা পিছনের জনের কাছে যায়, তারপর তার পিছনে যায়, এভাবে একটা ঢেউয়ের মতো পিছনে যেতে থাকে। প্রথম মানুষ নড়ার কিছুক্ষণ পরে শেষ মানুষ নড়ে। এটা হলো '''অসমকালীন''' বা '''রিপল''' পদ্ধতি।
অ্যাসিনক্রোনাস কাউন্টারে ঠিক এইভাবে ঘড়ির সংকেত একটি ফ্লিপ-ফ্লপ থেকে পরেরটিতে "ঢেউয়ের মতো" এগিয়ে যায়। ইংরেজিতে এই ঢেউকে বলে "রিপল", তাই এই কাউন্টারের আরেক নাম রিপল কাউন্টার।
== অ্যাসিনক্রোনাস কাউন্টার কী ==
'''অ্যাসিনক্রোনাস কাউন্টার''' হলো এমন একটি গণনাকারী সার্কিট যেখানে সব ফ্লিপ-ফ্লপ একই ঘড়ি সংকেত ব্যবহার করে না। বরং প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে, দ্বিতীয়টির আউটপুট তৃতীয়টির ঘড়ি হয়, এভাবে চলতে থাকে।
এই কারণেই একে অসমকালীন বলা হয়: কারণ প্রতিটি ফ্লিপ-ফ্লপ ভিন্ন সময়ে পরিবর্তন হয়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের মূল পার্থক্য
! বিষয় !! অ্যাসিনক্রোনাস কাউন্টার !! সমকালীন কাউন্টার
|-
| ঘড়ির উৎস || প্রতিটি ফ্লিপ-ফ্লপের ঘড়ি ভিন্ন || সব ফ্লিপ-ফ্লপ একই বাহ্যিক ঘড়ি পায়
|-
| পরিবর্তনের সময় || একে একে পরিবর্তন হয় || সবাই একসাথে পরিবর্তন হয়
|-
| সার্কিটের জটিলতা || সহজ || জটিল
|-
| গতি || ধীর (ক্রমিক বিলম্ব) || দ্রুত
|-
| ব্যবহার || সহজ গণনা, কম গতির সার্কিট || দ্রুত, নির্ভুল গণনা
|-
| উপমা || ডোমিনো পড়া || সকলে একসাথে তালি দেওয়া
|}
== মূল উপাদান: টগল মোডে টি ফ্লিপ-ফ্লপ ==
অ্যাসিনক্রোনাস কাউন্টারের মূল উপাদান হলো ফ্লিপ-ফ্লপ। তবে এখানে বিশেষভাবে ফ্লিপ-ফ্লপকে '''টগল মোডে''' ব্যবহার করা হয়।
=== টগল মানে কী ===
টগল মানে হলো প্রতিবার ঘড়ির সক্রিয় প্রান্তে আউটপুট উল্টে যাওয়া। যদি <math>Q = \text{০}</math> থাকে তাহলে <math>\text{১}</math> হয়, আর যদি <math>Q = \text{১}</math> থাকে তাহলে <math>\text{০}</math> হয়।
সহজ উপমা: একটি লাইট সুইচ। প্রতিবার চাপলে অবস্থা বদলায়। যদি বাতি জ্বলছিল, নিভে যায়। যদি নিভা ছিল, জ্বলে ওঠে। এটাই টগল।
=== টগল মোডে ফ্লিপ-ফ্লপ তৈরির উপায় ===
যেকোনো ফ্লিপ-ফ্লপকে টগল মোডে ব্যবহার করা যায়। সবচেয়ে সহজ পদ্ধতি:
'''জেকে ফ্লিপ-ফ্লপ দিয়ে:'''
<math>J = K = \text{১}</math> করে দাও। তাহলে প্রতিটি ঘড়ির সক্রিয় প্রান্তে আউটপুট টগল করবে।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = J\bar{Q} + \bar{K}Q = \text{১} \cdot \bar{Q} + \text{০} \cdot Q = \bar{Q}</math>
'''ডি ফ্লিপ-ফ্লপ দিয়ে:'''
<math>D = \bar{Q}</math> সংযোগ দাও। তাহলে প্রতিটি ঘড়ির প্রান্তে <math>D</math> তে থাকে <math>Q</math> এর বিপরীত মান, এবং পরবর্তী প্রান্তে সেটাই সংরক্ষিত হয়।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = D = \bar{Q}</math>
=== টগলের গণিত: প্রতি দুই পালসে একটি চক্র ===
একটি টগল মোড ফ্লিপ-ফ্লপে পরপর পালস দেওয়া হলে:
{| class="wikitable" style="text-align:center;"
|+ একটি টগল ফ্লিপ-ফ্লপের আচরণ
! ঘড়ির পালস !! <math>Q</math> (আগে) !! <math>Q^+ = \bar{Q}</math> !! পরিবর্তন
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক অবস্থা
|-
| ১ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ২য় পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৩য় পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৪র্থ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৫ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৬ষ্ঠ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|}
আউটপুট ক্রম: <math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
গুরুত্বপূর্ণ পর্যবেক্ষণ: আউটপুটের কম্পাঙ্ক ঘড়ির কম্পাঙ্কের '''অর্ধেক'''। প্রতি দুটি ইনপুট পালসে একটি সম্পূর্ণ আউটপুট চক্র হয়।
এই বৈশিষ্ট্যটিই অ্যাসিনক্রোনাস কাউন্টারের ভিত্তি।
== ২-বিট অ্যাসিনক্রোনাস কাউন্টার ==
এখন আমরা দুটি টগল ফ্লিপ-ফ্লপ যুক্ত করে একটি ২-বিট কাউন্টার তৈরি করব।
=== ধারণা: ডোমিনো এফেক্ট ===
ডোমিনো খেলায় একটি টাইল পড়লে পরেরটি পড়ে, তারপর আরেকটি। ঠিক এইভাবে ২-বিট কাউন্টারে:
প্রথম ফ্লিপ-ফ্লপ বাহ্যিক ঘড়ি পালস থেকে ঘড়ি পায়। প্রতিটি পালসে প্রথম ফ্লিপ-ফ্লপ টগল করে।
প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে। তাই যখন প্রথম ফ্লিপ-ফ্লপের আউটপুট <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নিম্নগামী প্রান্ত), তখন দ্বিতীয় ফ্লিপ-ফ্লপ টগল করে।
=== সার্কিটের গঠন ===
দুটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math> ও <math>FF_1</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি (<math>CLK</math>), <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
<math>FF_0</math> এর আউটপুট <math>Q_0</math> হলো সর্বনিম্ন বিট (একক স্থান)।
<math>FF_1</math> এর আউটপুট <math>Q_1</math> হলো উঁচু বিট (দুইয়ের স্থান)।
=== কোন প্রান্তে টগল হবে ===
নিম্নগামী প্রান্ত-সক্রিয় কাউন্টারে দ্বিতীয় ফ্লিপ-ফ্লপ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয় তখন টগল করে।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! বাহ্যিক পালস !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! <math>Q_0</math> এর পরিবর্তন !! <math>Q_1</math> পরিবর্তিত হয়?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক || না
|-
| ১ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ২য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{০} \to \text{১}</math>)
|-
| ৩য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ৪র্থ পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{১} \to \text{০}</math>)
|-
| ৫ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || না
|}
লক্ষ করো: ৪ম পালসের পর কাউন্টার আবার <math>\text{০}</math> তে ফিরে এসেছে। এটাই ২-বিট কাউন্টারের একটি সম্পূর্ণ চক্র: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{০}</math>।
=== কেন <math>Q_1</math> শুধু নিম্নগামী প্রান্তে বদলায় ===
এটা বোঝা খুব জরুরি। আমরা নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ ব্যবহার করছি, তাই <math>FF_1</math> শুধু তখনই টগল করবে যখন তার ঘড়ি ইনপুট অর্থাৎ <math>Q_0</math> নিম্নগামী প্রান্ত দেখাবে।
<math>Q_0</math> নিম্নগামী প্রান্ত মানে: <math>Q_0</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয়।
এটা ঘটে ২য় পালসে এবং ৪র্থ পালসে। তাই <math>Q_1</math> এই দুটো মুহূর্তেই টগল করে।
=== বিস্তারিত ধাপে ধাপে বিশ্লেষণ ===
'''শুরুতে:''' প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>)
'''১ম পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায় → টগল → <math>Q_0: \text{০} \to \text{১}</math>
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> উর্ধ্বগামী প্রান্ত দেখেছে (<math>\text{০} \to \text{১}</math>) → নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ তাই পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক <math>\text{১}</math>)
'''২য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{০} \to \text{১}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক <math>\text{২}</math>)
'''৩য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{০} \to \text{১}</math> (উর্ধ্বগামী প্রান্ত)
* <math>FF_1</math>: তার ঘড়ি উর্ধ্বগামী প্রান্ত দেখেছে → পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক <math>\text{৩}</math>)
'''৪র্থ পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{১} \to \text{০}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>) — একটি সম্পূর্ণ চক্র!
=== ২-বিট কাউন্টারের গণনার ক্রম ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের সম্পূর্ণ গণনার ক্রম
! পালস সংখ্যা !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক
|-
| <math>\text{০}</math> (শুরু) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math> (পুনরায়)
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|}
=== ২-বিট কাউন্টারের কম্পাঙ্ক বিশ্লেষণ ===
এখন একটা গুরুত্বপূর্ণ বিষয় বুঝি। ধরো বাহ্যিক ঘড়ির কম্পাঙ্ক <math>f</math>।
* <math>Q_0</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{২}}</math> (প্রতি দুটি বাহ্যিক পালসে একটি চক্র)
* <math>Q_1</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{৪}}</math> (প্রতি চারটি বাহ্যিক পালসে একটি চক্র)
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন অনুপাত !! উদাহরণ (<math>f = \text{১০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{১০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৫০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২৫০}</math> হার্টজ
|}
== ৩-বিট অ্যাসিনক্রোনাস কাউন্টার ==
২-বিট কাউন্টার তো বুঝলাম। এখন আরেকটি ফ্লিপ-ফ্লপ যোগ করলে কী হয়? পাই ৩-বিট কাউন্টার যা ০ থেকে ৭ পর্যন্ত গণনা করতে পারে।
=== উপমা: তিনটি মিটার ===
ধরো একটি পানির মিটার যেখানে তিনটি চাকা আছে। একক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে দশক স্থানের চাকা একবার এগোয়। দশক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে শতক স্থানের চাকা একবার এগোয়। আমাদের বাইনারি কাউন্টারেও ঠিক এইভাবে কাজ হয়, শুধু পার্থক্য হলো এখানে প্রতিটি চাকা শুধু ০ ও ১ এর মধ্যে ঘোরে।
=== সার্কিটের গঠন ===
তিনটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math>, <math>FF_1</math>, <math>FF_2</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি, <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1</math> এর নিম্নগামী প্রান্ত, <math>J_2 = K_2 = \text{১}</math>
প্রতিটি ফ্লিপ-ফ্লপ পূর্ববর্তী ফ্লিপ-ফ্লপের আউটপুট থেকে ঘড়ি পাচ্ছে। এটাই রিপল প্রভাব।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক !! ব্যাখ্যা
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || প্রারম্ভিক
|-
| ১ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০০১}</math> || <math>\text{১}</math> || শুধু <math>Q_0</math> টগল
|-
| ২য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০১০}</math> || <math>\text{২}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৩য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০১১}</math> || <math>\text{৩}</math> || শুধু <math>Q_0</math> টগল
|-
| ৪র্থ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১০০}</math> || <math>\text{৪}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল, <math>Q_1</math> নিম্নগামী তাই <math>Q_2</math> টগল
|-
| ৫ম || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১০১}</math> || <math>\text{৫}</math> || শুধু <math>Q_0</math> টগল
|-
| ৬ষ্ঠ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১১০}</math> || <math>\text{৬}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৭ম || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১১}</math> || <math>\text{৭}</math> || শুধু <math>Q_0</math> টগল
|-
| ৮ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || সম্পূর্ণ চক্র, পুনরায় শুরু
|}
=== ৪র্থ পালসের বিস্তারিত বিশ্লেষণ ===
৪র্থ পালসটি একটু জটিল, তাই আলাদা করে বিশ্লেষণ করা যাক।
আগের অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
ধাপ ১: <math>FF_0</math> বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায়
* <math>FF_0</math> টগল: <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত উৎপন্ন হলো)
ধাপ ২: <math>FF_1</math> তার ঘড়ি <math>Q_0</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_1</math> টগল: <math>Q_1: \text{১} \to \text{০}</math> (এটাও নিম্নগামী প্রান্ত!)
ধাপ ৩: <math>FF_2</math> তার ঘড়ি <math>Q_1</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_2</math> টগল: <math>Q_2: \text{০} \to \text{১}</math>
নতুন অবস্থা: <math>Q_2 Q_1 Q_0 = \text{১০০}</math> (দশমিক <math>\text{৪}</math>)
দেখো, এখানে তিনটি ফ্লিপ-ফ্লপই পরিবর্তন হয়েছে কিন্তু একসাথে নয়, পরপর। এটাই রিপল প্রভাব।
=== কম্পাঙ্ক বিভাজন ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন !! উদাহরণ (<math>f = \text{৮০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{৮০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৪০০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২০০০}</math> হার্টজ
|-
| <math>Q_2</math> || <math>\frac{f}{\text{৮}}</math> || <math>\div \text{৮}</math> || <math>\text{১০০০}</math> হার্টজ
|}
== ৪-বিট অ্যাসিনক্রোনাস কাউন্টার ==
৩-বিট কাউন্টার বুঝলে ৪-বিট কাউন্টার অনুমান করা সহজ। আরেকটি ফ্লিপ-ফ্লপ (<math>FF_3</math>) যোগ হবে এবং এর ঘড়ি হবে <math>Q_2</math> এর নিম্নগামী প্রান্ত।
=== সার্কিটের গঠন ===
চারটি জেকে ফ্লিপ-ফ্লপ:
* <math>FF_0</math>: ঘড়ি = বাহ্যিক <math>CLK</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0 \downarrow</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1 \downarrow</math>
* <math>FF_3</math>: ঘড়ি = <math>Q_2 \downarrow</math>
সবার <math>J = K = \text{১}</math>
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| <math>\text{১২}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| <math>\text{১৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| <math>\text{১৪}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| <math>\text{১৫}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| <math>\text{১৬}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> (পুনরায়)
|}
=== n-বিট কাউন্টারের সাধারণ সূত্র ===
{| class="wikitable" style="text-align:center;"
|+ n-বিট কাউন্টারের বৈশিষ্ট্য
! বিট সংখ্যা <math>n</math> !! ফ্লিপ-ফ্লপ সংখ্যা !! গণনার পরিসর !! মোট অবস্থা !! সর্বোচ্চ মান
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{২}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{২}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৪}</math> || <math>\text{৩}</math>
|-
| <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৮}</math> || <math>\text{৭}</math>
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৬}</math> || <math>\text{১৫}</math>
|-
| <math>\text{৫}</math> || <math>\text{৫}</math> || <math>\text{০} \to \text{৩১}</math> || <math>\text{৩২}</math> || <math>\text{৩১}</math>
|-
| <math>n</math> || <math>n</math> || <math>\text{০} \to \text{২}^n - \text{১}</math> || <math>\text{২}^n</math> || <math>\text{২}^n - \text{১}</math>
|}
== অ্যাসিনক্রোনাস কাউন্টারের রিপল প্রভাব ও বিলম্ব ==
এখন আমরা অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যটি আলোচনা করব, যা একই সাথে এর সুবিধা ও সীমাবদ্ধতা।
=== রিপল প্রভাব কী ===
পুকুরে একটি পাথর ফেললে কী হয়? পানিতে ঢেউ তৈরি হয় এবং সেই ঢেউ একটু একটু করে বাইরের দিকে ছড়িয়ে পড়ে। প্রথমে কেন্দ্রের পানি নড়ে, তারপর একটু বাইরের পানি, তারপর আরেকটু বাইরে।
অ্যাসিনক্রোনাস কাউন্টারে ঘড়ির পালস ঠিক এইভাবে "ছড়িয়ে পড়ে"। প্রথম ফ্লিপ-ফ্লপ পরিবর্তন হয়, তারপর তার সংকেত দ্বিতীয় ফ্লিপ-ফ্লপে পৌঁছায় এবং দ্বিতীয়টি পরিবর্তন হয়, এভাবে চলতে থাকে।
=== বিলম্বের পরিমাণ ===
প্রতিটি ফ্লিপ-ফ্লপের নিজস্ব বিস্তার বিলম্ব আছে। একে <math>t_{pd}</math> বলি।
{| class="wikitable" style="text-align:center;"
|+ n-বিট রিপল কাউন্টারের মোট বিলম্ব
! বিট সংখ্যা <math>n</math> !! সর্বোচ্চ মোট বিলম্ব !! ব্যাখ্যা
|-
| <math>\text{২}</math> || <math>\text{২} \times t_{pd}</math> || দুটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৩}</math> || <math>\text{৩} \times t_{pd}</math> || তিনটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৪}</math> || <math>\text{৪} \times t_{pd}</math> || চারটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>n</math> || <math>n \times t_{pd}</math> || সাধারণ সূত্র
|}
=== বিলম্বের বাস্তব উদাহরণ ===
ধরো প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১০}</math> ন্যানোসেকেন্ড।
৪-বিট রিপল কাউন্টারে সর্বোচ্চ মোট বিলম্ব:
:<math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
এই বিলম্বের মধ্যে ঘড়ির পরবর্তী পালস না আসলে সার্কিট সঠিকভাবে কাজ করবে। তাই সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{n \times t_{pd}} = \frac{\text{১}}{\text{৪০} \text{ ন্যানো}} = \text{২৫}</math> মেগাহার্টজ
=== ক্ষণিক ভুল অবস্থা ===
বিলম্বের কারণে একটি মজার সমস্যা হয়। সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হয় না বলে মধ্যবর্তী মুহূর্তে ভুল অবস্থা দেখা যায়।
উদাহরণ: ৩-বিট কাউন্টারে <math>\text{০১১}</math> (দশমিক <math>\text{৩}</math>) থেকে <math>\text{১০০}</math> (দশমিক <math>\text{৪}</math>) তে যাওয়ার সময়:
{| class="wikitable" style="text-align:center;"
|+ <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় ক্ষণিক অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! মন্তব্য
|-
| <math>t_0</math> (আগে) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || স্থিতিশীল
|-
| <math>t_0 + t_{pd}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{২}t_{pd}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{৩}t_{pd}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || স্থিতিশীল
|}
<math>\text{৩}</math> থেকে <math>\text{৪}</math> তে যাওয়ার পথে সংক্ষেপে <math>\text{২}</math> ও <math>\text{০}</math> দেখা গেছে! এগুলো ক্ষণিক অবস্থা, কিন্তু ভুল আউটপুট দেখানো হচ্ছে।
এই সমস্যাকে বলে গ্লিচ। উচ্চগতির সার্কিটে এটি বড় সমস্যা হতে পারে।
== টাইমিং চিত্র বিশ্লেষণ ==
টাইমিং চিত্র দেখে অ্যাসিনক্রোনাস কাউন্টারের আচরণ সবচেয়ে ভালো বোঝা যায়।
=== ৩-বিট কাউন্টারের টাইমিং চিত্র বর্ণনা ===
কল্পনা করো তিনটি সারিতে তরঙ্গ আঁকা হয়েছে:
* প্রথম সারি (<math>CLK</math>): দ্রুত নিয়মিত তরঙ্গ
* দ্বিতীয় সারি (<math>Q_0</math>): <math>CLK</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* তৃতীয় সারি (<math>Q_1</math>): <math>Q_0</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* চতুর্থ সারি (<math>Q_2</math>): <math>Q_1</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের টাইমিং চিত্র সারণী
! সময় !! <math>CLK</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! বর্তমান মান
|-
| <math>t_1</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০০১}=\text{১}</math>
|-
| <math>t_2</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{০১০}=\text{২}</math>
|-
| <math>t_3</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০১১}=\text{৩}</math>
|-
| <math>t_4</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{১০০}=\text{৪}</math>
|-
| <math>t_5</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১০১}=\text{৫}</math>
|-
| <math>t_6</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{১১০}=\text{৬}</math>
|-
| <math>t_7</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১১১}=\text{৭}</math>
|-
| <math>t_8</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০০০}=\text{০}</math>
|}
=== টাইমিং চিত্র থেকে বিলম্ব দেখা ===
<math>t_4</math> মুহূর্তে তিনটি ফ্লিপ-ফ্লপ পরিবর্তন হয়েছে। কিন্তু সবাই একসাথে পরিবর্তন হয়নি:
* <math>Q_0</math> পরিবর্তন হলো সাথে সাথে (বাহ্যিক ঘড়ি থেকে)
* <math>Q_1</math> পরিবর্তন হলো <math>t_{pd}</math> পরে (একটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
* <math>Q_2</math> পরিবর্তন হলো <math>\text{২} t_{pd}</math> পরে (দুটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
এই সময়ের মধ্যে যদি আউটপুট পড়া হয়, ভুল মান পাওয়া যাবে।
== অ্যাসিনক্রোনাস কাউন্টারের সুবিধা ও সীমাবদ্ধতা ==
=== সুবিধা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সুবিধা
! সুবিধা !! বিস্তারিত ব্যাখ্যা
|-
| সহজ সার্কিট || ফ্লিপ-ফ্লপ শুধু একটার পর একটা সংযুক্ত, কোনো জটিল গেট নেই
|-
| কম উপাদান || সমকালীন কাউন্টারের তুলনায় অনেক কম গেট লাগে
|-
| কম বিদ্যুৎ খরচ || সহজ সার্কিট মানে কম বিদ্যুৎ খরচ
|-
| সহজ ডিজাইন || যেকোনো বিট সংখ্যার কাউন্টার একই পদ্ধতিতে তৈরি করা যায়
|-
| কম্পাঙ্ক বিভাজক || প্রতিটি আউটপুট আগেরটির অর্ধেক কম্পাঙ্কের সংকেত দেয়
|}
=== সীমাবদ্ধতা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা
! সীমাবদ্ধতা !! বিস্তারিত ব্যাখ্যা
|-
| রিপল বিলম্ব || বিট সংখ্যা বাড়লে বিলম্ব বাড়ে, তাই সর্বোচ্চ কম্পাঙ্ক কমে
|-
| ক্ষণিক ভুল আউটপুট || পরিবর্তনের সময় ভুল মান দেখা দিতে পারে (গ্লিচ)
|-
| গতির সীমা || উচ্চ গতির সার্কিটে ব্যবহার করা কঠিন
|-
| ডিকোডিং সমস্যা || বিলম্বের কারণে সঠিক সময়ে আউটপুট পাঠ করা কঠিন
|}
== উর্ধ্বগামী কাউন্টারের প্যাটার্ন বোঝা ==
এখন আমরা একটু গভীরে যাই এবং উর্ধ্বগামী রিপল কাউন্টারের একটি সুন্দর প্যাটার্ন দেখব।
=== <math>Q_0</math> কখন টগল করে ===
<math>Q_0</math> প্রতিটি বাহ্যিক পালসে টগল করে। তাই এর গণনার ক্রম:
<math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
=== <math>Q_1</math> কখন টগল করে ===
<math>Q_1</math> তখনই টগল করে যখন <math>Q_0</math> নিম্নগামী হয় (<math>\text{১} \to \text{০}</math>)। এটা ঘটে প্রতি ২ম, ৪র্থ, ৬ষ্ঠ... বাহ্যিক পালসে।
তাই <math>Q_1</math> এর গণনার ক্রম:
<math>\text{০, ০, ১, ১, ০, ০, ১, ১, }\ldots</math>
=== <math>Q_2</math> কখন টগল করে ===
<math>Q_2</math> তখনই টগল করে যখন <math>Q_1</math> নিম্নগামী হয়। এটা ঘটে প্রতি ৪র্থ, ৮ম... বাহ্যিক পালসে।
তাই <math>Q_2</math> এর গণনার ক্রম:
<math>\text{০, ০, ০, ০, ১, ১, ১, ১, ০, ০, ০, ০, ১, ১, ১, ১, }\ldots</math>
=== সাধারণ নিয়ম ===
<math>k</math>তম বিট (<math>Q_k</math>) টগল করে প্রতি <math>\text{২}^{k+1}</math> বাহ্যিক পালসে একবার।
{| class="wikitable" style="text-align:center;"
|+ বিট টগলের সাধারণ নিয়ম
! বিট !! টগল করার সময় !! বাহ্যিক পালসের প্যাটার্ন
|-
| <math>Q_0</math> || প্রতি পালসে || <math>\text{১, ২, ৩, ৪} \ldots</math>
|-
| <math>Q_1</math> || প্রতি <math>\text{২}</math>তম পালসে || <math>\text{২, ৪, ৬, ৮, }\ldots</math>
|-
| <math>Q_2</math> || প্রতি <math>\text{৪}</math>তম পালসে || <math>\text{৪, ৮, ১২, ১৬, }\ldots</math>
|-
| <math>Q_3</math> || প্রতি <math>\text{৮}</math>তম পালসে || <math>\text{৮, ১৬, ২৪, ৩২, }\ldots</math>
|-
| <math>Q_k</math> || প্রতি <math>\text{২}^k</math>তম পালসে || <math>\text{২}^k, \text{২}^{k+1}, \text{৩} \times \text{২}^k \ldots</math>
|}
== কত পালসে কাউন্টার কোথায় থাকবে: দ্রুত গণনার কৌশল ===
ধরো <math>n</math>-বিট কাউন্টারে <math>p</math> পালস দেওয়া হয়েছে। কাউন্টারের মান কত হবে?
উত্তর: <math>p \mod \text{২}^n</math>
অর্থাৎ <math>p</math> কে <math>\text{২}^n</math> দিয়ে ভাগ করলে যে ভাগশেষ পাওয়া যাবে সেটাই কাউন্টারের মান।
'''উদাহরণ:''' ৩-বিট কাউন্টারে <math>\text{২৩}</math> পালস দেওয়া হলে কাউন্টারের মান কত?
<math>\text{২৩} \mod \text{২}^\text{৩} = \text{২৩} \mod \text{৮} = \text{৭}</math>
(কারণ <math>\text{২৩} = \text{২} \times \text{৮} + \text{৭}</math>)
তাই কাউন্টারের মান হবে <math>\text{৭}</math> অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১১১}</math>।
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ২-বিট কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ২-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math>। পরপর ৫টি পালস দেওয়া হলো। প্রতিটি পালসের পরে অবস্থা নির্ণয় করো।
সমাধান:
প্রথমে মনে করো: ২-বিট কাউন্টার চক্রাকারে গণনা করে: <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০} \to \ldots</math>
প্রারম্ভিক অবস্থা: <math>\text{১১}</math> (দশমিক <math>\text{৩}</math>)
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ১ সমাধান
! পালস !! বর্তমান দশমিক মান !! পরবর্তী দশমিক মান !! <math>Q_1 Q_0</math>
|-
| শুরু || <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{১১}</math>
|-
| ১ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|-
| ২য় || <math>\text{০}</math> || <math>(\text{০}+\text{১}) \mod \text{৪} = \text{১}</math> || <math>\text{০১}</math>
|-
| ৩য় || <math>\text{১}</math> || <math>(\text{১}+\text{১}) \mod \text{৪} = \text{২}</math> || <math>\text{১০}</math>
|-
| ৪র্থ || <math>\text{২}</math> || <math>(\text{২}+\text{১}) \mod \text{৪} = \text{৩}</math> || <math>\text{১১}</math>
|-
| ৫ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|}
=== উদাহরণ ২: ৩-বিট কাউন্টারে নির্দিষ্ট পালসের পরে অবস্থা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math>। <math>\text{৪৫}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
সমাধান:
৩-বিট কাউন্টারের মডুলো <math>= \text{২}^\text{৩} = \text{৮}</math>
<math>\text{৪৫} \mod \text{৮} = ?</math>
<math>\text{৪৫} = \text{৫} \times \text{৮} + \text{৫}</math>
তাই ভাগশেষ <math>= \text{৫}</math>
কাউন্টারের মান: <math>\text{৫}</math>, অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১০১}</math>
=== উদাহরণ ৩: কম্পাঙ্ক গণনা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{৪৮০০}</math> হার্টজ। <math>Q_0</math>, <math>Q_1</math> এবং <math>Q_2</math> এর কম্পাঙ্ক কত?
সমাধান:
:<math>Q_0 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{২}} = \text{২৪০০}</math> হার্টজ
:<math>Q_1 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৪}} = \text{১২০০}</math> হার্টজ
:<math>Q_2 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৮}} = \text{৬০০}</math> হার্টজ
=== উদাহরণ ৪: ফ্লিপ-ফ্লপ সংখ্যা নির্ণয় ===
একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{৬৩}</math> পর্যন্ত গণনা করতে পারবে। কতটি ফ্লিপ-ফ্লপ দরকার?
সমাধান:
<math>\text{৬৩} + \text{১} = \text{৬৪} = \text{২}^{\text{৬}}</math>
তাই <math>n = \text{৬}</math>, অর্থাৎ <math>\text{৬}</math>টি ফ্লিপ-ফ্লপ দরকার।
=== উদাহরণ ৫: সর্বোচ্চ গণনার পরে অবস্থা ===
একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{১১১১}</math> (দশমিক <math>\text{১৫}</math>)। একটি পালস দেওয়ার পরে অবস্থা কী হবে?
সমাধান:
দশমিক <math>\text{১৫}</math> এর পরের মান: <math>(\text{১৫} + \text{১}) \mod \text{১৬} = \text{০}</math>
তাই কাউন্টার <math>\text{০}</math> তে ফিরে যাবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
এটাই একটি সম্পূর্ণ চক্রের শেষ।
=== উদাহরণ ৬: বিলম্ব গণনা ===
একটি ৫-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১৫}</math> ন্যানোসেকেন্ড। সর্বোচ্চ মোট বিলম্ব কত এবং সর্বোচ্চ কম্পাঙ্ক কত?
সমাধান:
সর্বোচ্চ মোট বিলম্ব: <math>\text{৫} \times \text{১৫} = \text{৭৫}</math> ন্যানোসেকেন্ড
সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{\text{৭৫} \times \text{১০}^\text{-৯}} \approx \text{১৩.৩}</math> মেগাহার্টজ
== অনুশীলনী ==
# একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে সর্বোচ্চ কত পর্যন্ত গণনা করা যায়?
# একটি <math>\text{৬}</math>-বিট রিপল কাউন্টারে মোট কতটি অবস্থা আছে?
# ৩-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math> থেকে <math>\text{১১}</math> পালস দেওয়ার পরে অবস্থা কী?
# ৪-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০১১০}</math> থেকে শুরু করে <math>\text{৫}</math> পালস দেওয়ার পরে দশমিক মান কত?
# বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{১৬০০০}</math> হার্টজ হলে ৪-বিট কাউন্টারের <math>Q_3</math> এর কম্পাঙ্ক কত?
# একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{১২৭}</math> পর্যন্ত গণনা করতে পারে। এটি কত বিটের এবং কতটি ফ্লিপ-ফ্লপ দরকার?
# প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>\text{৮}</math> ন্যানোসেকেন্ড হলে ৪-বিট রিপল কাউন্টারের সর্বোচ্চ কম্পাঙ্ক কত?
# ২-বিট কাউন্টারে <math>Q_1</math> কখন পরিবর্তন হয়?
# ৩-বিট কাউন্টারে <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় কতটি ক্ষণিক ভুল অবস্থা দেখা যায়?
# একটি ৩-বিট কাউন্টারে <math>\text{১০০}</math> পালস দেওয়ার পরে অবস্থা কী?
# অ্যাসিনক্রোনাস কাউন্টারে সমান্তরাল লোড সম্ভব কীভাবে?
# ৪-বিট রিপল কাউন্টারে সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হওয়ার সম্ভাবনা কোন পালসে সবচেয়ে বেশি?
# n-বিট কাউন্টারের <math>Q_{n-1}</math> এর কম্পাঙ্ক বাহ্যিক ঘড়ির কম্পাঙ্কের কত ভাগ?
# ৫-বিট কাউন্টারে <math>\text{১৯৮}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
# দুটি ২-বিট কাউন্টার যদি ক্যাসকেডে যুক্ত করা হয় তাহলে মোট কত পর্যন্ত গণনা করা যাবে?
'''উত্তর:'''
# <math>\text{২}^\text{৪} - \text{১} = \text{১৫}</math>
# <math>\text{২}^\text{৬} = \text{৬৪}</math>টি অবস্থা
# <math>\text{১১} \mod \text{৮} = \text{৩}</math>, তাই <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
# প্রারম্ভিক দশমিক মান: <math>\text{০১১০} = \text{৬}</math>; <math>(\text{৬}+\text{৫}) \mod \text{১৬} = \text{১১}</math>
# <math>\frac{\text{১৬০০০}}{\text{২}^\text{৪}} = \frac{\text{১৬০০০}}{\text{১৬}} = \text{১০০০}</math> হার্টজ
# <math>\text{১২৭}+\text{১} = \text{১২৮} = \text{২}^\text{৭}</math>; ৭-বিট, ৭টি ফ্লিপ-ফ্লপ
# <math>f_{max} = \frac{\text{১}}{\text{৪} \times \text{৮} \times \text{১০}^{-9}} = \frac{\text{১}}{\text{৩২ ন্যানো}} \approx \text{৩১.২৫}</math> মেগাহার্টজ
# যখন <math>Q_0</math> নিম্নগামী প্রান্ত দেখায়, অর্থাৎ <math>Q_0: \text{১} \to \text{০}</math>
# দুটি ক্ষণিক অবস্থা: <math>\text{০১০}</math> এবং <math>\text{০০০}</math>
# <math>\text{১০০} \mod \text{৮} = \text{৪}</math>; <math>Q_2 Q_1 Q_0 = \text{১০০}</math>
# প্রিসেট ও ক্লিয়ার ইনপুট ব্যবহার করে প্রতিটি ফ্লিপ-ফ্লপ আলাদাভাবে সেট বা রিসেট করা যায়
# ৮ম, ১৬তম, ২৪তম পালসে (যখন সর্বোচ্চ বিটও পরিবর্তন হয়)
# <math>\frac{\text{১}}{\text{২}^n}</math> ভাগ
# <math>\text{১৯৮} \mod \text{৩২} = \text{১৯৮} - \text{৬} \times \text{৩২} = \text{১৯৮} - \text{১৯২} = \text{৬}</math>; <math>Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০০১১০}</math>
# মোট গণনার পরিসর: <math>\text{২}^\text{২} \times \text{২}^\text{২} = \text{২}^\text{৪} = \text{১৬}</math>, অর্থাৎ <math>\text{০}</math> থেকে <math>\text{১৫}</math>
== নিম্নগামী কাউন্টার ও মডুলো কাউন্টার ==
আগের ভাগে আমরা দেখেছিলাম টি ফ্লিপ-ফ্লপ কীভাবে প্রতিটি ক্লকে টগল করে এবং সেগুলোকে পর পর সাজিয়ে কীভাবে ০ থেকে উপরের দিকে গণনা করা যায়। উর্ধ্বগামী গণনা বুঝে গেলে একটা স্বাভাবিক প্রশ্ন মাথায় আসে: উল্টো দিক থেকে গণনা করা যায় কি? অর্থাৎ ৭ থেকে শুরু করে ৬, ৫, ৪... ০ পর্যন্ত নামা? এই ভাগে সেটাই দেখব, এবং তার চেয়েও মজার একটা জিনিস শিখব: নির্দিষ্ট একটা সংখ্যায় পৌঁছালে নিজে থেকে শূন্য হয়ে যাওয়া কাউন্টার।
=== নিম্নগামী রিপল কাউন্টার ===
==== উপমা: রকেট উৎক্ষেপণের উল্টো গণনা ====
রকেট উৎক্ষেপণের আগে কন্ট্রোল রুমে যে গণনা শোনা যায় সেটা উল্টো দিক থেকে হয়: ১০, ৯, ৮, ৭... ৩, ২, ১, শূন্য। এই উল্টো গণনাই নিম্নগামী কাউন্টারের কাজ।
বাস্তব জীবনে এই ধরনের উল্টো গণনার প্রয়োজন অনেক জায়গায়। মাইক্রোওয়েভ ওভেনে সময় কমতে থাকে, সিনেমার টিকেট কাউন্টারে খালি আসনের সংখ্যা কমতে থাকে, স্মার্টফোনের ব্যাটারি চার্জ কমতে থাকে। এগুলো সবই নিম্নগামী কাউন্টারের প্রয়োগ।
==== উর্ধ্বগামী থেকে নিম্নগামীর মূল পার্থক্য ====
উর্ধ্বগামী কাউন্টারে প্রতিটি পরের ফ্লিপ-ফ্লপের ঘড়ি হিসেবে আগের ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট ব্যবহার করা হয়। নিম্নগামী কাউন্টার তৈরি করতে কেবল একটা জিনিস বদলে দিতে হয়: <math>Q</math> এর বদলে <math>\bar{Q}</math> ব্যবহার করো।
এটা কেন কাজ করে? কারণ <math>Q</math> থেকে <math>\text{০}</math> থেকে <math>\text{১}</math> হওয়ার সময় (উঠতি প্রান্তে) পরের ফ্লিপ-ফ্লপ টগল করে উর্ধ্বগামী হয়। কিন্তু <math>\bar{Q}</math> ঠিক উল্টো সময়ে পরিবর্তন হয়, অর্থাৎ <math>Q</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নামতি প্রান্তে)। ফলে গণনা উল্টো দিকে যায়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী ও নিম্নগামী কাউন্টারের মূল পার্থক্য
! বৈশিষ্ট্য !! উর্ধ্বগামী কাউন্টার !! নিম্নগামী কাউন্টার
|-
| পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| টগলের সময় || <math>Q</math> এর উঠতি প্রান্তে || <math>\bar{Q}</math> এর উঠতি প্রান্তে (<math>Q</math> এর নামতি প্রান্তে)
|-
| গণনার দিক || ০ থেকে উপরে || সর্বোচ্চ থেকে নিচে
|-
| ২-বিটে গণনা ক্রম || <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০}</math> || <math>\text{১১} \to \text{১০} \to \text{০১} \to \text{০০} \to \text{১১}</math>
|}
==== ২-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
দুটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়, উভয়ের <math>T = \text{১}</math>। প্রথম ফ্লিপ-ফ্লপ (<math>FF_0</math>) মূল ঘড়ি থেকে চালিত হয়। দ্বিতীয় ফ্লিপ-ফ্লপ (<math>FF_1</math>) চালিত হয় <math>FF_0</math> এর <math>\bar{Q}_0</math> থেকে।
উর্ধ্বগামীতে ছিল: <math>CLK_1 = Q_0</math>
নিম্নগামীতে হলো: <math>CLK_1 = \bar{Q}_0</math>
একটাই পরিবর্তন, কিন্তু ফল সম্পূর্ণ উল্টো।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! কী ঘটছে
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || প্রাথমিক অবস্থা (সর্বোচ্চ)
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> টগল, <math>\bar{Q}_0</math> এর উঠতি প্রান্তে <math>Q_1</math> টগল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৩} \to \cdots</math>
===== টাইমিং চিত্র বর্ণনা =====
মূল ঘড়ি: নিয়মিত পর্যায়ক্রমিক সংকেত।
<math>Q_0</math>: মূল ঘড়ির নামতি প্রান্তে টগল করে (নামতি প্রান্ত ট্রিগার ধরলে)। কম্পাঙ্ক মূল ঘড়ির অর্ধেক।
<math>\bar{Q}_0</math>: সবসময় <math>Q_0</math> এর বিপরীত।
<math>Q_1</math>: <math>\bar{Q}_0</math> এর উঠতি প্রান্তে টগল করে, অর্থাৎ <math>Q_0</math> এর নামতি প্রান্তে। কম্পাঙ্ক মূল ঘড়ির এক-চতুর্থাংশ।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের টাইমিং বিশ্লেষণ
! সময় অক্ষে ঘটনা !! <math>Q_0</math> পরিবর্তন !! <math>\bar{Q}_0</math> পরিবর্তন !! <math>Q_1</math> পরিবর্তন
|-
| ক্লক ১ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{১} \to \text{০}</math> (টগল)
|-
| ক্লক ২ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|-
| ক্লক ৩ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{০} \to \text{১}</math> (টগল)
|-
| ক্লক ৪ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|}
==== ৩-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
তিনটি টি ফ্লিপ-ফ্লপ, সবার <math>T = \text{১}</math>।
সংযোগ বিধি:
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>\bar{Q}_0</math> থেকে চালিত
* <math>FF_2</math>: <math>\bar{Q}_1</math> থেকে চালিত
প্যাটার্নটা স্পষ্ট: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:95%;"
|+ ৩-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সর্বোচ্চ অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>Q_0</math> টগল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>Q_0</math> টগল
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || সব তিনটি টগল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৭ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সর্বনিম্ন অবস্থা
|-
| ৮ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৭} \to \text{৬} \to \text{৫} \to \text{৪} \to \text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৭} \to \cdots</math>
==== ৪-বিট নিম্নগামী রিপল কাউন্টার ====
চারটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়। সংযোগ বিধি একই: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট নিম্নগামী কাউন্টারের সম্পূর্ণ সত্যক সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| ৬ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| ৮ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| ৯ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| ১০ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| ১১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| ১২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ১৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ১৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|}
গণনার ক্রম: <math>\text{১৫} \to \text{১৪} \to \cdots \to \text{১} \to \text{০} \to \text{১৫} \to \cdots</math>
==== উর্ধ্বগামী ও নিম্নগামী কাউন্টারের তুলনামূলক সারণি ====
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী বনাম নিম্নগামী কাউন্টার
! বৈশিষ্ট্য !! উর্ধ্বগামী !! নিম্নগামী
|-
| ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| ২-বিট গণনা ক্রম || <math>\text{০,১,২,৩,০,...}</math> || <math>\text{৩,২,১,০,৩,...}</math>
|-
| ৩-বিট গণনা ক্রম || <math>\text{০} \to \text{৭} \to \text{০}</math> || <math>\text{৭} \to \text{০} \to \text{৭}</math>
|-
| প্রারম্ভিক অবস্থা (সাধারণত) || সব <math>\text{০}</math> || সব <math>\text{১}</math>
|-
| প্রয়োগ || ক্রমবর্ধমান গণনা || টাইমার, কাউন্টডাউন
|-
| হার্ডওয়্যার পার্থক্য || কেবল ঘড়ির উৎস আলাদা || কেবল ঘড়ির উৎস আলাদা
|}
=== উভয়মুখী কাউন্টার ===
==== উপমা: উপরে-নিচে চলা লিফট ====
একটি বহুতল ভবনের লিফট কল্পনা করো। একটি বোতাম চাপলে লিফট উপরে যায়, আরেকটি বোতাম চাপলে নিচে যায়। যখন ওপরের বোতাম চাপা থাকে তখন লিফট প্রতিটি তলায় উপরে ওঠে, যখন নিচের বোতাম চাপা থাকে তখন প্রতিটি তলায় নিচে নামে।
উভয়মুখী কাউন্টারও ঠিক এভাবে কাজ করে। একটি নির্বাচন সংকেত <math>M</math> ঠিক করে দেয় কাউন্টার কোন দিকে গণনা করবে।
==== নির্বাচন সংকেত <math>M</math> ====
* <math>M = \text{০}</math>: উর্ধ্বগামী (উপরের বোতাম চাপা)
* <math>M = \text{১}</math>: নিম্নগামী (নিচের বোতাম চাপা)
==== বুলিয়ান রাশি: পরবর্তী ঘড়ির উৎস ====
পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস নির্ভর করে <math>M</math> এর উপর:
:<math>CLK_{n+1} = (\bar{M} \cdot Q_n) + (M \cdot \bar{Q}_n)</math>
এই রাশিটি আসলে একটি মাল্টিপ্লেক্সার:
* <math>M = \text{০}</math> হলে: <math>CLK_{n+1} = Q_n</math> (উর্ধ্বগামী)
* <math>M = \text{১}</math> হলে: <math>CLK_{n+1} = \bar{Q}_n</math> (নিম্নগামী)
লক্ষ করো, এই রাশিটি এক্স-অর গেট দিয়েও লেখা যায়:
:<math>CLK_{n+1} = Q_n \oplus M</math>
কারণ যখন <math>M = \text{০}</math>, <math>Q_n \oplus \text{০} = Q_n</math>; এবং যখন <math>M = \text{১}</math>, <math>Q_n \oplus \text{১} = \bar{Q}_n</math>।
তাই প্রতিটি ফ্লিপ-ফ্লপের ঘড়ির সামনে একটি মাত্র এক্স-অর গেট রাখলেই উভয়মুখী কাউন্টার তৈরি হয়।
==== ২-বিট উভয়মুখী কাউন্টার ====
===== সার্কিটের গঠন =====
* দুটি টি ফ্লিপ-ফ্লপ, <math>T = \text{১}</math>
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>Q_0 \oplus M</math> থেকে চালিত
===== সত্যক সারণী (<math>M = \text{০</math>, উর্ধ্বগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ উর্ধ্বগামী অবস্থায় (<math>M = \text{০}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
===== সত্যক সারণী (<math>M = \text{১}</math>, নিম্নগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ নিম্নগামী অবস্থায় (<math>M = \text{১}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|}
===== উদাহরণ: মাঝপথে দিক পরিবর্তন =====
ধরো কাউন্টার <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১) অবস্থায় আছে। এখন <math>M</math> পরিবর্তন করা হলো:
{| class="wikitable" style="text-align:center; width:90%;"
|+ মাঝপথে দিক পরিবর্তনের উদাহরণ
! ক্লক !! <math>M</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| — || — || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রারম্ভিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || উর্ধ্বগামী
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || উর্ধ্বগামী
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || নিম্নগামী (দিক বদল)
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || নিম্নগামী
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || নিম্নগামী
|}
==== ৪-বিট উভয়মুখী কাউন্টারের ধারণা ====
৪-বিট উভয়মুখী কাউন্টারে চারটি ফ্লিপ-ফ্লপ এবং তিনটি এক্স-অর গেট লাগে। প্রতিটি এক্স-অর গেট <math>Q_n</math> ও <math>M</math> এর এক্স-অর করে পরের ফ্লিপ-ফ্লপের ঘড়ি দেয়।
বাস্তবে বহুল ব্যবহৃত আইসি ৭৪১৯৩ হলো একটি ৪-বিট উর্ধ্ব/নিম্নগামী কাউন্টার। এতে আলাদা দুটো ইনপুট থাকে: একটি উর্ধ্বগামী ঘড়ি ও একটি নিম্নগামী ঘড়ি।
{| class="wikitable" style="width:90%; text-align:center;"
|+ ৪-বিট উভয়মুখী কাউন্টারের সারসংক্ষেপ
! <math>n</math>-বিটে !! মোট অবস্থা !! উর্ধ্বগামী পরিসর !! নিম্নগামী পরিসর
|-
| <math>\text{২}</math>-বিট || <math>\text{৪}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৩} \to \text{০}</math>
|-
| <math>\text{৩}</math>-বিট || <math>\text{৮}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৭} \to \text{০}</math>
|-
| <math>\text{৪}</math>-বিট || <math>\text{১৬}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৫} \to \text{০}</math>
|-
| <math>\text{n}</math>-বিট || <math>2^n</math> || <math>\text{০} \to 2^n-\text{১}</math> || <math>2^n-\text{১} \to \text{০}</math>
|}
=== মডুলো-<math>N</math> কাউন্টার ===
==== উপমা: ঘড়ির কাঁটা ১২ তে ফিরে আসে ====
দেওয়াল ঘড়ির দিকে তাকাও। মিনিটের কাঁটা ১২ থেকে শুরু হয়ে ১, ২, ৩... ১১ পার করে আবার ১২ তে ফিরে আসে। ১২ এর পরে ১৩ আসে না, সরাসরি ১ বা ১২ তে ফিরে যায়।
এটাই মডুলো-১২ কাউন্টার। এখানে ১২ হলো মডুলো সংখ্যা, যার মানে কাউন্টার ১২টি অবস্থায় ঘুরতে থাকে।
==== মডুলো মানে কী? ====
মডুলো-<math>N</math> কাউন্টার হলো এমন একটি কাউন্টার যা <math>0</math> থেকে <math>N-1</math> পর্যন্ত গণনা করে এবং তারপর আবার <math>0</math> তে ফিরে আসে। মোট <math>N</math>টি ভিন্ন অবস্থা থাকে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ মডুলো-<math>N</math> কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| গণনার পরিসর || <math>\text{০}</math> থেকে <math>N-\text{১}</math>
|-
| মোট অবস্থা || <math>N</math>টি
|-
| ঘুরে আসার পরে || আবার <math>\text{০}</math> থেকে শুরু
|-
| প্রয়োজনীয় ফ্লিপ-ফ্লপ || <math>\lceil \log_2 N \rceil</math>টি
|}
যেকোনো স্বাভাবিক সংখ্যার জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করা যায়, কিন্তু সবচেয়ে সহজ হলো যখন <math>N = 2^n</math>, অর্থাৎ <math>N = \text{২, ৪, ৮, ১৬, ...}</math>। অন্য যেকোনো <math>N</math> এর জন্য বাড়তি রিসেট সার্কিট দরকার।
==== রিসেট পদ্ধতি: ন্যান্ড গেট দিয়ে স্বয়ংক্রিয় রিসেট ====
মডুলো-<math>N</math> কাউন্টার তৈরির মূল কৌশল হলো: কাউন্টার যখনই <math>N</math>-এ পৌঁছায়, সঙ্গে সঙ্গে তাকে <math>\text{০}</math>তে ফিরিয়ে আনো।
এটা করা হয় এভাবে:
# কাউন্টারের আউটপুট দেখে <math>N</math> সংখ্যাটি চেনো
# সেই মুহূর্তে সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে <math>\text{০}</math> পাঠাও
# ফ্লিপ-ফ্লপগুলো তাৎক্ষণিক <math>\text{০}</math> হয়ে যায়
একটু মনে রাখো: অধিকাংশ টি বা ডি ফ্লিপ-ফ্লপে ক্লিয়ার পিন অ্যাক্টিভ-লো, মানে <math>\text{০}</math> দিলে রিসেট হয়।
<math>N</math> সংখ্যাটি চেনার জন্য ন্যান্ড গেট ব্যবহার করা হয়। <math>N</math>-এর বাইনারি প্রতিনিধিত্বে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> আউটপুটকে ন্যান্ড গেটে দেওয়া হয়।
উদাহরণ: মডুলো-৫ কাউন্টারে <math>N = \text{৫} = \text{১০১}</math> বাইনারি। তাই <math>Q_2</math> এবং <math>Q_0</math> (যেখানে বিট <math>\text{১}</math>) একটি ন্যান্ড গেটে দেওয়া হয়।
==== মডুলো-৫ কাউন্টার ====
===== ধারণা =====
৫টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪}</math>। ৪ এর পরে আবার ০। মাইক্রোওয়েভ ওভেনের কল্পনা করো যেটা ৫ ধাপে ঘোরে।
৩টি ফ্লিপ-ফ্লপ লাগবে (কারণ <math>2^2 = \text{৪} < \text{৫} \leq \text{৮} = 2^3</math>)।
===== রিসেট কখন হবে? =====
<math>N = \text{৫} = \text{১০১}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_0 = \text{১}</math> হলেই কাউন্টারে ৫ হয়েছে বুঝতে হবে। কারণ <math>Q_2 \cdot Q_0 = \text{১}</math> শুধুমাত্র তখনই হয় যখন কাউন্টার ৫ (অন্যান্য অবস্থায় হয় <math>Q_2</math> নয়তো <math>Q_0</math> শূন্য)।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_0}</math> (ন্যান্ড গেটের আউটপুট) সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে।
===== বিস্তারিত সার্কিট বিশ্লেষণ =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৫ কাউন্টারের অবস্থা বিশ্লেষণ
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! <math>Q_2 \cdot Q_0</math> !! রিসেট সংকেত !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৫* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> (সক্রিয়!) || তাৎক্ষণিক রিসেট!
|-
| ৫ (রিসেটের পর) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || আবার শুরু
|}
* অবস্থা ৫ একটি ক্ষণিক অবস্থা, কার্যত দেখা যায় না।
===== গণনার প্রকৃত ক্রম =====
<math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to (\text{৫ হওয়ার সাথে সাথে রিসেট}) \to \text{০} \to \text{১} \to \cdots</math>
==== মডুলো-৬ কাউন্টার ====
===== ধারণা =====
৬টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪, ৫}</math>। এর পরে আবার ০। ডাইস ছুড়লে ১ থেকে ৬ পায়, কিন্তু এই কাউন্টার ০ থেকে ৫ পর্যন্ত যায়।
৩টি ফ্লিপ-ফ্লপ লাগবে।
===== রিসেট কখন? =====
<math>N = \text{৬} = \text{১১০}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলেই ৬ হয়েছে বোঝা যাবে।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৬ কাউন্টারের অবস্থা
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট হবে কি? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ৬ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{০} \to \cdots</math>
==== মডুলো-১০ কাউন্টার (দশমিক কাউন্টার) ====
===== বিসিডি সংখ্যার সাথে সম্পর্ক =====
তোমার কাছের ডিজিটাল ঘড়িতে <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত সংখ্যা দেখা যায়। প্রতিটি দশমিক সংখ্যাকে ৪-বিটে লেখার পদ্ধতিকে বিসিডি বলা হয়। বিসিডিতে কেবল <math>\text{০০০০}</math> থেকে <math>\text{১০০১}</math> (<math>\text{০}</math> থেকে <math>\text{৯}</math>) ব্যবহার হয়। <math>\text{১০১০}</math> থেকে <math>\text{১১১১}</math> (<math>\text{১০}</math> থেকে <math>\text{১৫}</math>) অব্যবহৃত।
মডুলো-১০ কাউন্টার ঠিক এই কাজ করে: ০ থেকে ৯ পর্যন্ত গণনা করে তারপর ০ তে ফিরে আসে।
===== রিসেট কখন? =====
<math>N = \text{১০} = \text{১০১০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলে ১০ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_1}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-১০ কাউন্টারের অবস্থা সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না || স্বাভাবিক
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না || স্বাভাবিক
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না || স্বাভাবিক
|-
| ৯ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || না || স্বাভাবিক
|-
| ১০* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ১০ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \cdots \to \text{৮} \to \text{৯} \to \text{০} \to \cdots</math>
===== বিসিডি কাউন্টারের প্রয়োগ =====
দুটো মডুলো-১০ কাউন্টার একসাথে সংযুক্ত করলে <math>\text{০০}</math> থেকে <math>\text{৯৯}</math> পর্যন্ত গণনা করা যায়। তিনটি সংযুক্ত করলে <math>\text{০০০}</math> থেকে <math>\text{৯৯৯}</math> পর্যন্ত। ডিজিটাল ঘড়িতে মিনিট গণনায় এটাই ব্যবহার হয়।
==== মডুলো-১২ কাউন্টার ====
===== ঘড়িতে প্রয়োগ =====
দুপুর ১২টার পরে ঘড়ি ১ তে যায়, ১৩ তে নয়। এটা মডুলো-১২।
<math>N = \text{১২} = \text{১১০০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_2 = \text{১}</math> একসাথে হলে ১২ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_2}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মডুলো-১২ কাউন্টারের গণনা ক্রম
! গণনা !! ০ !! ১ !! ২ !! ৩ !! ৪ !! ৫ !! ৬ !! ৭ !! ৮ !! ৯ !! ১০ !! ১১ !! পুনরায় ০
|-
| বাইনারি || <math>\text{০০০০}</math> || <math>\text{০০০১}</math> || <math>\text{০০১০}</math> || <math>\text{০০১১}</math> || <math>\text{০১০০}</math> || <math>\text{০১০১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১১}</math> || <math>\text{১০০০}</math> || <math>\text{১০০১}</math> || <math>\text{১০১০}</math> || <math>\text{১০১১}</math> || রিসেট (<math>\text{১১০০}</math> হওয়ার সাথে সাথে)
|}
==== যেকোনো মডুলো-<math>N</math> কাউন্টার তৈরির সাধারণ পদ্ধতি ====
যেকোনো <math>N</math> এর জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করতে নিচের ধাপগুলো অনুসরণ করো:
ধাপ ১: <math>N</math> কে বাইনারিতে লেখো
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ সংখ্যা নির্ধারণ করো: <math>\lceil \log_2 N \rceil</math>
ধাপ ৩: <math>N</math> এর বাইনারিতে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> চিহ্নিত করো
ধাপ ৪: চিহ্নিত <math>Q</math>গুলোকে একটি ন্যান্ড গেটে সংযুক্ত করো
ধাপ ৫: ন্যান্ড গেটের আউটপুট সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে সংযুক্ত করো
ধাপ ৬: স্বাভাবিক উর্ধ্বগামী রিপল কাউন্টার হিসেবে বাকি সংযোগ দাও
{| class="wikitable" style="width:100%; text-align:center;"
|+ বিভিন্ন <math>N</math> এর জন্য মডুলো কাউন্টারের বিশ্লেষণ
! মডুলো <math>N</math> !! বাইনারি !! ফ্লিপ-ফ্লপ সংখ্যা !! রিসেট শর্ত !! প্রয়োগ
|-
| <math>\text{৩}</math> || <math>\text{০১১}</math> || <math>\text{২}</math> || <math>Q_1 \cdot Q_0 = \text{১}</math> || তিনভাগা ঘুরন্ত যন্ত্র
|-
| <math>\text{৫}</math> || <math>\text{১০১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_0 = \text{১}</math> || পেন্টাগন আলো
|-
| <math>\text{৬}</math> || <math>\text{১১০}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 = \text{১}</math> || ছয়ভাগা সিকোয়েন্সার
|-
| <math>\text{৭}</math> || <math>\text{১১১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math> || সাত দিনের চক্র
|-
| <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_1 = \text{১}</math> || দশমিক গণনা, বিসিডি
|-
| <math>\text{১২}</math> || <math>\text{১১০০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_2 = \text{১}</math> || ঘড়ির কাঁটা
|-
| <math>\text{১৬}</math> || <math>\text{১০০০০}</math> || <math>\text{৪}</math> || স্বাভাবিক উপচে পড়া || হেক্সাডেসিমেল
|-
| <math>\text{৬০}</math> || <math>\text{১১১১০০}</math> || <math>\text{৬}</math> || <math>Q_5 \cdot Q_4 \cdot Q_3 \cdot Q_2 = \text{১}</math> || সেকেন্ড, মিনিট গণনা
|-
| <math>\text{২৪}</math> || <math>\text{০১১০০০}</math> || <math>\text{৫}</math> || <math>Q_4 \cdot Q_3 = \text{১}</math> || ২৪ ঘণ্টার ঘড়ি
|}
=== বিস্তারিত টাইমিং বিশ্লেষণ ===
==== রিপল প্রভাব ও ক্ষণিক ভুল ====
এখানে একটা গুরুত্বপূর্ণ সমস্যা আছে যেটা অ্যাসিনক্রোনাস কাউন্টারের মূল দুর্বলতা।
উপমা: একটি সারিতে দশজন মানুষ দাঁড়িয়ে আছে। প্রথম জন হাত তোলে, তারপর দ্বিতীয় জন দেখে হাত তোলে, তারপর তৃতীয় জন দেখে হাত তোলে, এভাবে চলতে থাকে। শেষ জনের হাত উঠতে একটু সময় লাগে কারণ সংকেত একজন থেকে আরেকজনে ধীরে ধীরে যায়।
অ্যাসিনক্রোনাস কাউন্টারেও ঠিক এই সমস্যা। <math>FF_0</math> টগল করে, তারপর তার আউটপুট পরিবর্তন হলে <math>FF_1</math> টগল করে, তারপর <math>FF_2</math>, এভাবে চলে। প্রতিটি ফ্লিপ-ফ্লপের টগলে একটু সময় লাগে, এই সময়কে প্রচার বিলম্ব বলা হয়।
==== ৩-বিট কাউন্টারে ক্ষণিক ভুল ====
ধরো ৩-বিট উর্ধ্বগামী কাউন্টার ৭ (<math>\text{১১১}</math>) থেকে ০ (<math>\text{০০০}</math>) তে যাচ্ছে।
আদর্শ জগতে এটা তাৎক্ষণিক হওয়া উচিত: <math>\text{১১১} \to \text{০০০}</math>।
কিন্তু বাস্তবে যা হয়:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭ থেকে ০-তে যাওয়ার সময় ক্ষণিক ভুল অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| <math>t_0</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || ৮ম ক্লকের আগে
|-
| <math>t_0 + t_p</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>FF_0</math> টগল করেছে, ক্ষণিক ৬!
|-
| <math>t_0 + 2t_p</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>FF_1</math> টগল করেছে, ক্ষণিক ৪!
|-
| <math>t_0 + 3t_p</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>FF_2</math> টগল করেছে, সঠিক ০
|}
এখানে <math>t_p</math> হলো প্রতিটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব। মাঝের দুটো অবস্থা (<math>\text{৬}</math> ও <math>\text{৪}</math>) সঠিক নয়, এগুলো ক্ষণিক ভুল।
==== গ্লিচ ও তার প্রভাব ====
এই ক্ষণিক ভুল অবস্থাগুলোকে গ্লিচ বলা হয়।
{| class="wikitable" style="width:100%;"
|+ গ্লিচের প্রভাব ও সমাধান
! গ্লিচের ধরন !! কোথায় সমস্যা হয় !! সমাধান
|-
| কাউন্টারের আউটপুটে ভুল অবস্থা || ডিকোডার বা ডিসপ্লে ভুল সংখ্যা দেখায় || আউটপুট স্তরে রেজিস্টার ব্যবহার
|-
| মডুলো-<math>N</math> কাউন্টারে অনাকাঙ্ক্ষিত রিসেট || মাঝের ক্ষণিক অবস্থায় রিসেট হয়ে যেতে পারে || ন্যান্ড গেটের পরিবর্তে ক্লক-নিয়ন্ত্রিত রিসেট
|-
| বিস্তৃত কাউন্টারে বিলম্ব বৃদ্ধি || বেশি ফ্লিপ-ফ্লপ মানে বেশি বিলম্ব || সিনক্রোনাস কাউন্টার ব্যবহার
|}
মডুলো-<math>N</math> কাউন্টারে একটি বিশেষ সমস্যা আছে। যখন কাউন্টার <math>N</math>-এ পৌঁছায় এবং রিসেট হয়, তখন কিছু ক্ষণিক অবস্থা সৃষ্টি হতে পারে যেগুলো রিসেট শর্তের সাথে মিলে যায় এবং অনাকাঙ্ক্ষিতভাবে রিসেট ট্রিগার করে। তবে যেহেতু এই রিসেট অ্যাসিনক্রোনাস, সার্কিটটি সাধারণত স্বাভাবিকভাবে কাজ করে।
==== কতটি ফ্লিপ-ফ্লপের সর্বোচ্চ বিলম্ব ====
<math>n</math>টি ফ্লিপ-ফ্লপের রিপল কাউন্টারে সর্বোচ্চ বিলম্ব:
:<math>t_{সর্বোচ্চ} = n \times t_p</math>
যেখানে <math>t_p</math> হলো একটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব।
যদি <math>t_p = \text{১০}</math> ন্যানোসেকেন্ড হয়, তাহলে:
* ৪-বিট কাউন্টারে: <math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
* ৮-বিট কাউন্টারে: <math>\text{৮} \times \text{১০} = \text{৮০}</math> ন্যানোসেকেন্ড
* ১৬-বিট কাউন্টারে: <math>\text{১৬} \times \text{১০} = \text{১৬০}</math> ন্যানোসেকেন্ড
এই বিলম্বের কারণে ক্লকের কম্পাঙ্ক একটি সীমার বাইরে বাড়ানো যায় না।
== উদাহরণ ==
=== উদাহরণ ১: ২-বিট নিম্নগামী কাউন্টারে পরিবর্তন বিশ্লেষণ ===
একটি ২-বিট নিম্নগামী কাউন্টার প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math> থেকে শুরু করে। ক্লক ২-এর পরে অবস্থা কী হবে এবং তখন <math>\bar{Q}_0</math> কত?
ধাপ ১: প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক ৩)
ধাপ ২: ক্লক ১ আসে। <math>Q_0</math> টগল করে <math>\text{১} \to \text{০}</math>। এখন <math>\bar{Q}_0 = \text{১}</math>। এটি উঠতি প্রান্ত তৈরি করে <math>FF_1</math>-এর ঘড়িতে। তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
অপেক্ষা করো! এটা কি ঠিক? ৩ থেকে সরাসরি ১ হলো?
আবার ভাবো: নিম্নগামী কাউন্টারে প্রথম ক্লকে শুধু <math>Q_0</math> টগল করে, <math>Q_1</math> টগল করে না। কারণ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয়, <math>\bar{Q}_0</math> হয় <math>\text{০} \to \text{১}</math> (উঠতি প্রান্ত)। তাই <math>Q_1</math>-ও টগল করে।
সঠিক বিশ্লেষণ:
{| class="wikitable" style="text-align:center; width:85%;"
|+ ক্লক ১ বিশ্লেষণ
! ঘটনা !! <math>Q_0</math> !! <math>\bar{Q}_0</math> !! <math>Q_1</math>
|-
| ক্লক ১ আগে || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| <math>Q_0</math> টগল || <math>\text{০}</math> || <math>\text{১}</math> (উঠতি!) || টগল হবে
|-
| ক্লক ১ পরে || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক ২? নাকি ০?)
আবার যাচাই করি সত্যক সারণী থেকে: প্রাথমিক ৩ থেকে ক্লক ১ এর পর ২ হওয়ার কথা।
<math>Q_0 = \text{১} \to \text{০}</math>: শুধু <math>Q_0</math> টগল।
<math>\bar{Q}_0 = \text{০} \to \text{১}</math>: <math>FF_1</math>-এ উঠতি প্রান্ত, তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ফলে: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২) ✓
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math>, <math>\bar{Q}_0 = \text{১}</math>
ধাপ ৩: ক্লক ২ আসে। <math>Q_0</math> টগল: <math>\text{০} \to \text{১}</math>। <math>\bar{Q}_0</math>: <math>\text{১} \to \text{০}</math> (নামতি প্রান্ত)। <math>FF_1</math>-এ উঠতি প্রান্ত নেই, তাই <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>
অপেক্ষা করো, এটা ঠিক না! ২ থেকে ১ হওয়ার কথা।
বিশ্লেষণ: ক্লক ২ আসে, <math>Q_0 = \text{০} \to \text{১}</math>, <math>\bar{Q}_0 = \text{১} \to \text{০}</math> (নামতি প্রান্ত, উঠতি নয়!)। তাই <math>Q_1</math> টগল করে না।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>?
এখানে বিভ্রান্তি হচ্ছে। মূল ঘড়ির কোন প্রান্তে ফ্লিপ-ফ্লপ টগল করে সেটা নির্ভর করে ফ্লিপ-ফ্লপের ধরনের উপর। ধরে নিই নামতি প্রান্তে টগল করে।
ক্লক ১ (নামতি):
<math>Q_0</math>: <math>\text{১} \to \text{০}</math>
<math>\bar{Q}_0</math>: <math>\text{০} \to \text{১}</math> (উঠতি), তাই <math>Q_1</math> টগল: <math>\text{১} \to \text{০}</math>
অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>
না, আবারও মিলছে না! সত্যক সারণী থেকে দেখা যাচ্ছে সঠিক ক্রম হওয়া উচিত ৩, ২, ১, ০।
সঠিক ব্যাখ্যা: নামতি প্রান্ত ট্রিগার ফ্লিপ-ফ্লপে এবং <math>\bar{Q}</math> ব্যবহার করলে:
* <math>Q_0 = \text{১} \to \text{০}</math> (নামতি): তাই <math>\bar{Q}_0 = \text{০} \to \text{১}</math> (উঠতি)। <math>FF_1</math> উঠতি প্রান্তে টগল করে না (কারণ এটাও নামতি প্রান্ত ট্রিগার)। তাই <math>Q_1</math> পরিবর্তন হয় না।
তাহলে সত্যক সারণীর ক্রম ৩ → ২ → ১ → ০ হওয়ার জন্য:
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)
<math>Q_0</math> শুধু টগল, <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
<math>Q_0</math> আবার টগল, এবং যেহেতু এবার <math>Q_0: \text{০} \to \text{১}</math>, <math>\bar{Q}_0: \text{১} \to \text{০}</math> (নামতি), নামতি ট্রিগারে <math>Q_1</math> টগল।
উত্তর: ক্লক ২ এর পর <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)। <math>\bar{Q}_0 = \text{০}</math>।
=== উদাহরণ ২: মডুলো-৭ কাউন্টারের ডিজাইন ===
একটি মডুলো-৭ কাউন্টার ডিজাইন করো। কতটি ফ্লিপ-ফ্লপ লাগবে? রিসেট শর্ত কী?
ধাপ ১: <math>N = \text{৭}</math>। বাইনারিতে: <math>\text{৭} = \text{১১১}</math>।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 7 \rceil = 3</math>টি (কারণ <math>2^2 = 4 < 7 \leq 8 = 2^3</math>)।
ধাপ ৩: <math>\text{৭} = \text{১১১}</math>: <math>Q_2, Q_1, Q_0</math> তিনটিই <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1 \cdot Q_0}</math> (তিন-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৭ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || হ্যাঁ! তাৎক্ষণিক রিসেট
|-
| ৭ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{৬} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৩: উভয়মুখী কাউন্টারে এক্স-অর গেটের যাচাই ===
একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{০}</math> এবং <math>Q_0 = \text{১}</math>। পরের ফ্লিপ-ফ্লপের ঘড়ির মান কত?
রাশি: <math>CLK_1 = Q_0 \oplus M</math>
:<math>CLK_1 = \text{১} \oplus \text{০} = \text{১}</math>
এটা <math>Q_0 = \text{১}</math> এর সমান, অর্থাৎ উর্ধ্বগামী কাউন্টারের মতো আচরণ ✓
এখন <math>M = \text{১}</math> এবং <math>Q_0 = \text{১}</math>:
:<math>CLK_1 = \text{১} \oplus \text{১} = \text{০}</math>
এটা <math>\bar{Q}_0 = \text{০}</math> এর সমান, অর্থাৎ নিম্নগামী কাউন্টারের মতো আচরণ ✓
=== উদাহরণ ৪: মডুলো-৯ কাউন্টারের ডিজাইন ===
একটি মডুলো-৯ কাউন্টার ডিজাইন করো।
ধাপ ১: <math>N = \text{৯} = \text{১০০১}</math> বাইনারিতে।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 9 \rceil = 4</math>টি (কারণ <math>2^3 = 8 < 9 \leq 16 = 2^4</math>)।
ধাপ ৩: <math>\text{৯} = \text{১০০১}</math>: <math>Q_3</math> এবং <math>Q_0</math> হলো <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_3 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_0}</math> (দুই-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৯ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না
|-
| ৯* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || হ্যাঁ! রিসেট
|-
| ৯ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \cdots \to \text{৮} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৫: ৪-বিট নিম্নগামী কাউন্টারে একটি নির্দিষ্ট অবস্থা চেনা ===
একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১৫}</math> থেকে শুরু করে। ৭ম ক্লকের পর অবস্থা কী?
নিম্নগামী কাউন্টারে ক্রম: <math>\text{১৫, ১৪, ১৩, ১২, ১১, ১০, ৯, ...}</math>
৭ম ক্লকের পর: <math>\text{১৫} - \text{৭} = \text{৮}</math>
তাই অবস্থা হবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০০০}</math> (দশমিক ৮) ✓
=== উদাহরণ ৬: দুটো মডুলো-১০ কাউন্টার দিয়ে ০ থেকে ৯৯ গণনা ===
দুটো মডুলো-১০ কাউন্টার সংযুক্ত করে ০ থেকে ৯৯ পর্যন্ত গণনার পরিকল্পনা করো।
সংযোগ পদ্ধতি:
প্রথম কাউন্টার: একক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। মূল ঘড়ি থেকে চালিত।
দ্বিতীয় কাউন্টার: দশক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। প্রথম কাউন্টার যখন ৯ থেকে ০ তে ফিরে আসে, সেই মুহূর্তে দ্বিতীয় কাউন্টারকে একটি ক্লক দেয়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ দুই-অঙ্কের বিসিডি কাউন্টারের কিছু ক্রম
! ক্লক সংখ্যা !! দশক (<math>C_1</math>) !! একক (<math>C_0</math>) !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{০৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || <math>\text{১৯}</math>
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{২০}</math>
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯৯}</math>
|-
| <math>\text{১০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|}
== অনুশীলনী ==
# একটি ৩-বিট নিম্নগামী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{১০০}</math> অবস্থায় আছে। পরের দুটো ক্লকের পর অবস্থা কী হবে?
# উর্ধ্বগামী ও নিম্নগামী কাউন্টারে একমাত্র হার্ডওয়্যার পার্থক্য কী?
# একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{১}</math> এবং বর্তমান অবস্থা <math>Q_1 Q_0 = \text{১০}</math>। পরের ক্লকে অবস্থা কী হবে?
# মডুলো-৮ কাউন্টারে কতটি ফ্লিপ-ফ্লপ লাগবে এবং রিসেট সার্কিট কি লাগবে? কেন?
# মডুলো-৬ কাউন্টারের রিসেট শর্তটি লেখো এবং বলো কোন দুটি বিটের ন্যান্ড গেট ব্যবহার করতে হবে।
# একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১২}</math> থেকে শুরু করে। ৫ম ক্লকের পর অবস্থা কী হবে? বাইনারিতে লেখো।
# মডুলো-১৩ কাউন্টার ডিজাইন করো: কতটি ফ্লিপ-ফ্লপ এবং রিসেট শর্ত কী?
# রিপল কাউন্টারে গ্লিচ কী এবং কেন হয়? কীভাবে কমানো যায়?
# দুটো মডুলো-১০ কাউন্টার সংযুক্ত করলে সর্বোচ্চ গণনা কত হবে? এটা কোন যন্ত্রে ব্যবহার হয়?
# একটি উভয়মুখী কাউন্টারে <math>Q_0 \oplus M</math> রাশিটি ব্যবহার করা হয় কেন? <math>M = \text{০}</math> ও <math>M = \text{১}</math> এর জন্য আলাদা আলাদা ব্যাখ্যা দাও।
# <math>n</math>-বিট রিপল কাউন্টারে সর্বোচ্চ প্রচার বিলম্বের সূত্র লেখো। ১০-বিট কাউন্টারে যদি প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ১৫ ন্যানোসেকেন্ড হয়, সর্বোচ্চ বিলম্ব কত?
# মডুলো-১০ কাউন্টারে <math>Q_3</math> ও <math>Q_1</math> কেন রিসেট শর্তে ব্যবহার করা হয়? <math>Q_3 \cdot Q_0</math> ব্যবহার করলে কোন সমস্যা হবে?
# একটি ডিজিটাল ঘড়িতে সেকেন্ড গণনার জন্য কোন ধরনের মডুলো কাউন্টার ব্যবহার হয়? পুরো ব্যাখ্যা দাও।
# মডুলো-<math>N</math> কাউন্টারের রিসেট শর্তে কেন <math>N</math>-এর সব বিট ব্যবহার করা হয় না, শুধু <math>\text{১}</math>-বিটগুলো ব্যবহার করা হয়?
# একটি ৩-বিট উভয়মুখী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{০১১}</math> অবস্থায় আছে। প্রথমে দুই ক্লক <math>M = \text{০}</math> তারপর দুই ক্লক <math>M = \text{১}</math> দিলে চার ক্লক পরে অবস্থা কী হবে?
'''উত্তর:'''
# ক্লক ১ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১১}</math> (দশমিক ৩)। ক্লক ২ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১০}</math> (দশমিক ২)।
# উর্ধ্বগামীতে পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস আগেরটির <math>Q</math>। নিম্নগামীতে <math>\bar{Q}</math>। শুধু এই একটি পার্থক্য।
# <math>M = \text{১}</math> (নিম্নগামী), <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)। পরের ক্লকে: দশমিক <math>\text{২} - \text{১} = \text{১}</math>। অবস্থা: <math>Q_1 Q_0 = \text{০১}</math>।
# মডুলো-৮ = <math>2^3</math>। তাই ৩টি ফ্লিপ-ফ্লপ লাগবে এবং আলাদা রিসেট সার্কিট লাগবে না। কাউন্টার স্বাভাবিকভাবেই ০ থেকে ৭ পর্যন্ত গণনা করে ০ তে ফিরে আসে।
# মডুলো-৬ কাউন্টারের রিসেট শর্ত: <math>Q_2 \cdot Q_1 = \text{১}</math>। কারণ <math>\text{৬} = \text{১১০}</math>, বিট ২ ও বিট ১ হলো <math>\text{১}</math>।
# <math>\text{১২} - \text{৫} = \text{৭}</math>। বাইনারিতে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math>।
# মডুলো-১৩: <math>\text{১৩} = \text{১১০১}</math>। ফ্লিপ-ফ্লপ: ৪টি। রিসেট শর্ত: <math>Q_3 \cdot Q_2 \cdot Q_0 = \text{১}</math>। ন্যান্ড গেটে <math>Q_3, Q_2, Q_0</math> সংযুক্ত।
# রিপল কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপ আগেরটির আউটপুটে পরিবর্তন দেখে টগল করে, তাই পরিবর্তন একে একে ছড়ায়। এই সময়ে মাঝের ক্ষণিক ভুল অবস্থা দেখা দেয়, এগুলোকে গ্লিচ বলে। আউটপুটে রেজিস্টার বা সিনক্রোনাস কাউন্টার ব্যবহার করে কমানো যায়।
# সর্বোচ্চ গণনা: <math>\text{৯৯}</math>। মোট ১০০টি অবস্থা। ব্যবহার: ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনায়, স্কোরবোর্ডে।
# <math>M = \text{০}</math> হলে: <math>Q_0 \oplus \text{০} = Q_0</math>, উর্ধ্বগামীর মতো। <math>M = \text{১}</math> হলে: <math>Q_0 \oplus \text{১} = \bar{Q}_0</math>, নিম্নগামীর মতো। একটি মাত্র গেট দিয়ে উভয় দিক নিয়ন্ত্রণ সম্ভব হয়।
# সূত্র: <math>t_{সর্বোচ্চ} = n \times t_p</math>। ১০-বিট কাউন্টারে: <math>\text{১০} \times \text{১৫} = \text{১৫০}</math> ন্যানোসেকেন্ড।
# <math>\text{১০} = \text{১০১০}</math>: বিট ৩ ও বিট ১ হলো <math>\text{১}</math>, তাই <math>Q_3 \cdot Q_1</math>। <math>Q_3 \cdot Q_0</math> ব্যবহার করলে রিসেট হতো <math>\text{৯} = \text{১০০১}</math>-এ, যা ভুল।
# ডিজিটাল ঘড়িতে সেকেন্ড: মডুলো-৬০ কাউন্টার (০ থেকে ৫৯ পর্যন্ত)। এটিকে একটি মডুলো-১০ (একক স্থান ০-৯) এবং একটি মডুলো-৬ (দশক স্থান ০-৫) কাউন্টার দিয়ে তৈরি করা যায়।
# <math>N</math>-এর যে বিটগুলো <math>\text{০}</math>, সেই ফ্লিপ-ফ্লপগুলো ওই অবস্থায় যেকোনো মান হতে পারে এবং রিসেট শর্ত মেলে না। শুধু <math>\text{১}</math>-বিটগুলো যাচাই করলেই <math>N</math> সংখ্যাটি অনন্যভাবে চেনা যায়।
# ক্লক ১ (<math>M=\text{০}</math>): <math>\text{০১১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ২ (<math>M=\text{০}</math>): <math>\text{১০০} \to \text{১০১}</math> (দশমিক ৫); ক্লক ৩ (<math>M=\text{১}</math>): <math>\text{১০১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ৪ (<math>M=\text{১}</math>): <math>\text{১০০} \to \text{০১১}</math> (দশমিক ৩)। চার ক্লক পরে অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>।
'''অ্যাসিনক্রোনাস কাউন্টার''' (তৃতীয় ভাগ)
== ক্যাসকেড কাউন্টার, আইসি চিপ ও বাস্তব প্রয়োগ ==
আগের দুটো ভাগে আমরা শিখেছিলাম অ্যাসিনক্রোনাস কাউন্টারের মূল ধারণা, উর্ধ্বগামী, নিম্নগামী, উভয়মুখী এবং মডুলো কাউন্টার। এই শেষ ভাগে আমরা দেখব কীভাবে ছোট ছোট কাউন্টারকে একসাথে জুড়ে বড় কাউন্টার তৈরি করা যায়, কোন কোন আইসি চিপ বাজারে পাওয়া যায়, এবং বাস্তব জীবনে এই সার্কিটগুলো কোথায় কোথায় কাজ করছে।
== ক. ক্যাসকেড কাউন্টার ==
=== বড় ঘড়ির উপমা ===
ধরো তুমি একটা বড় ডিজিটাল ঘড়ি তৈরি করতে চাও যেটা ০ থেকে ৯৯৯ পর্যন্ত গুনতে পারবে। তোমার কাছে আছে শুধু ছোট ছোট ঘড়ি যেগুলো ০ থেকে ৯ পর্যন্ত গুনতে পারে।
তুমি কী করবে? তুমি তিনটা ছোট ঘড়ি পাশাপাশি রাখবে। ডানেরটা একক স্থান গোনে, মাঝেরটা দশক স্থান গোনে, বাঁয়েরটা শতক স্থান গোনে। যখন ডানেরটা ৯ থেকে ০-তে ফেরে, সেই মুহূর্তে মাঝেরটাকে একবার টিক দেয়। যখন মাঝেরটা ৯ থেকে ০-তে ফেরে, বাঁয়েরটাকে একবার টিক দেয়। এভাবে তিনটা মিলে ০ থেকে ৯৯৯ পর্যন্ত গোনে।
এটাই ক্যাসকেড কাউন্টারের মূল নীতি।
=== ক্যাসকেড মানে কী? ===
ক্যাসকেড মানে ধারাবাহিকভাবে সংযুক্ত। একটি কাউন্টারের সর্বোচ্চ বিটের আউটপুট পরের কাউন্টারের ক্লক ইনপুট হিসেবে ব্যবহৃত হয়।
যখন প্রথম কাউন্টার তার সর্বোচ্চ মান থেকে শূন্যে ফেরে, সর্বোচ্চ বিটে একটি উঠতি বা নামতি প্রান্ত তৈরি হয়। সেই প্রান্তটিই পরের কাউন্টারকে এক ধাপ এগিয়ে দেয়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেড সংযোগের নিয়ম
! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | ক্লক উৎস !! style="background:#3498DB; color:white;" | কখন পরেরটাকে টিক দেয় !! style="background:#3498DB; color:white;" | গণনার পরিসর
|-
| প্রথম || বাইরের ক্লক || নিজে ঘুরে এলে || <math>\text{০}</math> থেকে <math>N_1 - \text{১}</math>
|-
| দ্বিতীয় || প্রথমের MSB আউটপুট || প্রথম প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 - \text{১}</math>
|-
| তৃতীয় || দ্বিতীয়ের MSB আউটপুট || দ্বিতীয় প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 \times N_3 - \text{১}</math>
|}
=== দুটি ৪-বিট কাউন্টার দিয়ে ৮-বিট কাউন্টার ===
একটি ৪-বিট কাউন্টার ০ থেকে ১৫ পর্যন্ত গুনতে পারে, মানে মডুলো-১৬।
দুটি ৪-বিট কাউন্টার ক্যাসকেডে জোড়া দিলে:
সর্বোচ্চ গণনা = <math>N_1 \times N_2 = \text{১৬} \times \text{১৬} = \text{২৫৬}</math>
অর্থাৎ ০ থেকে ২৫৫ পর্যন্ত, মানে মডুলো-২৫৬ বা ৮-বিট কাউন্টার।
সংযোগ পদ্ধতি:
* প্রথম কাউন্টারের <math>Q_3</math> (সর্বোচ্চ বিট) সংযুক্ত হয় দ্বিতীয় কাউন্টারের ক্লক ইনপুটে।
* প্রথম কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো ৮-বিট ফলাফলের নিচের চারটি বিট।
* দ্বিতীয় কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো উপরের চারটি বিট।
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৮-বিট ক্যাসকেড কাউন্টারের গণনার নমুনা
! style="background:#8E44AD; color:white;" | দশমিক !! style="background:#E74C3C; color:white;" | দ্বিতীয় কাউন্টার (<math>Q_7 Q_6 Q_5 Q_4</math>) !! style="background:#27AE60; color:white;" | প্রথম কাউন্টার (<math>Q_3 Q_2 Q_1 Q_0</math>) !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শুরু
|-
| <math>\text{১৫}</math> || <math>\text{০০০০}</math> || <math>\text{১১১১}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১৬}</math> || <math>\text{০০০১}</math> || <math>\text{০০০০}</math> || প্রথম ঘুরল, দ্বিতীয় এক ধাপ এগোল
|-
| <math>\text{৩১}</math> || <math>\text{০০০১}</math> || <math>\text{১১১১}</math> || প্রথম আবার সর্বোচ্চে
|-
| <math>\text{৩২}</math> || <math>\text{০০১০}</math> || <math>\text{০০০০}</math> || প্রথম আবার ঘুরল
|-
| <math>\text{২৫৫}</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সর্বোচ্চ অবস্থা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ১: মডুলো-১০০ কাউন্টার ===
দুটি মডুলো-১০ কাউন্টার ক্যাসকেডে জুড়লে পাওয়া যায়:
<math>N = \text{১০} \times \text{১০} = \text{১০০}</math>
এটি ০ থেকে ৯৯ পর্যন্ত গুনতে পারে। ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনার জন্য এই সার্কিটই ব্যবহার হয়।
প্রথম কাউন্টার: একক স্থানের অঙ্ক (০ থেকে ৯)।
দ্বিতীয় কাউন্টার: দশক স্থানের অঙ্ক (০ থেকে ৯)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০ কাউন্টারের ধাপ
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | দ্বিতীয় কাউন্টার (দশক) !! style="background:#3498DB; color:white;" | প্রথম কাউন্টার (একক) !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরে দ্বিতীয়কে ঠেলল
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || দুটোই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ২: মডুলো-৬০ কাউন্টার ===
ঘড়িতে সেকেন্ড ০ থেকে ৫৯ পর্যন্ত গোনে, মানে মডুলো-৬০।
এটি তৈরি হয় একটি মডুলো-১০ এবং একটি মডুলো-৬ কাউন্টার ক্যাসকেডে জুড়ে:
<math>N = \text{১০} \times \text{৬} = \text{৬০}</math>
প্রথম কাউন্টার (মডুলো-১০): একক স্থান গোনে ০ থেকে ৯।
দ্বিতীয় কাউন্টার (মডুলো-৬): দশক স্থান গোনে ০ থেকে ৫।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৬০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | দশক অঙ্ক (মডুলো-৬) !! style="background:#3498DB; color:white;" | একক অঙ্ক (মডুলো-১০) !! style="background:#8E44AD; color:white;" | অর্থ
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || ৯ সেকেন্ড
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ১০ সেকেন্ড
|-
| <math>\text{৫৯}</math> || <math>\text{৫}</math> || <math>\text{৯}</math> || ৫৯ সেকেন্ড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১ মিনিট পূর্ণ, শুরুতে ফিরল
|}
মডুলো-৬ কাউন্টার কীভাবে তৈরি হয়? ৩-বিট বাইনারি কাউন্টারে রিসেট লাগিয়ে: যখন গণনা ৬ (<math>\text{১১০}</math>) হয়, সাথে সাথে রিসেট করো। তখন <math>Q_2</math> এবং <math>Q_1</math>-এর অ্যান্ড গেটের আউটপুট ক্লিয়ার পিনে দেওয়া হয়।
=== ক্যাসকেড উদাহরণ ৩: মডুলো-১২ ঘণ্টা কাউন্টার ===
ঘড়ির ঘণ্টা ১ থেকে ১২ পর্যন্ত গোনে। এটা একটু বিশেষ কারণ ০ নেই, শুরু হয় ১ থেকে।
পদ্ধতি: একটি মডুলো-১৩ কাউন্টার তৈরি করো যেটা ০-এ না থেমে ১-এ থাকে।
বিকল্পভাবে: একটি মডুলো-১২ কাউন্টার (০ থেকে ১১) তৈরি করে ডিসপ্লেতে ১ যোগ করে দেখানো হয়।
একটি মডুলো-২ এবং একটি মডুলো-৬ ক্যাসকেডে:
<math>N = \text{২} \times \text{৬} = \text{১২}</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১২ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | গণনা !! style="background:#27AE60; color:white;" | মডুলো-৬ অংশ !! style="background:#3498DB; color:white;" | মডুলো-২ অংশ !! style="background:#8E44AD; color:white;" | প্রদর্শিত ঘণ্টা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ১
|-
| <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ৬
|-
| <math>\text{১১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || ১১
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২ (আবার)
|}
=== ক্যাসকেডে বিলম্ব সমস্যা ===
অ্যাসিনক্রোনাস ক্যাসকেড কাউন্টারে একটি গুরুতর সমস্যা আছে: প্রতিটি ফ্লিপ-ফ্লপের মধ্য দিয়ে সংকেত যেতে কিছুটা সময় লাগে, যাকে বলা হয় প্রোপাগেশন বিলম্ব।
যখন কাউন্টারগুলো ক্যাসকেডে থাকে, এই বিলম্ব জমা হতে থাকে।
ধরো প্রতিটি ফ্লিপ-ফ্লপে ১০ ন্যানোসেকেন্ড বিলম্ব। একটি ৪-বিট কাউন্টারে সর্বোচ্চ বিলম্ব হবে:
<math>\text{৪} \times \text{১০} = \text{৪০} \text{ ন্যানোসেকেন্ড}</math>
দুটো ৪-বিট কাউন্টার ক্যাসকেডে থাকলে:
<math>\text{৮} \times \text{১০} = \text{৮০} \text{ ন্যানোসেকেন্ড}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেডে বিলম্ব বিশ্লেষণ
! style="background:#3498DB; color:white;" | কাউন্টারের সংখ্যা !! style="background:#3498DB; color:white;" | মোট বিট !! style="background:#3498DB; color:white;" | সর্বোচ্চ বিলম্ব (১০ ns/ফ্লিপ-ফ্লপ) !! style="background:#3498DB; color:white;" | সর্বোচ্চ ক্লক গতি
|-
| <math>\text{১}</math> টি ৪-বিট || <math>\text{৪}</math> || <math>\text{৪০}</math> ns || <math>\text{২৫}</math> MHz
|-
| <math>\text{২}</math> টি ৪-বিট || <math>\text{৮}</math> || <math>\text{৮০}</math> ns || <math>\text{১২.৫}</math> MHz
|-
| <math>\text{৩}</math> টি ৪-বিট || <math>\text{১২}</math> || <math>\text{১২০}</math> ns || <math>\text{৮.৩}</math> MHz
|-
| <math>\text{৪}</math> টি ৪-বিট || <math>\text{১৬}</math> || <math>\text{১৬০}</math> ns || <math>\text{৬.২}</math> MHz
|}
এই কারণেই বেশি বিটের দ্রুত কাউন্টারের জন্য সমকালীন কাউন্টার ব্যবহার করা হয়।
বিলম্বের প্রভাব: কাউন্টার পরিবর্তনের সময় ক্ষণিকের জন্য ভুল অবস্থায় থাকে। যেমন ০১১১ থেকে ১০০০-এ যাওয়ার সময় মাঝপথে ০১১০, ০১০০, ০০০০ ইত্যাদি ভুল অবস্থা দেখা দিতে পারে। একে বলে গ্লিচ বা হ্যাজার্ড।
== খ. সুপরিচিত আইসি চিপ পরিচিতি ==
=== আইসি চিপ কেন? ===
প্রতিটা কাউন্টার নিজে হাতে ফ্লিপ-ফ্লপ জুড়ে তৈরি করা কষ্টকর। তাই কারখানায় আগে থেকেই একটি ছোট চিপে পুরো কাউন্টার সার্কিট বানিয়ে রাখা হয়। এই চিপগুলোকে বলা হয় ইন্টিগ্রেটেড সার্কিট বা আইসি।
৭৪ সিরিজের টিটিএল আইসি চিপ ১৯৬০-এর দশক থেকে ব্যবহৃত হচ্ছে এবং আজও শিক্ষা ও প্রোটোটাইপ তৈরিতে অপরিহার্য।
=== ৭৪৯০ চিপ: দশমিক কাউন্টার ===
৭৪৯০ হলো একটি বহুল ব্যবহৃত আইসি চিপ যেটাকে বলা হয় "দশমিক কাউন্টার"। এটি আসলে দুটো আলাদা কাউন্টার একই প্যাকেজে:
একটি মডুলো-২ কাউন্টার (একটিমাত্র ফ্লিপ-ফ্লপ, ১টি বিট)।
একটি মডুলো-৫ কাউন্টার (তিনটি ফ্লিপ-ফ্লপ, ৩টি বিট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || <math>V_{CC}</math> || সরবরাহ ভোল্টেজ (+৫ ভোল্ট)
|-
| ৭ || GND || ভূমি সংযোগ (০ ভোল্ট)
|-
| ১৪ (A) || CKA || মডুলো-২ অংশের ক্লক ইনপুট
|-
| ১ (B) || CKB || মডুলো-৫ অংশের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || মডুলো-২ এর আউটপুট (বিট ০)
|-
| ৯ || <math>Q_B</math> || মডুলো-৫ এর আউটপুট (বিট ১)
|-
| ৮ || <math>Q_C</math> || মডুলো-৫ এর আউটপুট (বিট ২)
|-
| ১১ || <math>Q_D</math> || মডুলো-৫ এর আউটপুট (বিট ৩)
|-
| ২, ৩ || R0(1), R0(2) || রিসেট-টু-জিরো পিন (উভয়ে ১ হলে রিসেট)
|-
| ৬, ৭ || R9(1), R9(2) || রিসেট-টু-নাইন পিন (উভয়ে ১ হলে ৯-এ যায়)
|}
==== ৭৪৯০ দিয়ে বিসিডি মোড (মডুলো-১০) ====
বিসিডি মোডে চিপটি ০ থেকে ৯ পর্যন্ত গোনে।
সংযোগ: <math>Q_A</math>-কে CKB-তে সংযুক্ত করো। বাইরের ক্লক CKA-তে দাও।
এতে মডুলো-২ এবং মডুলো-৫ ক্যাসকেডে কাজ করে:
<math>N = \text{২} \times \text{৫} = \text{১০}</math>
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ বিসিডি মোডের সত্যক সারণী
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক মান !! style="background:#8E44AD; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || দুই
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || তিন
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || চার
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || পাঁচ
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || ছয়
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সাত
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || আট
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || নয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
==== ৭৪৯০ দিয়ে দশমিক মোড ====
একই চিপ ভিন্নভাবে সংযুক্ত করে দ্বিগুণকারী হিসেবেও ব্যবহার করা যায়: CKB-তে বাইরের ক্লক দাও, <math>Q_D</math>-কে CKA-তে সংযুক্ত করো। এতে মডুলো-৫ আগে গোনে, তারপর মডুলো-২।
==== ৭৪৯০ দিয়ে রিসেট-টু-নাইন ====
R9(1) এবং R9(2) উভয়ে ১ করলে কাউন্টার সাথে সাথে ১০০১ (দশমিক ৯) অবস্থায় চলে যায়। এটি ঘড়ির সেটিং বা পরীক্ষার কাজে ব্যবহৃত হয়।
=== ৭৪৯৩ চিপ: ৪-বিট বাইনারি কাউন্টার ===
৭৪৯৩ হলো একটি ৪-বিট বাইনারি রিপল কাউন্টার। এটি ৪টি জেকে ফ্লিপ-ফ্লপ দিয়ে তৈরি। মডুলো-১৬ পর্যন্ত গুনতে পারে এবং রিসেট সংযোগ বদলে যেকোনো মডুলো তৈরি করা যায়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || CKA || প্রথম ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১ || CKB || বাকি তিনটি ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || বিট ০ আউটপুট
|-
| ৯ || <math>Q_B</math> || বিট ১ আউটপুট
|-
| ৮ || <math>Q_C</math> || বিট ২ আউটপুট
|-
| ১১ || <math>Q_D</math> || বিট ৩ আউটপুট
|-
| ২, ৩ || R0(1), R0(2) || রিসেট পিন (উভয়ে ১ হলে শূন্যে ফেরে)
|}
==== ৭৪৯৩ দিয়ে মডুলো-১৬ কাউন্টার ====
<math>Q_A</math>-কে CKB-তে সংযুক্ত করো, R0(1) এবং R0(2) কে <math>\text{০}</math>-এ রাখো।
ফলাফল: ০ থেকে ১৫ পর্যন্ত পূর্ণ বাইনারি গণনা।
==== ৭৪৯৩ দিয়ে মডুলো-১২ কাউন্টার ====
১২ দশমিকে = ১১০০ বাইনারি। তাই <math>Q_D</math> এবং <math>Q_C</math> উভয়ে ১ হলেই রিসেট করতে হবে।
সংযোগ: R0(1)-এ <math>Q_D</math>, R0(2)-এ <math>Q_C</math> দাও।
গণনা ১২ (<math>\text{১১০০}</math>) হওয়ামাত্র রিসেট ঘটে, ফলে সার্কিট ০ থেকে ১১ পর্যন্ত গোনে।
==== ৭৪৯৩ দিয়ে বিভিন্ন মডুলো কাউন্টার ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ দিয়ে তৈরি বিভিন্ন মডুলো কাউন্টার
! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | রিসেট শর্ত !! style="background:#3498DB; color:white;" | R0(1) সংযোগ !! style="background:#3498DB; color:white;" | R0(2) সংযোগ !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| ২ || <math>\text{০০১০}</math> || <math>Q_B</math> || <math>Q_B</math> || ০-১ গোনে
|-
| ৩ || <math>\text{০০১১}</math> || <math>Q_B</math> || <math>Q_A</math> || ০-২ গোনে
|-
| ৫ || <math>\text{০১০১}</math> || <math>Q_C</math> || <math>Q_A</math> || ০-৪ গোনে
|-
| ৬ || <math>\text{০১১০}</math> || <math>Q_C</math> || <math>Q_B</math> || ০-৫ গোনে
|-
| ৯ || <math>\text{১০০১}</math> || <math>Q_D</math> || <math>Q_A</math> || ০-৮ গোনে
|-
| ১০ || <math>\text{১০১০}</math> || <math>Q_D</math> || <math>Q_B</math> || ০-৯ গোনে
|-
| ১২ || <math>\text{১১০০}</math> || <math>Q_D</math> || <math>Q_C</math> || ০-১১ গোনে
|}
=== আইসি চিপ ব্যবহারের সুবিধা ===
{| class="wikitable" style="text-align:left; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | আইসি চিপ ব্যবহারের কারণ
! style="background:#27AE60; color:white; width:30%;" | সুবিধা !! style="background:#27AE60; color:white; width:70%;" | বিস্তারিত
|-
| সময় সাশ্রয় || নিজে ফ্লিপ-ফ্লপ জুড়তে ঘণ্টার পর ঘণ্টা লাগে, চিপে সব আগেই করা
|-
| নির্ভরযোগ্যতা || কারখানায় পরীক্ষিত এবং গ্যারান্টিযুক্ত কার্যক্ষমতা
|-
| ছোট আকার || একটি চিপে চারটি ফ্লিপ-ফ্লপ, পরিচিত DIP প্যাকেজে মাত্র ১৪টি পিন
|-
| কম খরচ || গণউৎপাদনের ফলে প্রতিটি চিপের দাম অত্যন্ত কম
|-
| সহজ সংযোগ || ডেটাশিট দেখে সরাসরি ব্রেডবোর্ডে সংযুক্ত করা যায়
|-
| মানকীকরণ || বিশ্বের যেকোনো প্রস্তুতকারকের ৭৪৯০ একই কাজ করে
|}
== গ. ব্যাপক বাস্তব প্রয়োগ ==
=== ডিজিটাল ঘড়ি তৈরি ===
ডিজিটাল ঘড়ি হলো অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে পরিচিত প্রয়োগ। একটা সম্পূর্ণ ডিজিটাল ঘড়ির সার্কিট বোঝা মানে পুরো অধ্যায়টাই বোঝা।
==== ঘড়ির মূল ব্লক চিত্র ====
একটি ডিজিটাল ঘড়িতে নিচের ব্লকগুলো থাকে, বাম থেকে ডানে সংকেত প্রবাহিত হয়:
<code>
স্ফটিক দোলক (৩২৭৬৮ Hz)
|
v
কম্পাঙ্ক বিভাজক (÷ ৩২৭৬৮)
|
v
১ Hz সংকেত (প্রতি সেকেন্ডে ১ স্পন্দন)
|
v
মডুলো-১০ কাউন্টার (একক সেকেন্ড: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক সেকেন্ড: ০-৫)
|
v
মডুলো-১০ কাউন্টার (একক মিনিট: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক মিনিট: ০-৫)
|
v
মডুলো-১২ কাউন্টার (ঘণ্টা: ১-১২ বা ০-২৩)
|
v
বিসিডি-থেকে-সাত-খণ্ড ডিকোডার
|
v
সাত-খণ্ড প্রদর্শক (সংখ্যা দেখায়)
</code>
==== প্রতিটি ব্লকের মডুলো ব্যাখ্যা ====
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ডিজিটাল ঘড়ির প্রতিটি ব্লক
! style="background:#3498DB; color:white;" | ব্লক !! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ !! style="background:#3498DB; color:white;" | রিসেট শর্ত
|-
| একক সেকেন্ড || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের সেকেন্ড || গণনা = ১০
|-
| দশক সেকেন্ড || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের সেকেন্ড || গণনা = ৬
|-
| একক মিনিট || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের মিনিট || গণনা = ১০
|-
| দশক মিনিট || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের মিনিট || গণনা = ৬
|-
| ঘণ্টা (১২ঘণ্টা) || মডুলো-১২ || <math>\text{১}</math> থেকে <math>\text{১২}</math> || ১২ঘণ্টার সময় || গণনা = ১২
|-
| ঘণ্টা (২৪ঘণ্টা) || মডুলো-২৪ || <math>\text{০}</math> থেকে <math>\text{২৩}</math> || ২৪ঘণ্টার সময় || গণনা = ২৪
|}
==== ঘড়ির মোট চক্র গণনা ====
১২ঘণ্টার ঘড়িতে একটি সম্পূর্ণ চক্রে মোট সেকেন্ড:
<math>N = \text{৬০} \times \text{৬০} \times \text{১২} = \text{৪৩২০০} \text{ সেকেন্ড}</math>
২৪ঘণ্টার ঘড়িতে:
<math>N = \text{৬০} \times \text{৬০} \times \text{২৪} = \text{৮৬৪০০} \text{ সেকেন্ড}</math>
==== স্ফটিক দোলক কেন? ====
কেন সাধারণ দোলক ব্যবহার না করে স্ফটিক (কোয়ার্টজ) দোলক ব্যবহার হয়? কারণ স্ফটিক দোলকের কম্পাঙ্ক অত্যন্ত স্থির। তাপমাত্রা বা বিদ্যুৎ সরবরাহের পরিবর্তনে এর কম্পাঙ্ক প্রায় বদলায় না। এটি ঘড়ির নির্ভুলতার মূল রহস্য।
ঘড়িতে সাধারণত ৩২৭৬৮ Hz স্ফটিক ব্যবহার হয়। এই সংখ্যাটা <math>\text{২}^{15}</math>, তাই ১৫টি দ্বিভাজন করলে সরাসরি ১ Hz পাওয়া যায়।
=== কম্পাঙ্ক বিভাজক: রেডিও ও টেলিযোগাযোগ ===
রেডিও সম্প্রচারে একটি নির্দিষ্ট কম্পাঙ্কে সংকেত পাঠাতে হয়। কিন্তু স্ফটিক দোলক সব কম্পাঙ্কে পাওয়া যায় না। তাই একটি বেশি কম্পাঙ্কের দোলক থেকে বিভাজন করে নির্দিষ্ট কম্পাঙ্ক তৈরি করা হয়।
উদাহরণ: একটি ১০ MHz স্ফটিক থেকে ১০০ kHz তৈরি করতে মডুলো-১০০ বিভাজক লাগবে।
<math>f_{out} = \frac{f_{in}}{N} = \frac{\text{১০,০০০,০০০}}{\text{১০০}} = \text{১০০,০০০} \text{ Hz} = \text{১০০} \text{ kHz}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | কম্পাঙ্ক বিভাজকের উদাহরণ
! style="background:#3498DB; color:white;" | ইনপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | বিভাজন অনুপাত (N) !! style="background:#3498DB; color:white;" | আউটপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | প্রয়োগ
|-
| ৩২৭৬৮ Hz || ৩২৭৬৮ || ১ Hz || ঘড়ির সেকেন্ড স্পন্দন
|-
| ১ MHz || ১০০০ || ১ kHz || শ্রবণযোগ্য শব্দ সংকেত
|-
| ১০ MHz || ১০০ || ১০০ kHz || এএম রেডিও বাহক
|-
| ১০০ MHz || ১০ || ১০ MHz || এফএম রেডিও সহায়ক
|-
| ১ GHz || ১০০০ || ১ MHz || মোবাইল যোগাযোগ
|}
=== ঘটনা গণনাকারী: কারখানার উৎপাদন গণনা ===
একটি কারখানায় উৎপাদন লাইনে প্রতিদিন কতটা পণ্য তৈরি হলো তা গণনা করা দরকার। প্রতিটা পণ্য যখন সেন্সরের সামনে দিয়ে যায়, সেন্সর একটা বৈদ্যুতিক স্পন্দন তৈরি করে। এই স্পন্দনগুলো একটা কাউন্টারে গণনা হয়।
প্রতিদিন সর্বোচ্চ ৯৯৯৯ টা পণ্য গণনার জন্য:
চারটি মডুলো-১০ কাউন্টার ক্যাসকেডে:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ০০০০ থেকে ৯৯৯৯ পর্যন্ত গুনতে পারে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | উৎপাদন গণনা ব্যবস্থার উদাহরণ
! style="background:#3498DB; color:white;" | অঙ্ক !! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | গণনা পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ
|-
| একক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || শেষ এক অঙ্ক
|-
| দশক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || দ্বিতীয় অঙ্ক
|-
| শতক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || তৃতীয় অঙ্ক
|-
| হাজার || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || প্রথম অঙ্ক
|}
পরিচিত উদাহরণ: পেট্রোল পাম্পে কতটুকু তেল দেওয়া হলো তা গণনার কাউন্টার, বাসের টিকিট মেশিনে যাত্রী গণনা, ওষুধ কারখানায় বড়ি গণনা।
=== স্বয়ংক্রিয় ট্র্যাফিক সংকেত নিয়ন্ত্রণ ===
ব্যস্ত রাস্তার সংকেত বাতি নির্দিষ্ট সময় পর পর পরিবর্তিত হয়। এটি একটি কাউন্টার দিয়ে নিয়ন্ত্রিত হয়।
ধরো একটি সংকেত চক্র:
* সবুজ: ৩০ সেকেন্ড
* হলুদ: ৫ সেকেন্ড
* লাল: ৩৫ সেকেন্ড
* মোট চক্র: ৭০ সেকেন্ড
একটি মডুলো-৭০ কাউন্টার তৈরি করো:
* গণনা ০ থেকে ২৯: সবুজ বাতি জ্বলে
* গণনা ৩০ থেকে ৩৪: হলুদ বাতি জ্বলে
* গণনা ৩৫ থেকে ৬৯: লাল বাতি জ্বলে
* গণনা ৭০: রিসেট, আবার শুরু
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত কাউন্টারের অবস্থা
! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | সময় !! style="background:#3498DB; color:white;" | সক্রিয় বাতি !! style="background:#3498DB; color:white;" | ডিকোডার আউটপুট
|-
| <math>\text{০}</math> থেকে <math>\text{২৯}</math> || ৩০ সেকেন্ড || সবুজ || <math>Q < \text{৩০}</math> হলে সবুজ চালু
|-
| <math>\text{৩০}</math> থেকে <math>\text{৩৪}</math> || ৫ সেকেন্ড || হলুদ || <math>\text{৩০} \leq Q < \text{৩৫}</math>
|-
| <math>\text{৩৫}</math> থেকে <math>\text{৬৯}</math> || ৩৫ সেকেন্ড || লাল || <math>Q \geq \text{৩৫}</math>
|-
| <math>\text{৭০}</math> || মুহূর্তিক || রিসেট || কাউন্টার শূন্যে ফেরে
|}
=== ডিজিটাল স্টপওয়াচ সার্কিট ===
একটি স্টপওয়াচ ০.০০ থেকে ৯৯.৯৯ সেকেন্ড পর্যন্ত গোনে।
প্রয়োজনীয় কাউন্টার ব্লক:
* প্রথম দশমিক অঙ্ক (১/১০০ সেকেন্ড): মডুলো-১০
* দ্বিতীয় দশমিক অঙ্ক (১/১০ সেকেন্ড): মডুলো-১০
* একক সেকেন্ড: মডুলো-১০
* দশক সেকেন্ড: মডুলো-১০
ইনপুট ক্লক: ১০০ Hz (প্রতি সেকেন্ডে ১০০ স্পন্দন)।
সর্বোচ্চ গণনা:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ১০,০০০ ÷ ১০০ = ১০০ সেকেন্ড পর্যন্ত গুনতে পারে।
স্টার্ট/স্টপ বোতাম: ক্লক গেটিং ব্যবহার হয়। একটি অ্যান্ড গেটের একটা ইনপুটে ক্লক এবং অন্যটায় স্টার্ট/স্টপ বোতামের সংকেত দেওয়া হয়।
== ঘ. অ্যাসিনক্রোনাস বনাম সমকালীন কাউন্টার ==
=== সমকালীন কাউন্টার কী? ===
যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক সংকেত একই সময়ে পায়, তাকে সমকালীন বা সিনক্রোনাস কাউন্টার বলে।
অ্যাসিনক্রোনাসে: ক্লক শুধু প্রথম ফ্লিপ-ফ্লপে যায়, বাকিরা আগেরটার আউটপুট থেকে ক্লক পায়।
সমকালীনে: ক্লক সরাসরি সব ফ্লিপ-ফ্লপে যায়।
=== বিস্তারিত তুলনামূলক সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের বিস্তারিত তুলনা
! style="background:#3498DB; color:white; width:25%;" | বৈশিষ্ট্য !! style="background:#E74C3C; color:white; width:37%;" | অ্যাসিনক্রোনাস !! style="background:#27AE60; color:white; width:37%;" | সমকালীন
|-
| ক্লক সংযোগ || প্রতিটি ফ্লিপ-ফ্লপ আগেরটার আউটপুট থেকে ক্লক পায় || সব ফ্লিপ-ফ্লপে একই ক্লক সরাসরি যায়
|-
| বিলম্ব || বিট সংখ্যার সাথে বাড়ে (<math>n \times t_{pd}</math>) || একটি ফ্লিপ-ফ্লপের বিলম্বই সর্বোচ্চ (<math>t_{pd}</math>)
|-
| গতি || ধীর, বেশি বিটে বেশি ধীর || দ্রুত, বিট সংখ্যা নির্বিশেষে
|-
| গ্লিচ || আছে, পরিবর্তনের সময় ভুল অবস্থা || নেই, সব একসাথে পরিবর্তিত হয়
|-
| সার্কিট জটিলতা || সহজ, কম গেট || জটিল, বেশি গেট দরকার
|-
| ক্লক সরবরাহ || সহজ, একটি তার থেকে || জটিল, সব ফ্লিপ-ফ্লপে বিতরণ
|-
| বিদ্যুৎ খরচ || তুলনামূলক কম || বেশি (সব একসাথে পরিবর্তন)
|-
| ডিজাইন জটিলতা || সহজ || কঠিন
|-
| আইসি উদাহরণ || ৭৪৯০, ৭৪৯৩ || ৭৪১৬৩, ৭৪১৬১
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{n \cdot t_{pd}}</math> || <math>f_{max} = \frac{\text{১}}{t_{pd} + t_{setup}}</math>
|-
| প্রধান ব্যবহার || ঘড়ি, বিভাজক, কম গতির গণনা || প্রসেসর, দ্রুত ডিজিটাল সার্কিট
|}
=== কোনটি কোথায় ব্যবহার করবে? ===
অ্যাসিনক্রোনাস কাউন্টার বেছে নাও যখন:
* সার্কিট সহজ রাখতে চাও এবং গতি সমস্যা নয়।
* ক্লক গতি কম (কয়েক মেগাহার্টজের নিচে)।
* ঘড়ি, ডিবাউন্স সার্কিট, কম্পাঙ্ক বিভাজক তৈরি করছ।
* ব্রেডবোর্ডে শিক্ষামূলক প্রকল্পে কাজ করছ।
* বিদ্যুৎ সাশ্রয় গুরুত্বপূর্ণ।
সমকালীন কাউন্টার বেছে নাও যখন:
* ক্লক গতি বেশি দরকার (কয়েক মেগাহার্টজের উপরে)।
* গ্লিচমুক্ত আউটপুট দরকার।
* মাইক্রোপ্রসেসর, ডিজিটাল সংকেত প্রক্রিয়াকরণ সার্কিট তৈরি করছ।
* আউটপুট সরাসরি সংবেদনশীল লজিকে যাচ্ছে।
=== অ্যাসিনক্রোনাসের সীমাবদ্ধতা ও সমাধান ===
{| class="wikitable" style="text-align:left; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা ও সমাধান
! style="background:#E74C3C; color:white; width:30%;" | সীমাবদ্ধতা !! style="background:#E74C3C; color:white; width:35%;" | কারণ !! style="background:#27AE60; color:white; width:35%;" | সমাধান
|-
| জমানো বিলম্ব || প্রতিটি ফ্লিপ-ফ্লপ বিলম্ব যোগ করে || সমকালীন কাউন্টার ব্যবহার করো
|-
| গ্লিচ || পরিবর্তনের মুহূর্তে ভুল অবস্থা || আউটপুটে রেজিস্টার বা ডি ফ্লিপ-ফ্লপ যোগ করো
|-
| সীমিত ক্লক গতি || বিলম্ব বাড়লে গতি কমে || বেশি গতিতে সমকালীন ব্যবহার করো
|-
| ক্ষণিক ত্রুটি || গেটিং এর সময় ভুল ডিকোড || স্ট্রোব সংকেত ব্যবহার করো
|-
| বিট সংখ্যা বাড়লে ধীর || প্রতিটি বিটে বিলম্ব যোগ হয় || ক্যারি-লুকঅ্যাহেড পদ্ধতি ব্যবহার করো
|}
== ঙ. সমগ্র অধ্যায়ের সারসংক্ষেপ ==
=== গুরুত্বপূর্ণ সূত্র ও নিয়মের তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের গুরুত্বপূর্ণ সূত্র
! style="background:#8E44AD; color:white; width:30%;" | সূত্র বা নিয়ম !! style="background:#8E44AD; color:white; width:35%;" | গাণিতিক রূপ !! style="background:#8E44AD; color:white; width:35%;" | ব্যাখ্যা
|-
| <math>n</math>-বিট কাউন্টারের মডুলো || <math>N = \text{২}^n</math> || <math>n</math>টি ফ্লিপ-ফ্লপ মিলে <math>\text{২}^n</math> অবস্থা
|-
| প্রয়োজনীয় বিট সংখ্যা || <math>n = \lceil \log_2 N \rceil</math> || মডুলো-<math>N</math> কাউন্টারে কমপক্ষে এতটা ফ্লিপ-ফ্লপ লাগবে
|-
| ক্যাসকেড কাউন্টারের মডুলো || <math>N = N_1 \times N_2 \times \cdots \times N_k</math> || <math>k</math>টি কাউন্টার ক্যাসকেডে
|-
| সর্বোচ্চ বিলম্ব || <math>t_{max} = n \times t_{pd}</math> || <math>n</math>টি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্বের যোগফল
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{t_{max}}</math> || বিলম্বের বিপরীত মান
|-
| কম্পাঙ্ক বিভাজন || <math>f_{out} = \frac{f_{in}}{N}</math> || মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> ভাগে ভাগ করে
|-
| মডুলো-<math>N</math> রিসেট শর্ত || গণনা = <math>N</math> হলে তাৎক্ষণিক রিসেট || <math>N</math>-এর বাইনারি রূপে যে বিটগুলো ১, তাদের অ্যান্ড করে ক্লিয়ারে দাও
|-
| উর্ধ্বগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>\overline{Q_i}</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের পরিপূরক আউটপুট
|-
| নিম্নগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>Q_i</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের সরাসরি আউটপুট
|}
=== পরিভাষার তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | সম্পূর্ণ পরিভাষার তালিকা
! style="background:#27AE60; color:white; width:30%;" | বাংলা পরিভাষা !! style="background:#27AE60; color:white; width:70%;" | সংজ্ঞা
|-
| অ্যাসিনক্রোনাস কাউন্টার || যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক পায় না, প্রতিটি আগেরটার আউটপুট থেকে ক্লক পায়
|-
| উর্ধ্বগামী কাউন্টার || যে কাউন্টার <math>\text{০}</math> থেকে শুরু করে ক্রমাগত বাড়তে থাকে
|-
| নিম্নগামী কাউন্টার || যে কাউন্টার সর্বোচ্চ মান থেকে শুরু করে ক্রমাগত কমতে থাকে
|-
| উভয়মুখী কাউন্টার || উপর বা নিচ যেকোনো দিকে গণনা করতে পারে
|-
| মডুলো-<math>N</math> কাউন্টার || <math>N</math>টি অবস্থায় ঘোরে, মানে <math>\text{০}</math> থেকে <math>N-\text{১}</math> পর্যন্ত
|-
| রিপল কাউন্টার || অ্যাসিনক্রোনাস কাউন্টারের আরেক নাম, ঢেউয়ের মতো বিলম্ব এগিয়ে যায় বলে
|-
| প্রোপাগেশন বিলম্ব || সংকেত একটি ফ্লিপ-ফ্লপের মধ্য দিয়ে যেতে যে সময় লাগে
|-
| গ্লিচ || সার্কিট পরিবর্তনের মুহূর্তে ক্ষণিকের ভুল আউটপুট
|-
| প্রি-সেট || ফ্লিপ-ফ্লপকে জোর করে <math>\text{১}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্লিয়ার || ফ্লিপ-ফ্লপকে জোর করে <math>\text{০}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্যাসকেড || একাধিক কাউন্টার শ্রেণিতে জুড়ে বড় কাউন্টার তৈরি
|-
| কম্পাঙ্ক বিভাজক || কাউন্টারকে ক্লক কম্পাঙ্ক ভাগ করার কাজে ব্যবহার
|-
| বিসিডি কাউন্টার || বাইনারি কোডেড দশমিক, <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত দশমিক অঙ্ক বাইনারিতে
|-
| ক্লক গেটিং || একটি গেট দিয়ে ক্লক চালু বা বন্ধ করার পদ্ধতি
|-
| এমএসবি || সর্বোচ্চ তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার বাম দিকের বিট
|-
| এলএসবি || সর্বনিম্ন তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার ডান দিকের বিট
|-
| জেকে ফ্লিপ-ফ্লপ || দুটি ইনপুট <math>J</math> ও <math>K</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, টগল মোড আছে
|-
| ডি ফ্লিপ-ফ্লপ || একটি ইনপুট <math>D</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, ক্লকে ডি-র মান সংরক্ষণ করে
|-
| টগল || বর্তমান অবস্থার উল্টো অবস্থায় যাওয়া, <math>\text{০}</math> হলে <math>\text{১}</math>, <math>\text{১}</math> হলে <math>\text{০}</math>
|-
| সমকালীন কাউন্টার || সব ফ্লিপ-ফ্লপ একই ক্লক পায়, গ্লিচমুক্ত ও দ্রুততর
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: তিনটি ৭৪৯০ দিয়ে মডুলো-১০০০ কাউন্টার ===
তিনটি ৭৪৯০ চিপ ক্যাসকেডে জুড়ে মডুলো-১০০০ কাউন্টার তৈরি করো এবং গণনা যাচাই করো।
সংযোগ পদ্ধতি:
প্রথম চিপ: বাইরের ক্লক CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি একক স্থানের অঙ্ক দেখাবে।
দ্বিতীয় চিপ: প্রথম চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি দশক স্থান দেখাবে।
তৃতীয় চিপ: দ্বিতীয় চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি শতক স্থান দেখাবে।
মোট মডুলো: <math>N = \text{১০} \times \text{১০} \times \text{১০} = \text{১০০০}</math>
গণনা যাচাই:
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | তৃতীয় চিপ (শতক) !! style="background:#3498DB; color:white;" | দ্বিতীয় চিপ (দশক) !! style="background:#8E44AD; color:white;" | প্রথম চিপ (একক) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম চিপ সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরল, দ্বিতীয় এগোল
|-
| <math>\text{৯৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || প্রথম ও দ্বিতীয় সর্বোচ্চে
|-
| <math>\text{১০০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরল, তৃতীয় এগোল
|-
| <math>\text{৯৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || তিনটিই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || তিনটিই ঘুরে শুরুতে ফিরল
|}
=== উদাহরণ ২: ৭৪৯৩ দিয়ে মডুলো-৭ কাউন্টার ===
৭ দশমিকে = ০১১১ বাইনারি।
তাই <math>Q_C</math>, <math>Q_B</math>, <math>Q_A</math> তিনটিই ১ হলে রিসেট করতে হবে।
কিন্তু ৭৪৯৩-এ মাত্র দুটো রিসেট পিন আছে (R0(1) এবং R0(2))। তিনটি শর্ত যাচাই করতে অতিরিক্ত অ্যান্ড গেট লাগবে।
সংযোগ:
* R0(1)-এ <math>Q_C</math> সরাসরি দাও।
* একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই গেটের আউটপুট R0(2)-এ দাও।
যখন গণনা ৭ হয় (<math>Q_C = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>):
* R0(1) = <math>Q_C</math> = <math>\text{১}</math>
* R0(2) = <math>Q_B \cdot Q_A</math> = <math>\text{১} \cdot \text{১}</math> = <math>\text{১}</math>
* উভয়ে ১, তাই রিসেট। কাউন্টার ০ থেকে ৬ পর্যন্ত গোনে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৭ কাউন্টারের গণনা
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক !! style="background:#8E44AD; color:white;" | R0(1) !! style="background:#8E44AD; color:white;" | R0(2) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> || স্বাভাবিক
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || <math>\text{১}</math> || <math>\text{১}</math> || রিসেট!
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
=== উদাহরণ ৩: ২৪ ঘণ্টার কাউন্টার তৈরি ===
২৪ ঘণ্টার কাউন্টার তৈরি করো, ০০ থেকে ২৩ পর্যন্ত।
২৪ = দুই অঙ্কের সংখ্যা: দশক অঙ্ক ০ থেকে ২, একক অঙ্ক ০ থেকে ৯ (তবে দশক ২ হলে একক সর্বোচ্চ ৩)।
পদ্ধতি:
* একক ঘণ্টার জন্য মডুলো-১০ কাউন্টার (কিন্তু দশক ২ থাকলে মডুলো-৪)।
* দশক ঘণ্টার জন্য মডুলো-৩ কাউন্টার (০, ১, ২)।
রিসেট শর্ত: যখন একসাথে দশক = ২ এবং একক = ৪ হবে, মানে সামগ্রিক গণনা = ২৪ হবে, তখন উভয় কাউন্টার রিসেট।
রিসেট সংকেত তৈরি: দশক কাউন্টারের <math>Q_B</math> (মান ২ = বাইনারি ১০, তাই <math>Q_B = \text{১}, Q_A = \text{০}</math>) এবং একক কাউন্টারের <math>Q_C</math> (মান ৪ = বাইনারি ০১০০, তাই <math>Q_C = \text{১}</math>)-এর অ্যান্ড করলে রিসেট সংকেত পাওয়া যাবে।
{| class="wikitable" style="text-align:center; width:75%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ২৪ ঘণ্টা কাউন্টারের বিশেষ অবস্থা
! style="background:#3498DB; color:white;" | ঘণ্টা !! style="background:#27AE60; color:white;" | দশক অঙ্ক !! style="background:#E74C3C; color:white;" | একক অঙ্ক !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু বা মধ্যরাত
|-
| <math>\text{০৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || একক সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || দশক বাড়ল
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || একক আবার সর্বোচ্চে
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || দশক আবার বাড়ল
|-
| <math>\text{২৩}</math> || <math>\text{২}</math> || <math>\text{৩}</math> || সর্বোচ্চ মান
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রিসেট, নতুন দিন শুরু
|}
=== উদাহরণ ৪: কম্পাঙ্ক বিভাজনের গণনা ===
একটি ৪.৯১৫২ MHz স্ফটিক দোলক থেকে ৯৬০০ Hz UART ক্লক তৈরি করতে হবে।
বিভাজন অনুপাত:
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৪,৯১৫,২০০}}{\text{৯,৬০০}} = \text{৫১২}</math>
৫১২ = <math>\text{২}^9</math>, তাই ৯টি দ্বিভাজক (মডুলো-২ কাউন্টার) ক্যাসকেডে দিলেই হয়।
বিকল্পভাবে: মডুলো-৬৪ এবং মডুলো-৮ ক্যাসকেড: <math>\text{৬৪} \times \text{৮} = \text{৫১২}</math>।
=== উদাহরণ ৫: নিম্নগামী স্টপওয়াচ কাউন্টার ===
একটি মাইক্রোওয়েভ ওভেনে ৯৯ সেকেন্ড থেকে উল্টো গোনার সার্কিট তৈরি করো।
প্রয়োজন:
* একটি নিম্নগামী মডুলো-১০০ কাউন্টার।
* প্রাথমিক লোড: ১০০১ ১০০১ বিসিডি (দশমিক ৯৯)।
* গণনা ০০ হলে: বাজার বাজবে এবং থামবে।
সংযোগ:
* দুটি ৭৪৯০-এর ক্লিয়ার না ব্যবহার করে প্রিসেট ব্যবহার করো।
* প্রিসেট: একক কাউন্টার ৯-এ, দশক কাউন্টার ৯-এ।
* নিম্নগামীর জন্য: একক কাউন্টারের <math>Q_A</math> (এলএসবি) পরিবর্তে আউটপুটের পরিপূরক দ্বিতীয় কাউন্টারে দাও।
গণনার ধারা: ৯৯, ৯৮, ৯৭, ..., ১০, ০৯, ০৮, ..., ০১, ০০।
=== উদাহরণ ৬: ট্র্যাফিক লাইট নিয়ন্ত্রণ সার্কিটের বিস্তারিত ===
তিনটি রাস্তার সংকেত বাতি নিয়ন্ত্রণ করতে হবে যেখানে:
রাস্তা-১: সবুজ ৪৫s, হলুদ ৫s, লাল ৫০s। চক্র = ১০০s।
রাস্তা-২: সবুজ ৩০s, হলুদ ৫s, লাল ৬৫s। চক্র = ১০০s।
মোট চক্র = ১০০ সেকেন্ড, তাই মডুলো-১০০ কাউন্টার লাগবে।
কম্পাঙ্ক: ১ Hz (প্রতি সেকেন্ডে ১ স্পন্দন)।
ডিকোডার লজিক:
রাস্তা-১ সবুজ: গণনা ০ থেকে ৪৪ (মানে <math>Q < \text{৪৫}</math>)।
রাস্তা-১ হলুদ: গণনা ৪৫ থেকে ৪৯।
রাস্তা-১ লাল: গণনা ৫০ থেকে ৯৯।
রাস্তা-২ লাল: গণনা ০ থেকে ৬৪।
রাস্তা-২ হলুদ: গণনা ৬৫ থেকে ৬৯।
রাস্তা-২ সবুজ: গণনা ৭০ থেকে ৯৯।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত সারণি
! style="background:#3498DB; color:white;" | গণনা !! style="background:#3498DB; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | রাস্তা-১ !! style="background:#E74C3C; color:white;" | রাস্তা-২
|-
| <math>\text{০০}</math> থেকে <math>\text{৪৪}</math> || ৪৫ s || সবুজ || লাল
|-
| <math>\text{৪৫}</math> থেকে <math>\text{৪৯}</math> || ৫ s || হলুদ || লাল
|-
| <math>\text{৫০}</math> থেকে <math>\text{৬৪}</math> || ১৫ s || লাল || লাল (নিরাপদ বিরতি)
|-
| <math>\text{৬৫}</math> থেকে <math>\text{৬৯}</math> || ৫ s || লাল || হলুদ
|-
| <math>\text{৭০}</math> থেকে <math>\text{৯৯}</math> || ৩০ s || লাল || সবুজ
|-
| <math>\text{০০}</math> || মুহূর্তিক || রিসেট || রিসেট
|}
=== উদাহরণ ৭: বিলম্ব হিসাবের বিস্তারিত ===
একটি চার-স্তরের ক্যাসকেড কাউন্টারে (মোট ১৬ বিট) বিলম্ব বিশ্লেষণ করো।
প্রদত্ত:
* প্রতিটি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্ব: <math>t_{pd} = \text{১৫}</math> নানোসেকেন্ড।
* প্রতিটি অ্যান্ড গেটের বিলম্ব: <math>t_{gate} = \text{৫}</math> নানোসেকেন্ড।
প্রথম কাউন্টার (৪ বিট): সর্বোচ্চ বিলম্ব = <math>\text{৪} \times \text{১৫} = \text{৬০}</math> ns।
দ্বিতীয় কাউন্টার (৪ বিট): প্রথমের বিলম্ব + নিজের বিলম্ব = <math>\text{৬০} + \text{৬০} = \text{১২০}</math> ns।
তৃতীয় কাউন্টার (৪ বিট): <math>\text{১২০} + \text{৬০} = \text{১৮০}</math> ns।
চতুর্থ কাউন্টার (৪ বিট): <math>\text{১৮০} + \text{৬০} = \text{২৪০}</math> ns।
সর্বোচ্চ ক্লক গতি:
<math>f_{max} = \frac{\text{১}}{\text{২৪০} \times \text{১০}^{-9}} \approx \text{৪.২}</math> MHz
তুলনা: সমকালীন ১৬-বিট কাউন্টারে সর্বোচ্চ বিলম্ব মাত্র কয়েকটি গেট স্তর, সাধারণত ৩০ থেকে ৬০ ns, তাই গতি ১০ থেকে ৩০ MHz হতে পারে।
== অনুশীলনী ==
=== সহজ প্রশ্ন ===
'''১.''' দুটি মডুলো-৫ কাউন্টার ক্যাসকেডে জুড়লে মোট মডুলো কত হবে?
'''উত্তর:''' <math>N = \text{৫} \times \text{৫} = \text{২৫}</math>। কাউন্টার ০ থেকে ২৪ পর্যন্ত গুনবে।
'''২.''' মডুলো-১৬ কাউন্টারের জন্য কতটি ফ্লিপ-ফ্লপ লাগবে?
'''উত্তর:''' <math>n = \log_2 \text{১৬} = \text{৪}</math>। চারটি ফ্লিপ-ফ্লপ লাগবে।
'''৩.''' একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ২০ ns হলে সর্বোচ্চ বিলম্ব কত?
'''উত্তর:''' <math>t_{max} = \text{৪} \times \text{২০} = \text{৮০}</math> ns।
'''৪.''' ৭৪৯০ চিপের R0 পিনে উভয়ে লজিক ১ দিলে কী হয়?
'''উত্তর:''' কাউন্টার তাৎক্ষণিক রিসেট হয়ে ০০০০ অবস্থায় চলে যায়।
'''৫.''' মডুলো-৩২ কাউন্টারে কতটি বিট দরকার?
'''উত্তর:''' <math>n = \log_2 \text{৩২} = \text{৫}</math>। পাঁচটি বিট।
'''৬.''' ডিজিটাল ঘড়িতে ৩২৭৬৮ Hz থেকে ১ Hz পেতে বিভাজন অনুপাত কত?
'''উত্তর:''' <math>N = \text{৩২৭৬৮} = \text{২}^{15}</math>। মডুলো-৩২৭৬৮ বিভাজক লাগবে।
'''৭.''' একটি কাউন্টারের আউটপুটে হঠাৎ ভুল মান দেখা দিয়ে মিলিয়ে যাচ্ছে, এটি কী?
'''উত্তর:''' এটি গ্লিচ বা হ্যাজার্ড। অ্যাসিনক্রোনাস কাউন্টারে পরিবর্তনের মুহূর্তে ঘটে।
=== মাঝারি প্রশ্ন ===
'''৮.''' ৭৪৯৩ চিপ দিয়ে মডুলো-৯ কাউন্টার তৈরি করো। কোন পিনে কী সংযোগ দেবে?
'''উত্তর:'''
৯ = ১০০১ বাইনারি। তাই <math>Q_D = \text{১}</math> এবং <math>Q_A = \text{১}</math> হলে রিসেট করতে হবে।
সংযোগ:
* R0(1)-এ <math>Q_D</math>।
* R0(2)-এ <math>Q_A</math>।
* <math>Q_A</math>-কে CKB-তে, বাইরের ক্লক CKA-তে।
গণনা: ০ থেকে ৮ পর্যন্ত। ৯ হওয়ামাত্র রিসেট।
'''৯.''' একটি ৮০ Hz সংকেত থেকে ৪ Hz তৈরি করতে কোন মডুলোর কাউন্টার লাগবে?
'''উত্তর:''' <math>N = \frac{\text{৮০}}{\text{৪}} = \text{২০}</math>। মডুলো-২০ কাউন্টার লাগবে। দুটি মডুলো-১০ বা মডুলো-৪ ও মডুলো-৫ ক্যাসকেডে জুড়লে হয়।
'''১০.''' মডুলো-৪৮ কাউন্টার তৈরি করতে কোন দুটি কাউন্টার ক্যাসকেডে ব্যবহার করবে?
'''উত্তর:''' ৪৮ = ৬ × ৮ বা ৪৮ = ১৬ × ৩ বা ৪৮ = ১২ × ৪।
সহজ উপায়: মডুলো-৮ এবং মডুলো-৬ ক্যাসকেডে, <math>\text{৮} \times \text{৬} = \text{৪৮}</math>।
'''১১.''' একটি কাউন্টার ১ Hz ক্লকে চলে এবং ৩-বিটের। এটি কত সেকেন্ড পরে ঘুরে আসে?
'''উত্তর:''' <math>N = \text{২}^\text{৩} = \text{৮}</math>। প্রতি ৮ সেকেন্ডে একবার ঘুরে আসে।
'''১২.''' অ্যাসিনক্রোনাস কাউন্টারে গ্লিচ কমানোর দুটি উপায় লেখো।
'''উত্তর:'''
* আউটপুটে ডি ফ্লিপ-ফ্লপ যোগ করো (পাইপলাইনিং)। ক্লকের স্থির অবস্থায় আউটপুট পড়ো।
* স্ট্রোব পালস ব্যবহার করো: কেবল স্থির অবস্থায় আউটপুট ডিকোড করো।
'''১৩.''' ৭৪৯০ দিয়ে মডুলো-৬ কাউন্টার কীভাবে তৈরি করবে?
'''উত্তর:'''
বিসিডি মোডে (<math>Q_A</math> থেকে CKB) ৭৪৯০ মডুলো-১০ কাউন্টার হয়। মডুলো-৬ পেতে গণনা ৬ হলে রিসেট করতে হবে।
৬ = ০১১০ বাইনারি। তাই <math>Q_C = \text{১}</math> এবং <math>Q_B = \text{১}</math> হলে রিসেট।
* R0(1)-এ <math>Q_C</math>।
* R0(2)-এ <math>Q_B</math>।
গণনা: ০ থেকে ৫।
=== কঠিন প্রশ্ন ===
'''১৪.''' একটি ডিজিটাল ঘড়িতে মিনিট কাউন্টারের জন্য মডুলো-৬০ সার্কিট ডিজাইন করো। কতটি ৭৪৯০ চিপ লাগবে এবং সংযোগ কীভাবে হবে?
'''উত্তর:'''
মডুলো-৬০ = মডুলো-১০ × মডুলো-৬।
চিপ ১ (মডুলো-১০): একক মিনিটের অঙ্ক। বিসিডি মোডে সংযুক্ত (<math>Q_A</math> থেকে CKB)।
চিপ ২ (মডুলো-৬): দশক মিনিটের অঙ্ক। চিপ ১-এর <math>Q_D</math> থেকে চিপ ২-এর CKA-তে। R0(1)-এ <math>Q_C</math>, R0(2)-এ <math>Q_B</math>।
মোট ২টি ৭৪৯০ চিপ লাগবে।
'''১৫.''' তিন-স্তরের ক্যাসকেড কাউন্টারে (মডুলো-৫ × মডুলো-৮ × মডুলো-৩) মোট অবস্থা কত? বিলম্ব কত যদি প্রতিটি ফ্লিপ-ফ্লপে ১২ ns বিলম্ব থাকে?
'''উত্তর:'''
মোট মডুলো: <math>N = \text{৫} \times \text{৮} \times \text{৩} = \text{১২০}</math>।
মোট বিট: মডুলো-৫ এ ৩ বিট, মডুলো-৮ এ ৩ বিট, মডুলো-৩ এ ২ বিট। মোট ৮ বিট।
সর্বোচ্চ বিলম্ব: <math>t_{max} = \text{৮} \times \text{১২} = \text{৯৬}</math> ns।
সর্বোচ্চ ক্লক গতি: <math>f_{max} \approx \text{১০.৪}</math> MHz।
'''১৬.''' একটি স্বয়ংক্রিয় মেশিন প্রতি ১ মিনিটে একটি পণ্য তৈরি করে এবং প্রতিদিন ৮ ঘণ্টা চলে। সারাদিনের উৎপাদন গণনা করতে কত বিটের কাউন্টার লাগবে?
'''উত্তর:'''
৮ ঘণ্টায় মোট মিনিট = ৮ × ৬০ = ৪৮০ মিনিট = ৪৮০ পণ্য।
সর্বোচ্চ গণনা ৪৮০, তাই বিট সংখ্যা:
<math>n = \lceil \log_2 \text{৪৮০} \rceil = \lceil \text{৮.৯} \rceil = \text{৯}</math> বিট।
৯ বিটের কাউন্টার ০ থেকে ৫১১ পর্যন্ত গুনতে পারে, যা ৪৮০ গণনার জন্য যথেষ্ট।
'''১৭.''' ৭৪৯৩ চিপ দিয়ে মডুলো-১১ কাউন্টার তৈরি করো। ৭৪৯৩-এ মাত্র দুটি রিসেট পিন থাকায় বাড়তি অ্যান্ড গেট লাগবে কিনা বিশ্লেষণ করো।
'''উত্তর:'''
১১ = ১০১১ বাইনারি। রিসেট শর্ত: <math>Q_D = \text{১}</math>, <math>Q_B = \text{১}</math>, <math>Q_A = \text{১}</math>।
তিনটি শর্ত আছে, কিন্তু রিসেট পিন মাত্র দুটি। তাই একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই আউটপুট R0(2)-এ এবং R0(1)-এ সরাসরি <math>Q_D</math> দাও।
যাচাই: গণনা ১১ হলে <math>Q_D = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>। R0(1) = ১, R0(2) = <math>Q_B \cdot Q_A</math> = ১। উভয়ে ১, রিসেট হবে।
'''১৮.''' দেখাও যে একটি মডুলো-৬০ ক্যাসকেড কাউন্টার মিনিটের পরিবর্তে সরাসরি মডুলো-৬০ কাউন্টার ব্যবহার করলে কী পার্থক্য হয়।
'''উত্তর:'''
মডুলো-৬০ কাউন্টার সরাসরি ০ থেকে ৫৯ পর্যন্ত বাইনারিতে গোনে। ৬ বিট দরকার।
কিন্তু ডিজিটাল ঘড়িতে দুটো আলাদা দশমিক অঙ্ক দেখাতে হয়, তাই বিসিডি পদ্ধতিতে মডুলো-১০ ও মডুলো-৬ ক্যাসকেড বেশি সুবিধাজনক।
সরাসরি মডুলো-৬০: বাইনারি থেকে দশমিক রূপান্তর ডিকোডার জটিল।
ক্যাসকেড মডুলো-১০×৬: প্রতিটি অঙ্ক আলাদাভাবে বিসিডিতে পাওয়া যায়, ডিকোডার সহজ।
'''১৯.''' একটি রেডিও স্টেশন ৯৮.৪ MHz-এ সম্প্রচার করে। ৯৮.৪ MHz = ৯৮৪ × ১০০ kHz। ১০০ kHz রেফারেন্স পেতে একটি ৯.৮৪ MHz স্ফটিক থেকে কত মডুলোর বিভাজক লাগবে?
'''উত্তর:'''
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৯,৮৪০,০০০}}{\text{১০০,০০০}} = \text{৯৮.৪}</math>
এটি পূর্ণ সংখ্যা নয়। তাই সরাসরি বিভাজন সম্ভব নয়।
বিকল্প: ৯.৮৪ MHz থেকে প্রথমে ÷৯৮.৪ না করে, ৯.৮৪ = ৯.৮৪ MHz = ৯৮৪০ kHz। ÷৯৮.৪ এর বদলে ÷৯৮৪ করলে ১০ kHz পাওয়া যায়, তারপর ÷১০ করলে ১ kHz। ফেজ লকড লুপ ব্যবহার করলে ভগ্নাংশ বিভাজন সম্ভব।
'''২০.''' প্রমাণ করো যে মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> দিয়ে ভাগ করে এবং একটি মডুলো-৩ কাউন্টারের সর্বোচ্চ বিটের কর্তব্যচক্র কত?
'''উত্তর:'''
কম্পাঙ্ক বিভাজন প্রমাণ: মডুলো-<math>N</math> কাউন্টার প্রতি <math>N</math>টি ইনপুট ক্লক স্পন্দনে একবার ঘুরে আসে। তাই আউটপুটের একটি চক্র = <math>N</math>টি ইনপুট চক্র। সুতরাং:
<math>f_{out} = \frac{f_{in}}{N}</math>
মডুলো-৩ কাউন্টারের কর্তব্যচক্র: মডুলো-৩ তিনটি অবস্থায় ঘোরে: ০০, ০১, ১০।
<math>Q_1</math> (সর্বোচ্চ বিট) এর মান:
* অবস্থা ০০: <math>Q_1 = \text{০}</math>
* অবস্থা ০১: <math>Q_1 = \text{০}</math>
* অবস্থা ১০: <math>Q_1 = \text{১}</math>
তিনটি অবস্থার মধ্যে একটিতে ১, তাই কর্তব্যচক্র = <math>\frac{\text{১}}{\text{৩}} \approx \text{৩৩.৩}\%</math>।
এটি ৫০% নয়, অর্থাৎ অসম কর্তব্যচক্র। যখন সমান কর্তব্যচক্র দরকার হয়, <math>\text{২}^n</math> মডুলো কাউন্টার বা বিশেষ সার্কিট ব্যবহার করতে হয়।
[[{{BOOKCATEGORY}}]]
g404xdn41ux6rnjsdi5g4x280hvkxkm
106496
106495
2026-06-05T09:21:01Z
R1F4T
9121
106496
wikitext
text/x-wiki
মনে করো তুমি একটি স্কুলের মাঠে দাঁড়িয়ে আছ। মাঠের পাশে একটি লম্বা পাইপ থেকে পানি পড়ছে। এক ফোঁটা পড়ল, দুই ফোঁটা পড়ল, তিন ফোঁটা পড়ল... তুমি মনে মনে গণনা করছ। এটাই গণনার সবচেয়ে সহজ রূপ।
ডিজিটাল ইলেকট্রনিক্সেও এইভাবে গণনা করা হয়। পার্থক্য শুধু এটুকু যে এখানে পানির ফোঁটার বদলে বৈদ্যুতিক পালস গণনা করা হয়, আর গণনার ফলাফল থাকে বাইনারি সংখ্যায়। এই গণনার কাজটি করে '''কাউন্টার''' নামের সার্কিট।
কাউন্টার দুই রকমের। এই অধ্যায়ে আমরা শিখব '''অ্যাসিনক্রোনাস কাউন্টার''', যাকে বাংলায় বলা যায় '''অসমকালীন কাউন্টার''' বা '''রিপল কাউন্টার'''। পরের অধ্যায়ে থাকবে সমকালীন কাউন্টার।
কিন্তু এই দুটোর মধ্যে পার্থক্য কী? সেটা বুঝতে হলে আগে একটা মজার উপমা দেখি।
== বাস্তব উদাহরণ ==
একটি সামরিক কুচকাওয়াজ কল্পনা করো। সামরিক কুচকাওয়াজে সব সৈনিক একসাথে পা ফেলে। ব্যান্ডের ড্রামের প্রতিটি বিটে সব সৈনিক একই সময়ে একই পা তোলে। এটা হলো '''সমকালীন''' পদ্ধতি।
এখন অন্য একটা দৃশ্য কল্পনা করো। একটা দীর্ঘ সারিতে মানুষ দাঁড়িয়ে আছে। সামনের মানুষ পিছনের মানুষের কাঁধ ধরেছে। যখন সারির একেবারে সামনের মানুষ ঠেলা খেয়ে সামনে এগোয়, সেই ঠেলা পিছনের জনের কাছে যায়, তারপর তার পিছনে যায়, এভাবে একটা ঢেউয়ের মতো পিছনে যেতে থাকে। প্রথম মানুষ নড়ার কিছুক্ষণ পরে শেষ মানুষ নড়ে। এটা হলো '''অসমকালীন''' বা '''রিপল''' পদ্ধতি।
অ্যাসিনক্রোনাস কাউন্টারে ঠিক এইভাবে ঘড়ির সংকেত একটি ফ্লিপ-ফ্লপ থেকে পরেরটিতে "ঢেউয়ের মতো" এগিয়ে যায়। ইংরেজিতে এই ঢেউকে বলে "রিপল", তাই এই কাউন্টারের আরেক নাম রিপল কাউন্টার।
== অ্যাসিনক্রোনাস কাউন্টার কী ==
'''অ্যাসিনক্রোনাস কাউন্টার''' হলো এমন একটি গণনাকারী সার্কিট যেখানে সব ফ্লিপ-ফ্লপ একই ঘড়ি সংকেত ব্যবহার করে না। বরং প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে, দ্বিতীয়টির আউটপুট তৃতীয়টির ঘড়ি হয়, এভাবে চলতে থাকে।
এই কারণেই একে অসমকালীন বলা হয়: কারণ প্রতিটি ফ্লিপ-ফ্লপ ভিন্ন সময়ে পরিবর্তন হয়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের মূল পার্থক্য
! বিষয় !! অ্যাসিনক্রোনাস কাউন্টার !! সমকালীন কাউন্টার
|-
| ঘড়ির উৎস || প্রতিটি ফ্লিপ-ফ্লপের ঘড়ি ভিন্ন || সব ফ্লিপ-ফ্লপ একই বাহ্যিক ঘড়ি পায়
|-
| পরিবর্তনের সময় || একে একে পরিবর্তন হয় || সবাই একসাথে পরিবর্তন হয়
|-
| সার্কিটের জটিলতা || সহজ || জটিল
|-
| গতি || ধীর (ক্রমিক বিলম্ব) || দ্রুত
|-
| ব্যবহার || সহজ গণনা, কম গতির সার্কিট || দ্রুত, নির্ভুল গণনা
|-
| উপমা || ডোমিনো পড়া || সকলে একসাথে তালি দেওয়া
|}
== মূল উপাদান: টগল মোডে টি ফ্লিপ-ফ্লপ ==
অ্যাসিনক্রোনাস কাউন্টারের মূল উপাদান হলো ফ্লিপ-ফ্লপ। তবে এখানে বিশেষভাবে ফ্লিপ-ফ্লপকে '''টগল মোডে''' ব্যবহার করা হয়।
=== টগল মানে কী ===
টগল মানে হলো প্রতিবার ঘড়ির সক্রিয় প্রান্তে আউটপুট উল্টে যাওয়া। যদি <math>Q = \text{০}</math> থাকে তাহলে <math>\text{১}</math> হয়, আর যদি <math>Q = \text{১}</math> থাকে তাহলে <math>\text{০}</math> হয়।
সহজ উপমা: একটি লাইট সুইচ। প্রতিবার চাপলে অবস্থা বদলায়। যদি বাতি জ্বলছিল, নিভে যায়। যদি নিভা ছিল, জ্বলে ওঠে। এটাই টগল।
=== টগল মোডে ফ্লিপ-ফ্লপ তৈরির উপায় ===
যেকোনো ফ্লিপ-ফ্লপকে টগল মোডে ব্যবহার করা যায়। সবচেয়ে সহজ পদ্ধতি:
'''জেকে ফ্লিপ-ফ্লপ দিয়ে:'''
<math>J = K = \text{১}</math> করে দাও। তাহলে প্রতিটি ঘড়ির সক্রিয় প্রান্তে আউটপুট টগল করবে।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = J\bar{Q} + \bar{K}Q = \text{১} \cdot \bar{Q} + \text{০} \cdot Q = \bar{Q}</math>
'''ডি ফ্লিপ-ফ্লপ দিয়ে:'''
<math>D = \bar{Q}</math> সংযোগ দাও। তাহলে প্রতিটি ঘড়ির প্রান্তে <math>D</math> তে থাকে <math>Q</math> এর বিপরীত মান, এবং পরবর্তী প্রান্তে সেটাই সংরক্ষিত হয়।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = D = \bar{Q}</math>
=== টগলের গণিত: প্রতি দুই পালসে একটি চক্র ===
একটি টগল মোড ফ্লিপ-ফ্লপে পরপর পালস দেওয়া হলে:
{| class="wikitable" style="text-align:center;"
|+ একটি টগল ফ্লিপ-ফ্লপের আচরণ
! ঘড়ির পালস !! <math>Q</math> (আগে) !! <math>Q^+ = \bar{Q}</math> !! পরিবর্তন
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক অবস্থা
|-
| ১ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ২য় পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৩য় পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৪র্থ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৫ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৬ষ্ঠ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|}
আউটপুট ক্রম: <math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
গুরুত্বপূর্ণ পর্যবেক্ষণ: আউটপুটের কম্পাঙ্ক ঘড়ির কম্পাঙ্কের '''অর্ধেক'''। প্রতি দুটি ইনপুট পালসে একটি সম্পূর্ণ আউটপুট চক্র হয়।
এই বৈশিষ্ট্যটিই অ্যাসিনক্রোনাস কাউন্টারের ভিত্তি।
== ২-বিট অ্যাসিনক্রোনাস কাউন্টার ==
এখন আমরা দুটি টগল ফ্লিপ-ফ্লপ যুক্ত করে একটি ২-বিট কাউন্টার তৈরি করব।
=== ধারণা: ডোমিনো এফেক্ট ===
ডোমিনো খেলায় একটি টাইল পড়লে পরেরটি পড়ে, তারপর আরেকটি। ঠিক এইভাবে ২-বিট কাউন্টারে:
প্রথম ফ্লিপ-ফ্লপ বাহ্যিক ঘড়ি পালস থেকে ঘড়ি পায়। প্রতিটি পালসে প্রথম ফ্লিপ-ফ্লপ টগল করে।
প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে। তাই যখন প্রথম ফ্লিপ-ফ্লপের আউটপুট <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নিম্নগামী প্রান্ত), তখন দ্বিতীয় ফ্লিপ-ফ্লপ টগল করে।
=== সার্কিটের গঠন ===
দুটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math> ও <math>FF_1</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি (<math>CLK</math>), <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
<math>FF_0</math> এর আউটপুট <math>Q_0</math> হলো সর্বনিম্ন বিট (একক স্থান)।
<math>FF_1</math> এর আউটপুট <math>Q_1</math> হলো উঁচু বিট (দুইয়ের স্থান)।
=== কোন প্রান্তে টগল হবে ===
নিম্নগামী প্রান্ত-সক্রিয় কাউন্টারে দ্বিতীয় ফ্লিপ-ফ্লপ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয় তখন টগল করে।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! বাহ্যিক পালস !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! <math>Q_0</math> এর পরিবর্তন !! <math>Q_1</math> পরিবর্তিত হয়?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক || না
|-
| ১ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ২য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{০} \to \text{১}</math>)
|-
| ৩য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ৪র্থ পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{১} \to \text{০}</math>)
|-
| ৫ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || না
|}
লক্ষ করো: ৪ম পালসের পর কাউন্টার আবার <math>\text{০}</math> তে ফিরে এসেছে। এটাই ২-বিট কাউন্টারের একটি সম্পূর্ণ চক্র: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{০}</math>।
=== কেন <math>Q_1</math> শুধু নিম্নগামী প্রান্তে বদলায় ===
এটা বোঝা খুব জরুরি। আমরা নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ ব্যবহার করছি, তাই <math>FF_1</math> শুধু তখনই টগল করবে যখন তার ঘড়ি ইনপুট অর্থাৎ <math>Q_0</math> নিম্নগামী প্রান্ত দেখাবে।
<math>Q_0</math> নিম্নগামী প্রান্ত মানে: <math>Q_0</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয়।
এটা ঘটে ২য় পালসে এবং ৪র্থ পালসে। তাই <math>Q_1</math> এই দুটো মুহূর্তেই টগল করে।
=== বিস্তারিত ধাপে ধাপে বিশ্লেষণ ===
'''শুরুতে:''' প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>)
'''১ম পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায় → টগল → <math>Q_0: \text{০} \to \text{১}</math>
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> উর্ধ্বগামী প্রান্ত দেখেছে (<math>\text{০} \to \text{১}</math>) → নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ তাই পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক <math>\text{১}</math>)
'''২য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{০} \to \text{১}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক <math>\text{২}</math>)
'''৩য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{০} \to \text{১}</math> (উর্ধ্বগামী প্রান্ত)
* <math>FF_1</math>: তার ঘড়ি উর্ধ্বগামী প্রান্ত দেখেছে → পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক <math>\text{৩}</math>)
'''৪র্থ পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{১} \to \text{০}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>) — একটি সম্পূর্ণ চক্র!
=== ২-বিট কাউন্টারের গণনার ক্রম ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের সম্পূর্ণ গণনার ক্রম
! পালস সংখ্যা !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক
|-
| <math>\text{০}</math> (শুরু) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math> (পুনরায়)
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|}
=== ২-বিট কাউন্টারের কম্পাঙ্ক বিশ্লেষণ ===
এখন একটা গুরুত্বপূর্ণ বিষয় বুঝি। ধরো বাহ্যিক ঘড়ির কম্পাঙ্ক <math>f</math>।
* <math>Q_0</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{২}}</math> (প্রতি দুটি বাহ্যিক পালসে একটি চক্র)
* <math>Q_1</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{৪}}</math> (প্রতি চারটি বাহ্যিক পালসে একটি চক্র)
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন অনুপাত !! উদাহরণ (<math>f = \text{১০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{১০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৫০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২৫০}</math> হার্টজ
|}
== ৩-বিট অ্যাসিনক্রোনাস কাউন্টার ==
২-বিট কাউন্টার তো বুঝলাম। এখন আরেকটি ফ্লিপ-ফ্লপ যোগ করলে কী হয়? পাই ৩-বিট কাউন্টার যা ০ থেকে ৭ পর্যন্ত গণনা করতে পারে।
=== উপমা: তিনটি মিটার ===
ধরো একটি পানির মিটার যেখানে তিনটি চাকা আছে। একক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে দশক স্থানের চাকা একবার এগোয়। দশক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে শতক স্থানের চাকা একবার এগোয়। আমাদের বাইনারি কাউন্টারেও ঠিক এইভাবে কাজ হয়, শুধু পার্থক্য হলো এখানে প্রতিটি চাকা শুধু ০ ও ১ এর মধ্যে ঘোরে।
=== সার্কিটের গঠন ===
তিনটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math>, <math>FF_1</math>, <math>FF_2</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি, <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1</math> এর নিম্নগামী প্রান্ত, <math>J_2 = K_2 = \text{১}</math>
প্রতিটি ফ্লিপ-ফ্লপ পূর্ববর্তী ফ্লিপ-ফ্লপের আউটপুট থেকে ঘড়ি পাচ্ছে। এটাই রিপল প্রভাব।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক !! ব্যাখ্যা
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || প্রারম্ভিক
|-
| ১ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০০১}</math> || <math>\text{১}</math> || শুধু <math>Q_0</math> টগল
|-
| ২য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০১০}</math> || <math>\text{২}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৩য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০১১}</math> || <math>\text{৩}</math> || শুধু <math>Q_0</math> টগল
|-
| ৪র্থ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১০০}</math> || <math>\text{৪}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল, <math>Q_1</math> নিম্নগামী তাই <math>Q_2</math> টগল
|-
| ৫ম || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১০১}</math> || <math>\text{৫}</math> || শুধু <math>Q_0</math> টগল
|-
| ৬ষ্ঠ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১১০}</math> || <math>\text{৬}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৭ম || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১১}</math> || <math>\text{৭}</math> || শুধু <math>Q_0</math> টগল
|-
| ৮ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || সম্পূর্ণ চক্র, পুনরায় শুরু
|}
=== ৪র্থ পালসের বিস্তারিত বিশ্লেষণ ===
৪র্থ পালসটি একটু জটিল, তাই আলাদা করে বিশ্লেষণ করা যাক।
আগের অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
ধাপ ১: <math>FF_0</math> বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায়
* <math>FF_0</math> টগল: <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত উৎপন্ন হলো)
ধাপ ২: <math>FF_1</math> তার ঘড়ি <math>Q_0</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_1</math> টগল: <math>Q_1: \text{১} \to \text{০}</math> (এটাও নিম্নগামী প্রান্ত!)
ধাপ ৩: <math>FF_2</math> তার ঘড়ি <math>Q_1</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_2</math> টগল: <math>Q_2: \text{০} \to \text{১}</math>
নতুন অবস্থা: <math>Q_2 Q_1 Q_0 = \text{১০০}</math> (দশমিক <math>\text{৪}</math>)
দেখো, এখানে তিনটি ফ্লিপ-ফ্লপই পরিবর্তন হয়েছে কিন্তু একসাথে নয়, পরপর। এটাই রিপল প্রভাব।
=== কম্পাঙ্ক বিভাজন ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন !! উদাহরণ (<math>f = \text{৮০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{৮০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৪০০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২০০০}</math> হার্টজ
|-
| <math>Q_2</math> || <math>\frac{f}{\text{৮}}</math> || <math>\div \text{৮}</math> || <math>\text{১০০০}</math> হার্টজ
|}
== ৪-বিট অ্যাসিনক্রোনাস কাউন্টার ==
৩-বিট কাউন্টার বুঝলে ৪-বিট কাউন্টার অনুমান করা সহজ। আরেকটি ফ্লিপ-ফ্লপ (<math>FF_3</math>) যোগ হবে এবং এর ঘড়ি হবে <math>Q_2</math> এর নিম্নগামী প্রান্ত।
=== সার্কিটের গঠন ===
চারটি জেকে ফ্লিপ-ফ্লপ:
* <math>FF_0</math>: ঘড়ি = বাহ্যিক <math>CLK</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0 \downarrow</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1 \downarrow</math>
* <math>FF_3</math>: ঘড়ি = <math>Q_2 \downarrow</math>
সবার <math>J = K = \text{১}</math>
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| <math>\text{১২}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| <math>\text{১৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| <math>\text{১৪}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| <math>\text{১৫}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| <math>\text{১৬}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> (পুনরায়)
|}
=== n-বিট কাউন্টারের সাধারণ সূত্র ===
{| class="wikitable" style="text-align:center;"
|+ n-বিট কাউন্টারের বৈশিষ্ট্য
! বিট সংখ্যা <math>n</math> !! ফ্লিপ-ফ্লপ সংখ্যা !! গণনার পরিসর !! মোট অবস্থা !! সর্বোচ্চ মান
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{২}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{২}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৪}</math> || <math>\text{৩}</math>
|-
| <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৮}</math> || <math>\text{৭}</math>
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৬}</math> || <math>\text{১৫}</math>
|-
| <math>\text{৫}</math> || <math>\text{৫}</math> || <math>\text{০} \to \text{৩১}</math> || <math>\text{৩২}</math> || <math>\text{৩১}</math>
|-
| <math>n</math> || <math>n</math> || <math>\text{০} \to \text{২}^n - \text{১}</math> || <math>\text{২}^n</math> || <math>\text{২}^n - \text{১}</math>
|}
== অ্যাসিনক্রোনাস কাউন্টারের রিপল প্রভাব ও বিলম্ব ==
এখন আমরা অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যটি আলোচনা করব, যা একই সাথে এর সুবিধা ও সীমাবদ্ধতা।
=== রিপল প্রভাব কী ===
পুকুরে একটি পাথর ফেললে কী হয়? পানিতে ঢেউ তৈরি হয় এবং সেই ঢেউ একটু একটু করে বাইরের দিকে ছড়িয়ে পড়ে। প্রথমে কেন্দ্রের পানি নড়ে, তারপর একটু বাইরের পানি, তারপর আরেকটু বাইরে।
অ্যাসিনক্রোনাস কাউন্টারে ঘড়ির পালস ঠিক এইভাবে "ছড়িয়ে পড়ে"। প্রথম ফ্লিপ-ফ্লপ পরিবর্তন হয়, তারপর তার সংকেত দ্বিতীয় ফ্লিপ-ফ্লপে পৌঁছায় এবং দ্বিতীয়টি পরিবর্তন হয়, এভাবে চলতে থাকে।
=== বিলম্বের পরিমাণ ===
প্রতিটি ফ্লিপ-ফ্লপের নিজস্ব বিস্তার বিলম্ব আছে। একে <math>t_{pd}</math> বলি।
{| class="wikitable" style="text-align:center;"
|+ n-বিট রিপল কাউন্টারের মোট বিলম্ব
! বিট সংখ্যা <math>n</math> !! সর্বোচ্চ মোট বিলম্ব !! ব্যাখ্যা
|-
| <math>\text{২}</math> || <math>\text{২} \times t_{pd}</math> || দুটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৩}</math> || <math>\text{৩} \times t_{pd}</math> || তিনটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৪}</math> || <math>\text{৪} \times t_{pd}</math> || চারটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>n</math> || <math>n \times t_{pd}</math> || সাধারণ সূত্র
|}
=== বিলম্বের বাস্তব উদাহরণ ===
ধরো প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১০}</math> ন্যানোসেকেন্ড।
৪-বিট রিপল কাউন্টারে সর্বোচ্চ মোট বিলম্ব:
:<math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
এই বিলম্বের মধ্যে ঘড়ির পরবর্তী পালস না আসলে সার্কিট সঠিকভাবে কাজ করবে। তাই সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{n \times t_{pd}} = \frac{\text{১}}{\text{৪০} \text{ ন্যানো}} = \text{২৫}</math> মেগাহার্টজ
=== ক্ষণিক ভুল অবস্থা ===
বিলম্বের কারণে একটি মজার সমস্যা হয়। সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হয় না বলে মধ্যবর্তী মুহূর্তে ভুল অবস্থা দেখা যায়।
উদাহরণ: ৩-বিট কাউন্টারে <math>\text{০১১}</math> (দশমিক <math>\text{৩}</math>) থেকে <math>\text{১০০}</math> (দশমিক <math>\text{৪}</math>) তে যাওয়ার সময়:
{| class="wikitable" style="text-align:center;"
|+ <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় ক্ষণিক অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! মন্তব্য
|-
| <math>t_0</math> (আগে) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || স্থিতিশীল
|-
| <math>t_0 + t_{pd}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{২}t_{pd}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{৩}t_{pd}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || স্থিতিশীল
|}
<math>\text{৩}</math> থেকে <math>\text{৪}</math> তে যাওয়ার পথে সংক্ষেপে <math>\text{২}</math> ও <math>\text{০}</math> দেখা গেছে! এগুলো ক্ষণিক অবস্থা, কিন্তু ভুল আউটপুট দেখানো হচ্ছে।
এই সমস্যাকে বলে গ্লিচ। উচ্চগতির সার্কিটে এটি বড় সমস্যা হতে পারে।
== টাইমিং চিত্র বিশ্লেষণ ==
টাইমিং চিত্র দেখে অ্যাসিনক্রোনাস কাউন্টারের আচরণ সবচেয়ে ভালো বোঝা যায়।
=== ৩-বিট কাউন্টারের টাইমিং চিত্র বর্ণনা ===
কল্পনা করো তিনটি সারিতে তরঙ্গ আঁকা হয়েছে:
* প্রথম সারি (<math>CLK</math>): দ্রুত নিয়মিত তরঙ্গ
* দ্বিতীয় সারি (<math>Q_0</math>): <math>CLK</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* তৃতীয় সারি (<math>Q_1</math>): <math>Q_0</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* চতুর্থ সারি (<math>Q_2</math>): <math>Q_1</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের টাইমিং চিত্র সারণী
! সময় !! <math>CLK</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! বর্তমান মান
|-
| <math>t_1</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০০১}=\text{১}</math>
|-
| <math>t_2</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{০১০}=\text{২}</math>
|-
| <math>t_3</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০১১}=\text{৩}</math>
|-
| <math>t_4</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{১০০}=\text{৪}</math>
|-
| <math>t_5</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১০১}=\text{৫}</math>
|-
| <math>t_6</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{১১০}=\text{৬}</math>
|-
| <math>t_7</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১১১}=\text{৭}</math>
|-
| <math>t_8</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০০০}=\text{০}</math>
|}
=== টাইমিং চিত্র থেকে বিলম্ব দেখা ===
<math>t_4</math> মুহূর্তে তিনটি ফ্লিপ-ফ্লপ পরিবর্তন হয়েছে। কিন্তু সবাই একসাথে পরিবর্তন হয়নি:
* <math>Q_0</math> পরিবর্তন হলো সাথে সাথে (বাহ্যিক ঘড়ি থেকে)
* <math>Q_1</math> পরিবর্তন হলো <math>t_{pd}</math> পরে (একটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
* <math>Q_2</math> পরিবর্তন হলো <math>\text{২} t_{pd}</math> পরে (দুটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
এই সময়ের মধ্যে যদি আউটপুট পড়া হয়, ভুল মান পাওয়া যাবে।
== অ্যাসিনক্রোনাস কাউন্টারের সুবিধা ও সীমাবদ্ধতা ==
=== সুবিধা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সুবিধা
! সুবিধা !! বিস্তারিত ব্যাখ্যা
|-
| সহজ সার্কিট || ফ্লিপ-ফ্লপ শুধু একটার পর একটা সংযুক্ত, কোনো জটিল গেট নেই
|-
| কম উপাদান || সমকালীন কাউন্টারের তুলনায় অনেক কম গেট লাগে
|-
| কম বিদ্যুৎ খরচ || সহজ সার্কিট মানে কম বিদ্যুৎ খরচ
|-
| সহজ ডিজাইন || যেকোনো বিট সংখ্যার কাউন্টার একই পদ্ধতিতে তৈরি করা যায়
|-
| কম্পাঙ্ক বিভাজক || প্রতিটি আউটপুট আগেরটির অর্ধেক কম্পাঙ্কের সংকেত দেয়
|}
=== সীমাবদ্ধতা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা
! সীমাবদ্ধতা !! বিস্তারিত ব্যাখ্যা
|-
| রিপল বিলম্ব || বিট সংখ্যা বাড়লে বিলম্ব বাড়ে, তাই সর্বোচ্চ কম্পাঙ্ক কমে
|-
| ক্ষণিক ভুল আউটপুট || পরিবর্তনের সময় ভুল মান দেখা দিতে পারে (গ্লিচ)
|-
| গতির সীমা || উচ্চ গতির সার্কিটে ব্যবহার করা কঠিন
|-
| ডিকোডিং সমস্যা || বিলম্বের কারণে সঠিক সময়ে আউটপুট পাঠ করা কঠিন
|}
== উর্ধ্বগামী কাউন্টারের প্যাটার্ন বোঝা ==
এখন আমরা একটু গভীরে যাই এবং উর্ধ্বগামী রিপল কাউন্টারের একটি সুন্দর প্যাটার্ন দেখব।
=== <math>Q_0</math> কখন টগল করে ===
<math>Q_0</math> প্রতিটি বাহ্যিক পালসে টগল করে। তাই এর গণনার ক্রম:
<math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
=== <math>Q_1</math> কখন টগল করে ===
<math>Q_1</math> তখনই টগল করে যখন <math>Q_0</math> নিম্নগামী হয় (<math>\text{১} \to \text{০}</math>)। এটা ঘটে প্রতি ২ম, ৪র্থ, ৬ষ্ঠ... বাহ্যিক পালসে।
তাই <math>Q_1</math> এর গণনার ক্রম:
<math>\text{০, ০, ১, ১, ০, ০, ১, ১, }\ldots</math>
=== <math>Q_2</math> কখন টগল করে ===
<math>Q_2</math> তখনই টগল করে যখন <math>Q_1</math> নিম্নগামী হয়। এটা ঘটে প্রতি ৪র্থ, ৮ম... বাহ্যিক পালসে।
তাই <math>Q_2</math> এর গণনার ক্রম:
<math>\text{০, ০, ০, ০, ১, ১, ১, ১, ০, ০, ০, ০, ১, ১, ১, ১, }\ldots</math>
=== সাধারণ নিয়ম ===
<math>k</math>তম বিট (<math>Q_k</math>) টগল করে প্রতি <math>\text{২}^{k+1}</math> বাহ্যিক পালসে একবার।
{| class="wikitable" style="text-align:center;"
|+ বিট টগলের সাধারণ নিয়ম
! বিট !! টগল করার সময় !! বাহ্যিক পালসের প্যাটার্ন
|-
| <math>Q_0</math> || প্রতি পালসে || <math>\text{১, ২, ৩, ৪} \ldots</math>
|-
| <math>Q_1</math> || প্রতি <math>\text{২}</math>তম পালসে || <math>\text{২, ৪, ৬, ৮, }\ldots</math>
|-
| <math>Q_2</math> || প্রতি <math>\text{৪}</math>তম পালসে || <math>\text{৪, ৮, ১২, ১৬, }\ldots</math>
|-
| <math>Q_3</math> || প্রতি <math>\text{৮}</math>তম পালসে || <math>\text{৮, ১৬, ২৪, ৩২, }\ldots</math>
|-
| <math>Q_k</math> || প্রতি <math>\text{২}^k</math>তম পালসে || <math>\text{২}^k, \text{২}^{k+1}, \text{৩} \times \text{২}^k \ldots</math>
|}
== কত পালসে কাউন্টার কোথায় থাকবে: দ্রুত গণনার কৌশল ===
ধরো <math>n</math>-বিট কাউন্টারে <math>p</math> পালস দেওয়া হয়েছে। কাউন্টারের মান কত হবে?
উত্তর: <math>p \mod \text{২}^n</math>
অর্থাৎ <math>p</math> কে <math>\text{২}^n</math> দিয়ে ভাগ করলে যে ভাগশেষ পাওয়া যাবে সেটাই কাউন্টারের মান।
'''উদাহরণ:''' ৩-বিট কাউন্টারে <math>\text{২৩}</math> পালস দেওয়া হলে কাউন্টারের মান কত?
<math>\text{২৩} \mod \text{২}^\text{৩} = \text{২৩} \mod \text{৮} = \text{৭}</math>
(কারণ <math>\text{২৩} = \text{২} \times \text{৮} + \text{৭}</math>)
তাই কাউন্টারের মান হবে <math>\text{৭}</math> অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১১১}</math>।
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ২-বিট কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ২-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math>। পরপর ৫টি পালস দেওয়া হলো। প্রতিটি পালসের পরে অবস্থা নির্ণয় করো।
সমাধান:
প্রথমে মনে করো: ২-বিট কাউন্টার চক্রাকারে গণনা করে: <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০} \to \ldots</math>
প্রারম্ভিক অবস্থা: <math>\text{১১}</math> (দশমিক <math>\text{৩}</math>)
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ১ সমাধান
! পালস !! বর্তমান দশমিক মান !! পরবর্তী দশমিক মান !! <math>Q_1 Q_0</math>
|-
| শুরু || <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{১১}</math>
|-
| ১ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|-
| ২য় || <math>\text{০}</math> || <math>(\text{০}+\text{১}) \mod \text{৪} = \text{১}</math> || <math>\text{০১}</math>
|-
| ৩য় || <math>\text{১}</math> || <math>(\text{১}+\text{১}) \mod \text{৪} = \text{২}</math> || <math>\text{১০}</math>
|-
| ৪র্থ || <math>\text{২}</math> || <math>(\text{২}+\text{১}) \mod \text{৪} = \text{৩}</math> || <math>\text{১১}</math>
|-
| ৫ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|}
=== উদাহরণ ২: ৩-বিট কাউন্টারে নির্দিষ্ট পালসের পরে অবস্থা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math>। <math>\text{৪৫}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
সমাধান:
৩-বিট কাউন্টারের মডুলো <math>= \text{২}^\text{৩} = \text{৮}</math>
<math>\text{৪৫} \mod \text{৮} = ?</math>
<math>\text{৪৫} = \text{৫} \times \text{৮} + \text{৫}</math>
তাই ভাগশেষ <math>= \text{৫}</math>
কাউন্টারের মান: <math>\text{৫}</math>, অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১০১}</math>
=== উদাহরণ ৩: কম্পাঙ্ক গণনা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{৪৮০০}</math> হার্টজ। <math>Q_0</math>, <math>Q_1</math> এবং <math>Q_2</math> এর কম্পাঙ্ক কত?
সমাধান:
:<math>Q_0 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{২}} = \text{২৪০০}</math> হার্টজ
:<math>Q_1 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৪}} = \text{১২০০}</math> হার্টজ
:<math>Q_2 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৮}} = \text{৬০০}</math> হার্টজ
=== উদাহরণ ৪: ফ্লিপ-ফ্লপ সংখ্যা নির্ণয় ===
একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{৬৩}</math> পর্যন্ত গণনা করতে পারবে। কতটি ফ্লিপ-ফ্লপ দরকার?
সমাধান:
<math>\text{৬৩} + \text{১} = \text{৬৪} = \text{২}^{\text{৬}}</math>
তাই <math>n = \text{৬}</math>, অর্থাৎ <math>\text{৬}</math>টি ফ্লিপ-ফ্লপ দরকার।
=== উদাহরণ ৫: সর্বোচ্চ গণনার পরে অবস্থা ===
একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{১১১১}</math> (দশমিক <math>\text{১৫}</math>)। একটি পালস দেওয়ার পরে অবস্থা কী হবে?
সমাধান:
দশমিক <math>\text{১৫}</math> এর পরের মান: <math>(\text{১৫} + \text{১}) \mod \text{১৬} = \text{০}</math>
তাই কাউন্টার <math>\text{০}</math> তে ফিরে যাবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
এটাই একটি সম্পূর্ণ চক্রের শেষ।
=== উদাহরণ ৬: বিলম্ব গণনা ===
একটি ৫-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১৫}</math> ন্যানোসেকেন্ড। সর্বোচ্চ মোট বিলম্ব কত এবং সর্বোচ্চ কম্পাঙ্ক কত?
সমাধান:
সর্বোচ্চ মোট বিলম্ব: <math>\text{৫} \times \text{১৫} = \text{৭৫}</math> ন্যানোসেকেন্ড
সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{\text{৭৫} \times \text{১০}^\text{-৯}} \approx \text{১৩.৩}</math> মেগাহার্টজ
== অনুশীলনী ==
# একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে সর্বোচ্চ কত পর্যন্ত গণনা করা যায়?
# একটি <math>\text{৬}</math>-বিট রিপল কাউন্টারে মোট কতটি অবস্থা আছে?
# ৩-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math> থেকে <math>\text{১১}</math> পালস দেওয়ার পরে অবস্থা কী?
# ৪-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০১১০}</math> থেকে শুরু করে <math>\text{৫}</math> পালস দেওয়ার পরে দশমিক মান কত?
# বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{১৬০০০}</math> হার্টজ হলে ৪-বিট কাউন্টারের <math>Q_3</math> এর কম্পাঙ্ক কত?
# একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{১২৭}</math> পর্যন্ত গণনা করতে পারে। এটি কত বিটের এবং কতটি ফ্লিপ-ফ্লপ দরকার?
# প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>\text{৮}</math> ন্যানোসেকেন্ড হলে ৪-বিট রিপল কাউন্টারের সর্বোচ্চ কম্পাঙ্ক কত?
# ২-বিট কাউন্টারে <math>Q_1</math> কখন পরিবর্তন হয়?
# ৩-বিট কাউন্টারে <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় কতটি ক্ষণিক ভুল অবস্থা দেখা যায়?
# একটি ৩-বিট কাউন্টারে <math>\text{১০০}</math> পালস দেওয়ার পরে অবস্থা কী?
# অ্যাসিনক্রোনাস কাউন্টারে সমান্তরাল লোড সম্ভব কীভাবে?
# ৪-বিট রিপল কাউন্টারে সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হওয়ার সম্ভাবনা কোন পালসে সবচেয়ে বেশি?
# n-বিট কাউন্টারের <math>Q_{n-1}</math> এর কম্পাঙ্ক বাহ্যিক ঘড়ির কম্পাঙ্কের কত ভাগ?
# ৫-বিট কাউন্টারে <math>\text{১৯৮}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
# দুটি ২-বিট কাউন্টার যদি ক্যাসকেডে যুক্ত করা হয় তাহলে মোট কত পর্যন্ত গণনা করা যাবে?
'''উত্তর:'''
# <math>\text{২}^\text{৪} - \text{১} = \text{১৫}</math>
# <math>\text{২}^\text{৬} = \text{৬৪}</math>টি অবস্থা
# <math>\text{১১} \mod \text{৮} = \text{৩}</math>, তাই <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
# প্রারম্ভিক দশমিক মান: <math>\text{০১১০} = \text{৬}</math>; <math>(\text{৬}+\text{৫}) \mod \text{১৬} = \text{১১}</math>
# <math>\frac{\text{১৬০০০}}{\text{২}^\text{৪}} = \frac{\text{১৬০০০}}{\text{১৬}} = \text{১০০০}</math> হার্টজ
# <math>\text{১২৭}+\text{১} = \text{১২৮} = \text{২}^\text{৭}</math>; ৭-বিট, ৭টি ফ্লিপ-ফ্লপ
# <math>f_{max} = \frac{\text{১}}{\text{৪} \times \text{৮} \times \text{১০}^{-9}} = \frac{\text{১}}{\text{৩২ ন্যানো}} \approx \text{৩১.২৫}</math> মেগাহার্টজ
# যখন <math>Q_0</math> নিম্নগামী প্রান্ত দেখায়, অর্থাৎ <math>Q_0: \text{১} \to \text{০}</math>
# দুটি ক্ষণিক অবস্থা: <math>\text{০১০}</math> এবং <math>\text{০০০}</math>
# <math>\text{১০০} \mod \text{৮} = \text{৪}</math>; <math>Q_2 Q_1 Q_0 = \text{১০০}</math>
# প্রিসেট ও ক্লিয়ার ইনপুট ব্যবহার করে প্রতিটি ফ্লিপ-ফ্লপ আলাদাভাবে সেট বা রিসেট করা যায়
# ৮ম, ১৬তম, ২৪তম পালসে (যখন সর্বোচ্চ বিটও পরিবর্তন হয়)
# <math>\frac{\text{১}}{\text{২}^n}</math> ভাগ
# <math>\text{১৯৮} \mod \text{৩২} = \text{১৯৮} - \text{৬} \times \text{৩২} = \text{১৯৮} - \text{১৯২} = \text{৬}</math>; <math>Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০০১১০}</math>
# মোট গণনার পরিসর: <math>\text{২}^\text{২} \times \text{২}^\text{২} = \text{২}^\text{৪} = \text{১৬}</math>, অর্থাৎ <math>\text{০}</math> থেকে <math>\text{১৫}</math>
== নিম্নগামী কাউন্টার ও মডুলো কাউন্টার ==
আগের ভাগে আমরা দেখেছিলাম টি ফ্লিপ-ফ্লপ কীভাবে প্রতিটি ক্লকে টগল করে এবং সেগুলোকে পর পর সাজিয়ে কীভাবে ০ থেকে উপরের দিকে গণনা করা যায়। উর্ধ্বগামী গণনা বুঝে গেলে একটা স্বাভাবিক প্রশ্ন মাথায় আসে: উল্টো দিক থেকে গণনা করা যায় কি? অর্থাৎ ৭ থেকে শুরু করে ৬, ৫, ৪... ০ পর্যন্ত নামা? এই ভাগে সেটাই দেখব, এবং তার চেয়েও মজার একটা জিনিস শিখব: নির্দিষ্ট একটা সংখ্যায় পৌঁছালে নিজে থেকে শূন্য হয়ে যাওয়া কাউন্টার।
=== নিম্নগামী রিপল কাউন্টার ===
==== উপমা: রকেট উৎক্ষেপণের উল্টো গণনা ====
রকেট উৎক্ষেপণের আগে কন্ট্রোল রুমে যে গণনা শোনা যায় সেটা উল্টো দিক থেকে হয়: ১০, ৯, ৮, ৭... ৩, ২, ১, শূন্য। এই উল্টো গণনাই নিম্নগামী কাউন্টারের কাজ।
বাস্তব জীবনে এই ধরনের উল্টো গণনার প্রয়োজন অনেক জায়গায়। মাইক্রোওয়েভ ওভেনে সময় কমতে থাকে, সিনেমার টিকেট কাউন্টারে খালি আসনের সংখ্যা কমতে থাকে, স্মার্টফোনের ব্যাটারি চার্জ কমতে থাকে। এগুলো সবই নিম্নগামী কাউন্টারের প্রয়োগ।
==== উর্ধ্বগামী থেকে নিম্নগামীর মূল পার্থক্য ====
উর্ধ্বগামী কাউন্টারে প্রতিটি পরের ফ্লিপ-ফ্লপের ঘড়ি হিসেবে আগের ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট ব্যবহার করা হয়। নিম্নগামী কাউন্টার তৈরি করতে কেবল একটা জিনিস বদলে দিতে হয়: <math>Q</math> এর বদলে <math>\bar{Q}</math> ব্যবহার করো।
এটা কেন কাজ করে? কারণ <math>Q</math> থেকে <math>\text{০}</math> থেকে <math>\text{১}</math> হওয়ার সময় (উঠতি প্রান্তে) পরের ফ্লিপ-ফ্লপ টগল করে উর্ধ্বগামী হয়। কিন্তু <math>\bar{Q}</math> ঠিক উল্টো সময়ে পরিবর্তন হয়, অর্থাৎ <math>Q</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নামতি প্রান্তে)। ফলে গণনা উল্টো দিকে যায়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী ও নিম্নগামী কাউন্টারের মূল পার্থক্য
! বৈশিষ্ট্য !! উর্ধ্বগামী কাউন্টার !! নিম্নগামী কাউন্টার
|-
| পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| টগলের সময় || <math>Q</math> এর উঠতি প্রান্তে || <math>\bar{Q}</math> এর উঠতি প্রান্তে (<math>Q</math> এর নামতি প্রান্তে)
|-
| গণনার দিক || ০ থেকে উপরে || সর্বোচ্চ থেকে নিচে
|-
| ২-বিটে গণনা ক্রম || <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০}</math> || <math>\text{১১} \to \text{১০} \to \text{০১} \to \text{০০} \to \text{১১}</math>
|}
==== ২-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
দুটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়, উভয়ের <math>T = \text{১}</math>। প্রথম ফ্লিপ-ফ্লপ (<math>FF_0</math>) মূল ঘড়ি থেকে চালিত হয়। দ্বিতীয় ফ্লিপ-ফ্লপ (<math>FF_1</math>) চালিত হয় <math>FF_0</math> এর <math>\bar{Q}_0</math> থেকে।
উর্ধ্বগামীতে ছিল: <math>CLK_1 = Q_0</math>
নিম্নগামীতে হলো: <math>CLK_1 = \bar{Q}_0</math>
একটাই পরিবর্তন, কিন্তু ফল সম্পূর্ণ উল্টো।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! কী ঘটছে
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || প্রাথমিক অবস্থা (সর্বোচ্চ)
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> টগল, <math>\bar{Q}_0</math> এর উঠতি প্রান্তে <math>Q_1</math> টগল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৩} \to \cdots</math>
===== টাইমিং চিত্র বর্ণনা =====
মূল ঘড়ি: নিয়মিত পর্যায়ক্রমিক সংকেত।
<math>Q_0</math>: মূল ঘড়ির নামতি প্রান্তে টগল করে (নামতি প্রান্ত ট্রিগার ধরলে)। কম্পাঙ্ক মূল ঘড়ির অর্ধেক।
<math>\bar{Q}_0</math>: সবসময় <math>Q_0</math> এর বিপরীত।
<math>Q_1</math>: <math>\bar{Q}_0</math> এর উঠতি প্রান্তে টগল করে, অর্থাৎ <math>Q_0</math> এর নামতি প্রান্তে। কম্পাঙ্ক মূল ঘড়ির এক-চতুর্থাংশ।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের টাইমিং বিশ্লেষণ
! সময় অক্ষে ঘটনা !! <math>Q_0</math> পরিবর্তন !! <math>\bar{Q}_0</math> পরিবর্তন !! <math>Q_1</math> পরিবর্তন
|-
| ক্লক ১ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{১} \to \text{০}</math> (টগল)
|-
| ক্লক ২ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|-
| ক্লক ৩ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{০} \to \text{১}</math> (টগল)
|-
| ক্লক ৪ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|}
==== ৩-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
তিনটি টি ফ্লিপ-ফ্লপ, সবার <math>T = \text{১}</math>।
সংযোগ বিধি:
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>\bar{Q}_0</math> থেকে চালিত
* <math>FF_2</math>: <math>\bar{Q}_1</math> থেকে চালিত
প্যাটার্নটা স্পষ্ট: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:95%;"
|+ ৩-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সর্বোচ্চ অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>Q_0</math> টগল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>Q_0</math> টগল
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || সব তিনটি টগল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৭ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সর্বনিম্ন অবস্থা
|-
| ৮ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৭} \to \text{৬} \to \text{৫} \to \text{৪} \to \text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৭} \to \cdots</math>
==== ৪-বিট নিম্নগামী রিপল কাউন্টার ====
চারটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়। সংযোগ বিধি একই: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট নিম্নগামী কাউন্টারের সম্পূর্ণ সত্যক সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| ৬ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| ৮ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| ৯ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| ১০ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| ১১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| ১২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ১৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ১৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|}
গণনার ক্রম: <math>\text{১৫} \to \text{১৪} \to \cdots \to \text{১} \to \text{০} \to \text{১৫} \to \cdots</math>
==== উর্ধ্বগামী ও নিম্নগামী কাউন্টারের তুলনামূলক সারণি ====
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী বনাম নিম্নগামী কাউন্টার
! বৈশিষ্ট্য !! উর্ধ্বগামী !! নিম্নগামী
|-
| ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| ২-বিট গণনা ক্রম || <math>\text{০,১,২,৩,০,...}</math> || <math>\text{৩,২,১,০,৩,...}</math>
|-
| ৩-বিট গণনা ক্রম || <math>\text{০} \to \text{৭} \to \text{০}</math> || <math>\text{৭} \to \text{০} \to \text{৭}</math>
|-
| প্রারম্ভিক অবস্থা (সাধারণত) || সব <math>\text{০}</math> || সব <math>\text{১}</math>
|-
| প্রয়োগ || ক্রমবর্ধমান গণনা || টাইমার, কাউন্টডাউন
|-
| হার্ডওয়্যার পার্থক্য || কেবল ঘড়ির উৎস আলাদা || কেবল ঘড়ির উৎস আলাদা
|}
=== উভয়মুখী কাউন্টার ===
==== উপমা: উপরে-নিচে চলা লিফট ====
একটি বহুতল ভবনের লিফট কল্পনা করো। একটি বোতাম চাপলে লিফট উপরে যায়, আরেকটি বোতাম চাপলে নিচে যায়। যখন ওপরের বোতাম চাপা থাকে তখন লিফট প্রতিটি তলায় উপরে ওঠে, যখন নিচের বোতাম চাপা থাকে তখন প্রতিটি তলায় নিচে নামে।
উভয়মুখী কাউন্টারও ঠিক এভাবে কাজ করে। একটি নির্বাচন সংকেত <math>M</math> ঠিক করে দেয় কাউন্টার কোন দিকে গণনা করবে।
==== নির্বাচন সংকেত <math>M</math> ====
* <math>M = \text{০}</math>: উর্ধ্বগামী (উপরের বোতাম চাপা)
* <math>M = \text{১}</math>: নিম্নগামী (নিচের বোতাম চাপা)
==== বুলিয়ান রাশি: পরবর্তী ঘড়ির উৎস ====
পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস নির্ভর করে <math>M</math> এর উপর:
:<math>CLK_{n+1} = (\bar{M} \cdot Q_n) + (M \cdot \bar{Q}_n)</math>
এই রাশিটি আসলে একটি মাল্টিপ্লেক্সার:
* <math>M = \text{০}</math> হলে: <math>CLK_{n+1} = Q_n</math> (উর্ধ্বগামী)
* <math>M = \text{১}</math> হলে: <math>CLK_{n+1} = \bar{Q}_n</math> (নিম্নগামী)
লক্ষ করো, এই রাশিটি এক্স-অর গেট দিয়েও লেখা যায়:
:<math>CLK_{n+1} = Q_n \oplus M</math>
কারণ যখন <math>M = \text{০}</math>, <math>Q_n \oplus \text{০} = Q_n</math>; এবং যখন <math>M = \text{১}</math>, <math>Q_n \oplus \text{১} = \bar{Q}_n</math>।
তাই প্রতিটি ফ্লিপ-ফ্লপের ঘড়ির সামনে একটি মাত্র এক্স-অর গেট রাখলেই উভয়মুখী কাউন্টার তৈরি হয়।
==== ২-বিট উভয়মুখী কাউন্টার ====
===== সার্কিটের গঠন =====
* দুটি টি ফ্লিপ-ফ্লপ, <math>T = \text{১}</math>
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>Q_0 \oplus M</math> থেকে চালিত
===== সত্যক সারণী (<math>M = \text{০}</math>, উর্ধ্বগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ উর্ধ্বগামী অবস্থায় (<math>M = \text{০}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
===== সত্যক সারণী (<math>M = \text{১}</math>, নিম্নগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ নিম্নগামী অবস্থায় (<math>M = \text{১}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|}
===== উদাহরণ: মাঝপথে দিক পরিবর্তন =====
ধরো কাউন্টার <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১) অবস্থায় আছে। এখন <math>M</math> পরিবর্তন করা হলো:
{| class="wikitable" style="text-align:center; width:90%;"
|+ মাঝপথে দিক পরিবর্তনের উদাহরণ
! ক্লক !! <math>M</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| — || — || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রারম্ভিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || উর্ধ্বগামী
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || উর্ধ্বগামী
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || নিম্নগামী (দিক বদল)
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || নিম্নগামী
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || নিম্নগামী
|}
==== ৪-বিট উভয়মুখী কাউন্টারের ধারণা ====
৪-বিট উভয়মুখী কাউন্টারে চারটি ফ্লিপ-ফ্লপ এবং তিনটি এক্স-অর গেট লাগে। প্রতিটি এক্স-অর গেট <math>Q_n</math> ও <math>M</math> এর এক্স-অর করে পরের ফ্লিপ-ফ্লপের ঘড়ি দেয়।
বাস্তবে বহুল ব্যবহৃত আইসি ৭৪১৯৩ হলো একটি ৪-বিট উর্ধ্ব/নিম্নগামী কাউন্টার। এতে আলাদা দুটো ইনপুট থাকে: একটি উর্ধ্বগামী ঘড়ি ও একটি নিম্নগামী ঘড়ি।
{| class="wikitable" style="width:90%; text-align:center;"
|+ ৪-বিট উভয়মুখী কাউন্টারের সারসংক্ষেপ
! <math>n</math>-বিটে !! মোট অবস্থা !! উর্ধ্বগামী পরিসর !! নিম্নগামী পরিসর
|-
| <math>\text{২}</math>-বিট || <math>\text{৪}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৩} \to \text{০}</math>
|-
| <math>\text{৩}</math>-বিট || <math>\text{৮}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৭} \to \text{০}</math>
|-
| <math>\text{৪}</math>-বিট || <math>\text{১৬}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৫} \to \text{০}</math>
|-
| <math>\text{n}</math>-বিট || <math>2^n</math> || <math>\text{০} \to 2^n-\text{১}</math> || <math>2^n-\text{১} \to \text{০}</math>
|}
=== মডুলো-<math>N</math> কাউন্টার ===
==== উপমা: ঘড়ির কাঁটা ১২ তে ফিরে আসে ====
দেওয়াল ঘড়ির দিকে তাকাও। মিনিটের কাঁটা ১২ থেকে শুরু হয়ে ১, ২, ৩... ১১ পার করে আবার ১২ তে ফিরে আসে। ১২ এর পরে ১৩ আসে না, সরাসরি ১ বা ১২ তে ফিরে যায়।
এটাই মডুলো-১২ কাউন্টার। এখানে ১২ হলো মডুলো সংখ্যা, যার মানে কাউন্টার ১২টি অবস্থায় ঘুরতে থাকে।
==== মডুলো মানে কী? ====
মডুলো-<math>N</math> কাউন্টার হলো এমন একটি কাউন্টার যা <math>0</math> থেকে <math>N-1</math> পর্যন্ত গণনা করে এবং তারপর আবার <math>0</math> তে ফিরে আসে। মোট <math>N</math>টি ভিন্ন অবস্থা থাকে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ মডুলো-<math>N</math> কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| গণনার পরিসর || <math>\text{০}</math> থেকে <math>N-\text{১}</math>
|-
| মোট অবস্থা || <math>N</math>টি
|-
| ঘুরে আসার পরে || আবার <math>\text{০}</math> থেকে শুরু
|-
| প্রয়োজনীয় ফ্লিপ-ফ্লপ || <math>\lceil \log_2 N \rceil</math>টি
|}
যেকোনো স্বাভাবিক সংখ্যার জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করা যায়, কিন্তু সবচেয়ে সহজ হলো যখন <math>N = 2^n</math>, অর্থাৎ <math>N = \text{২, ৪, ৮, ১৬, ...}</math>। অন্য যেকোনো <math>N</math> এর জন্য বাড়তি রিসেট সার্কিট দরকার।
==== রিসেট পদ্ধতি: ন্যান্ড গেট দিয়ে স্বয়ংক্রিয় রিসেট ====
মডুলো-<math>N</math> কাউন্টার তৈরির মূল কৌশল হলো: কাউন্টার যখনই <math>N</math>-এ পৌঁছায়, সঙ্গে সঙ্গে তাকে <math>\text{০}</math>তে ফিরিয়ে আনো।
এটা করা হয় এভাবে:
# কাউন্টারের আউটপুট দেখে <math>N</math> সংখ্যাটি চেনো
# সেই মুহূর্তে সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে <math>\text{০}</math> পাঠাও
# ফ্লিপ-ফ্লপগুলো তাৎক্ষণিক <math>\text{০}</math> হয়ে যায়
একটু মনে রাখো: অধিকাংশ টি বা ডি ফ্লিপ-ফ্লপে ক্লিয়ার পিন অ্যাক্টিভ-লো, মানে <math>\text{০}</math> দিলে রিসেট হয়।
<math>N</math> সংখ্যাটি চেনার জন্য ন্যান্ড গেট ব্যবহার করা হয়। <math>N</math>-এর বাইনারি প্রতিনিধিত্বে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> আউটপুটকে ন্যান্ড গেটে দেওয়া হয়।
উদাহরণ: মডুলো-৫ কাউন্টারে <math>N = \text{৫} = \text{১০১}</math> বাইনারি। তাই <math>Q_2</math> এবং <math>Q_0</math> (যেখানে বিট <math>\text{১}</math>) একটি ন্যান্ড গেটে দেওয়া হয়।
==== মডুলো-৫ কাউন্টার ====
===== ধারণা =====
৫টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪}</math>। ৪ এর পরে আবার ০। মাইক্রোওয়েভ ওভেনের কল্পনা করো যেটা ৫ ধাপে ঘোরে।
৩টি ফ্লিপ-ফ্লপ লাগবে (কারণ <math>2^2 = \text{৪} < \text{৫} \leq \text{৮} = 2^3</math>)।
===== রিসেট কখন হবে? =====
<math>N = \text{৫} = \text{১০১}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_0 = \text{১}</math> হলেই কাউন্টারে ৫ হয়েছে বুঝতে হবে। কারণ <math>Q_2 \cdot Q_0 = \text{১}</math> শুধুমাত্র তখনই হয় যখন কাউন্টার ৫ (অন্যান্য অবস্থায় হয় <math>Q_2</math> নয়তো <math>Q_0</math> শূন্য)।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_0}</math> (ন্যান্ড গেটের আউটপুট) সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে।
===== বিস্তারিত সার্কিট বিশ্লেষণ =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৫ কাউন্টারের অবস্থা বিশ্লেষণ
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! <math>Q_2 \cdot Q_0</math> !! রিসেট সংকেত !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৫* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> (সক্রিয়!) || তাৎক্ষণিক রিসেট!
|-
| ৫ (রিসেটের পর) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || আবার শুরু
|}
* অবস্থা ৫ একটি ক্ষণিক অবস্থা, কার্যত দেখা যায় না।
===== গণনার প্রকৃত ক্রম =====
<math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to (\text{৫ হওয়ার সাথে সাথে রিসেট}) \to \text{০} \to \text{১} \to \cdots</math>
==== মডুলো-৬ কাউন্টার ====
===== ধারণা =====
৬টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪, ৫}</math>। এর পরে আবার ০। ডাইস ছুড়লে ১ থেকে ৬ পায়, কিন্তু এই কাউন্টার ০ থেকে ৫ পর্যন্ত যায়।
৩টি ফ্লিপ-ফ্লপ লাগবে।
===== রিসেট কখন? =====
<math>N = \text{৬} = \text{১১০}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলেই ৬ হয়েছে বোঝা যাবে।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৬ কাউন্টারের অবস্থা
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট হবে কি? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ৬ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{০} \to \cdots</math>
==== মডুলো-১০ কাউন্টার (দশমিক কাউন্টার) ====
===== বিসিডি সংখ্যার সাথে সম্পর্ক =====
তোমার কাছের ডিজিটাল ঘড়িতে <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত সংখ্যা দেখা যায়। প্রতিটি দশমিক সংখ্যাকে ৪-বিটে লেখার পদ্ধতিকে বিসিডি বলা হয়। বিসিডিতে কেবল <math>\text{০০০০}</math> থেকে <math>\text{১০০১}</math> (<math>\text{০}</math> থেকে <math>\text{৯}</math>) ব্যবহার হয়। <math>\text{১০১০}</math> থেকে <math>\text{১১১১}</math> (<math>\text{১০}</math> থেকে <math>\text{১৫}</math>) অব্যবহৃত।
মডুলো-১০ কাউন্টার ঠিক এই কাজ করে: ০ থেকে ৯ পর্যন্ত গণনা করে তারপর ০ তে ফিরে আসে।
===== রিসেট কখন? =====
<math>N = \text{১০} = \text{১০১০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলে ১০ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_1}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-১০ কাউন্টারের অবস্থা সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না || স্বাভাবিক
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না || স্বাভাবিক
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না || স্বাভাবিক
|-
| ৯ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || না || স্বাভাবিক
|-
| ১০* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ১০ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \cdots \to \text{৮} \to \text{৯} \to \text{০} \to \cdots</math>
===== বিসিডি কাউন্টারের প্রয়োগ =====
দুটো মডুলো-১০ কাউন্টার একসাথে সংযুক্ত করলে <math>\text{০০}</math> থেকে <math>\text{৯৯}</math> পর্যন্ত গণনা করা যায়। তিনটি সংযুক্ত করলে <math>\text{০০০}</math> থেকে <math>\text{৯৯৯}</math> পর্যন্ত। ডিজিটাল ঘড়িতে মিনিট গণনায় এটাই ব্যবহার হয়।
==== মডুলো-১২ কাউন্টার ====
===== ঘড়িতে প্রয়োগ =====
দুপুর ১২টার পরে ঘড়ি ১ তে যায়, ১৩ তে নয়। এটা মডুলো-১২।
<math>N = \text{১২} = \text{১১০০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_2 = \text{১}</math> একসাথে হলে ১২ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_2}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মডুলো-১২ কাউন্টারের গণনা ক্রম
! গণনা !! ০ !! ১ !! ২ !! ৩ !! ৪ !! ৫ !! ৬ !! ৭ !! ৮ !! ৯ !! ১০ !! ১১ !! পুনরায় ০
|-
| বাইনারি || <math>\text{০০০০}</math> || <math>\text{০০০১}</math> || <math>\text{০০১০}</math> || <math>\text{০০১১}</math> || <math>\text{০১০০}</math> || <math>\text{০১০১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১১}</math> || <math>\text{১০০০}</math> || <math>\text{১০০১}</math> || <math>\text{১০১০}</math> || <math>\text{১০১১}</math> || রিসেট (<math>\text{১১০০}</math> হওয়ার সাথে সাথে)
|}
==== যেকোনো মডুলো-<math>N</math> কাউন্টার তৈরির সাধারণ পদ্ধতি ====
যেকোনো <math>N</math> এর জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করতে নিচের ধাপগুলো অনুসরণ করো:
ধাপ ১: <math>N</math> কে বাইনারিতে লেখো
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ সংখ্যা নির্ধারণ করো: <math>\lceil \log_2 N \rceil</math>
ধাপ ৩: <math>N</math> এর বাইনারিতে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> চিহ্নিত করো
ধাপ ৪: চিহ্নিত <math>Q</math>গুলোকে একটি ন্যান্ড গেটে সংযুক্ত করো
ধাপ ৫: ন্যান্ড গেটের আউটপুট সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে সংযুক্ত করো
ধাপ ৬: স্বাভাবিক উর্ধ্বগামী রিপল কাউন্টার হিসেবে বাকি সংযোগ দাও
{| class="wikitable" style="width:100%; text-align:center;"
|+ বিভিন্ন <math>N</math> এর জন্য মডুলো কাউন্টারের বিশ্লেষণ
! মডুলো <math>N</math> !! বাইনারি !! ফ্লিপ-ফ্লপ সংখ্যা !! রিসেট শর্ত !! প্রয়োগ
|-
| <math>\text{৩}</math> || <math>\text{০১১}</math> || <math>\text{২}</math> || <math>Q_1 \cdot Q_0 = \text{১}</math> || তিনভাগা ঘুরন্ত যন্ত্র
|-
| <math>\text{৫}</math> || <math>\text{১০১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_0 = \text{১}</math> || পেন্টাগন আলো
|-
| <math>\text{৬}</math> || <math>\text{১১০}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 = \text{১}</math> || ছয়ভাগা সিকোয়েন্সার
|-
| <math>\text{৭}</math> || <math>\text{১১১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math> || সাত দিনের চক্র
|-
| <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_1 = \text{১}</math> || দশমিক গণনা, বিসিডি
|-
| <math>\text{১২}</math> || <math>\text{১১০০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_2 = \text{১}</math> || ঘড়ির কাঁটা
|-
| <math>\text{১৬}</math> || <math>\text{১০০০০}</math> || <math>\text{৪}</math> || স্বাভাবিক উপচে পড়া || হেক্সাডেসিমেল
|-
| <math>\text{৬০}</math> || <math>\text{১১১১০০}</math> || <math>\text{৬}</math> || <math>Q_5 \cdot Q_4 \cdot Q_3 \cdot Q_2 = \text{১}</math> || সেকেন্ড, মিনিট গণনা
|-
| <math>\text{২৪}</math> || <math>\text{০১১০০০}</math> || <math>\text{৫}</math> || <math>Q_4 \cdot Q_3 = \text{১}</math> || ২৪ ঘণ্টার ঘড়ি
|}
=== বিস্তারিত টাইমিং বিশ্লেষণ ===
==== রিপল প্রভাব ও ক্ষণিক ভুল ====
এখানে একটা গুরুত্বপূর্ণ সমস্যা আছে যেটা অ্যাসিনক্রোনাস কাউন্টারের মূল দুর্বলতা।
উপমা: একটি সারিতে দশজন মানুষ দাঁড়িয়ে আছে। প্রথম জন হাত তোলে, তারপর দ্বিতীয় জন দেখে হাত তোলে, তারপর তৃতীয় জন দেখে হাত তোলে, এভাবে চলতে থাকে। শেষ জনের হাত উঠতে একটু সময় লাগে কারণ সংকেত একজন থেকে আরেকজনে ধীরে ধীরে যায়।
অ্যাসিনক্রোনাস কাউন্টারেও ঠিক এই সমস্যা। <math>FF_0</math> টগল করে, তারপর তার আউটপুট পরিবর্তন হলে <math>FF_1</math> টগল করে, তারপর <math>FF_2</math>, এভাবে চলে। প্রতিটি ফ্লিপ-ফ্লপের টগলে একটু সময় লাগে, এই সময়কে প্রচার বিলম্ব বলা হয়।
==== ৩-বিট কাউন্টারে ক্ষণিক ভুল ====
ধরো ৩-বিট উর্ধ্বগামী কাউন্টার ৭ (<math>\text{১১১}</math>) থেকে ০ (<math>\text{০০০}</math>) তে যাচ্ছে।
আদর্শ জগতে এটা তাৎক্ষণিক হওয়া উচিত: <math>\text{১১১} \to \text{০০০}</math>।
কিন্তু বাস্তবে যা হয়:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭ থেকে ০-তে যাওয়ার সময় ক্ষণিক ভুল অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| <math>t_0</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || ৮ম ক্লকের আগে
|-
| <math>t_0 + t_p</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>FF_0</math> টগল করেছে, ক্ষণিক ৬!
|-
| <math>t_0 + 2t_p</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>FF_1</math> টগল করেছে, ক্ষণিক ৪!
|-
| <math>t_0 + 3t_p</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>FF_2</math> টগল করেছে, সঠিক ০
|}
এখানে <math>t_p</math> হলো প্রতিটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব। মাঝের দুটো অবস্থা (<math>\text{৬}</math> ও <math>\text{৪}</math>) সঠিক নয়, এগুলো ক্ষণিক ভুল।
==== গ্লিচ ও তার প্রভাব ====
এই ক্ষণিক ভুল অবস্থাগুলোকে গ্লিচ বলা হয়।
{| class="wikitable" style="width:100%;"
|+ গ্লিচের প্রভাব ও সমাধান
! গ্লিচের ধরন !! কোথায় সমস্যা হয় !! সমাধান
|-
| কাউন্টারের আউটপুটে ভুল অবস্থা || ডিকোডার বা ডিসপ্লে ভুল সংখ্যা দেখায় || আউটপুট স্তরে রেজিস্টার ব্যবহার
|-
| মডুলো-<math>N</math> কাউন্টারে অনাকাঙ্ক্ষিত রিসেট || মাঝের ক্ষণিক অবস্থায় রিসেট হয়ে যেতে পারে || ন্যান্ড গেটের পরিবর্তে ক্লক-নিয়ন্ত্রিত রিসেট
|-
| বিস্তৃত কাউন্টারে বিলম্ব বৃদ্ধি || বেশি ফ্লিপ-ফ্লপ মানে বেশি বিলম্ব || সিনক্রোনাস কাউন্টার ব্যবহার
|}
মডুলো-<math>N</math> কাউন্টারে একটি বিশেষ সমস্যা আছে। যখন কাউন্টার <math>N</math>-এ পৌঁছায় এবং রিসেট হয়, তখন কিছু ক্ষণিক অবস্থা সৃষ্টি হতে পারে যেগুলো রিসেট শর্তের সাথে মিলে যায় এবং অনাকাঙ্ক্ষিতভাবে রিসেট ট্রিগার করে। তবে যেহেতু এই রিসেট অ্যাসিনক্রোনাস, সার্কিটটি সাধারণত স্বাভাবিকভাবে কাজ করে।
==== কতটি ফ্লিপ-ফ্লপের সর্বোচ্চ বিলম্ব ====
<math>n</math>টি ফ্লিপ-ফ্লপের রিপল কাউন্টারে সর্বোচ্চ বিলম্ব:
:<math>t_{সর্বোচ্চ} = n \times t_p</math>
যেখানে <math>t_p</math> হলো একটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব।
যদি <math>t_p = \text{১০}</math> ন্যানোসেকেন্ড হয়, তাহলে:
* ৪-বিট কাউন্টারে: <math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
* ৮-বিট কাউন্টারে: <math>\text{৮} \times \text{১০} = \text{৮০}</math> ন্যানোসেকেন্ড
* ১৬-বিট কাউন্টারে: <math>\text{১৬} \times \text{১০} = \text{১৬০}</math> ন্যানোসেকেন্ড
এই বিলম্বের কারণে ক্লকের কম্পাঙ্ক একটি সীমার বাইরে বাড়ানো যায় না।
== উদাহরণ ==
=== উদাহরণ ১: ২-বিট নিম্নগামী কাউন্টারে পরিবর্তন বিশ্লেষণ ===
একটি ২-বিট নিম্নগামী কাউন্টার প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math> থেকে শুরু করে। ক্লক ২-এর পরে অবস্থা কী হবে এবং তখন <math>\bar{Q}_0</math> কত?
ধাপ ১: প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক ৩)
ধাপ ২: ক্লক ১ আসে। <math>Q_0</math> টগল করে <math>\text{১} \to \text{০}</math>। এখন <math>\bar{Q}_0 = \text{১}</math>। এটি উঠতি প্রান্ত তৈরি করে <math>FF_1</math>-এর ঘড়িতে। তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
অপেক্ষা করো! এটা কি ঠিক? ৩ থেকে সরাসরি ১ হলো?
আবার ভাবো: নিম্নগামী কাউন্টারে প্রথম ক্লকে শুধু <math>Q_0</math> টগল করে, <math>Q_1</math> টগল করে না। কারণ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয়, <math>\bar{Q}_0</math> হয় <math>\text{০} \to \text{১}</math> (উঠতি প্রান্ত)। তাই <math>Q_1</math>-ও টগল করে।
সঠিক বিশ্লেষণ:
{| class="wikitable" style="text-align:center; width:85%;"
|+ ক্লক ১ বিশ্লেষণ
! ঘটনা !! <math>Q_0</math> !! <math>\bar{Q}_0</math> !! <math>Q_1</math>
|-
| ক্লক ১ আগে || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| <math>Q_0</math> টগল || <math>\text{০}</math> || <math>\text{১}</math> (উঠতি!) || টগল হবে
|-
| ক্লক ১ পরে || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক ২? নাকি ০?)
আবার যাচাই করি সত্যক সারণী থেকে: প্রাথমিক ৩ থেকে ক্লক ১ এর পর ২ হওয়ার কথা।
<math>Q_0 = \text{১} \to \text{০}</math>: শুধু <math>Q_0</math> টগল।
<math>\bar{Q}_0 = \text{০} \to \text{১}</math>: <math>FF_1</math>-এ উঠতি প্রান্ত, তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ফলে: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২) ✓
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math>, <math>\bar{Q}_0 = \text{১}</math>
ধাপ ৩: ক্লক ২ আসে। <math>Q_0</math> টগল: <math>\text{০} \to \text{১}</math>। <math>\bar{Q}_0</math>: <math>\text{১} \to \text{০}</math> (নামতি প্রান্ত)। <math>FF_1</math>-এ উঠতি প্রান্ত নেই, তাই <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>
অপেক্ষা করো, এটা ঠিক না! ২ থেকে ১ হওয়ার কথা।
বিশ্লেষণ: ক্লক ২ আসে, <math>Q_0 = \text{০} \to \text{১}</math>, <math>\bar{Q}_0 = \text{১} \to \text{০}</math> (নামতি প্রান্ত, উঠতি নয়!)। তাই <math>Q_1</math> টগল করে না।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>?
এখানে বিভ্রান্তি হচ্ছে। মূল ঘড়ির কোন প্রান্তে ফ্লিপ-ফ্লপ টগল করে সেটা নির্ভর করে ফ্লিপ-ফ্লপের ধরনের উপর। ধরে নিই নামতি প্রান্তে টগল করে।
ক্লক ১ (নামতি):
<math>Q_0</math>: <math>\text{১} \to \text{০}</math>
<math>\bar{Q}_0</math>: <math>\text{০} \to \text{১}</math> (উঠতি), তাই <math>Q_1</math> টগল: <math>\text{১} \to \text{০}</math>
অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>
না, আবারও মিলছে না! সত্যক সারণী থেকে দেখা যাচ্ছে সঠিক ক্রম হওয়া উচিত ৩, ২, ১, ০।
সঠিক ব্যাখ্যা: নামতি প্রান্ত ট্রিগার ফ্লিপ-ফ্লপে এবং <math>\bar{Q}</math> ব্যবহার করলে:
* <math>Q_0 = \text{১} \to \text{০}</math> (নামতি): তাই <math>\bar{Q}_0 = \text{০} \to \text{১}</math> (উঠতি)। <math>FF_1</math> উঠতি প্রান্তে টগল করে না (কারণ এটাও নামতি প্রান্ত ট্রিগার)। তাই <math>Q_1</math> পরিবর্তন হয় না।
তাহলে সত্যক সারণীর ক্রম ৩ → ২ → ১ → ০ হওয়ার জন্য:
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)
<math>Q_0</math> শুধু টগল, <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
<math>Q_0</math> আবার টগল, এবং যেহেতু এবার <math>Q_0: \text{০} \to \text{১}</math>, <math>\bar{Q}_0: \text{১} \to \text{০}</math> (নামতি), নামতি ট্রিগারে <math>Q_1</math> টগল।
উত্তর: ক্লক ২ এর পর <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)। <math>\bar{Q}_0 = \text{০}</math>।
=== উদাহরণ ২: মডুলো-৭ কাউন্টারের ডিজাইন ===
একটি মডুলো-৭ কাউন্টার ডিজাইন করো। কতটি ফ্লিপ-ফ্লপ লাগবে? রিসেট শর্ত কী?
ধাপ ১: <math>N = \text{৭}</math>। বাইনারিতে: <math>\text{৭} = \text{১১১}</math>।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 7 \rceil = 3</math>টি (কারণ <math>2^2 = 4 < 7 \leq 8 = 2^3</math>)।
ধাপ ৩: <math>\text{৭} = \text{১১১}</math>: <math>Q_2, Q_1, Q_0</math> তিনটিই <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1 \cdot Q_0}</math> (তিন-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৭ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || হ্যাঁ! তাৎক্ষণিক রিসেট
|-
| ৭ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{৬} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৩: উভয়মুখী কাউন্টারে এক্স-অর গেটের যাচাই ===
একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{০}</math> এবং <math>Q_0 = \text{১}</math>। পরের ফ্লিপ-ফ্লপের ঘড়ির মান কত?
রাশি: <math>CLK_1 = Q_0 \oplus M</math>
:<math>CLK_1 = \text{১} \oplus \text{০} = \text{১}</math>
এটা <math>Q_0 = \text{১}</math> এর সমান, অর্থাৎ উর্ধ্বগামী কাউন্টারের মতো আচরণ ✓
এখন <math>M = \text{১}</math> এবং <math>Q_0 = \text{১}</math>:
:<math>CLK_1 = \text{১} \oplus \text{১} = \text{০}</math>
এটা <math>\bar{Q}_0 = \text{০}</math> এর সমান, অর্থাৎ নিম্নগামী কাউন্টারের মতো আচরণ ✓
=== উদাহরণ ৪: মডুলো-৯ কাউন্টারের ডিজাইন ===
একটি মডুলো-৯ কাউন্টার ডিজাইন করো।
ধাপ ১: <math>N = \text{৯} = \text{১০০১}</math> বাইনারিতে।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 9 \rceil = 4</math>টি (কারণ <math>2^3 = 8 < 9 \leq 16 = 2^4</math>)।
ধাপ ৩: <math>\text{৯} = \text{১০০১}</math>: <math>Q_3</math> এবং <math>Q_0</math> হলো <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_3 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_0}</math> (দুই-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৯ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না
|-
| ৯* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || হ্যাঁ! রিসেট
|-
| ৯ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \cdots \to \text{৮} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৫: ৪-বিট নিম্নগামী কাউন্টারে একটি নির্দিষ্ট অবস্থা চেনা ===
একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১৫}</math> থেকে শুরু করে। ৭ম ক্লকের পর অবস্থা কী?
নিম্নগামী কাউন্টারে ক্রম: <math>\text{১৫, ১৪, ১৩, ১২, ১১, ১০, ৯, ...}</math>
৭ম ক্লকের পর: <math>\text{১৫} - \text{৭} = \text{৮}</math>
তাই অবস্থা হবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০০০}</math> (দশমিক ৮) ✓
=== উদাহরণ ৬: দুটো মডুলো-১০ কাউন্টার দিয়ে ০ থেকে ৯৯ গণনা ===
দুটো মডুলো-১০ কাউন্টার সংযুক্ত করে ০ থেকে ৯৯ পর্যন্ত গণনার পরিকল্পনা করো।
সংযোগ পদ্ধতি:
প্রথম কাউন্টার: একক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। মূল ঘড়ি থেকে চালিত।
দ্বিতীয় কাউন্টার: দশক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। প্রথম কাউন্টার যখন ৯ থেকে ০ তে ফিরে আসে, সেই মুহূর্তে দ্বিতীয় কাউন্টারকে একটি ক্লক দেয়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ দুই-অঙ্কের বিসিডি কাউন্টারের কিছু ক্রম
! ক্লক সংখ্যা !! দশক (<math>C_1</math>) !! একক (<math>C_0</math>) !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{০৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || <math>\text{১৯}</math>
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{২০}</math>
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯৯}</math>
|-
| <math>\text{১০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|}
== অনুশীলনী ==
# একটি ৩-বিট নিম্নগামী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{১০০}</math> অবস্থায় আছে। পরের দুটো ক্লকের পর অবস্থা কী হবে?
# উর্ধ্বগামী ও নিম্নগামী কাউন্টারে একমাত্র হার্ডওয়্যার পার্থক্য কী?
# একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{১}</math> এবং বর্তমান অবস্থা <math>Q_1 Q_0 = \text{১০}</math>। পরের ক্লকে অবস্থা কী হবে?
# মডুলো-৮ কাউন্টারে কতটি ফ্লিপ-ফ্লপ লাগবে এবং রিসেট সার্কিট কি লাগবে? কেন?
# মডুলো-৬ কাউন্টারের রিসেট শর্তটি লেখো এবং বলো কোন দুটি বিটের ন্যান্ড গেট ব্যবহার করতে হবে।
# একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১২}</math> থেকে শুরু করে। ৫ম ক্লকের পর অবস্থা কী হবে? বাইনারিতে লেখো।
# মডুলো-১৩ কাউন্টার ডিজাইন করো: কতটি ফ্লিপ-ফ্লপ এবং রিসেট শর্ত কী?
# রিপল কাউন্টারে গ্লিচ কী এবং কেন হয়? কীভাবে কমানো যায়?
# দুটো মডুলো-১০ কাউন্টার সংযুক্ত করলে সর্বোচ্চ গণনা কত হবে? এটা কোন যন্ত্রে ব্যবহার হয়?
# একটি উভয়মুখী কাউন্টারে <math>Q_0 \oplus M</math> রাশিটি ব্যবহার করা হয় কেন? <math>M = \text{০}</math> ও <math>M = \text{১}</math> এর জন্য আলাদা আলাদা ব্যাখ্যা দাও।
# <math>n</math>-বিট রিপল কাউন্টারে সর্বোচ্চ প্রচার বিলম্বের সূত্র লেখো। ১০-বিট কাউন্টারে যদি প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ১৫ ন্যানোসেকেন্ড হয়, সর্বোচ্চ বিলম্ব কত?
# মডুলো-১০ কাউন্টারে <math>Q_3</math> ও <math>Q_1</math> কেন রিসেট শর্তে ব্যবহার করা হয়? <math>Q_3 \cdot Q_0</math> ব্যবহার করলে কোন সমস্যা হবে?
# একটি ডিজিটাল ঘড়িতে সেকেন্ড গণনার জন্য কোন ধরনের মডুলো কাউন্টার ব্যবহার হয়? পুরো ব্যাখ্যা দাও।
# মডুলো-<math>N</math> কাউন্টারের রিসেট শর্তে কেন <math>N</math>-এর সব বিট ব্যবহার করা হয় না, শুধু <math>\text{১}</math>-বিটগুলো ব্যবহার করা হয়?
# একটি ৩-বিট উভয়মুখী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{০১১}</math> অবস্থায় আছে। প্রথমে দুই ক্লক <math>M = \text{০}</math> তারপর দুই ক্লক <math>M = \text{১}</math> দিলে চার ক্লক পরে অবস্থা কী হবে?
'''উত্তর:'''
# ক্লক ১ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১১}</math> (দশমিক ৩)। ক্লক ২ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১০}</math> (দশমিক ২)।
# উর্ধ্বগামীতে পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস আগেরটির <math>Q</math>। নিম্নগামীতে <math>\bar{Q}</math>। শুধু এই একটি পার্থক্য।
# <math>M = \text{১}</math> (নিম্নগামী), <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)। পরের ক্লকে: দশমিক <math>\text{২} - \text{১} = \text{১}</math>। অবস্থা: <math>Q_1 Q_0 = \text{০১}</math>।
# মডুলো-৮ = <math>2^3</math>। তাই ৩টি ফ্লিপ-ফ্লপ লাগবে এবং আলাদা রিসেট সার্কিট লাগবে না। কাউন্টার স্বাভাবিকভাবেই ০ থেকে ৭ পর্যন্ত গণনা করে ০ তে ফিরে আসে।
# মডুলো-৬ কাউন্টারের রিসেট শর্ত: <math>Q_2 \cdot Q_1 = \text{১}</math>। কারণ <math>\text{৬} = \text{১১০}</math>, বিট ২ ও বিট ১ হলো <math>\text{১}</math>।
# <math>\text{১২} - \text{৫} = \text{৭}</math>। বাইনারিতে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math>।
# মডুলো-১৩: <math>\text{১৩} = \text{১১০১}</math>। ফ্লিপ-ফ্লপ: ৪টি। রিসেট শর্ত: <math>Q_3 \cdot Q_2 \cdot Q_0 = \text{১}</math>। ন্যান্ড গেটে <math>Q_3, Q_2, Q_0</math> সংযুক্ত।
# রিপল কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপ আগেরটির আউটপুটে পরিবর্তন দেখে টগল করে, তাই পরিবর্তন একে একে ছড়ায়। এই সময়ে মাঝের ক্ষণিক ভুল অবস্থা দেখা দেয়, এগুলোকে গ্লিচ বলে। আউটপুটে রেজিস্টার বা সিনক্রোনাস কাউন্টার ব্যবহার করে কমানো যায়।
# সর্বোচ্চ গণনা: <math>\text{৯৯}</math>। মোট ১০০টি অবস্থা। ব্যবহার: ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনায়, স্কোরবোর্ডে।
# <math>M = \text{০}</math> হলে: <math>Q_0 \oplus \text{০} = Q_0</math>, উর্ধ্বগামীর মতো। <math>M = \text{১}</math> হলে: <math>Q_0 \oplus \text{১} = \bar{Q}_0</math>, নিম্নগামীর মতো। একটি মাত্র গেট দিয়ে উভয় দিক নিয়ন্ত্রণ সম্ভব হয়।
# সূত্র: <math>t_{সর্বোচ্চ} = n \times t_p</math>। ১০-বিট কাউন্টারে: <math>\text{১০} \times \text{১৫} = \text{১৫০}</math> ন্যানোসেকেন্ড।
# <math>\text{১০} = \text{১০১০}</math>: বিট ৩ ও বিট ১ হলো <math>\text{১}</math>, তাই <math>Q_3 \cdot Q_1</math>। <math>Q_3 \cdot Q_0</math> ব্যবহার করলে রিসেট হতো <math>\text{৯} = \text{১০০১}</math>-এ, যা ভুল।
# ডিজিটাল ঘড়িতে সেকেন্ড: মডুলো-৬০ কাউন্টার (০ থেকে ৫৯ পর্যন্ত)। এটিকে একটি মডুলো-১০ (একক স্থান ০-৯) এবং একটি মডুলো-৬ (দশক স্থান ০-৫) কাউন্টার দিয়ে তৈরি করা যায়।
# <math>N</math>-এর যে বিটগুলো <math>\text{০}</math>, সেই ফ্লিপ-ফ্লপগুলো ওই অবস্থায় যেকোনো মান হতে পারে এবং রিসেট শর্ত মেলে না। শুধু <math>\text{১}</math>-বিটগুলো যাচাই করলেই <math>N</math> সংখ্যাটি অনন্যভাবে চেনা যায়।
# ক্লক ১ (<math>M=\text{০}</math>): <math>\text{০১১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ২ (<math>M=\text{০}</math>): <math>\text{১০০} \to \text{১০১}</math> (দশমিক ৫); ক্লক ৩ (<math>M=\text{১}</math>): <math>\text{১০১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ৪ (<math>M=\text{১}</math>): <math>\text{১০০} \to \text{০১১}</math> (দশমিক ৩)। চার ক্লক পরে অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>।
'''অ্যাসিনক্রোনাস কাউন্টার''' (তৃতীয় ভাগ)
== ক্যাসকেড কাউন্টার, আইসি চিপ ও বাস্তব প্রয়োগ ==
আগের দুটো ভাগে আমরা শিখেছিলাম অ্যাসিনক্রোনাস কাউন্টারের মূল ধারণা, উর্ধ্বগামী, নিম্নগামী, উভয়মুখী এবং মডুলো কাউন্টার। এই শেষ ভাগে আমরা দেখব কীভাবে ছোট ছোট কাউন্টারকে একসাথে জুড়ে বড় কাউন্টার তৈরি করা যায়, কোন কোন আইসি চিপ বাজারে পাওয়া যায়, এবং বাস্তব জীবনে এই সার্কিটগুলো কোথায় কোথায় কাজ করছে।
== ক. ক্যাসকেড কাউন্টার ==
=== বড় ঘড়ির উপমা ===
ধরো তুমি একটা বড় ডিজিটাল ঘড়ি তৈরি করতে চাও যেটা ০ থেকে ৯৯৯ পর্যন্ত গুনতে পারবে। তোমার কাছে আছে শুধু ছোট ছোট ঘড়ি যেগুলো ০ থেকে ৯ পর্যন্ত গুনতে পারে।
তুমি কী করবে? তুমি তিনটা ছোট ঘড়ি পাশাপাশি রাখবে। ডানেরটা একক স্থান গোনে, মাঝেরটা দশক স্থান গোনে, বাঁয়েরটা শতক স্থান গোনে। যখন ডানেরটা ৯ থেকে ০-তে ফেরে, সেই মুহূর্তে মাঝেরটাকে একবার টিক দেয়। যখন মাঝেরটা ৯ থেকে ০-তে ফেরে, বাঁয়েরটাকে একবার টিক দেয়। এভাবে তিনটা মিলে ০ থেকে ৯৯৯ পর্যন্ত গোনে।
এটাই ক্যাসকেড কাউন্টারের মূল নীতি।
=== ক্যাসকেড মানে কী? ===
ক্যাসকেড মানে ধারাবাহিকভাবে সংযুক্ত। একটি কাউন্টারের সর্বোচ্চ বিটের আউটপুট পরের কাউন্টারের ক্লক ইনপুট হিসেবে ব্যবহৃত হয়।
যখন প্রথম কাউন্টার তার সর্বোচ্চ মান থেকে শূন্যে ফেরে, সর্বোচ্চ বিটে একটি উঠতি বা নামতি প্রান্ত তৈরি হয়। সেই প্রান্তটিই পরের কাউন্টারকে এক ধাপ এগিয়ে দেয়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেড সংযোগের নিয়ম
! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | ক্লক উৎস !! style="background:#3498DB; color:white;" | কখন পরেরটাকে টিক দেয় !! style="background:#3498DB; color:white;" | গণনার পরিসর
|-
| প্রথম || বাইরের ক্লক || নিজে ঘুরে এলে || <math>\text{০}</math> থেকে <math>N_1 - \text{১}</math>
|-
| দ্বিতীয় || প্রথমের MSB আউটপুট || প্রথম প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 - \text{১}</math>
|-
| তৃতীয় || দ্বিতীয়ের MSB আউটপুট || দ্বিতীয় প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 \times N_3 - \text{১}</math>
|}
=== দুটি ৪-বিট কাউন্টার দিয়ে ৮-বিট কাউন্টার ===
একটি ৪-বিট কাউন্টার ০ থেকে ১৫ পর্যন্ত গুনতে পারে, মানে মডুলো-১৬।
দুটি ৪-বিট কাউন্টার ক্যাসকেডে জোড়া দিলে:
সর্বোচ্চ গণনা = <math>N_1 \times N_2 = \text{১৬} \times \text{১৬} = \text{২৫৬}</math>
অর্থাৎ ০ থেকে ২৫৫ পর্যন্ত, মানে মডুলো-২৫৬ বা ৮-বিট কাউন্টার।
সংযোগ পদ্ধতি:
* প্রথম কাউন্টারের <math>Q_3</math> (সর্বোচ্চ বিট) সংযুক্ত হয় দ্বিতীয় কাউন্টারের ক্লক ইনপুটে।
* প্রথম কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো ৮-বিট ফলাফলের নিচের চারটি বিট।
* দ্বিতীয় কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো উপরের চারটি বিট।
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৮-বিট ক্যাসকেড কাউন্টারের গণনার নমুনা
! style="background:#8E44AD; color:white;" | দশমিক !! style="background:#E74C3C; color:white;" | দ্বিতীয় কাউন্টার (<math>Q_7 Q_6 Q_5 Q_4</math>) !! style="background:#27AE60; color:white;" | প্রথম কাউন্টার (<math>Q_3 Q_2 Q_1 Q_0</math>) !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শুরু
|-
| <math>\text{১৫}</math> || <math>\text{০০০০}</math> || <math>\text{১১১১}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১৬}</math> || <math>\text{০০০১}</math> || <math>\text{০০০০}</math> || প্রথম ঘুরল, দ্বিতীয় এক ধাপ এগোল
|-
| <math>\text{৩১}</math> || <math>\text{০০০১}</math> || <math>\text{১১১১}</math> || প্রথম আবার সর্বোচ্চে
|-
| <math>\text{৩২}</math> || <math>\text{০০১০}</math> || <math>\text{০০০০}</math> || প্রথম আবার ঘুরল
|-
| <math>\text{২৫৫}</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সর্বোচ্চ অবস্থা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ১: মডুলো-১০০ কাউন্টার ===
দুটি মডুলো-১০ কাউন্টার ক্যাসকেডে জুড়লে পাওয়া যায়:
<math>N = \text{১০} \times \text{১০} = \text{১০০}</math>
এটি ০ থেকে ৯৯ পর্যন্ত গুনতে পারে। ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনার জন্য এই সার্কিটই ব্যবহার হয়।
প্রথম কাউন্টার: একক স্থানের অঙ্ক (০ থেকে ৯)।
দ্বিতীয় কাউন্টার: দশক স্থানের অঙ্ক (০ থেকে ৯)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০ কাউন্টারের ধাপ
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | দ্বিতীয় কাউন্টার (দশক) !! style="background:#3498DB; color:white;" | প্রথম কাউন্টার (একক) !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরে দ্বিতীয়কে ঠেলল
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || দুটোই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ২: মডুলো-৬০ কাউন্টার ===
ঘড়িতে সেকেন্ড ০ থেকে ৫৯ পর্যন্ত গোনে, মানে মডুলো-৬০।
এটি তৈরি হয় একটি মডুলো-১০ এবং একটি মডুলো-৬ কাউন্টার ক্যাসকেডে জুড়ে:
<math>N = \text{১০} \times \text{৬} = \text{৬০}</math>
প্রথম কাউন্টার (মডুলো-১০): একক স্থান গোনে ০ থেকে ৯।
দ্বিতীয় কাউন্টার (মডুলো-৬): দশক স্থান গোনে ০ থেকে ৫।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৬০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | দশক অঙ্ক (মডুলো-৬) !! style="background:#3498DB; color:white;" | একক অঙ্ক (মডুলো-১০) !! style="background:#8E44AD; color:white;" | অর্থ
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || ৯ সেকেন্ড
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ১০ সেকেন্ড
|-
| <math>\text{৫৯}</math> || <math>\text{৫}</math> || <math>\text{৯}</math> || ৫৯ সেকেন্ড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১ মিনিট পূর্ণ, শুরুতে ফিরল
|}
মডুলো-৬ কাউন্টার কীভাবে তৈরি হয়? ৩-বিট বাইনারি কাউন্টারে রিসেট লাগিয়ে: যখন গণনা ৬ (<math>\text{১১০}</math>) হয়, সাথে সাথে রিসেট করো। তখন <math>Q_2</math> এবং <math>Q_1</math>-এর অ্যান্ড গেটের আউটপুট ক্লিয়ার পিনে দেওয়া হয়।
=== ক্যাসকেড উদাহরণ ৩: মডুলো-১২ ঘণ্টা কাউন্টার ===
ঘড়ির ঘণ্টা ১ থেকে ১২ পর্যন্ত গোনে। এটা একটু বিশেষ কারণ ০ নেই, শুরু হয় ১ থেকে।
পদ্ধতি: একটি মডুলো-১৩ কাউন্টার তৈরি করো যেটা ০-এ না থেমে ১-এ থাকে।
বিকল্পভাবে: একটি মডুলো-১২ কাউন্টার (০ থেকে ১১) তৈরি করে ডিসপ্লেতে ১ যোগ করে দেখানো হয়।
একটি মডুলো-২ এবং একটি মডুলো-৬ ক্যাসকেডে:
<math>N = \text{২} \times \text{৬} = \text{১২}</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১২ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | গণনা !! style="background:#27AE60; color:white;" | মডুলো-৬ অংশ !! style="background:#3498DB; color:white;" | মডুলো-২ অংশ !! style="background:#8E44AD; color:white;" | প্রদর্শিত ঘণ্টা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ১
|-
| <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ৬
|-
| <math>\text{১১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || ১১
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২ (আবার)
|}
=== ক্যাসকেডে বিলম্ব সমস্যা ===
অ্যাসিনক্রোনাস ক্যাসকেড কাউন্টারে একটি গুরুতর সমস্যা আছে: প্রতিটি ফ্লিপ-ফ্লপের মধ্য দিয়ে সংকেত যেতে কিছুটা সময় লাগে, যাকে বলা হয় প্রোপাগেশন বিলম্ব।
যখন কাউন্টারগুলো ক্যাসকেডে থাকে, এই বিলম্ব জমা হতে থাকে।
ধরো প্রতিটি ফ্লিপ-ফ্লপে ১০ ন্যানোসেকেন্ড বিলম্ব। একটি ৪-বিট কাউন্টারে সর্বোচ্চ বিলম্ব হবে:
<math>\text{৪} \times \text{১০} = \text{৪০} \text{ ন্যানোসেকেন্ড}</math>
দুটো ৪-বিট কাউন্টার ক্যাসকেডে থাকলে:
<math>\text{৮} \times \text{১০} = \text{৮০} \text{ ন্যানোসেকেন্ড}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেডে বিলম্ব বিশ্লেষণ
! style="background:#3498DB; color:white;" | কাউন্টারের সংখ্যা !! style="background:#3498DB; color:white;" | মোট বিট !! style="background:#3498DB; color:white;" | সর্বোচ্চ বিলম্ব (১০ ns/ফ্লিপ-ফ্লপ) !! style="background:#3498DB; color:white;" | সর্বোচ্চ ক্লক গতি
|-
| <math>\text{১}</math> টি ৪-বিট || <math>\text{৪}</math> || <math>\text{৪০}</math> ns || <math>\text{২৫}</math> MHz
|-
| <math>\text{২}</math> টি ৪-বিট || <math>\text{৮}</math> || <math>\text{৮০}</math> ns || <math>\text{১২.৫}</math> MHz
|-
| <math>\text{৩}</math> টি ৪-বিট || <math>\text{১২}</math> || <math>\text{১২০}</math> ns || <math>\text{৮.৩}</math> MHz
|-
| <math>\text{৪}</math> টি ৪-বিট || <math>\text{১৬}</math> || <math>\text{১৬০}</math> ns || <math>\text{৬.২}</math> MHz
|}
এই কারণেই বেশি বিটের দ্রুত কাউন্টারের জন্য সমকালীন কাউন্টার ব্যবহার করা হয়।
বিলম্বের প্রভাব: কাউন্টার পরিবর্তনের সময় ক্ষণিকের জন্য ভুল অবস্থায় থাকে। যেমন ০১১১ থেকে ১০০০-এ যাওয়ার সময় মাঝপথে ০১১০, ০১০০, ০০০০ ইত্যাদি ভুল অবস্থা দেখা দিতে পারে। একে বলে গ্লিচ বা হ্যাজার্ড।
== খ. সুপরিচিত আইসি চিপ পরিচিতি ==
=== আইসি চিপ কেন? ===
প্রতিটা কাউন্টার নিজে হাতে ফ্লিপ-ফ্লপ জুড়ে তৈরি করা কষ্টকর। তাই কারখানায় আগে থেকেই একটি ছোট চিপে পুরো কাউন্টার সার্কিট বানিয়ে রাখা হয়। এই চিপগুলোকে বলা হয় ইন্টিগ্রেটেড সার্কিট বা আইসি।
৭৪ সিরিজের টিটিএল আইসি চিপ ১৯৬০-এর দশক থেকে ব্যবহৃত হচ্ছে এবং আজও শিক্ষা ও প্রোটোটাইপ তৈরিতে অপরিহার্য।
=== ৭৪৯০ চিপ: দশমিক কাউন্টার ===
৭৪৯০ হলো একটি বহুল ব্যবহৃত আইসি চিপ যেটাকে বলা হয় "দশমিক কাউন্টার"। এটি আসলে দুটো আলাদা কাউন্টার একই প্যাকেজে:
একটি মডুলো-২ কাউন্টার (একটিমাত্র ফ্লিপ-ফ্লপ, ১টি বিট)।
একটি মডুলো-৫ কাউন্টার (তিনটি ফ্লিপ-ফ্লপ, ৩টি বিট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || <math>V_{CC}</math> || সরবরাহ ভোল্টেজ (+৫ ভোল্ট)
|-
| ৭ || GND || ভূমি সংযোগ (০ ভোল্ট)
|-
| ১৪ (A) || CKA || মডুলো-২ অংশের ক্লক ইনপুট
|-
| ১ (B) || CKB || মডুলো-৫ অংশের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || মডুলো-২ এর আউটপুট (বিট ০)
|-
| ৯ || <math>Q_B</math> || মডুলো-৫ এর আউটপুট (বিট ১)
|-
| ৮ || <math>Q_C</math> || মডুলো-৫ এর আউটপুট (বিট ২)
|-
| ১১ || <math>Q_D</math> || মডুলো-৫ এর আউটপুট (বিট ৩)
|-
| ২, ৩ || R0(1), R0(2) || রিসেট-টু-জিরো পিন (উভয়ে ১ হলে রিসেট)
|-
| ৬, ৭ || R9(1), R9(2) || রিসেট-টু-নাইন পিন (উভয়ে ১ হলে ৯-এ যায়)
|}
==== ৭৪৯০ দিয়ে বিসিডি মোড (মডুলো-১০) ====
বিসিডি মোডে চিপটি ০ থেকে ৯ পর্যন্ত গোনে।
সংযোগ: <math>Q_A</math>-কে CKB-তে সংযুক্ত করো। বাইরের ক্লক CKA-তে দাও।
এতে মডুলো-২ এবং মডুলো-৫ ক্যাসকেডে কাজ করে:
<math>N = \text{২} \times \text{৫} = \text{১০}</math>
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ বিসিডি মোডের সত্যক সারণী
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক মান !! style="background:#8E44AD; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || দুই
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || তিন
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || চার
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || পাঁচ
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || ছয়
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সাত
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || আট
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || নয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
==== ৭৪৯০ দিয়ে দশমিক মোড ====
একই চিপ ভিন্নভাবে সংযুক্ত করে দ্বিগুণকারী হিসেবেও ব্যবহার করা যায়: CKB-তে বাইরের ক্লক দাও, <math>Q_D</math>-কে CKA-তে সংযুক্ত করো। এতে মডুলো-৫ আগে গোনে, তারপর মডুলো-২।
==== ৭৪৯০ দিয়ে রিসেট-টু-নাইন ====
R9(1) এবং R9(2) উভয়ে ১ করলে কাউন্টার সাথে সাথে ১০০১ (দশমিক ৯) অবস্থায় চলে যায়। এটি ঘড়ির সেটিং বা পরীক্ষার কাজে ব্যবহৃত হয়।
=== ৭৪৯৩ চিপ: ৪-বিট বাইনারি কাউন্টার ===
৭৪৯৩ হলো একটি ৪-বিট বাইনারি রিপল কাউন্টার। এটি ৪টি জেকে ফ্লিপ-ফ্লপ দিয়ে তৈরি। মডুলো-১৬ পর্যন্ত গুনতে পারে এবং রিসেট সংযোগ বদলে যেকোনো মডুলো তৈরি করা যায়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || CKA || প্রথম ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১ || CKB || বাকি তিনটি ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || বিট ০ আউটপুট
|-
| ৯ || <math>Q_B</math> || বিট ১ আউটপুট
|-
| ৮ || <math>Q_C</math> || বিট ২ আউটপুট
|-
| ১১ || <math>Q_D</math> || বিট ৩ আউটপুট
|-
| ২, ৩ || R0(1), R0(2) || রিসেট পিন (উভয়ে ১ হলে শূন্যে ফেরে)
|}
==== ৭৪৯৩ দিয়ে মডুলো-১৬ কাউন্টার ====
<math>Q_A</math>-কে CKB-তে সংযুক্ত করো, R0(1) এবং R0(2) কে <math>\text{০}</math>-এ রাখো।
ফলাফল: ০ থেকে ১৫ পর্যন্ত পূর্ণ বাইনারি গণনা।
==== ৭৪৯৩ দিয়ে মডুলো-১২ কাউন্টার ====
১২ দশমিকে = ১১০০ বাইনারি। তাই <math>Q_D</math> এবং <math>Q_C</math> উভয়ে ১ হলেই রিসেট করতে হবে।
সংযোগ: R0(1)-এ <math>Q_D</math>, R0(2)-এ <math>Q_C</math> দাও।
গণনা ১২ (<math>\text{১১০০}</math>) হওয়ামাত্র রিসেট ঘটে, ফলে সার্কিট ০ থেকে ১১ পর্যন্ত গোনে।
==== ৭৪৯৩ দিয়ে বিভিন্ন মডুলো কাউন্টার ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ দিয়ে তৈরি বিভিন্ন মডুলো কাউন্টার
! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | রিসেট শর্ত !! style="background:#3498DB; color:white;" | R0(1) সংযোগ !! style="background:#3498DB; color:white;" | R0(2) সংযোগ !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| ২ || <math>\text{০০১০}</math> || <math>Q_B</math> || <math>Q_B</math> || ০-১ গোনে
|-
| ৩ || <math>\text{০০১১}</math> || <math>Q_B</math> || <math>Q_A</math> || ০-২ গোনে
|-
| ৫ || <math>\text{০১০১}</math> || <math>Q_C</math> || <math>Q_A</math> || ০-৪ গোনে
|-
| ৬ || <math>\text{০১১০}</math> || <math>Q_C</math> || <math>Q_B</math> || ০-৫ গোনে
|-
| ৯ || <math>\text{১০০১}</math> || <math>Q_D</math> || <math>Q_A</math> || ০-৮ গোনে
|-
| ১০ || <math>\text{১০১০}</math> || <math>Q_D</math> || <math>Q_B</math> || ০-৯ গোনে
|-
| ১২ || <math>\text{১১০০}</math> || <math>Q_D</math> || <math>Q_C</math> || ০-১১ গোনে
|}
=== আইসি চিপ ব্যবহারের সুবিধা ===
{| class="wikitable" style="text-align:left; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | আইসি চিপ ব্যবহারের কারণ
! style="background:#27AE60; color:white; width:30%;" | সুবিধা !! style="background:#27AE60; color:white; width:70%;" | বিস্তারিত
|-
| সময় সাশ্রয় || নিজে ফ্লিপ-ফ্লপ জুড়তে ঘণ্টার পর ঘণ্টা লাগে, চিপে সব আগেই করা
|-
| নির্ভরযোগ্যতা || কারখানায় পরীক্ষিত এবং গ্যারান্টিযুক্ত কার্যক্ষমতা
|-
| ছোট আকার || একটি চিপে চারটি ফ্লিপ-ফ্লপ, পরিচিত DIP প্যাকেজে মাত্র ১৪টি পিন
|-
| কম খরচ || গণউৎপাদনের ফলে প্রতিটি চিপের দাম অত্যন্ত কম
|-
| সহজ সংযোগ || ডেটাশিট দেখে সরাসরি ব্রেডবোর্ডে সংযুক্ত করা যায়
|-
| মানকীকরণ || বিশ্বের যেকোনো প্রস্তুতকারকের ৭৪৯০ একই কাজ করে
|}
== গ. ব্যাপক বাস্তব প্রয়োগ ==
=== ডিজিটাল ঘড়ি তৈরি ===
ডিজিটাল ঘড়ি হলো অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে পরিচিত প্রয়োগ। একটা সম্পূর্ণ ডিজিটাল ঘড়ির সার্কিট বোঝা মানে পুরো অধ্যায়টাই বোঝা।
==== ঘড়ির মূল ব্লক চিত্র ====
একটি ডিজিটাল ঘড়িতে নিচের ব্লকগুলো থাকে, বাম থেকে ডানে সংকেত প্রবাহিত হয়:
<code>
স্ফটিক দোলক (৩২৭৬৮ Hz)
|
v
কম্পাঙ্ক বিভাজক (÷ ৩২৭৬৮)
|
v
১ Hz সংকেত (প্রতি সেকেন্ডে ১ স্পন্দন)
|
v
মডুলো-১০ কাউন্টার (একক সেকেন্ড: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক সেকেন্ড: ০-৫)
|
v
মডুলো-১০ কাউন্টার (একক মিনিট: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক মিনিট: ০-৫)
|
v
মডুলো-১২ কাউন্টার (ঘণ্টা: ১-১২ বা ০-২৩)
|
v
বিসিডি-থেকে-সাত-খণ্ড ডিকোডার
|
v
সাত-খণ্ড প্রদর্শক (সংখ্যা দেখায়)
</code>
==== প্রতিটি ব্লকের মডুলো ব্যাখ্যা ====
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ডিজিটাল ঘড়ির প্রতিটি ব্লক
! style="background:#3498DB; color:white;" | ব্লক !! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ !! style="background:#3498DB; color:white;" | রিসেট শর্ত
|-
| একক সেকেন্ড || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের সেকেন্ড || গণনা = ১০
|-
| দশক সেকেন্ড || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের সেকেন্ড || গণনা = ৬
|-
| একক মিনিট || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের মিনিট || গণনা = ১০
|-
| দশক মিনিট || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের মিনিট || গণনা = ৬
|-
| ঘণ্টা (১২ঘণ্টা) || মডুলো-১২ || <math>\text{১}</math> থেকে <math>\text{১২}</math> || ১২ঘণ্টার সময় || গণনা = ১২
|-
| ঘণ্টা (২৪ঘণ্টা) || মডুলো-২৪ || <math>\text{০}</math> থেকে <math>\text{২৩}</math> || ২৪ঘণ্টার সময় || গণনা = ২৪
|}
==== ঘড়ির মোট চক্র গণনা ====
১২ঘণ্টার ঘড়িতে একটি সম্পূর্ণ চক্রে মোট সেকেন্ড:
<math>N = \text{৬০} \times \text{৬০} \times \text{১২} = \text{৪৩২০০} \text{ সেকেন্ড}</math>
২৪ঘণ্টার ঘড়িতে:
<math>N = \text{৬০} \times \text{৬০} \times \text{২৪} = \text{৮৬৪০০} \text{ সেকেন্ড}</math>
==== স্ফটিক দোলক কেন? ====
কেন সাধারণ দোলক ব্যবহার না করে স্ফটিক (কোয়ার্টজ) দোলক ব্যবহার হয়? কারণ স্ফটিক দোলকের কম্পাঙ্ক অত্যন্ত স্থির। তাপমাত্রা বা বিদ্যুৎ সরবরাহের পরিবর্তনে এর কম্পাঙ্ক প্রায় বদলায় না। এটি ঘড়ির নির্ভুলতার মূল রহস্য।
ঘড়িতে সাধারণত ৩২৭৬৮ Hz স্ফটিক ব্যবহার হয়। এই সংখ্যাটা <math>\text{২}^{15}</math>, তাই ১৫টি দ্বিভাজন করলে সরাসরি ১ Hz পাওয়া যায়।
=== কম্পাঙ্ক বিভাজক: রেডিও ও টেলিযোগাযোগ ===
রেডিও সম্প্রচারে একটি নির্দিষ্ট কম্পাঙ্কে সংকেত পাঠাতে হয়। কিন্তু স্ফটিক দোলক সব কম্পাঙ্কে পাওয়া যায় না। তাই একটি বেশি কম্পাঙ্কের দোলক থেকে বিভাজন করে নির্দিষ্ট কম্পাঙ্ক তৈরি করা হয়।
উদাহরণ: একটি ১০ MHz স্ফটিক থেকে ১০০ kHz তৈরি করতে মডুলো-১০০ বিভাজক লাগবে।
<math>f_{out} = \frac{f_{in}}{N} = \frac{\text{১০,০০০,০০০}}{\text{১০০}} = \text{১০০,০০০} \text{ Hz} = \text{১০০} \text{ kHz}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | কম্পাঙ্ক বিভাজকের উদাহরণ
! style="background:#3498DB; color:white;" | ইনপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | বিভাজন অনুপাত (N) !! style="background:#3498DB; color:white;" | আউটপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | প্রয়োগ
|-
| ৩২৭৬৮ Hz || ৩২৭৬৮ || ১ Hz || ঘড়ির সেকেন্ড স্পন্দন
|-
| ১ MHz || ১০০০ || ১ kHz || শ্রবণযোগ্য শব্দ সংকেত
|-
| ১০ MHz || ১০০ || ১০০ kHz || এএম রেডিও বাহক
|-
| ১০০ MHz || ১০ || ১০ MHz || এফএম রেডিও সহায়ক
|-
| ১ GHz || ১০০০ || ১ MHz || মোবাইল যোগাযোগ
|}
=== ঘটনা গণনাকারী: কারখানার উৎপাদন গণনা ===
একটি কারখানায় উৎপাদন লাইনে প্রতিদিন কতটা পণ্য তৈরি হলো তা গণনা করা দরকার। প্রতিটা পণ্য যখন সেন্সরের সামনে দিয়ে যায়, সেন্সর একটা বৈদ্যুতিক স্পন্দন তৈরি করে। এই স্পন্দনগুলো একটা কাউন্টারে গণনা হয়।
প্রতিদিন সর্বোচ্চ ৯৯৯৯ টা পণ্য গণনার জন্য:
চারটি মডুলো-১০ কাউন্টার ক্যাসকেডে:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ০০০০ থেকে ৯৯৯৯ পর্যন্ত গুনতে পারে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | উৎপাদন গণনা ব্যবস্থার উদাহরণ
! style="background:#3498DB; color:white;" | অঙ্ক !! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | গণনা পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ
|-
| একক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || শেষ এক অঙ্ক
|-
| দশক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || দ্বিতীয় অঙ্ক
|-
| শতক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || তৃতীয় অঙ্ক
|-
| হাজার || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || প্রথম অঙ্ক
|}
পরিচিত উদাহরণ: পেট্রোল পাম্পে কতটুকু তেল দেওয়া হলো তা গণনার কাউন্টার, বাসের টিকিট মেশিনে যাত্রী গণনা, ওষুধ কারখানায় বড়ি গণনা।
=== স্বয়ংক্রিয় ট্র্যাফিক সংকেত নিয়ন্ত্রণ ===
ব্যস্ত রাস্তার সংকেত বাতি নির্দিষ্ট সময় পর পর পরিবর্তিত হয়। এটি একটি কাউন্টার দিয়ে নিয়ন্ত্রিত হয়।
ধরো একটি সংকেত চক্র:
* সবুজ: ৩০ সেকেন্ড
* হলুদ: ৫ সেকেন্ড
* লাল: ৩৫ সেকেন্ড
* মোট চক্র: ৭০ সেকেন্ড
একটি মডুলো-৭০ কাউন্টার তৈরি করো:
* গণনা ০ থেকে ২৯: সবুজ বাতি জ্বলে
* গণনা ৩০ থেকে ৩৪: হলুদ বাতি জ্বলে
* গণনা ৩৫ থেকে ৬৯: লাল বাতি জ্বলে
* গণনা ৭০: রিসেট, আবার শুরু
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত কাউন্টারের অবস্থা
! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | সময় !! style="background:#3498DB; color:white;" | সক্রিয় বাতি !! style="background:#3498DB; color:white;" | ডিকোডার আউটপুট
|-
| <math>\text{০}</math> থেকে <math>\text{২৯}</math> || ৩০ সেকেন্ড || সবুজ || <math>Q < \text{৩০}</math> হলে সবুজ চালু
|-
| <math>\text{৩০}</math> থেকে <math>\text{৩৪}</math> || ৫ সেকেন্ড || হলুদ || <math>\text{৩০} \leq Q < \text{৩৫}</math>
|-
| <math>\text{৩৫}</math> থেকে <math>\text{৬৯}</math> || ৩৫ সেকেন্ড || লাল || <math>Q \geq \text{৩৫}</math>
|-
| <math>\text{৭০}</math> || মুহূর্তিক || রিসেট || কাউন্টার শূন্যে ফেরে
|}
=== ডিজিটাল স্টপওয়াচ সার্কিট ===
একটি স্টপওয়াচ ০.০০ থেকে ৯৯.৯৯ সেকেন্ড পর্যন্ত গোনে।
প্রয়োজনীয় কাউন্টার ব্লক:
* প্রথম দশমিক অঙ্ক (১/১০০ সেকেন্ড): মডুলো-১০
* দ্বিতীয় দশমিক অঙ্ক (১/১০ সেকেন্ড): মডুলো-১০
* একক সেকেন্ড: মডুলো-১০
* দশক সেকেন্ড: মডুলো-১০
ইনপুট ক্লক: ১০০ Hz (প্রতি সেকেন্ডে ১০০ স্পন্দন)।
সর্বোচ্চ গণনা:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ১০,০০০ ÷ ১০০ = ১০০ সেকেন্ড পর্যন্ত গুনতে পারে।
স্টার্ট/স্টপ বোতাম: ক্লক গেটিং ব্যবহার হয়। একটি অ্যান্ড গেটের একটা ইনপুটে ক্লক এবং অন্যটায় স্টার্ট/স্টপ বোতামের সংকেত দেওয়া হয়।
== ঘ. অ্যাসিনক্রোনাস বনাম সমকালীন কাউন্টার ==
=== সমকালীন কাউন্টার কী? ===
যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক সংকেত একই সময়ে পায়, তাকে সমকালীন বা সিনক্রোনাস কাউন্টার বলে।
অ্যাসিনক্রোনাসে: ক্লক শুধু প্রথম ফ্লিপ-ফ্লপে যায়, বাকিরা আগেরটার আউটপুট থেকে ক্লক পায়।
সমকালীনে: ক্লক সরাসরি সব ফ্লিপ-ফ্লপে যায়।
=== বিস্তারিত তুলনামূলক সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের বিস্তারিত তুলনা
! style="background:#3498DB; color:white; width:25%;" | বৈশিষ্ট্য !! style="background:#E74C3C; color:white; width:37%;" | অ্যাসিনক্রোনাস !! style="background:#27AE60; color:white; width:37%;" | সমকালীন
|-
| ক্লক সংযোগ || প্রতিটি ফ্লিপ-ফ্লপ আগেরটার আউটপুট থেকে ক্লক পায় || সব ফ্লিপ-ফ্লপে একই ক্লক সরাসরি যায়
|-
| বিলম্ব || বিট সংখ্যার সাথে বাড়ে (<math>n \times t_{pd}</math>) || একটি ফ্লিপ-ফ্লপের বিলম্বই সর্বোচ্চ (<math>t_{pd}</math>)
|-
| গতি || ধীর, বেশি বিটে বেশি ধীর || দ্রুত, বিট সংখ্যা নির্বিশেষে
|-
| গ্লিচ || আছে, পরিবর্তনের সময় ভুল অবস্থা || নেই, সব একসাথে পরিবর্তিত হয়
|-
| সার্কিট জটিলতা || সহজ, কম গেট || জটিল, বেশি গেট দরকার
|-
| ক্লক সরবরাহ || সহজ, একটি তার থেকে || জটিল, সব ফ্লিপ-ফ্লপে বিতরণ
|-
| বিদ্যুৎ খরচ || তুলনামূলক কম || বেশি (সব একসাথে পরিবর্তন)
|-
| ডিজাইন জটিলতা || সহজ || কঠিন
|-
| আইসি উদাহরণ || ৭৪৯০, ৭৪৯৩ || ৭৪১৬৩, ৭৪১৬১
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{n \cdot t_{pd}}</math> || <math>f_{max} = \frac{\text{১}}{t_{pd} + t_{setup}}</math>
|-
| প্রধান ব্যবহার || ঘড়ি, বিভাজক, কম গতির গণনা || প্রসেসর, দ্রুত ডিজিটাল সার্কিট
|}
=== কোনটি কোথায় ব্যবহার করবে? ===
অ্যাসিনক্রোনাস কাউন্টার বেছে নাও যখন:
* সার্কিট সহজ রাখতে চাও এবং গতি সমস্যা নয়।
* ক্লক গতি কম (কয়েক মেগাহার্টজের নিচে)।
* ঘড়ি, ডিবাউন্স সার্কিট, কম্পাঙ্ক বিভাজক তৈরি করছ।
* ব্রেডবোর্ডে শিক্ষামূলক প্রকল্পে কাজ করছ।
* বিদ্যুৎ সাশ্রয় গুরুত্বপূর্ণ।
সমকালীন কাউন্টার বেছে নাও যখন:
* ক্লক গতি বেশি দরকার (কয়েক মেগাহার্টজের উপরে)।
* গ্লিচমুক্ত আউটপুট দরকার।
* মাইক্রোপ্রসেসর, ডিজিটাল সংকেত প্রক্রিয়াকরণ সার্কিট তৈরি করছ।
* আউটপুট সরাসরি সংবেদনশীল লজিকে যাচ্ছে।
=== অ্যাসিনক্রোনাসের সীমাবদ্ধতা ও সমাধান ===
{| class="wikitable" style="text-align:left; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা ও সমাধান
! style="background:#E74C3C; color:white; width:30%;" | সীমাবদ্ধতা !! style="background:#E74C3C; color:white; width:35%;" | কারণ !! style="background:#27AE60; color:white; width:35%;" | সমাধান
|-
| জমানো বিলম্ব || প্রতিটি ফ্লিপ-ফ্লপ বিলম্ব যোগ করে || সমকালীন কাউন্টার ব্যবহার করো
|-
| গ্লিচ || পরিবর্তনের মুহূর্তে ভুল অবস্থা || আউটপুটে রেজিস্টার বা ডি ফ্লিপ-ফ্লপ যোগ করো
|-
| সীমিত ক্লক গতি || বিলম্ব বাড়লে গতি কমে || বেশি গতিতে সমকালীন ব্যবহার করো
|-
| ক্ষণিক ত্রুটি || গেটিং এর সময় ভুল ডিকোড || স্ট্রোব সংকেত ব্যবহার করো
|-
| বিট সংখ্যা বাড়লে ধীর || প্রতিটি বিটে বিলম্ব যোগ হয় || ক্যারি-লুকঅ্যাহেড পদ্ধতি ব্যবহার করো
|}
== ঙ. সমগ্র অধ্যায়ের সারসংক্ষেপ ==
=== গুরুত্বপূর্ণ সূত্র ও নিয়মের তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের গুরুত্বপূর্ণ সূত্র
! style="background:#8E44AD; color:white; width:30%;" | সূত্র বা নিয়ম !! style="background:#8E44AD; color:white; width:35%;" | গাণিতিক রূপ !! style="background:#8E44AD; color:white; width:35%;" | ব্যাখ্যা
|-
| <math>n</math>-বিট কাউন্টারের মডুলো || <math>N = \text{২}^n</math> || <math>n</math>টি ফ্লিপ-ফ্লপ মিলে <math>\text{২}^n</math> অবস্থা
|-
| প্রয়োজনীয় বিট সংখ্যা || <math>n = \lceil \log_2 N \rceil</math> || মডুলো-<math>N</math> কাউন্টারে কমপক্ষে এতটা ফ্লিপ-ফ্লপ লাগবে
|-
| ক্যাসকেড কাউন্টারের মডুলো || <math>N = N_1 \times N_2 \times \cdots \times N_k</math> || <math>k</math>টি কাউন্টার ক্যাসকেডে
|-
| সর্বোচ্চ বিলম্ব || <math>t_{max} = n \times t_{pd}</math> || <math>n</math>টি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্বের যোগফল
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{t_{max}}</math> || বিলম্বের বিপরীত মান
|-
| কম্পাঙ্ক বিভাজন || <math>f_{out} = \frac{f_{in}}{N}</math> || মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> ভাগে ভাগ করে
|-
| মডুলো-<math>N</math> রিসেট শর্ত || গণনা = <math>N</math> হলে তাৎক্ষণিক রিসেট || <math>N</math>-এর বাইনারি রূপে যে বিটগুলো ১, তাদের অ্যান্ড করে ক্লিয়ারে দাও
|-
| উর্ধ্বগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>\overline{Q_i}</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের পরিপূরক আউটপুট
|-
| নিম্নগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>Q_i</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের সরাসরি আউটপুট
|}
=== পরিভাষার তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | সম্পূর্ণ পরিভাষার তালিকা
! style="background:#27AE60; color:white; width:30%;" | বাংলা পরিভাষা !! style="background:#27AE60; color:white; width:70%;" | সংজ্ঞা
|-
| অ্যাসিনক্রোনাস কাউন্টার || যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক পায় না, প্রতিটি আগেরটার আউটপুট থেকে ক্লক পায়
|-
| উর্ধ্বগামী কাউন্টার || যে কাউন্টার <math>\text{০}</math> থেকে শুরু করে ক্রমাগত বাড়তে থাকে
|-
| নিম্নগামী কাউন্টার || যে কাউন্টার সর্বোচ্চ মান থেকে শুরু করে ক্রমাগত কমতে থাকে
|-
| উভয়মুখী কাউন্টার || উপর বা নিচ যেকোনো দিকে গণনা করতে পারে
|-
| মডুলো-<math>N</math> কাউন্টার || <math>N</math>টি অবস্থায় ঘোরে, মানে <math>\text{০}</math> থেকে <math>N-\text{১}</math> পর্যন্ত
|-
| রিপল কাউন্টার || অ্যাসিনক্রোনাস কাউন্টারের আরেক নাম, ঢেউয়ের মতো বিলম্ব এগিয়ে যায় বলে
|-
| প্রোপাগেশন বিলম্ব || সংকেত একটি ফ্লিপ-ফ্লপের মধ্য দিয়ে যেতে যে সময় লাগে
|-
| গ্লিচ || সার্কিট পরিবর্তনের মুহূর্তে ক্ষণিকের ভুল আউটপুট
|-
| প্রি-সেট || ফ্লিপ-ফ্লপকে জোর করে <math>\text{১}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্লিয়ার || ফ্লিপ-ফ্লপকে জোর করে <math>\text{০}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্যাসকেড || একাধিক কাউন্টার শ্রেণিতে জুড়ে বড় কাউন্টার তৈরি
|-
| কম্পাঙ্ক বিভাজক || কাউন্টারকে ক্লক কম্পাঙ্ক ভাগ করার কাজে ব্যবহার
|-
| বিসিডি কাউন্টার || বাইনারি কোডেড দশমিক, <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত দশমিক অঙ্ক বাইনারিতে
|-
| ক্লক গেটিং || একটি গেট দিয়ে ক্লক চালু বা বন্ধ করার পদ্ধতি
|-
| এমএসবি || সর্বোচ্চ তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার বাম দিকের বিট
|-
| এলএসবি || সর্বনিম্ন তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার ডান দিকের বিট
|-
| জেকে ফ্লিপ-ফ্লপ || দুটি ইনপুট <math>J</math> ও <math>K</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, টগল মোড আছে
|-
| ডি ফ্লিপ-ফ্লপ || একটি ইনপুট <math>D</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, ক্লকে ডি-র মান সংরক্ষণ করে
|-
| টগল || বর্তমান অবস্থার উল্টো অবস্থায় যাওয়া, <math>\text{০}</math> হলে <math>\text{১}</math>, <math>\text{১}</math> হলে <math>\text{০}</math>
|-
| সমকালীন কাউন্টার || সব ফ্লিপ-ফ্লপ একই ক্লক পায়, গ্লিচমুক্ত ও দ্রুততর
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: তিনটি ৭৪৯০ দিয়ে মডুলো-১০০০ কাউন্টার ===
তিনটি ৭৪৯০ চিপ ক্যাসকেডে জুড়ে মডুলো-১০০০ কাউন্টার তৈরি করো এবং গণনা যাচাই করো।
সংযোগ পদ্ধতি:
প্রথম চিপ: বাইরের ক্লক CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি একক স্থানের অঙ্ক দেখাবে।
দ্বিতীয় চিপ: প্রথম চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি দশক স্থান দেখাবে।
তৃতীয় চিপ: দ্বিতীয় চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি শতক স্থান দেখাবে।
মোট মডুলো: <math>N = \text{১০} \times \text{১০} \times \text{১০} = \text{১০০০}</math>
গণনা যাচাই:
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | তৃতীয় চিপ (শতক) !! style="background:#3498DB; color:white;" | দ্বিতীয় চিপ (দশক) !! style="background:#8E44AD; color:white;" | প্রথম চিপ (একক) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম চিপ সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরল, দ্বিতীয় এগোল
|-
| <math>\text{৯৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || প্রথম ও দ্বিতীয় সর্বোচ্চে
|-
| <math>\text{১০০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরল, তৃতীয় এগোল
|-
| <math>\text{৯৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || তিনটিই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || তিনটিই ঘুরে শুরুতে ফিরল
|}
=== উদাহরণ ২: ৭৪৯৩ দিয়ে মডুলো-৭ কাউন্টার ===
৭ দশমিকে = ০১১১ বাইনারি।
তাই <math>Q_C</math>, <math>Q_B</math>, <math>Q_A</math> তিনটিই ১ হলে রিসেট করতে হবে।
কিন্তু ৭৪৯৩-এ মাত্র দুটো রিসেট পিন আছে (R0(1) এবং R0(2))। তিনটি শর্ত যাচাই করতে অতিরিক্ত অ্যান্ড গেট লাগবে।
সংযোগ:
* R0(1)-এ <math>Q_C</math> সরাসরি দাও।
* একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই গেটের আউটপুট R0(2)-এ দাও।
যখন গণনা ৭ হয় (<math>Q_C = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>):
* R0(1) = <math>Q_C</math> = <math>\text{১}</math>
* R0(2) = <math>Q_B \cdot Q_A</math> = <math>\text{১} \cdot \text{১}</math> = <math>\text{১}</math>
* উভয়ে ১, তাই রিসেট। কাউন্টার ০ থেকে ৬ পর্যন্ত গোনে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৭ কাউন্টারের গণনা
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক !! style="background:#8E44AD; color:white;" | R0(1) !! style="background:#8E44AD; color:white;" | R0(2) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> || স্বাভাবিক
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || <math>\text{১}</math> || <math>\text{১}</math> || রিসেট!
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
=== উদাহরণ ৩: ২৪ ঘণ্টার কাউন্টার তৈরি ===
২৪ ঘণ্টার কাউন্টার তৈরি করো, ০০ থেকে ২৩ পর্যন্ত।
২৪ = দুই অঙ্কের সংখ্যা: দশক অঙ্ক ০ থেকে ২, একক অঙ্ক ০ থেকে ৯ (তবে দশক ২ হলে একক সর্বোচ্চ ৩)।
পদ্ধতি:
* একক ঘণ্টার জন্য মডুলো-১০ কাউন্টার (কিন্তু দশক ২ থাকলে মডুলো-৪)।
* দশক ঘণ্টার জন্য মডুলো-৩ কাউন্টার (০, ১, ২)।
রিসেট শর্ত: যখন একসাথে দশক = ২ এবং একক = ৪ হবে, মানে সামগ্রিক গণনা = ২৪ হবে, তখন উভয় কাউন্টার রিসেট।
রিসেট সংকেত তৈরি: দশক কাউন্টারের <math>Q_B</math> (মান ২ = বাইনারি ১০, তাই <math>Q_B = \text{১}, Q_A = \text{০}</math>) এবং একক কাউন্টারের <math>Q_C</math> (মান ৪ = বাইনারি ০১০০, তাই <math>Q_C = \text{১}</math>)-এর অ্যান্ড করলে রিসেট সংকেত পাওয়া যাবে।
{| class="wikitable" style="text-align:center; width:75%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ২৪ ঘণ্টা কাউন্টারের বিশেষ অবস্থা
! style="background:#3498DB; color:white;" | ঘণ্টা !! style="background:#27AE60; color:white;" | দশক অঙ্ক !! style="background:#E74C3C; color:white;" | একক অঙ্ক !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু বা মধ্যরাত
|-
| <math>\text{০৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || একক সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || দশক বাড়ল
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || একক আবার সর্বোচ্চে
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || দশক আবার বাড়ল
|-
| <math>\text{২৩}</math> || <math>\text{২}</math> || <math>\text{৩}</math> || সর্বোচ্চ মান
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রিসেট, নতুন দিন শুরু
|}
=== উদাহরণ ৪: কম্পাঙ্ক বিভাজনের গণনা ===
একটি ৪.৯১৫২ MHz স্ফটিক দোলক থেকে ৯৬০০ Hz UART ক্লক তৈরি করতে হবে।
বিভাজন অনুপাত:
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৪,৯১৫,২০০}}{\text{৯,৬০০}} = \text{৫১২}</math>
৫১২ = <math>\text{২}^9</math>, তাই ৯টি দ্বিভাজক (মডুলো-২ কাউন্টার) ক্যাসকেডে দিলেই হয়।
বিকল্পভাবে: মডুলো-৬৪ এবং মডুলো-৮ ক্যাসকেড: <math>\text{৬৪} \times \text{৮} = \text{৫১২}</math>।
=== উদাহরণ ৫: নিম্নগামী স্টপওয়াচ কাউন্টার ===
একটি মাইক্রোওয়েভ ওভেনে ৯৯ সেকেন্ড থেকে উল্টো গোনার সার্কিট তৈরি করো।
প্রয়োজন:
* একটি নিম্নগামী মডুলো-১০০ কাউন্টার।
* প্রাথমিক লোড: ১০০১ ১০০১ বিসিডি (দশমিক ৯৯)।
* গণনা ০০ হলে: বাজার বাজবে এবং থামবে।
সংযোগ:
* দুটি ৭৪৯০-এর ক্লিয়ার না ব্যবহার করে প্রিসেট ব্যবহার করো।
* প্রিসেট: একক কাউন্টার ৯-এ, দশক কাউন্টার ৯-এ।
* নিম্নগামীর জন্য: একক কাউন্টারের <math>Q_A</math> (এলএসবি) পরিবর্তে আউটপুটের পরিপূরক দ্বিতীয় কাউন্টারে দাও।
গণনার ধারা: ৯৯, ৯৮, ৯৭, ..., ১০, ০৯, ০৮, ..., ০১, ০০।
=== উদাহরণ ৬: ট্র্যাফিক লাইট নিয়ন্ত্রণ সার্কিটের বিস্তারিত ===
তিনটি রাস্তার সংকেত বাতি নিয়ন্ত্রণ করতে হবে যেখানে:
রাস্তা-১: সবুজ ৪৫s, হলুদ ৫s, লাল ৫০s। চক্র = ১০০s।
রাস্তা-২: সবুজ ৩০s, হলুদ ৫s, লাল ৬৫s। চক্র = ১০০s।
মোট চক্র = ১০০ সেকেন্ড, তাই মডুলো-১০০ কাউন্টার লাগবে।
কম্পাঙ্ক: ১ Hz (প্রতি সেকেন্ডে ১ স্পন্দন)।
ডিকোডার লজিক:
রাস্তা-১ সবুজ: গণনা ০ থেকে ৪৪ (মানে <math>Q < \text{৪৫}</math>)।
রাস্তা-১ হলুদ: গণনা ৪৫ থেকে ৪৯।
রাস্তা-১ লাল: গণনা ৫০ থেকে ৯৯।
রাস্তা-২ লাল: গণনা ০ থেকে ৬৪।
রাস্তা-২ হলুদ: গণনা ৬৫ থেকে ৬৯।
রাস্তা-২ সবুজ: গণনা ৭০ থেকে ৯৯।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত সারণি
! style="background:#3498DB; color:white;" | গণনা !! style="background:#3498DB; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | রাস্তা-১ !! style="background:#E74C3C; color:white;" | রাস্তা-২
|-
| <math>\text{০০}</math> থেকে <math>\text{৪৪}</math> || ৪৫ s || সবুজ || লাল
|-
| <math>\text{৪৫}</math> থেকে <math>\text{৪৯}</math> || ৫ s || হলুদ || লাল
|-
| <math>\text{৫০}</math> থেকে <math>\text{৬৪}</math> || ১৫ s || লাল || লাল (নিরাপদ বিরতি)
|-
| <math>\text{৬৫}</math> থেকে <math>\text{৬৯}</math> || ৫ s || লাল || হলুদ
|-
| <math>\text{৭০}</math> থেকে <math>\text{৯৯}</math> || ৩০ s || লাল || সবুজ
|-
| <math>\text{০০}</math> || মুহূর্তিক || রিসেট || রিসেট
|}
=== উদাহরণ ৭: বিলম্ব হিসাবের বিস্তারিত ===
একটি চার-স্তরের ক্যাসকেড কাউন্টারে (মোট ১৬ বিট) বিলম্ব বিশ্লেষণ করো।
প্রদত্ত:
* প্রতিটি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্ব: <math>t_{pd} = \text{১৫}</math> নানোসেকেন্ড।
* প্রতিটি অ্যান্ড গেটের বিলম্ব: <math>t_{gate} = \text{৫}</math> নানোসেকেন্ড।
প্রথম কাউন্টার (৪ বিট): সর্বোচ্চ বিলম্ব = <math>\text{৪} \times \text{১৫} = \text{৬০}</math> ns।
দ্বিতীয় কাউন্টার (৪ বিট): প্রথমের বিলম্ব + নিজের বিলম্ব = <math>\text{৬০} + \text{৬০} = \text{১২০}</math> ns।
তৃতীয় কাউন্টার (৪ বিট): <math>\text{১২০} + \text{৬০} = \text{১৮০}</math> ns।
চতুর্থ কাউন্টার (৪ বিট): <math>\text{১৮০} + \text{৬০} = \text{২৪০}</math> ns।
সর্বোচ্চ ক্লক গতি:
<math>f_{max} = \frac{\text{১}}{\text{২৪০} \times \text{১০}^{-9}} \approx \text{৪.২}</math> MHz
তুলনা: সমকালীন ১৬-বিট কাউন্টারে সর্বোচ্চ বিলম্ব মাত্র কয়েকটি গেট স্তর, সাধারণত ৩০ থেকে ৬০ ns, তাই গতি ১০ থেকে ৩০ MHz হতে পারে।
== অনুশীলনী ==
=== সহজ প্রশ্ন ===
'''১.''' দুটি মডুলো-৫ কাউন্টার ক্যাসকেডে জুড়লে মোট মডুলো কত হবে?
'''উত্তর:''' <math>N = \text{৫} \times \text{৫} = \text{২৫}</math>। কাউন্টার ০ থেকে ২৪ পর্যন্ত গুনবে।
'''২.''' মডুলো-১৬ কাউন্টারের জন্য কতটি ফ্লিপ-ফ্লপ লাগবে?
'''উত্তর:''' <math>n = \log_2 \text{১৬} = \text{৪}</math>। চারটি ফ্লিপ-ফ্লপ লাগবে।
'''৩.''' একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ২০ ns হলে সর্বোচ্চ বিলম্ব কত?
'''উত্তর:''' <math>t_{max} = \text{৪} \times \text{২০} = \text{৮০}</math> ns।
'''৪.''' ৭৪৯০ চিপের R0 পিনে উভয়ে লজিক ১ দিলে কী হয়?
'''উত্তর:''' কাউন্টার তাৎক্ষণিক রিসেট হয়ে ০০০০ অবস্থায় চলে যায়।
'''৫.''' মডুলো-৩২ কাউন্টারে কতটি বিট দরকার?
'''উত্তর:''' <math>n = \log_2 \text{৩২} = \text{৫}</math>। পাঁচটি বিট।
'''৬.''' ডিজিটাল ঘড়িতে ৩২৭৬৮ Hz থেকে ১ Hz পেতে বিভাজন অনুপাত কত?
'''উত্তর:''' <math>N = \text{৩২৭৬৮} = \text{২}^{15}</math>। মডুলো-৩২৭৬৮ বিভাজক লাগবে।
'''৭.''' একটি কাউন্টারের আউটপুটে হঠাৎ ভুল মান দেখা দিয়ে মিলিয়ে যাচ্ছে, এটি কী?
'''উত্তর:''' এটি গ্লিচ বা হ্যাজার্ড। অ্যাসিনক্রোনাস কাউন্টারে পরিবর্তনের মুহূর্তে ঘটে।
=== মাঝারি প্রশ্ন ===
'''৮.''' ৭৪৯৩ চিপ দিয়ে মডুলো-৯ কাউন্টার তৈরি করো। কোন পিনে কী সংযোগ দেবে?
'''উত্তর:'''
৯ = ১০০১ বাইনারি। তাই <math>Q_D = \text{১}</math> এবং <math>Q_A = \text{১}</math> হলে রিসেট করতে হবে।
সংযোগ:
* R0(1)-এ <math>Q_D</math>।
* R0(2)-এ <math>Q_A</math>।
* <math>Q_A</math>-কে CKB-তে, বাইরের ক্লক CKA-তে।
গণনা: ০ থেকে ৮ পর্যন্ত। ৯ হওয়ামাত্র রিসেট।
'''৯.''' একটি ৮০ Hz সংকেত থেকে ৪ Hz তৈরি করতে কোন মডুলোর কাউন্টার লাগবে?
'''উত্তর:''' <math>N = \frac{\text{৮০}}{\text{৪}} = \text{২০}</math>। মডুলো-২০ কাউন্টার লাগবে। দুটি মডুলো-১০ বা মডুলো-৪ ও মডুলো-৫ ক্যাসকেডে জুড়লে হয়।
'''১০.''' মডুলো-৪৮ কাউন্টার তৈরি করতে কোন দুটি কাউন্টার ক্যাসকেডে ব্যবহার করবে?
'''উত্তর:''' ৪৮ = ৬ × ৮ বা ৪৮ = ১৬ × ৩ বা ৪৮ = ১২ × ৪।
সহজ উপায়: মডুলো-৮ এবং মডুলো-৬ ক্যাসকেডে, <math>\text{৮} \times \text{৬} = \text{৪৮}</math>।
'''১১.''' একটি কাউন্টার ১ Hz ক্লকে চলে এবং ৩-বিটের। এটি কত সেকেন্ড পরে ঘুরে আসে?
'''উত্তর:''' <math>N = \text{২}^\text{৩} = \text{৮}</math>। প্রতি ৮ সেকেন্ডে একবার ঘুরে আসে।
'''১২.''' অ্যাসিনক্রোনাস কাউন্টারে গ্লিচ কমানোর দুটি উপায় লেখো।
'''উত্তর:'''
* আউটপুটে ডি ফ্লিপ-ফ্লপ যোগ করো (পাইপলাইনিং)। ক্লকের স্থির অবস্থায় আউটপুট পড়ো।
* স্ট্রোব পালস ব্যবহার করো: কেবল স্থির অবস্থায় আউটপুট ডিকোড করো।
'''১৩.''' ৭৪৯০ দিয়ে মডুলো-৬ কাউন্টার কীভাবে তৈরি করবে?
'''উত্তর:'''
বিসিডি মোডে (<math>Q_A</math> থেকে CKB) ৭৪৯০ মডুলো-১০ কাউন্টার হয়। মডুলো-৬ পেতে গণনা ৬ হলে রিসেট করতে হবে।
৬ = ০১১০ বাইনারি। তাই <math>Q_C = \text{১}</math> এবং <math>Q_B = \text{১}</math> হলে রিসেট।
* R0(1)-এ <math>Q_C</math>।
* R0(2)-এ <math>Q_B</math>।
গণনা: ০ থেকে ৫।
=== কঠিন প্রশ্ন ===
'''১৪.''' একটি ডিজিটাল ঘড়িতে মিনিট কাউন্টারের জন্য মডুলো-৬০ সার্কিট ডিজাইন করো। কতটি ৭৪৯০ চিপ লাগবে এবং সংযোগ কীভাবে হবে?
'''উত্তর:'''
মডুলো-৬০ = মডুলো-১০ × মডুলো-৬।
চিপ ১ (মডুলো-১০): একক মিনিটের অঙ্ক। বিসিডি মোডে সংযুক্ত (<math>Q_A</math> থেকে CKB)।
চিপ ২ (মডুলো-৬): দশক মিনিটের অঙ্ক। চিপ ১-এর <math>Q_D</math> থেকে চিপ ২-এর CKA-তে। R0(1)-এ <math>Q_C</math>, R0(2)-এ <math>Q_B</math>।
মোট ২টি ৭৪৯০ চিপ লাগবে।
'''১৫.''' তিন-স্তরের ক্যাসকেড কাউন্টারে (মডুলো-৫ × মডুলো-৮ × মডুলো-৩) মোট অবস্থা কত? বিলম্ব কত যদি প্রতিটি ফ্লিপ-ফ্লপে ১২ ns বিলম্ব থাকে?
'''উত্তর:'''
মোট মডুলো: <math>N = \text{৫} \times \text{৮} \times \text{৩} = \text{১২০}</math>।
মোট বিট: মডুলো-৫ এ ৩ বিট, মডুলো-৮ এ ৩ বিট, মডুলো-৩ এ ২ বিট। মোট ৮ বিট।
সর্বোচ্চ বিলম্ব: <math>t_{max} = \text{৮} \times \text{১২} = \text{৯৬}</math> ns।
সর্বোচ্চ ক্লক গতি: <math>f_{max} \approx \text{১০.৪}</math> MHz।
'''১৬.''' একটি স্বয়ংক্রিয় মেশিন প্রতি ১ মিনিটে একটি পণ্য তৈরি করে এবং প্রতিদিন ৮ ঘণ্টা চলে। সারাদিনের উৎপাদন গণনা করতে কত বিটের কাউন্টার লাগবে?
'''উত্তর:'''
৮ ঘণ্টায় মোট মিনিট = ৮ × ৬০ = ৪৮০ মিনিট = ৪৮০ পণ্য।
সর্বোচ্চ গণনা ৪৮০, তাই বিট সংখ্যা:
<math>n = \lceil \log_2 \text{৪৮০} \rceil = \lceil \text{৮.৯} \rceil = \text{৯}</math> বিট।
৯ বিটের কাউন্টার ০ থেকে ৫১১ পর্যন্ত গুনতে পারে, যা ৪৮০ গণনার জন্য যথেষ্ট।
'''১৭.''' ৭৪৯৩ চিপ দিয়ে মডুলো-১১ কাউন্টার তৈরি করো। ৭৪৯৩-এ মাত্র দুটি রিসেট পিন থাকায় বাড়তি অ্যান্ড গেট লাগবে কিনা বিশ্লেষণ করো।
'''উত্তর:'''
১১ = ১০১১ বাইনারি। রিসেট শর্ত: <math>Q_D = \text{১}</math>, <math>Q_B = \text{১}</math>, <math>Q_A = \text{১}</math>।
তিনটি শর্ত আছে, কিন্তু রিসেট পিন মাত্র দুটি। তাই একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই আউটপুট R0(2)-এ এবং R0(1)-এ সরাসরি <math>Q_D</math> দাও।
যাচাই: গণনা ১১ হলে <math>Q_D = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>। R0(1) = ১, R0(2) = <math>Q_B \cdot Q_A</math> = ১। উভয়ে ১, রিসেট হবে।
'''১৮.''' দেখাও যে একটি মডুলো-৬০ ক্যাসকেড কাউন্টার মিনিটের পরিবর্তে সরাসরি মডুলো-৬০ কাউন্টার ব্যবহার করলে কী পার্থক্য হয়।
'''উত্তর:'''
মডুলো-৬০ কাউন্টার সরাসরি ০ থেকে ৫৯ পর্যন্ত বাইনারিতে গোনে। ৬ বিট দরকার।
কিন্তু ডিজিটাল ঘড়িতে দুটো আলাদা দশমিক অঙ্ক দেখাতে হয়, তাই বিসিডি পদ্ধতিতে মডুলো-১০ ও মডুলো-৬ ক্যাসকেড বেশি সুবিধাজনক।
সরাসরি মডুলো-৬০: বাইনারি থেকে দশমিক রূপান্তর ডিকোডার জটিল।
ক্যাসকেড মডুলো-১০×৬: প্রতিটি অঙ্ক আলাদাভাবে বিসিডিতে পাওয়া যায়, ডিকোডার সহজ।
'''১৯.''' একটি রেডিও স্টেশন ৯৮.৪ MHz-এ সম্প্রচার করে। ৯৮.৪ MHz = ৯৮৪ × ১০০ kHz। ১০০ kHz রেফারেন্স পেতে একটি ৯.৮৪ MHz স্ফটিক থেকে কত মডুলোর বিভাজক লাগবে?
'''উত্তর:'''
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৯,৮৪০,০০০}}{\text{১০০,০০০}} = \text{৯৮.৪}</math>
এটি পূর্ণ সংখ্যা নয়। তাই সরাসরি বিভাজন সম্ভব নয়।
বিকল্প: ৯.৮৪ MHz থেকে প্রথমে ÷৯৮.৪ না করে, ৯.৮৪ = ৯.৮৪ MHz = ৯৮৪০ kHz। ÷৯৮.৪ এর বদলে ÷৯৮৪ করলে ১০ kHz পাওয়া যায়, তারপর ÷১০ করলে ১ kHz। ফেজ লকড লুপ ব্যবহার করলে ভগ্নাংশ বিভাজন সম্ভব।
'''২০.''' প্রমাণ করো যে মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> দিয়ে ভাগ করে এবং একটি মডুলো-৩ কাউন্টারের সর্বোচ্চ বিটের কর্তব্যচক্র কত?
'''উত্তর:'''
কম্পাঙ্ক বিভাজন প্রমাণ: মডুলো-<math>N</math> কাউন্টার প্রতি <math>N</math>টি ইনপুট ক্লক স্পন্দনে একবার ঘুরে আসে। তাই আউটপুটের একটি চক্র = <math>N</math>টি ইনপুট চক্র। সুতরাং:
<math>f_{out} = \frac{f_{in}}{N}</math>
মডুলো-৩ কাউন্টারের কর্তব্যচক্র: মডুলো-৩ তিনটি অবস্থায় ঘোরে: ০০, ০১, ১০।
<math>Q_1</math> (সর্বোচ্চ বিট) এর মান:
* অবস্থা ০০: <math>Q_1 = \text{০}</math>
* অবস্থা ০১: <math>Q_1 = \text{০}</math>
* অবস্থা ১০: <math>Q_1 = \text{১}</math>
তিনটি অবস্থার মধ্যে একটিতে ১, তাই কর্তব্যচক্র = <math>\frac{\text{১}}{\text{৩}} \approx \text{৩৩.৩}\%</math>।
এটি ৫০% নয়, অর্থাৎ অসম কর্তব্যচক্র। যখন সমান কর্তব্যচক্র দরকার হয়, <math>\text{২}^n</math> মডুলো কাউন্টার বা বিশেষ সার্কিট ব্যবহার করতে হয়।
[[{{BOOKCATEGORY}}]]
9uv2nd7r1t32u3aduwymgkoq00fxjj6
106497
106496
2026-06-05T09:22:51Z
R1F4T
9121
/* অনুশীলনী */
106497
wikitext
text/x-wiki
মনে করো তুমি একটি স্কুলের মাঠে দাঁড়িয়ে আছ। মাঠের পাশে একটি লম্বা পাইপ থেকে পানি পড়ছে। এক ফোঁটা পড়ল, দুই ফোঁটা পড়ল, তিন ফোঁটা পড়ল... তুমি মনে মনে গণনা করছ। এটাই গণনার সবচেয়ে সহজ রূপ।
ডিজিটাল ইলেকট্রনিক্সেও এইভাবে গণনা করা হয়। পার্থক্য শুধু এটুকু যে এখানে পানির ফোঁটার বদলে বৈদ্যুতিক পালস গণনা করা হয়, আর গণনার ফলাফল থাকে বাইনারি সংখ্যায়। এই গণনার কাজটি করে '''কাউন্টার''' নামের সার্কিট।
কাউন্টার দুই রকমের। এই অধ্যায়ে আমরা শিখব '''অ্যাসিনক্রোনাস কাউন্টার''', যাকে বাংলায় বলা যায় '''অসমকালীন কাউন্টার''' বা '''রিপল কাউন্টার'''। পরের অধ্যায়ে থাকবে সমকালীন কাউন্টার।
কিন্তু এই দুটোর মধ্যে পার্থক্য কী? সেটা বুঝতে হলে আগে একটা মজার উপমা দেখি।
== বাস্তব উদাহরণ ==
একটি সামরিক কুচকাওয়াজ কল্পনা করো। সামরিক কুচকাওয়াজে সব সৈনিক একসাথে পা ফেলে। ব্যান্ডের ড্রামের প্রতিটি বিটে সব সৈনিক একই সময়ে একই পা তোলে। এটা হলো '''সমকালীন''' পদ্ধতি।
এখন অন্য একটা দৃশ্য কল্পনা করো। একটা দীর্ঘ সারিতে মানুষ দাঁড়িয়ে আছে। সামনের মানুষ পিছনের মানুষের কাঁধ ধরেছে। যখন সারির একেবারে সামনের মানুষ ঠেলা খেয়ে সামনে এগোয়, সেই ঠেলা পিছনের জনের কাছে যায়, তারপর তার পিছনে যায়, এভাবে একটা ঢেউয়ের মতো পিছনে যেতে থাকে। প্রথম মানুষ নড়ার কিছুক্ষণ পরে শেষ মানুষ নড়ে। এটা হলো '''অসমকালীন''' বা '''রিপল''' পদ্ধতি।
অ্যাসিনক্রোনাস কাউন্টারে ঠিক এইভাবে ঘড়ির সংকেত একটি ফ্লিপ-ফ্লপ থেকে পরেরটিতে "ঢেউয়ের মতো" এগিয়ে যায়। ইংরেজিতে এই ঢেউকে বলে "রিপল", তাই এই কাউন্টারের আরেক নাম রিপল কাউন্টার।
== অ্যাসিনক্রোনাস কাউন্টার কী ==
'''অ্যাসিনক্রোনাস কাউন্টার''' হলো এমন একটি গণনাকারী সার্কিট যেখানে সব ফ্লিপ-ফ্লপ একই ঘড়ি সংকেত ব্যবহার করে না। বরং প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে, দ্বিতীয়টির আউটপুট তৃতীয়টির ঘড়ি হয়, এভাবে চলতে থাকে।
এই কারণেই একে অসমকালীন বলা হয়: কারণ প্রতিটি ফ্লিপ-ফ্লপ ভিন্ন সময়ে পরিবর্তন হয়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের মূল পার্থক্য
! বিষয় !! অ্যাসিনক্রোনাস কাউন্টার !! সমকালীন কাউন্টার
|-
| ঘড়ির উৎস || প্রতিটি ফ্লিপ-ফ্লপের ঘড়ি ভিন্ন || সব ফ্লিপ-ফ্লপ একই বাহ্যিক ঘড়ি পায়
|-
| পরিবর্তনের সময় || একে একে পরিবর্তন হয় || সবাই একসাথে পরিবর্তন হয়
|-
| সার্কিটের জটিলতা || সহজ || জটিল
|-
| গতি || ধীর (ক্রমিক বিলম্ব) || দ্রুত
|-
| ব্যবহার || সহজ গণনা, কম গতির সার্কিট || দ্রুত, নির্ভুল গণনা
|-
| উপমা || ডোমিনো পড়া || সকলে একসাথে তালি দেওয়া
|}
== মূল উপাদান: টগল মোডে টি ফ্লিপ-ফ্লপ ==
অ্যাসিনক্রোনাস কাউন্টারের মূল উপাদান হলো ফ্লিপ-ফ্লপ। তবে এখানে বিশেষভাবে ফ্লিপ-ফ্লপকে '''টগল মোডে''' ব্যবহার করা হয়।
=== টগল মানে কী ===
টগল মানে হলো প্রতিবার ঘড়ির সক্রিয় প্রান্তে আউটপুট উল্টে যাওয়া। যদি <math>Q = \text{০}</math> থাকে তাহলে <math>\text{১}</math> হয়, আর যদি <math>Q = \text{১}</math> থাকে তাহলে <math>\text{০}</math> হয়।
সহজ উপমা: একটি লাইট সুইচ। প্রতিবার চাপলে অবস্থা বদলায়। যদি বাতি জ্বলছিল, নিভে যায়। যদি নিভা ছিল, জ্বলে ওঠে। এটাই টগল।
=== টগল মোডে ফ্লিপ-ফ্লপ তৈরির উপায় ===
যেকোনো ফ্লিপ-ফ্লপকে টগল মোডে ব্যবহার করা যায়। সবচেয়ে সহজ পদ্ধতি:
'''জেকে ফ্লিপ-ফ্লপ দিয়ে:'''
<math>J = K = \text{১}</math> করে দাও। তাহলে প্রতিটি ঘড়ির সক্রিয় প্রান্তে আউটপুট টগল করবে।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = J\bar{Q} + \bar{K}Q = \text{১} \cdot \bar{Q} + \text{০} \cdot Q = \bar{Q}</math>
'''ডি ফ্লিপ-ফ্লপ দিয়ে:'''
<math>D = \bar{Q}</math> সংযোগ দাও। তাহলে প্রতিটি ঘড়ির প্রান্তে <math>D</math> তে থাকে <math>Q</math> এর বিপরীত মান, এবং পরবর্তী প্রান্তে সেটাই সংরক্ষিত হয়।
বৈশিষ্ট্য সমীকরণ:
:<math>Q^+ = D = \bar{Q}</math>
=== টগলের গণিত: প্রতি দুই পালসে একটি চক্র ===
একটি টগল মোড ফ্লিপ-ফ্লপে পরপর পালস দেওয়া হলে:
{| class="wikitable" style="text-align:center;"
|+ একটি টগল ফ্লিপ-ফ্লপের আচরণ
! ঘড়ির পালস !! <math>Q</math> (আগে) !! <math>Q^+ = \bar{Q}</math> !! পরিবর্তন
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক অবস্থা
|-
| ১ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ২য় পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৩য় পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৪র্থ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|-
| ৫ম পালস || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math>
|-
| ৬ষ্ঠ পালস || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math>
|}
আউটপুট ক্রম: <math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
গুরুত্বপূর্ণ পর্যবেক্ষণ: আউটপুটের কম্পাঙ্ক ঘড়ির কম্পাঙ্কের '''অর্ধেক'''। প্রতি দুটি ইনপুট পালসে একটি সম্পূর্ণ আউটপুট চক্র হয়।
এই বৈশিষ্ট্যটিই অ্যাসিনক্রোনাস কাউন্টারের ভিত্তি।
== ২-বিট অ্যাসিনক্রোনাস কাউন্টার ==
এখন আমরা দুটি টগল ফ্লিপ-ফ্লপ যুক্ত করে একটি ২-বিট কাউন্টার তৈরি করব।
=== ধারণা: ডোমিনো এফেক্ট ===
ডোমিনো খেলায় একটি টাইল পড়লে পরেরটি পড়ে, তারপর আরেকটি। ঠিক এইভাবে ২-বিট কাউন্টারে:
প্রথম ফ্লিপ-ফ্লপ বাহ্যিক ঘড়ি পালস থেকে ঘড়ি পায়। প্রতিটি পালসে প্রথম ফ্লিপ-ফ্লপ টগল করে।
প্রথম ফ্লিপ-ফ্লপের আউটপুট দ্বিতীয় ফ্লিপ-ফ্লপের ঘড়ি হিসেবে কাজ করে। তাই যখন প্রথম ফ্লিপ-ফ্লপের আউটপুট <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নিম্নগামী প্রান্ত), তখন দ্বিতীয় ফ্লিপ-ফ্লপ টগল করে।
=== সার্কিটের গঠন ===
দুটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math> ও <math>FF_1</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি (<math>CLK</math>), <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
<math>FF_0</math> এর আউটপুট <math>Q_0</math> হলো সর্বনিম্ন বিট (একক স্থান)।
<math>FF_1</math> এর আউটপুট <math>Q_1</math> হলো উঁচু বিট (দুইয়ের স্থান)।
=== কোন প্রান্তে টগল হবে ===
নিম্নগামী প্রান্ত-সক্রিয় কাউন্টারে দ্বিতীয় ফ্লিপ-ফ্লপ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয় তখন টগল করে।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! বাহ্যিক পালস !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! <math>Q_0</math> এর পরিবর্তন !! <math>Q_1</math> পরিবর্তিত হয়?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || প্রারম্ভিক || না
|-
| ১ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ২য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{০} \to \text{১}</math>)
|-
| ৩য় পালস (<math>\downarrow</math>) || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{১}</math> (উর্ধ্বগামী) || না (উর্ধ্বগামী)
|-
| ৪র্থ পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১} \to \text{০}</math> (নিম্নগামী) || হ্যাঁ (<math>\text{১} \to \text{০}</math>)
|-
| ৫ম পালস (<math>\downarrow</math>) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || না
|}
লক্ষ করো: ৪ম পালসের পর কাউন্টার আবার <math>\text{০}</math> তে ফিরে এসেছে। এটাই ২-বিট কাউন্টারের একটি সম্পূর্ণ চক্র: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{০}</math>।
=== কেন <math>Q_1</math> শুধু নিম্নগামী প্রান্তে বদলায় ===
এটা বোঝা খুব জরুরি। আমরা নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ ব্যবহার করছি, তাই <math>FF_1</math> শুধু তখনই টগল করবে যখন তার ঘড়ি ইনপুট অর্থাৎ <math>Q_0</math> নিম্নগামী প্রান্ত দেখাবে।
<math>Q_0</math> নিম্নগামী প্রান্ত মানে: <math>Q_0</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয়।
এটা ঘটে ২য় পালসে এবং ৪র্থ পালসে। তাই <math>Q_1</math> এই দুটো মুহূর্তেই টগল করে।
=== বিস্তারিত ধাপে ধাপে বিশ্লেষণ ===
'''শুরুতে:''' প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>)
'''১ম পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায় → টগল → <math>Q_0: \text{০} \to \text{১}</math>
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> উর্ধ্বগামী প্রান্ত দেখেছে (<math>\text{০} \to \text{১}</math>) → নিম্নগামী প্রান্ত-সক্রিয় ফ্লিপ-ফ্লপ তাই পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক <math>\text{১}</math>)
'''২য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি <math>Q_0</math> নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{০} \to \text{১}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক <math>\text{২}</math>)
'''৩য় পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{০} \to \text{১}</math> (উর্ধ্বগামী প্রান্ত)
* <math>FF_1</math>: তার ঘড়ি উর্ধ্বগামী প্রান্ত দেখেছে → পরিবর্তন হয় না
* ফলাফল: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক <math>\text{৩}</math>)
'''৪র্থ পালস (নিম্নগামী প্রান্ত):'''
* <math>FF_0</math>: টগল → <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত!)
* <math>FF_1</math>: তার ঘড়ি নিম্নগামী প্রান্ত দেখেছে → টগল → <math>Q_1: \text{১} \to \text{০}</math>
* ফলাফল: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক <math>\text{০}</math>) — একটি সম্পূর্ণ চক্র!
=== ২-বিট কাউন্টারের গণনার ক্রম ===
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের সম্পূর্ণ গণনার ক্রম
! পালস সংখ্যা !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক
|-
| <math>\text{০}</math> (শুরু) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math> || <math>\text{০}</math> (পুনরায়)
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০১}</math> || <math>\text{১}</math>
|}
=== ২-বিট কাউন্টারের কম্পাঙ্ক বিশ্লেষণ ===
এখন একটা গুরুত্বপূর্ণ বিষয় বুঝি। ধরো বাহ্যিক ঘড়ির কম্পাঙ্ক <math>f</math>।
* <math>Q_0</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{২}}</math> (প্রতি দুটি বাহ্যিক পালসে একটি চক্র)
* <math>Q_1</math> এর কম্পাঙ্ক = <math>\frac{f}{\text{৪}}</math> (প্রতি চারটি বাহ্যিক পালসে একটি চক্র)
{| class="wikitable" style="text-align:center;"
|+ ২-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন অনুপাত !! উদাহরণ (<math>f = \text{১০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{১০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৫০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২৫০}</math> হার্টজ
|}
== ৩-বিট অ্যাসিনক্রোনাস কাউন্টার ==
২-বিট কাউন্টার তো বুঝলাম। এখন আরেকটি ফ্লিপ-ফ্লপ যোগ করলে কী হয়? পাই ৩-বিট কাউন্টার যা ০ থেকে ৭ পর্যন্ত গণনা করতে পারে।
=== উপমা: তিনটি মিটার ===
ধরো একটি পানির মিটার যেখানে তিনটি চাকা আছে। একক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে দশক স্থানের চাকা একবার এগোয়। দশক স্থানের চাকা ০ থেকে ৯ পর্যন্ত ঘুরলে শতক স্থানের চাকা একবার এগোয়। আমাদের বাইনারি কাউন্টারেও ঠিক এইভাবে কাজ হয়, শুধু পার্থক্য হলো এখানে প্রতিটি চাকা শুধু ০ ও ১ এর মধ্যে ঘোরে।
=== সার্কিটের গঠন ===
তিনটি জেকে ফ্লিপ-ফ্লপ (<math>FF_0</math>, <math>FF_1</math>, <math>FF_2</math>):
* <math>FF_0</math>: ঘড়ি = বাহ্যিক ঘড়ি, <math>J_0 = K_0 = \text{১}</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0</math> এর নিম্নগামী প্রান্ত, <math>J_1 = K_1 = \text{১}</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1</math> এর নিম্নগামী প্রান্ত, <math>J_2 = K_2 = \text{১}</math>
প্রতিটি ফ্লিপ-ফ্লপ পূর্ববর্তী ফ্লিপ-ফ্লপের আউটপুট থেকে ঘড়ি পাচ্ছে। এটাই রিপল প্রভাব।
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! বাইনারি !! দশমিক !! ব্যাখ্যা
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || প্রারম্ভিক
|-
| ১ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০০১}</math> || <math>\text{১}</math> || শুধু <math>Q_0</math> টগল
|-
| ২য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০১০}</math> || <math>\text{২}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৩য় || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০১১}</math> || <math>\text{৩}</math> || শুধু <math>Q_0</math> টগল
|-
| ৪র্থ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১০০}</math> || <math>\text{৪}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল, <math>Q_1</math> নিম্নগামী তাই <math>Q_2</math> টগল
|-
| ৫ম || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১০১}</math> || <math>\text{৫}</math> || শুধু <math>Q_0</math> টগল
|-
| ৬ষ্ঠ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১১০}</math> || <math>\text{৬}</math> || <math>Q_0</math> নিম্নগামী, <math>Q_1</math> টগল
|-
| ৭ম || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১১}</math> || <math>\text{৭}</math> || শুধু <math>Q_0</math> টগল
|-
| ৮ম || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০০}</math> || <math>\text{০}</math> || সম্পূর্ণ চক্র, পুনরায় শুরু
|}
=== ৪র্থ পালসের বিস্তারিত বিশ্লেষণ ===
৪র্থ পালসটি একটু জটিল, তাই আলাদা করে বিশ্লেষণ করা যাক।
আগের অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
ধাপ ১: <math>FF_0</math> বাহ্যিক ঘড়ির নিম্নগামী প্রান্ত পায়
* <math>FF_0</math> টগল: <math>Q_0: \text{১} \to \text{০}</math> (নিম্নগামী প্রান্ত উৎপন্ন হলো)
ধাপ ২: <math>FF_1</math> তার ঘড়ি <math>Q_0</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_1</math> টগল: <math>Q_1: \text{১} \to \text{০}</math> (এটাও নিম্নগামী প্রান্ত!)
ধাপ ৩: <math>FF_2</math> তার ঘড়ি <math>Q_1</math> এর নিম্নগামী প্রান্ত দেখল
* <math>FF_2</math> টগল: <math>Q_2: \text{০} \to \text{১}</math>
নতুন অবস্থা: <math>Q_2 Q_1 Q_0 = \text{১০০}</math> (দশমিক <math>\text{৪}</math>)
দেখো, এখানে তিনটি ফ্লিপ-ফ্লপই পরিবর্তন হয়েছে কিন্তু একসাথে নয়, পরপর। এটাই রিপল প্রভাব।
=== কম্পাঙ্ক বিভাজন ===
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের কম্পাঙ্ক বিভাজন
! সংকেত !! কম্পাঙ্ক !! বিভাজন !! উদাহরণ (<math>f = \text{৮০০০}</math> হার্টজ)
|-
| বাহ্যিক ঘড়ি || <math>f</math> || <math>\div \text{১}</math> || <math>\text{৮০০০}</math> হার্টজ
|-
| <math>Q_0</math> || <math>\frac{f}{\text{২}}</math> || <math>\div \text{২}</math> || <math>\text{৪০০০}</math> হার্টজ
|-
| <math>Q_1</math> || <math>\frac{f}{\text{৪}}</math> || <math>\div \text{৪}</math> || <math>\text{২০০০}</math> হার্টজ
|-
| <math>Q_2</math> || <math>\frac{f}{\text{৮}}</math> || <math>\div \text{৮}</math> || <math>\text{১০০০}</math> হার্টজ
|}
== ৪-বিট অ্যাসিনক্রোনাস কাউন্টার ==
৩-বিট কাউন্টার বুঝলে ৪-বিট কাউন্টার অনুমান করা সহজ। আরেকটি ফ্লিপ-ফ্লপ (<math>FF_3</math>) যোগ হবে এবং এর ঘড়ি হবে <math>Q_2</math> এর নিম্নগামী প্রান্ত।
=== সার্কিটের গঠন ===
চারটি জেকে ফ্লিপ-ফ্লপ:
* <math>FF_0</math>: ঘড়ি = বাহ্যিক <math>CLK</math>
* <math>FF_1</math>: ঘড়ি = <math>Q_0 \downarrow</math>
* <math>FF_2</math>: ঘড়ি = <math>Q_1 \downarrow</math>
* <math>FF_3</math>: ঘড়ি = <math>Q_2 \downarrow</math>
সবার <math>J = K = \text{১}</math>
=== সম্পূর্ণ অবস্থা সারণী ===
{| class="wikitable" style="text-align:center;"
|+ ৪-বিট অ্যাসিনক্রোনাস উর্ধ্বগামী কাউন্টারের সম্পূর্ণ অবস্থা সারণী
! পালস !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| <math>\text{১২}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| <math>\text{১৩}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| <math>\text{১৪}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| <math>\text{১৫}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| <math>\text{১৬}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> (পুনরায়)
|}
=== n-বিট কাউন্টারের সাধারণ সূত্র ===
{| class="wikitable" style="text-align:center;"
|+ n-বিট কাউন্টারের বৈশিষ্ট্য
! বিট সংখ্যা <math>n</math> !! ফ্লিপ-ফ্লপ সংখ্যা !! গণনার পরিসর !! মোট অবস্থা !! সর্বোচ্চ মান
|-
| <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{২}</math> || <math>\text{১}</math>
|-
| <math>\text{২}</math> || <math>\text{২}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৪}</math> || <math>\text{৩}</math>
|-
| <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৮}</math> || <math>\text{৭}</math>
|-
| <math>\text{৪}</math> || <math>\text{৪}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৬}</math> || <math>\text{১৫}</math>
|-
| <math>\text{৫}</math> || <math>\text{৫}</math> || <math>\text{০} \to \text{৩১}</math> || <math>\text{৩২}</math> || <math>\text{৩১}</math>
|-
| <math>n</math> || <math>n</math> || <math>\text{০} \to \text{২}^n - \text{১}</math> || <math>\text{২}^n</math> || <math>\text{২}^n - \text{১}</math>
|}
== অ্যাসিনক্রোনাস কাউন্টারের রিপল প্রভাব ও বিলম্ব ==
এখন আমরা অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যটি আলোচনা করব, যা একই সাথে এর সুবিধা ও সীমাবদ্ধতা।
=== রিপল প্রভাব কী ===
পুকুরে একটি পাথর ফেললে কী হয়? পানিতে ঢেউ তৈরি হয় এবং সেই ঢেউ একটু একটু করে বাইরের দিকে ছড়িয়ে পড়ে। প্রথমে কেন্দ্রের পানি নড়ে, তারপর একটু বাইরের পানি, তারপর আরেকটু বাইরে।
অ্যাসিনক্রোনাস কাউন্টারে ঘড়ির পালস ঠিক এইভাবে "ছড়িয়ে পড়ে"। প্রথম ফ্লিপ-ফ্লপ পরিবর্তন হয়, তারপর তার সংকেত দ্বিতীয় ফ্লিপ-ফ্লপে পৌঁছায় এবং দ্বিতীয়টি পরিবর্তন হয়, এভাবে চলতে থাকে।
=== বিলম্বের পরিমাণ ===
প্রতিটি ফ্লিপ-ফ্লপের নিজস্ব বিস্তার বিলম্ব আছে। একে <math>t_{pd}</math> বলি।
{| class="wikitable" style="text-align:center;"
|+ n-বিট রিপল কাউন্টারের মোট বিলম্ব
! বিট সংখ্যা <math>n</math> !! সর্বোচ্চ মোট বিলম্ব !! ব্যাখ্যা
|-
| <math>\text{২}</math> || <math>\text{২} \times t_{pd}</math> || দুটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৩}</math> || <math>\text{৩} \times t_{pd}</math> || তিনটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>\text{৪}</math> || <math>\text{৪} \times t_{pd}</math> || চারটি ফ্লিপ-ফ্লপের বিলম্ব যোগ
|-
| <math>n</math> || <math>n \times t_{pd}</math> || সাধারণ সূত্র
|}
=== বিলম্বের বাস্তব উদাহরণ ===
ধরো প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১০}</math> ন্যানোসেকেন্ড।
৪-বিট রিপল কাউন্টারে সর্বোচ্চ মোট বিলম্ব:
:<math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
এই বিলম্বের মধ্যে ঘড়ির পরবর্তী পালস না আসলে সার্কিট সঠিকভাবে কাজ করবে। তাই সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{n \times t_{pd}} = \frac{\text{১}}{\text{৪০} \text{ ন্যানো}} = \text{২৫}</math> মেগাহার্টজ
=== ক্ষণিক ভুল অবস্থা ===
বিলম্বের কারণে একটি মজার সমস্যা হয়। সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হয় না বলে মধ্যবর্তী মুহূর্তে ভুল অবস্থা দেখা যায়।
উদাহরণ: ৩-বিট কাউন্টারে <math>\text{০১১}</math> (দশমিক <math>\text{৩}</math>) থেকে <math>\text{১০০}</math> (দশমিক <math>\text{৪}</math>) তে যাওয়ার সময়:
{| class="wikitable" style="text-align:center;"
|+ <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় ক্ষণিক অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! মন্তব্য
|-
| <math>t_0</math> (আগে) || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || স্থিতিশীল
|-
| <math>t_0 + t_{pd}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{২}t_{pd}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ক্ষণিক ভুল!
|-
| <math>t_0 + \text{৩}t_{pd}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || স্থিতিশীল
|}
<math>\text{৩}</math> থেকে <math>\text{৪}</math> তে যাওয়ার পথে সংক্ষেপে <math>\text{২}</math> ও <math>\text{০}</math> দেখা গেছে! এগুলো ক্ষণিক অবস্থা, কিন্তু ভুল আউটপুট দেখানো হচ্ছে।
এই সমস্যাকে বলে গ্লিচ। উচ্চগতির সার্কিটে এটি বড় সমস্যা হতে পারে।
== টাইমিং চিত্র বিশ্লেষণ ==
টাইমিং চিত্র দেখে অ্যাসিনক্রোনাস কাউন্টারের আচরণ সবচেয়ে ভালো বোঝা যায়।
=== ৩-বিট কাউন্টারের টাইমিং চিত্র বর্ণনা ===
কল্পনা করো তিনটি সারিতে তরঙ্গ আঁকা হয়েছে:
* প্রথম সারি (<math>CLK</math>): দ্রুত নিয়মিত তরঙ্গ
* দ্বিতীয় সারি (<math>Q_0</math>): <math>CLK</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* তৃতীয় সারি (<math>Q_1</math>): <math>Q_0</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
* চতুর্থ সারি (<math>Q_2</math>): <math>Q_1</math> এর অর্ধেক কম্পাঙ্কে তরঙ্গ
{| class="wikitable" style="text-align:center;"
|+ ৩-বিট কাউন্টারের টাইমিং চিত্র সারণী
! সময় !! <math>CLK</math> !! <math>Q_0</math> !! <math>Q_1</math> !! <math>Q_2</math> !! বর্তমান মান
|-
| <math>t_1</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০০১}=\text{১}</math>
|-
| <math>t_2</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{০১০}=\text{২}</math>
|-
| <math>t_3</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{০১১}=\text{৩}</math>
|-
| <math>t_4</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || <math>\text{১০০}=\text{৪}</math>
|-
| <math>t_5</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১০১}=\text{৫}</math>
|-
| <math>t_6</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || <math>\text{১১০}=\text{৬}</math>
|-
| <math>t_7</math> || <math>\downarrow</math> || <math>\text{০} \to \text{১}</math> || অপরিবর্তিত || অপরিবর্তিত || <math>\text{১১১}=\text{৭}</math>
|-
| <math>t_8</math> || <math>\downarrow</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{১} \to \text{০}</math> || <math>\text{০০০}=\text{০}</math>
|}
=== টাইমিং চিত্র থেকে বিলম্ব দেখা ===
<math>t_4</math> মুহূর্তে তিনটি ফ্লিপ-ফ্লপ পরিবর্তন হয়েছে। কিন্তু সবাই একসাথে পরিবর্তন হয়নি:
* <math>Q_0</math> পরিবর্তন হলো সাথে সাথে (বাহ্যিক ঘড়ি থেকে)
* <math>Q_1</math> পরিবর্তন হলো <math>t_{pd}</math> পরে (একটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
* <math>Q_2</math> পরিবর্তন হলো <math>\text{২} t_{pd}</math> পরে (দুটি ফ্লিপ-ফ্লপের বিলম্বের পরে)
এই সময়ের মধ্যে যদি আউটপুট পড়া হয়, ভুল মান পাওয়া যাবে।
== অ্যাসিনক্রোনাস কাউন্টারের সুবিধা ও সীমাবদ্ধতা ==
=== সুবিধা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সুবিধা
! সুবিধা !! বিস্তারিত ব্যাখ্যা
|-
| সহজ সার্কিট || ফ্লিপ-ফ্লপ শুধু একটার পর একটা সংযুক্ত, কোনো জটিল গেট নেই
|-
| কম উপাদান || সমকালীন কাউন্টারের তুলনায় অনেক কম গেট লাগে
|-
| কম বিদ্যুৎ খরচ || সহজ সার্কিট মানে কম বিদ্যুৎ খরচ
|-
| সহজ ডিজাইন || যেকোনো বিট সংখ্যার কাউন্টার একই পদ্ধতিতে তৈরি করা যায়
|-
| কম্পাঙ্ক বিভাজক || প্রতিটি আউটপুট আগেরটির অর্ধেক কম্পাঙ্কের সংকেত দেয়
|}
=== সীমাবদ্ধতা ===
{| class="wikitable" style="width:100%;"
|+ অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা
! সীমাবদ্ধতা !! বিস্তারিত ব্যাখ্যা
|-
| রিপল বিলম্ব || বিট সংখ্যা বাড়লে বিলম্ব বাড়ে, তাই সর্বোচ্চ কম্পাঙ্ক কমে
|-
| ক্ষণিক ভুল আউটপুট || পরিবর্তনের সময় ভুল মান দেখা দিতে পারে (গ্লিচ)
|-
| গতির সীমা || উচ্চ গতির সার্কিটে ব্যবহার করা কঠিন
|-
| ডিকোডিং সমস্যা || বিলম্বের কারণে সঠিক সময়ে আউটপুট পাঠ করা কঠিন
|}
== উর্ধ্বগামী কাউন্টারের প্যাটার্ন বোঝা ==
এখন আমরা একটু গভীরে যাই এবং উর্ধ্বগামী রিপল কাউন্টারের একটি সুন্দর প্যাটার্ন দেখব।
=== <math>Q_0</math> কখন টগল করে ===
<math>Q_0</math> প্রতিটি বাহ্যিক পালসে টগল করে। তাই এর গণনার ক্রম:
<math>\text{০, ১, ০, ১, ০, ১, }\ldots</math>
=== <math>Q_1</math> কখন টগল করে ===
<math>Q_1</math> তখনই টগল করে যখন <math>Q_0</math> নিম্নগামী হয় (<math>\text{১} \to \text{০}</math>)। এটা ঘটে প্রতি ২ম, ৪র্থ, ৬ষ্ঠ... বাহ্যিক পালসে।
তাই <math>Q_1</math> এর গণনার ক্রম:
<math>\text{০, ০, ১, ১, ০, ০, ১, ১, }\ldots</math>
=== <math>Q_2</math> কখন টগল করে ===
<math>Q_2</math> তখনই টগল করে যখন <math>Q_1</math> নিম্নগামী হয়। এটা ঘটে প্রতি ৪র্থ, ৮ম... বাহ্যিক পালসে।
তাই <math>Q_2</math> এর গণনার ক্রম:
<math>\text{০, ০, ০, ০, ১, ১, ১, ১, ০, ০, ০, ০, ১, ১, ১, ১, }\ldots</math>
=== সাধারণ নিয়ম ===
<math>k</math>তম বিট (<math>Q_k</math>) টগল করে প্রতি <math>\text{২}^{k+1}</math> বাহ্যিক পালসে একবার।
{| class="wikitable" style="text-align:center;"
|+ বিট টগলের সাধারণ নিয়ম
! বিট !! টগল করার সময় !! বাহ্যিক পালসের প্যাটার্ন
|-
| <math>Q_0</math> || প্রতি পালসে || <math>\text{১, ২, ৩, ৪} \ldots</math>
|-
| <math>Q_1</math> || প্রতি <math>\text{২}</math>তম পালসে || <math>\text{২, ৪, ৬, ৮, }\ldots</math>
|-
| <math>Q_2</math> || প্রতি <math>\text{৪}</math>তম পালসে || <math>\text{৪, ৮, ১২, ১৬, }\ldots</math>
|-
| <math>Q_3</math> || প্রতি <math>\text{৮}</math>তম পালসে || <math>\text{৮, ১৬, ২৪, ৩২, }\ldots</math>
|-
| <math>Q_k</math> || প্রতি <math>\text{২}^k</math>তম পালসে || <math>\text{২}^k, \text{২}^{k+1}, \text{৩} \times \text{২}^k \ldots</math>
|}
== কত পালসে কাউন্টার কোথায় থাকবে: দ্রুত গণনার কৌশল ===
ধরো <math>n</math>-বিট কাউন্টারে <math>p</math> পালস দেওয়া হয়েছে। কাউন্টারের মান কত হবে?
উত্তর: <math>p \mod \text{২}^n</math>
অর্থাৎ <math>p</math> কে <math>\text{২}^n</math> দিয়ে ভাগ করলে যে ভাগশেষ পাওয়া যাবে সেটাই কাউন্টারের মান।
'''উদাহরণ:''' ৩-বিট কাউন্টারে <math>\text{২৩}</math> পালস দেওয়া হলে কাউন্টারের মান কত?
<math>\text{২৩} \mod \text{২}^\text{৩} = \text{২৩} \mod \text{৮} = \text{৭}</math>
(কারণ <math>\text{২৩} = \text{২} \times \text{৮} + \text{৭}</math>)
তাই কাউন্টারের মান হবে <math>\text{৭}</math> অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১১১}</math>।
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: ২-বিট কাউন্টারের সম্পূর্ণ বিশ্লেষণ ===
একটি ২-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math>। পরপর ৫টি পালস দেওয়া হলো। প্রতিটি পালসের পরে অবস্থা নির্ণয় করো।
সমাধান:
প্রথমে মনে করো: ২-বিট কাউন্টার চক্রাকারে গণনা করে: <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০} \to \ldots</math>
প্রারম্ভিক অবস্থা: <math>\text{১১}</math> (দশমিক <math>\text{৩}</math>)
{| class="wikitable" style="text-align:center;"
|+ উদাহরণ ১ সমাধান
! পালস !! বর্তমান দশমিক মান !! পরবর্তী দশমিক মান !! <math>Q_1 Q_0</math>
|-
| শুরু || <math>\text{৩}</math> || <math>\text{৩}</math> || <math>\text{১১}</math>
|-
| ১ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|-
| ২য় || <math>\text{০}</math> || <math>(\text{০}+\text{১}) \mod \text{৪} = \text{১}</math> || <math>\text{০১}</math>
|-
| ৩য় || <math>\text{১}</math> || <math>(\text{১}+\text{১}) \mod \text{৪} = \text{২}</math> || <math>\text{১০}</math>
|-
| ৪র্থ || <math>\text{২}</math> || <math>(\text{২}+\text{১}) \mod \text{৪} = \text{৩}</math> || <math>\text{১১}</math>
|-
| ৫ম || <math>\text{৩}</math> || <math>(\text{৩}+\text{১}) \mod \text{৪} = \text{০}</math> || <math>\text{০০}</math>
|}
=== উদাহরণ ২: ৩-বিট কাউন্টারে নির্দিষ্ট পালসের পরে অবস্থা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math>। <math>\text{৪৫}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
সমাধান:
৩-বিট কাউন্টারের মডুলো <math>= \text{২}^\text{৩} = \text{৮}</math>
<math>\text{৪৫} \mod \text{৮} = ?</math>
<math>\text{৪৫} = \text{৫} \times \text{৮} + \text{৫}</math>
তাই ভাগশেষ <math>= \text{৫}</math>
কাউন্টারের মান: <math>\text{৫}</math>, অর্থাৎ <math>Q_2 Q_1 Q_0 = \text{১০১}</math>
=== উদাহরণ ৩: কম্পাঙ্ক গণনা ===
একটি ৩-বিট অ্যাসিনক্রোনাস কাউন্টারে বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{৪৮০০}</math> হার্টজ। <math>Q_0</math>, <math>Q_1</math> এবং <math>Q_2</math> এর কম্পাঙ্ক কত?
সমাধান:
:<math>Q_0 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{২}} = \text{২৪০০}</math> হার্টজ
:<math>Q_1 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৪}} = \text{১২০০}</math> হার্টজ
:<math>Q_2 \text{ এর কম্পাঙ্ক} = \frac{\text{৪৮০০}}{\text{৮}} = \text{৬০০}</math> হার্টজ
=== উদাহরণ ৪: ফ্লিপ-ফ্লপ সংখ্যা নির্ণয় ===
একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{৬৩}</math> পর্যন্ত গণনা করতে পারবে। কতটি ফ্লিপ-ফ্লপ দরকার?
সমাধান:
<math>\text{৬৩} + \text{১} = \text{৬৪} = \text{২}^{\text{৬}}</math>
তাই <math>n = \text{৬}</math>, অর্থাৎ <math>\text{৬}</math>টি ফ্লিপ-ফ্লপ দরকার।
=== উদাহরণ ৫: সর্বোচ্চ গণনার পরে অবস্থা ===
একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রাথমিক অবস্থা <math>Q_3 Q_2 Q_1 Q_0 = \text{১১১১}</math> (দশমিক <math>\text{১৫}</math>)। একটি পালস দেওয়ার পরে অবস্থা কী হবে?
সমাধান:
দশমিক <math>\text{১৫}</math> এর পরের মান: <math>(\text{১৫} + \text{১}) \mod \text{১৬} = \text{০}</math>
তাই কাউন্টার <math>\text{০}</math> তে ফিরে যাবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০০০০}</math>
এটাই একটি সম্পূর্ণ চক্রের শেষ।
=== উদাহরণ ৬: বিলম্ব গণনা ===
একটি ৫-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>t_{pd} = \text{১৫}</math> ন্যানোসেকেন্ড। সর্বোচ্চ মোট বিলম্ব কত এবং সর্বোচ্চ কম্পাঙ্ক কত?
সমাধান:
সর্বোচ্চ মোট বিলম্ব: <math>\text{৫} \times \text{১৫} = \text{৭৫}</math> ন্যানোসেকেন্ড
সর্বোচ্চ কম্পাঙ্ক:
:<math>f_{max} = \frac{\text{১}}{\text{৭৫} \times \text{১০}^\text{-৯}} \approx \text{১৩.৩}</math> মেগাহার্টজ
== অনুশীলনী ==
# একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে সর্বোচ্চ কত পর্যন্ত গণনা করা যায়?
# একটি <math>\text{৬}</math>-বিট রিপল কাউন্টারে মোট কতটি অবস্থা আছে?
# ৩-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০০০}</math> থেকে <math>\text{১১}</math> পালস দেওয়ার পরে অবস্থা কী?
# ৪-বিট কাউন্টারে প্রাথমিক অবস্থা <math>\text{০১১০}</math> থেকে শুরু করে <math>\text{৫}</math> পালস দেওয়ার পরে দশমিক মান কত?
# বাহ্যিক ঘড়ির কম্পাঙ্ক <math>\text{১৬০০০}</math> হার্টজ হলে ৪-বিট কাউন্টারের <math>Q_3</math> এর কম্পাঙ্ক কত?
# একটি কাউন্টার <math>\text{০}</math> থেকে <math>\text{১২৭}</math> পর্যন্ত গণনা করতে পারে। এটি কত বিটের এবং কতটি ফ্লিপ-ফ্লপ দরকার?
# প্রতিটি ফ্লিপ-ফ্লপের বিস্তার বিলম্ব <math>\text{৮}</math> ন্যানোসেকেন্ড হলে ৪-বিট রিপল কাউন্টারের সর্বোচ্চ কম্পাঙ্ক কত?
# ২-বিট কাউন্টারে <math>Q_1</math> কখন পরিবর্তন হয়?
# ৩-বিট কাউন্টারে <math>\text{০১১} \to \text{১০০}</math> পরিবর্তনের সময় কতটি ক্ষণিক ভুল অবস্থা দেখা যায়?
# একটি ৩-বিট কাউন্টারে <math>\text{১০০}</math> পালস দেওয়ার পরে অবস্থা কী?
# অ্যাসিনক্রোনাস কাউন্টারে সমান্তরাল লোড সম্ভব কীভাবে?
# ৪-বিট রিপল কাউন্টারে সব ফ্লিপ-ফ্লপ একসাথে পরিবর্তন হওয়ার সম্ভাবনা কোন পালসে সবচেয়ে বেশি?
# n-বিট কাউন্টারের <math>Q_{n-1}</math> এর কম্পাঙ্ক বাহ্যিক ঘড়ির কম্পাঙ্কের কত ভাগ?
# ৫-বিট কাউন্টারে <math>\text{১৯৮}</math> পালস দেওয়ার পরে কাউন্টারের মান কত?
# দুটি ২-বিট কাউন্টার যদি ক্যাসকেডে যুক্ত করা হয় তাহলে মোট কত পর্যন্ত গণনা করা যাবে?
'''উত্তর:'''
# <math>\text{২}^\text{৪} - \text{১} = \text{১৫}</math>
# <math>\text{২}^\text{৬} = \text{৬৪}</math>টি অবস্থা
# <math>\text{১১} \mod \text{৮} = \text{৩}</math>, তাই <math>Q_2 Q_1 Q_0 = \text{০১১}</math>
# প্রারম্ভিক দশমিক মান: <math>\text{০১১০} = \text{৬}</math>; <math>(\text{৬}+\text{৫}) \mod \text{১৬} = \text{১১}</math>
# <math>\frac{\text{১৬০০০}}{\text{২}^\text{৪}} = \frac{\text{১৬০০০}}{\text{১৬}} = \text{১০০০}</math> হার্টজ
# <math>\text{১২৭}+\text{১} = \text{১২৮} = \text{২}^\text{৭}</math>; ৭-বিট, ৭টি ফ্লিপ-ফ্লপ
# <math>f_{max} = \frac{\text{১}}{\text{৪} \times \text{৮} \times \text{১০}^{-9}} = \frac{\text{১}}{\text{৩২ ন্যানো}} \approx \text{৩১.২৫}</math> মেগাহার্টজ
# যখন <math>Q_0</math> নিম্নগামী প্রান্ত দেখায়, অর্থাৎ <math>Q_0: \text{১} \to \text{০}</math>
# দুটি ক্ষণিক অবস্থা: <math>\text{০১০}</math> এবং <math>\text{০০০}</math>
# <math>\text{১০০} \mod \text{৮} = \text{৪}</math>; <math>Q_2 Q_1 Q_0 = \text{১০০}</math>
# প্রিসেট ও ক্লিয়ার ইনপুট ব্যবহার করে প্রতিটি ফ্লিপ-ফ্লপ আলাদাভাবে সেট বা রিসেট করা যায়
# ৮ম, ১৬তম, ২৪তম পালসে (যখন সর্বোচ্চ বিটও পরিবর্তন হয়)
# <math>\frac{\text{১}}{\text{২}^n}</math> ভাগ
# <math>\text{১৯৮} \mod \text{৩২} = \text{১৯৮} - \text{৬} \times \text{৩২} = \text{১৯৮} - \text{১৯২} = \text{৬}</math>; <math>Q_4 Q_3 Q_2 Q_1 Q_0 = \text{০০১১০}</math>
# মোট গণনার পরিসর: <math>\text{২}^\text{২} \times \text{২}^\text{২} = \text{২}^\text{৪} = \text{১৬}</math>, অর্থাৎ <math>\text{০}</math> থেকে <math>\text{১৫}</math>
== নিম্নগামী কাউন্টার ও মডুলো কাউন্টার ==
আগের ভাগে আমরা দেখেছিলাম টি ফ্লিপ-ফ্লপ কীভাবে প্রতিটি ক্লকে টগল করে এবং সেগুলোকে পর পর সাজিয়ে কীভাবে ০ থেকে উপরের দিকে গণনা করা যায়। উর্ধ্বগামী গণনা বুঝে গেলে একটা স্বাভাবিক প্রশ্ন মাথায় আসে: উল্টো দিক থেকে গণনা করা যায় কি? অর্থাৎ ৭ থেকে শুরু করে ৬, ৫, ৪... ০ পর্যন্ত নামা? এই ভাগে সেটাই দেখব, এবং তার চেয়েও মজার একটা জিনিস শিখব: নির্দিষ্ট একটা সংখ্যায় পৌঁছালে নিজে থেকে শূন্য হয়ে যাওয়া কাউন্টার।
=== নিম্নগামী রিপল কাউন্টার ===
==== উপমা: রকেট উৎক্ষেপণের উল্টো গণনা ====
রকেট উৎক্ষেপণের আগে কন্ট্রোল রুমে যে গণনা শোনা যায় সেটা উল্টো দিক থেকে হয়: ১০, ৯, ৮, ৭... ৩, ২, ১, শূন্য। এই উল্টো গণনাই নিম্নগামী কাউন্টারের কাজ।
বাস্তব জীবনে এই ধরনের উল্টো গণনার প্রয়োজন অনেক জায়গায়। মাইক্রোওয়েভ ওভেনে সময় কমতে থাকে, সিনেমার টিকেট কাউন্টারে খালি আসনের সংখ্যা কমতে থাকে, স্মার্টফোনের ব্যাটারি চার্জ কমতে থাকে। এগুলো সবই নিম্নগামী কাউন্টারের প্রয়োগ।
==== উর্ধ্বগামী থেকে নিম্নগামীর মূল পার্থক্য ====
উর্ধ্বগামী কাউন্টারে প্রতিটি পরের ফ্লিপ-ফ্লপের ঘড়ি হিসেবে আগের ফ্লিপ-ফ্লপের <math>Q</math> আউটপুট ব্যবহার করা হয়। নিম্নগামী কাউন্টার তৈরি করতে কেবল একটা জিনিস বদলে দিতে হয়: <math>Q</math> এর বদলে <math>\bar{Q}</math> ব্যবহার করো।
এটা কেন কাজ করে? কারণ <math>Q</math> থেকে <math>\text{০}</math> থেকে <math>\text{১}</math> হওয়ার সময় (উঠতি প্রান্তে) পরের ফ্লিপ-ফ্লপ টগল করে উর্ধ্বগামী হয়। কিন্তু <math>\bar{Q}</math> ঠিক উল্টো সময়ে পরিবর্তন হয়, অর্থাৎ <math>Q</math> যখন <math>\text{১}</math> থেকে <math>\text{০}</math> হয় (নামতি প্রান্তে)। ফলে গণনা উল্টো দিকে যায়।
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী ও নিম্নগামী কাউন্টারের মূল পার্থক্য
! বৈশিষ্ট্য !! উর্ধ্বগামী কাউন্টার !! নিম্নগামী কাউন্টার
|-
| পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| টগলের সময় || <math>Q</math> এর উঠতি প্রান্তে || <math>\bar{Q}</math> এর উঠতি প্রান্তে (<math>Q</math> এর নামতি প্রান্তে)
|-
| গণনার দিক || ০ থেকে উপরে || সর্বোচ্চ থেকে নিচে
|-
| ২-বিটে গণনা ক্রম || <math>\text{০০} \to \text{০১} \to \text{১০} \to \text{১১} \to \text{০০}</math> || <math>\text{১১} \to \text{১০} \to \text{০১} \to \text{০০} \to \text{১১}</math>
|}
==== ২-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
দুটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়, উভয়ের <math>T = \text{১}</math>। প্রথম ফ্লিপ-ফ্লপ (<math>FF_0</math>) মূল ঘড়ি থেকে চালিত হয়। দ্বিতীয় ফ্লিপ-ফ্লপ (<math>FF_1</math>) চালিত হয় <math>FF_0</math> এর <math>\bar{Q}_0</math> থেকে।
উর্ধ্বগামীতে ছিল: <math>CLK_1 = Q_0</math>
নিম্নগামীতে হলো: <math>CLK_1 = \bar{Q}_0</math>
একটাই পরিবর্তন, কিন্তু ফল সম্পূর্ণ উল্টো।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক মান !! কী ঘটছে
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || প্রাথমিক অবস্থা (সর্বোচ্চ)
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> টগল, <math>\bar{Q}_0</math> এর উঠতি প্রান্তে <math>Q_1</math> টগল
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>Q_0</math> টগল, <math>Q_1</math> স্থির
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৩} \to \cdots</math>
===== টাইমিং চিত্র বর্ণনা =====
মূল ঘড়ি: নিয়মিত পর্যায়ক্রমিক সংকেত।
<math>Q_0</math>: মূল ঘড়ির নামতি প্রান্তে টগল করে (নামতি প্রান্ত ট্রিগার ধরলে)। কম্পাঙ্ক মূল ঘড়ির অর্ধেক।
<math>\bar{Q}_0</math>: সবসময় <math>Q_0</math> এর বিপরীত।
<math>Q_1</math>: <math>\bar{Q}_0</math> এর উঠতি প্রান্তে টগল করে, অর্থাৎ <math>Q_0</math> এর নামতি প্রান্তে। কম্পাঙ্ক মূল ঘড়ির এক-চতুর্থাংশ।
{| class="wikitable" style="text-align:center; width:90%;"
|+ ২-বিট নিম্নগামী কাউন্টারের টাইমিং বিশ্লেষণ
! সময় অক্ষে ঘটনা !! <math>Q_0</math> পরিবর্তন !! <math>\bar{Q}_0</math> পরিবর্তন !! <math>Q_1</math> পরিবর্তন
|-
| ক্লক ১ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{১} \to \text{০}</math> (টগল)
|-
| ক্লক ২ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|-
| ক্লক ৩ নামে || <math>\text{১} \to \text{০}</math> || <math>\text{০} \to \text{১}</math> (উঠতি) || <math>\text{০} \to \text{১}</math> (টগল)
|-
| ক্লক ৪ নামে || <math>\text{০} \to \text{১}</math> || <math>\text{১} \to \text{০}</math> (নামতি) || পরিবর্তন নেই
|}
==== ৩-বিট নিম্নগামী রিপল কাউন্টার ====
===== সার্কিটের গঠন =====
তিনটি টি ফ্লিপ-ফ্লপ, সবার <math>T = \text{১}</math>।
সংযোগ বিধি:
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>\bar{Q}_0</math> থেকে চালিত
* <math>FF_2</math>: <math>\bar{Q}_1</math> থেকে চালিত
প্যাটার্নটা স্পষ্ট: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:95%;"
|+ ৩-বিট নিম্নগামী কাউন্টারের সত্যক সারণী
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সর্বোচ্চ অবস্থা
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>Q_0</math> টগল
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৩ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>Q_0</math> টগল
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || সব তিনটি টগল
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>Q_0</math> টগল
|-
| ৬ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>Q_0</math> ও <math>Q_1</math> টগল
|-
| ৭ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || সর্বনিম্ন অবস্থা
|-
| ৮ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || চক্র পুনরায় শুরু
|}
গণনার ক্রম: <math>\text{৭} \to \text{৬} \to \text{৫} \to \text{৪} \to \text{৩} \to \text{২} \to \text{১} \to \text{০} \to \text{৭} \to \cdots</math>
==== ৪-বিট নিম্নগামী রিপল কাউন্টার ====
চারটি টি ফ্লিপ-ফ্লপ ব্যবহার করা হয়। সংযোগ বিধি একই: প্রতিটি ফ্লিপ-ফ্লপ আগেরটির <math>\bar{Q}</math> থেকে ঘড়ি পায়।
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৪-বিট নিম্নগামী কাউন্টারের সম্পূর্ণ সত্যক সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১৪}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১৩}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১২}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১১}</math>
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| ৬ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math>
|-
| ৭ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math>
|-
| ৮ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math>
|-
| ৯ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math>
|-
| ১০ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math>
|-
| ১১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math>
|-
| ১২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ১৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ১৫ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১৫}</math>
|}
গণনার ক্রম: <math>\text{১৫} \to \text{১৪} \to \cdots \to \text{১} \to \text{০} \to \text{১৫} \to \cdots</math>
==== উর্ধ্বগামী ও নিম্নগামী কাউন্টারের তুলনামূলক সারণি ====
{| class="wikitable" style="width:100%; text-align:center;"
|+ উর্ধ্বগামী বনাম নিম্নগামী কাউন্টার
! বৈশিষ্ট্য !! উর্ধ্বগামী !! নিম্নগামী
|-
| ঘড়ির উৎস || আগেরটির <math>Q</math> || আগেরটির <math>\bar{Q}</math>
|-
| ২-বিট গণনা ক্রম || <math>\text{০,১,২,৩,০,...}</math> || <math>\text{৩,২,১,০,৩,...}</math>
|-
| ৩-বিট গণনা ক্রম || <math>\text{০} \to \text{৭} \to \text{০}</math> || <math>\text{৭} \to \text{০} \to \text{৭}</math>
|-
| প্রারম্ভিক অবস্থা (সাধারণত) || সব <math>\text{০}</math> || সব <math>\text{১}</math>
|-
| প্রয়োগ || ক্রমবর্ধমান গণনা || টাইমার, কাউন্টডাউন
|-
| হার্ডওয়্যার পার্থক্য || কেবল ঘড়ির উৎস আলাদা || কেবল ঘড়ির উৎস আলাদা
|}
=== উভয়মুখী কাউন্টার ===
==== উপমা: উপরে-নিচে চলা লিফট ====
একটি বহুতল ভবনের লিফট কল্পনা করো। একটি বোতাম চাপলে লিফট উপরে যায়, আরেকটি বোতাম চাপলে নিচে যায়। যখন ওপরের বোতাম চাপা থাকে তখন লিফট প্রতিটি তলায় উপরে ওঠে, যখন নিচের বোতাম চাপা থাকে তখন প্রতিটি তলায় নিচে নামে।
উভয়মুখী কাউন্টারও ঠিক এভাবে কাজ করে। একটি নির্বাচন সংকেত <math>M</math> ঠিক করে দেয় কাউন্টার কোন দিকে গণনা করবে।
==== নির্বাচন সংকেত <math>M</math> ====
* <math>M = \text{০}</math>: উর্ধ্বগামী (উপরের বোতাম চাপা)
* <math>M = \text{১}</math>: নিম্নগামী (নিচের বোতাম চাপা)
==== বুলিয়ান রাশি: পরবর্তী ঘড়ির উৎস ====
পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস নির্ভর করে <math>M</math> এর উপর:
:<math>CLK_{n+1} = (\bar{M} \cdot Q_n) + (M \cdot \bar{Q}_n)</math>
এই রাশিটি আসলে একটি মাল্টিপ্লেক্সার:
* <math>M = \text{০}</math> হলে: <math>CLK_{n+1} = Q_n</math> (উর্ধ্বগামী)
* <math>M = \text{১}</math> হলে: <math>CLK_{n+1} = \bar{Q}_n</math> (নিম্নগামী)
লক্ষ করো, এই রাশিটি এক্স-অর গেট দিয়েও লেখা যায়:
:<math>CLK_{n+1} = Q_n \oplus M</math>
কারণ যখন <math>M = \text{০}</math>, <math>Q_n \oplus \text{০} = Q_n</math>; এবং যখন <math>M = \text{১}</math>, <math>Q_n \oplus \text{১} = \bar{Q}_n</math>।
তাই প্রতিটি ফ্লিপ-ফ্লপের ঘড়ির সামনে একটি মাত্র এক্স-অর গেট রাখলেই উভয়মুখী কাউন্টার তৈরি হয়।
==== ২-বিট উভয়মুখী কাউন্টার ====
===== সার্কিটের গঠন =====
* দুটি টি ফ্লিপ-ফ্লপ, <math>T = \text{১}</math>
* <math>FF_0</math>: মূল ঘড়ি থেকে চালিত
* <math>FF_1</math>: <math>Q_0 \oplus M</math> থেকে চালিত
===== সত্যক সারণী (<math>M = \text{০}</math>, উর্ধ্বগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ উর্ধ্বগামী অবস্থায় (<math>M = \text{০}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ২ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ৪ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|}
===== সত্যক সারণী (<math>M = \text{১}</math>, নিম্নগামী) =====
{| class="wikitable" style="text-align:center; width:90%;"
|+ নিম্নগামী অবস্থায় (<math>M = \text{১}</math>)
! ক্লক !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক
|-
| শুরু || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|-
| ১ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math>
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math>
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math>
|-
| ৪ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math>
|}
===== উদাহরণ: মাঝপথে দিক পরিবর্তন =====
ধরো কাউন্টার <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১) অবস্থায় আছে। এখন <math>M</math> পরিবর্তন করা হলো:
{| class="wikitable" style="text-align:center; width:90%;"
|+ মাঝপথে দিক পরিবর্তনের উদাহরণ
! ক্লক !! <math>M</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| — || — || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || প্রারম্ভিক অবস্থা
|-
| ১ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || উর্ধ্বগামী
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || উর্ধ্বগামী
|-
| ৩ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || নিম্নগামী (দিক বদল)
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || নিম্নগামী
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || নিম্নগামী
|}
==== ৪-বিট উভয়মুখী কাউন্টারের ধারণা ====
৪-বিট উভয়মুখী কাউন্টারে চারটি ফ্লিপ-ফ্লপ এবং তিনটি এক্স-অর গেট লাগে। প্রতিটি এক্স-অর গেট <math>Q_n</math> ও <math>M</math> এর এক্স-অর করে পরের ফ্লিপ-ফ্লপের ঘড়ি দেয়।
বাস্তবে বহুল ব্যবহৃত আইসি ৭৪১৯৩ হলো একটি ৪-বিট উর্ধ্ব/নিম্নগামী কাউন্টার। এতে আলাদা দুটো ইনপুট থাকে: একটি উর্ধ্বগামী ঘড়ি ও একটি নিম্নগামী ঘড়ি।
{| class="wikitable" style="width:90%; text-align:center;"
|+ ৪-বিট উভয়মুখী কাউন্টারের সারসংক্ষেপ
! <math>n</math>-বিটে !! মোট অবস্থা !! উর্ধ্বগামী পরিসর !! নিম্নগামী পরিসর
|-
| <math>\text{২}</math>-বিট || <math>\text{৪}</math> || <math>\text{০} \to \text{৩}</math> || <math>\text{৩} \to \text{০}</math>
|-
| <math>\text{৩}</math>-বিট || <math>\text{৮}</math> || <math>\text{০} \to \text{৭}</math> || <math>\text{৭} \to \text{০}</math>
|-
| <math>\text{৪}</math>-বিট || <math>\text{১৬}</math> || <math>\text{০} \to \text{১৫}</math> || <math>\text{১৫} \to \text{০}</math>
|-
| <math>\text{n}</math>-বিট || <math>2^n</math> || <math>\text{০} \to 2^n-\text{১}</math> || <math>2^n-\text{১} \to \text{০}</math>
|}
=== মডুলো-<math>N</math> কাউন্টার ===
==== উপমা: ঘড়ির কাঁটা ১২ তে ফিরে আসে ====
দেওয়াল ঘড়ির দিকে তাকাও। মিনিটের কাঁটা ১২ থেকে শুরু হয়ে ১, ২, ৩... ১১ পার করে আবার ১২ তে ফিরে আসে। ১২ এর পরে ১৩ আসে না, সরাসরি ১ বা ১২ তে ফিরে যায়।
এটাই মডুলো-১২ কাউন্টার। এখানে ১২ হলো মডুলো সংখ্যা, যার মানে কাউন্টার ১২টি অবস্থায় ঘুরতে থাকে।
==== মডুলো মানে কী? ====
মডুলো-<math>N</math> কাউন্টার হলো এমন একটি কাউন্টার যা <math>0</math> থেকে <math>N-1</math> পর্যন্ত গণনা করে এবং তারপর আবার <math>0</math> তে ফিরে আসে। মোট <math>N</math>টি ভিন্ন অবস্থা থাকে।
{| class="wikitable" style="text-align:center; width:70%;"
|+ মডুলো-<math>N</math> কাউন্টারের সাধারণ বৈশিষ্ট্য
! বৈশিষ্ট্য !! মান
|-
| গণনার পরিসর || <math>\text{০}</math> থেকে <math>N-\text{১}</math>
|-
| মোট অবস্থা || <math>N</math>টি
|-
| ঘুরে আসার পরে || আবার <math>\text{০}</math> থেকে শুরু
|-
| প্রয়োজনীয় ফ্লিপ-ফ্লপ || <math>\lceil \log_2 N \rceil</math>টি
|}
যেকোনো স্বাভাবিক সংখ্যার জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করা যায়, কিন্তু সবচেয়ে সহজ হলো যখন <math>N = 2^n</math>, অর্থাৎ <math>N = \text{২, ৪, ৮, ১৬, ...}</math>। অন্য যেকোনো <math>N</math> এর জন্য বাড়তি রিসেট সার্কিট দরকার।
==== রিসেট পদ্ধতি: ন্যান্ড গেট দিয়ে স্বয়ংক্রিয় রিসেট ====
মডুলো-<math>N</math> কাউন্টার তৈরির মূল কৌশল হলো: কাউন্টার যখনই <math>N</math>-এ পৌঁছায়, সঙ্গে সঙ্গে তাকে <math>\text{০}</math>তে ফিরিয়ে আনো।
এটা করা হয় এভাবে:
# কাউন্টারের আউটপুট দেখে <math>N</math> সংখ্যাটি চেনো
# সেই মুহূর্তে সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে <math>\text{০}</math> পাঠাও
# ফ্লিপ-ফ্লপগুলো তাৎক্ষণিক <math>\text{০}</math> হয়ে যায়
একটু মনে রাখো: অধিকাংশ টি বা ডি ফ্লিপ-ফ্লপে ক্লিয়ার পিন অ্যাক্টিভ-লো, মানে <math>\text{০}</math> দিলে রিসেট হয়।
<math>N</math> সংখ্যাটি চেনার জন্য ন্যান্ড গেট ব্যবহার করা হয়। <math>N</math>-এর বাইনারি প্রতিনিধিত্বে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> আউটপুটকে ন্যান্ড গেটে দেওয়া হয়।
উদাহরণ: মডুলো-৫ কাউন্টারে <math>N = \text{৫} = \text{১০১}</math> বাইনারি। তাই <math>Q_2</math> এবং <math>Q_0</math> (যেখানে বিট <math>\text{১}</math>) একটি ন্যান্ড গেটে দেওয়া হয়।
==== মডুলো-৫ কাউন্টার ====
===== ধারণা =====
৫টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪}</math>। ৪ এর পরে আবার ০। মাইক্রোওয়েভ ওভেনের কল্পনা করো যেটা ৫ ধাপে ঘোরে।
৩টি ফ্লিপ-ফ্লপ লাগবে (কারণ <math>2^2 = \text{৪} < \text{৫} \leq \text{৮} = 2^3</math>)।
===== রিসেট কখন হবে? =====
<math>N = \text{৫} = \text{১০১}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_0 = \text{১}</math> হলেই কাউন্টারে ৫ হয়েছে বুঝতে হবে। কারণ <math>Q_2 \cdot Q_0 = \text{১}</math> শুধুমাত্র তখনই হয় যখন কাউন্টার ৫ (অন্যান্য অবস্থায় হয় <math>Q_2</math> নয়তো <math>Q_0</math> শূন্য)।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_0}</math> (ন্যান্ড গেটের আউটপুট) সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে।
===== বিস্তারিত সার্কিট বিশ্লেষণ =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৫ কাউন্টারের অবস্থা বিশ্লেষণ
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! <math>Q_2 \cdot Q_0</math> !! রিসেট সংকেত !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || স্বাভাবিক গণনা
|-
| ৫* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> (সক্রিয়!) || তাৎক্ষণিক রিসেট!
|-
| ৫ (রিসেটের পর) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> (নিষ্ক্রিয়) || আবার শুরু
|}
* অবস্থা ৫ একটি ক্ষণিক অবস্থা, কার্যত দেখা যায় না।
===== গণনার প্রকৃত ক্রম =====
<math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to (\text{৫ হওয়ার সাথে সাথে রিসেট}) \to \text{০} \to \text{১} \to \cdots</math>
==== মডুলো-৬ কাউন্টার ====
===== ধারণা =====
৬টি অবস্থা: <math>\text{০, ১, ২, ৩, ৪, ৫}</math>। এর পরে আবার ০। ডাইস ছুড়লে ১ থেকে ৬ পায়, কিন্তু এই কাউন্টার ০ থেকে ৫ পর্যন্ত যায়।
৩টি ফ্লিপ-ফ্লপ লাগবে।
===== রিসেট কখন? =====
<math>N = \text{৬} = \text{১১০}</math> বাইনারিতে।
<math>Q_2 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলেই ৬ হয়েছে বোঝা যাবে।
রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1}</math>
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-৬ কাউন্টারের অবস্থা
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট হবে কি? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ৬ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{০} \to \cdots</math>
==== মডুলো-১০ কাউন্টার (দশমিক কাউন্টার) ====
===== বিসিডি সংখ্যার সাথে সম্পর্ক =====
তোমার কাছের ডিজিটাল ঘড়িতে <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত সংখ্যা দেখা যায়। প্রতিটি দশমিক সংখ্যাকে ৪-বিটে লেখার পদ্ধতিকে বিসিডি বলা হয়। বিসিডিতে কেবল <math>\text{০০০০}</math> থেকে <math>\text{১০০১}</math> (<math>\text{০}</math> থেকে <math>\text{৯}</math>) ব্যবহার হয়। <math>\text{১০১০}</math> থেকে <math>\text{১১১১}</math> (<math>\text{১০}</math> থেকে <math>\text{১৫}</math>) অব্যবহৃত।
মডুলো-১০ কাউন্টার ঠিক এই কাজ করে: ০ থেকে ৯ পর্যন্ত গণনা করে তারপর ০ তে ফিরে আসে।
===== রিসেট কখন? =====
<math>N = \text{১০} = \text{১০১০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_1 = \text{১}</math> একসাথে হলে ১০ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_1}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
===== সম্পূর্ণ সত্যক সারণী =====
{| class="wikitable" style="text-align:center; width:100%;"
|+ মডুলো-১০ কাউন্টারের অবস্থা সারণী
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট? !! মন্তব্য
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || স্বাভাবিক
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না || স্বাভাবিক
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না || স্বাভাবিক
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না || স্বাভাবিক
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না || স্বাভাবিক
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না || স্বাভাবিক
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না || স্বাভাবিক
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না || স্বাভাবিক
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না || স্বাভাবিক
|-
| ৯ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || না || স্বাভাবিক
|-
| ১০* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math> || হ্যাঁ! || তাৎক্ষণিক রিসেট
|-
| ১০ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না || চক্র শুরু
|}
প্রকৃত গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \cdots \to \text{৮} \to \text{৯} \to \text{০} \to \cdots</math>
===== বিসিডি কাউন্টারের প্রয়োগ =====
দুটো মডুলো-১০ কাউন্টার একসাথে সংযুক্ত করলে <math>\text{০০}</math> থেকে <math>\text{৯৯}</math> পর্যন্ত গণনা করা যায়। তিনটি সংযুক্ত করলে <math>\text{০০০}</math> থেকে <math>\text{৯৯৯}</math> পর্যন্ত। ডিজিটাল ঘড়িতে মিনিট গণনায় এটাই ব্যবহার হয়।
==== মডুলো-১২ কাউন্টার ====
===== ঘড়িতে প্রয়োগ =====
দুপুর ১২টার পরে ঘড়ি ১ তে যায়, ১৩ তে নয়। এটা মডুলো-১২।
<math>N = \text{১২} = \text{১১০০}</math> বাইনারিতে।
<math>Q_3 = \text{১}</math> এবং <math>Q_2 = \text{১}</math> একসাথে হলে ১২ হয়েছে।
রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_2}</math>
৪টি ফ্লিপ-ফ্লপ লাগবে।
{| class="wikitable" style="text-align:center; width:90%;"
|+ মডুলো-১২ কাউন্টারের গণনা ক্রম
! গণনা !! ০ !! ১ !! ২ !! ৩ !! ৪ !! ৫ !! ৬ !! ৭ !! ৮ !! ৯ !! ১০ !! ১১ !! পুনরায় ০
|-
| বাইনারি || <math>\text{০০০০}</math> || <math>\text{০০০১}</math> || <math>\text{০০১০}</math> || <math>\text{০০১১}</math> || <math>\text{০১০০}</math> || <math>\text{০১০১}</math> || <math>\text{০১১০}</math> || <math>\text{০১১১}</math> || <math>\text{১০০০}</math> || <math>\text{১০০১}</math> || <math>\text{১০১০}</math> || <math>\text{১০১১}</math> || রিসেট (<math>\text{১১০০}</math> হওয়ার সাথে সাথে)
|}
==== যেকোনো মডুলো-<math>N</math> কাউন্টার তৈরির সাধারণ পদ্ধতি ====
যেকোনো <math>N</math> এর জন্য মডুলো-<math>N</math> কাউন্টার তৈরি করতে নিচের ধাপগুলো অনুসরণ করো:
ধাপ ১: <math>N</math> কে বাইনারিতে লেখো
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ সংখ্যা নির্ধারণ করো: <math>\lceil \log_2 N \rceil</math>
ধাপ ৩: <math>N</math> এর বাইনারিতে যে বিটগুলো <math>\text{১}</math>, সেই ফ্লিপ-ফ্লপগুলোর <math>Q</math> চিহ্নিত করো
ধাপ ৪: চিহ্নিত <math>Q</math>গুলোকে একটি ন্যান্ড গেটে সংযুক্ত করো
ধাপ ৫: ন্যান্ড গেটের আউটপুট সব ফ্লিপ-ফ্লপের ক্লিয়ার পিনে সংযুক্ত করো
ধাপ ৬: স্বাভাবিক উর্ধ্বগামী রিপল কাউন্টার হিসেবে বাকি সংযোগ দাও
{| class="wikitable" style="width:100%; text-align:center;"
|+ বিভিন্ন <math>N</math> এর জন্য মডুলো কাউন্টারের বিশ্লেষণ
! মডুলো <math>N</math> !! বাইনারি !! ফ্লিপ-ফ্লপ সংখ্যা !! রিসেট শর্ত !! প্রয়োগ
|-
| <math>\text{৩}</math> || <math>\text{০১১}</math> || <math>\text{২}</math> || <math>Q_1 \cdot Q_0 = \text{১}</math> || তিনভাগা ঘুরন্ত যন্ত্র
|-
| <math>\text{৫}</math> || <math>\text{১০১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_0 = \text{১}</math> || পেন্টাগন আলো
|-
| <math>\text{৬}</math> || <math>\text{১১০}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 = \text{১}</math> || ছয়ভাগা সিকোয়েন্সার
|-
| <math>\text{৭}</math> || <math>\text{১১১}</math> || <math>\text{৩}</math> || <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math> || সাত দিনের চক্র
|-
| <math>\text{১০}</math> || <math>\text{১০১০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_1 = \text{১}</math> || দশমিক গণনা, বিসিডি
|-
| <math>\text{১২}</math> || <math>\text{১১০০}</math> || <math>\text{৪}</math> || <math>Q_3 \cdot Q_2 = \text{১}</math> || ঘড়ির কাঁটা
|-
| <math>\text{১৬}</math> || <math>\text{১০০০০}</math> || <math>\text{৪}</math> || স্বাভাবিক উপচে পড়া || হেক্সাডেসিমেল
|-
| <math>\text{৬০}</math> || <math>\text{১১১১০০}</math> || <math>\text{৬}</math> || <math>Q_5 \cdot Q_4 \cdot Q_3 \cdot Q_2 = \text{১}</math> || সেকেন্ড, মিনিট গণনা
|-
| <math>\text{২৪}</math> || <math>\text{০১১০০০}</math> || <math>\text{৫}</math> || <math>Q_4 \cdot Q_3 = \text{১}</math> || ২৪ ঘণ্টার ঘড়ি
|}
=== বিস্তারিত টাইমিং বিশ্লেষণ ===
==== রিপল প্রভাব ও ক্ষণিক ভুল ====
এখানে একটা গুরুত্বপূর্ণ সমস্যা আছে যেটা অ্যাসিনক্রোনাস কাউন্টারের মূল দুর্বলতা।
উপমা: একটি সারিতে দশজন মানুষ দাঁড়িয়ে আছে। প্রথম জন হাত তোলে, তারপর দ্বিতীয় জন দেখে হাত তোলে, তারপর তৃতীয় জন দেখে হাত তোলে, এভাবে চলতে থাকে। শেষ জনের হাত উঠতে একটু সময় লাগে কারণ সংকেত একজন থেকে আরেকজনে ধীরে ধীরে যায়।
অ্যাসিনক্রোনাস কাউন্টারেও ঠিক এই সমস্যা। <math>FF_0</math> টগল করে, তারপর তার আউটপুট পরিবর্তন হলে <math>FF_1</math> টগল করে, তারপর <math>FF_2</math>, এভাবে চলে। প্রতিটি ফ্লিপ-ফ্লপের টগলে একটু সময় লাগে, এই সময়কে প্রচার বিলম্ব বলা হয়।
==== ৩-বিট কাউন্টারে ক্ষণিক ভুল ====
ধরো ৩-বিট উর্ধ্বগামী কাউন্টার ৭ (<math>\text{১১১}</math>) থেকে ০ (<math>\text{০০০}</math>) তে যাচ্ছে।
আদর্শ জগতে এটা তাৎক্ষণিক হওয়া উচিত: <math>\text{১১১} \to \text{০০০}</math>।
কিন্তু বাস্তবে যা হয়:
{| class="wikitable" style="text-align:center; width:100%;"
|+ ৭ থেকে ০-তে যাওয়ার সময় ক্ষণিক ভুল অবস্থা
! সময় !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! বিবরণ
|-
| <math>t_0</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || ৮ম ক্লকের আগে
|-
| <math>t_0 + t_p</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>FF_0</math> টগল করেছে, ক্ষণিক ৬!
|-
| <math>t_0 + 2t_p</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>FF_1</math> টগল করেছে, ক্ষণিক ৪!
|-
| <math>t_0 + 3t_p</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>FF_2</math> টগল করেছে, সঠিক ০
|}
এখানে <math>t_p</math> হলো প্রতিটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব। মাঝের দুটো অবস্থা (<math>\text{৬}</math> ও <math>\text{৪}</math>) সঠিক নয়, এগুলো ক্ষণিক ভুল।
==== গ্লিচ ও তার প্রভাব ====
এই ক্ষণিক ভুল অবস্থাগুলোকে গ্লিচ বলা হয়।
{| class="wikitable" style="width:100%;"
|+ গ্লিচের প্রভাব ও সমাধান
! গ্লিচের ধরন !! কোথায় সমস্যা হয় !! সমাধান
|-
| কাউন্টারের আউটপুটে ভুল অবস্থা || ডিকোডার বা ডিসপ্লে ভুল সংখ্যা দেখায় || আউটপুট স্তরে রেজিস্টার ব্যবহার
|-
| মডুলো-<math>N</math> কাউন্টারে অনাকাঙ্ক্ষিত রিসেট || মাঝের ক্ষণিক অবস্থায় রিসেট হয়ে যেতে পারে || ন্যান্ড গেটের পরিবর্তে ক্লক-নিয়ন্ত্রিত রিসেট
|-
| বিস্তৃত কাউন্টারে বিলম্ব বৃদ্ধি || বেশি ফ্লিপ-ফ্লপ মানে বেশি বিলম্ব || সিনক্রোনাস কাউন্টার ব্যবহার
|}
মডুলো-<math>N</math> কাউন্টারে একটি বিশেষ সমস্যা আছে। যখন কাউন্টার <math>N</math>-এ পৌঁছায় এবং রিসেট হয়, তখন কিছু ক্ষণিক অবস্থা সৃষ্টি হতে পারে যেগুলো রিসেট শর্তের সাথে মিলে যায় এবং অনাকাঙ্ক্ষিতভাবে রিসেট ট্রিগার করে। তবে যেহেতু এই রিসেট অ্যাসিনক্রোনাস, সার্কিটটি সাধারণত স্বাভাবিকভাবে কাজ করে।
==== কতটি ফ্লিপ-ফ্লপের সর্বোচ্চ বিলম্ব ====
<math>n</math>টি ফ্লিপ-ফ্লপের রিপল কাউন্টারে সর্বোচ্চ বিলম্ব:
:<math>t_{সর্বোচ্চ} = n \times t_p</math>
যেখানে <math>t_p</math> হলো একটি ফ্লিপ-ফ্লপের প্রচার বিলম্ব।
যদি <math>t_p = \text{১০}</math> ন্যানোসেকেন্ড হয়, তাহলে:
* ৪-বিট কাউন্টারে: <math>\text{৪} \times \text{১০} = \text{৪০}</math> ন্যানোসেকেন্ড
* ৮-বিট কাউন্টারে: <math>\text{৮} \times \text{১০} = \text{৮০}</math> ন্যানোসেকেন্ড
* ১৬-বিট কাউন্টারে: <math>\text{১৬} \times \text{১০} = \text{১৬০}</math> ন্যানোসেকেন্ড
এই বিলম্বের কারণে ক্লকের কম্পাঙ্ক একটি সীমার বাইরে বাড়ানো যায় না।
== উদাহরণ ==
=== উদাহরণ ১: ২-বিট নিম্নগামী কাউন্টারে পরিবর্তন বিশ্লেষণ ===
একটি ২-বিট নিম্নগামী কাউন্টার প্রাথমিক অবস্থা <math>Q_1 Q_0 = \text{১১}</math> থেকে শুরু করে। ক্লক ২-এর পরে অবস্থা কী হবে এবং তখন <math>\bar{Q}_0</math> কত?
ধাপ ১: প্রাথমিক অবস্থা: <math>Q_1 Q_0 = \text{১১}</math> (দশমিক ৩)
ধাপ ২: ক্লক ১ আসে। <math>Q_0</math> টগল করে <math>\text{১} \to \text{০}</math>। এখন <math>\bar{Q}_0 = \text{১}</math>। এটি উঠতি প্রান্ত তৈরি করে <math>FF_1</math>-এর ঘড়িতে। তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
অপেক্ষা করো! এটা কি ঠিক? ৩ থেকে সরাসরি ১ হলো?
আবার ভাবো: নিম্নগামী কাউন্টারে প্রথম ক্লকে শুধু <math>Q_0</math> টগল করে, <math>Q_1</math> টগল করে না। কারণ <math>Q_0</math> যখন <math>\text{১} \to \text{০}</math> হয়, <math>\bar{Q}_0</math> হয় <math>\text{০} \to \text{১}</math> (উঠতি প্রান্ত)। তাই <math>Q_1</math>-ও টগল করে।
সঠিক বিশ্লেষণ:
{| class="wikitable" style="text-align:center; width:85%;"
|+ ক্লক ১ বিশ্লেষণ
! ঘটনা !! <math>Q_0</math> !! <math>\bar{Q}_0</math> !! <math>Q_1</math>
|-
| ক্লক ১ আগে || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math>
|-
| <math>Q_0</math> টগল || <math>\text{০}</math> || <math>\text{১}</math> (উঠতি!) || টগল হবে
|-
| ক্লক ১ পরে || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math>
|}
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{০০}</math> (দশমিক ২? নাকি ০?)
আবার যাচাই করি সত্যক সারণী থেকে: প্রাথমিক ৩ থেকে ক্লক ১ এর পর ২ হওয়ার কথা।
<math>Q_0 = \text{১} \to \text{০}</math>: শুধু <math>Q_0</math> টগল।
<math>\bar{Q}_0 = \text{০} \to \text{১}</math>: <math>FF_1</math>-এ উঠতি প্রান্ত, তাই <math>Q_1</math> টগল করে <math>\text{১} \to \text{০}</math>।
ফলে: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২) ✓
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math>, <math>\bar{Q}_0 = \text{১}</math>
ধাপ ৩: ক্লক ২ আসে। <math>Q_0</math> টগল: <math>\text{০} \to \text{১}</math>। <math>\bar{Q}_0</math>: <math>\text{১} \to \text{০}</math> (নামতি প্রান্ত)। <math>FF_1</math>-এ উঠতি প্রান্ত নেই, তাই <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>
অপেক্ষা করো, এটা ঠিক না! ২ থেকে ১ হওয়ার কথা।
বিশ্লেষণ: ক্লক ২ আসে, <math>Q_0 = \text{০} \to \text{১}</math>, <math>\bar{Q}_0 = \text{১} \to \text{০}</math> (নামতি প্রান্ত, উঠতি নয়!)। তাই <math>Q_1</math> টগল করে না।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{১১}</math>?
এখানে বিভ্রান্তি হচ্ছে। মূল ঘড়ির কোন প্রান্তে ফ্লিপ-ফ্লপ টগল করে সেটা নির্ভর করে ফ্লিপ-ফ্লপের ধরনের উপর। ধরে নিই নামতি প্রান্তে টগল করে।
ক্লক ১ (নামতি):
<math>Q_0</math>: <math>\text{১} \to \text{০}</math>
<math>\bar{Q}_0</math>: <math>\text{০} \to \text{১}</math> (উঠতি), তাই <math>Q_1</math> টগল: <math>\text{১} \to \text{০}</math>
অবস্থা: <math>Q_1 Q_0 = \text{০০}</math>
না, আবারও মিলছে না! সত্যক সারণী থেকে দেখা যাচ্ছে সঠিক ক্রম হওয়া উচিত ৩, ২, ১, ০।
সঠিক ব্যাখ্যা: নামতি প্রান্ত ট্রিগার ফ্লিপ-ফ্লপে এবং <math>\bar{Q}</math> ব্যবহার করলে:
* <math>Q_0 = \text{১} \to \text{০}</math> (নামতি): তাই <math>\bar{Q}_0 = \text{০} \to \text{১}</math> (উঠতি)। <math>FF_1</math> উঠতি প্রান্তে টগল করে না (কারণ এটাও নামতি প্রান্ত ট্রিগার)। তাই <math>Q_1</math> পরিবর্তন হয় না।
তাহলে সত্যক সারণীর ক্রম ৩ → ২ → ১ → ০ হওয়ার জন্য:
ক্লক ১ এর পর: <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)
<math>Q_0</math> শুধু টগল, <math>Q_1</math> অপরিবর্তিত।
ক্লক ২ এর পর: <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)
<math>Q_0</math> আবার টগল, এবং যেহেতু এবার <math>Q_0: \text{০} \to \text{১}</math>, <math>\bar{Q}_0: \text{১} \to \text{০}</math> (নামতি), নামতি ট্রিগারে <math>Q_1</math> টগল।
উত্তর: ক্লক ২ এর পর <math>Q_1 Q_0 = \text{০১}</math> (দশমিক ১)। <math>\bar{Q}_0 = \text{০}</math>।
=== উদাহরণ ২: মডুলো-৭ কাউন্টারের ডিজাইন ===
একটি মডুলো-৭ কাউন্টার ডিজাইন করো। কতটি ফ্লিপ-ফ্লপ লাগবে? রিসেট শর্ত কী?
ধাপ ১: <math>N = \text{৭}</math>। বাইনারিতে: <math>\text{৭} = \text{১১১}</math>।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 7 \rceil = 3</math>টি (কারণ <math>2^2 = 4 < 7 \leq 8 = 2^3</math>)।
ধাপ ৩: <math>\text{৭} = \text{১১১}</math>: <math>Q_2, Q_1, Q_0</math> তিনটিই <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_2 \cdot Q_1 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_2 \cdot Q_1 \cdot Q_0}</math> (তিন-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৭ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭* || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || হ্যাঁ! তাৎক্ষণিক রিসেট
|-
| ৭ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \text{২} \to \text{৩} \to \text{৪} \to \text{৫} \to \text{৬} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৩: উভয়মুখী কাউন্টারে এক্স-অর গেটের যাচাই ===
একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{০}</math> এবং <math>Q_0 = \text{১}</math>। পরের ফ্লিপ-ফ্লপের ঘড়ির মান কত?
রাশি: <math>CLK_1 = Q_0 \oplus M</math>
:<math>CLK_1 = \text{১} \oplus \text{০} = \text{১}</math>
এটা <math>Q_0 = \text{১}</math> এর সমান, অর্থাৎ উর্ধ্বগামী কাউন্টারের মতো আচরণ ✓
এখন <math>M = \text{১}</math> এবং <math>Q_0 = \text{১}</math>:
:<math>CLK_1 = \text{১} \oplus \text{১} = \text{০}</math>
এটা <math>\bar{Q}_0 = \text{০}</math> এর সমান, অর্থাৎ নিম্নগামী কাউন্টারের মতো আচরণ ✓
=== উদাহরণ ৪: মডুলো-৯ কাউন্টারের ডিজাইন ===
একটি মডুলো-৯ কাউন্টার ডিজাইন করো।
ধাপ ১: <math>N = \text{৯} = \text{১০০১}</math> বাইনারিতে।
ধাপ ২: প্রয়োজনীয় ফ্লিপ-ফ্লপ: <math>\lceil \log_2 9 \rceil = 4</math>টি (কারণ <math>2^3 = 8 < 9 \leq 16 = 2^4</math>)।
ধাপ ৩: <math>\text{৯} = \text{১০০১}</math>: <math>Q_3</math> এবং <math>Q_0</math> হলো <math>\text{১}</math>।
ধাপ ৪: রিসেট শর্ত: <math>Q_3 \cdot Q_0 = \text{১}</math>।
ধাপ ৫: রিসেট সংকেত: <math>\overline{Q_3 \cdot Q_0}</math> (দুই-ইনপুট ন্যান্ড গেট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ মডুলো-৯ কাউন্টারের গণনা ক্রম
! ক্লক !! <math>Q_3</math> !! <math>Q_2</math> !! <math>Q_1</math> !! <math>Q_0</math> !! দশমিক !! রিসেট?
|-
| শুরু || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|-
| ১ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || না
|-
| ২ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || না
|-
| ৩ || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || না
|-
| ৪ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || না
|-
| ৫ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || না
|-
| ৬ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || না
|-
| ৭ || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || না
|-
| ৮ || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || না
|-
| ৯* || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || হ্যাঁ! রিসেট
|-
| ৯ (পরে) || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || না
|}
গণনা ক্রম: <math>\text{০} \to \text{১} \to \cdots \to \text{৮} \to \text{০} \to \cdots</math> ✓
=== উদাহরণ ৫: ৪-বিট নিম্নগামী কাউন্টারে একটি নির্দিষ্ট অবস্থা চেনা ===
একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১৫}</math> থেকে শুরু করে। ৭ম ক্লকের পর অবস্থা কী?
নিম্নগামী কাউন্টারে ক্রম: <math>\text{১৫, ১৪, ১৩, ১২, ১১, ১০, ৯, ...}</math>
৭ম ক্লকের পর: <math>\text{১৫} - \text{৭} = \text{৮}</math>
তাই অবস্থা হবে: <math>Q_3 Q_2 Q_1 Q_0 = \text{১০০০}</math> (দশমিক ৮) ✓
=== উদাহরণ ৬: দুটো মডুলো-১০ কাউন্টার দিয়ে ০ থেকে ৯৯ গণনা ===
দুটো মডুলো-১০ কাউন্টার সংযুক্ত করে ০ থেকে ৯৯ পর্যন্ত গণনার পরিকল্পনা করো।
সংযোগ পদ্ধতি:
প্রথম কাউন্টার: একক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। মূল ঘড়ি থেকে চালিত।
দ্বিতীয় কাউন্টার: দশক স্থানের সংখ্যা (০ থেকে ৯) গণনা করে। প্রথম কাউন্টার যখন ৯ থেকে ০ তে ফিরে আসে, সেই মুহূর্তে দ্বিতীয় কাউন্টারকে একটি ক্লক দেয়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ দুই-অঙ্কের বিসিডি কাউন্টারের কিছু ক্রম
! ক্লক সংখ্যা !! দশক (<math>C_1</math>) !! একক (<math>C_0</math>) !! দশমিক
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{০৯}</math>
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১০}</math>
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || <math>\text{১৯}</math>
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{২০}</math>
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯৯}</math>
|-
| <math>\text{১০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০০}</math>
|}
== অনুশীলনী ==
# একটি ৩-বিট নিম্নগামী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{১০০}</math> অবস্থায় আছে। পরের দুটো ক্লকের পর অবস্থা কী হবে?
# উর্ধ্বগামী ও নিম্নগামী কাউন্টারে একমাত্র হার্ডওয়্যার পার্থক্য কী?
# একটি ২-বিট উভয়মুখী কাউন্টারে <math>M = \text{১}</math> এবং বর্তমান অবস্থা <math>Q_1 Q_0 = \text{১০}</math>। পরের ক্লকে অবস্থা কী হবে?
# মডুলো-৮ কাউন্টারে কতটি ফ্লিপ-ফ্লপ লাগবে এবং রিসেট সার্কিট কি লাগবে? কেন?
# মডুলো-৬ কাউন্টারের রিসেট শর্তটি লেখো এবং বলো কোন দুটি বিটের ন্যান্ড গেট ব্যবহার করতে হবে।
# একটি ৪-বিট নিম্নগামী কাউন্টার <math>\text{১২}</math> থেকে শুরু করে। ৫ম ক্লকের পর অবস্থা কী হবে? বাইনারিতে লেখো।
# মডুলো-১৩ কাউন্টার ডিজাইন করো: কতটি ফ্লিপ-ফ্লপ এবং রিসেট শর্ত কী?
# রিপল কাউন্টারে গ্লিচ কী এবং কেন হয়? কীভাবে কমানো যায়?
# দুটো মডুলো-১০ কাউন্টার সংযুক্ত করলে সর্বোচ্চ গণনা কত হবে? এটা কোন যন্ত্রে ব্যবহার হয়?
# একটি উভয়মুখী কাউন্টারে <math>Q_0 \oplus M</math> রাশিটি ব্যবহার করা হয় কেন? <math>M = \text{০}</math> ও <math>M = \text{১}</math> এর জন্য আলাদা আলাদা ব্যাখ্যা দাও।
# <math>n</math>-বিট রিপল কাউন্টারে সর্বোচ্চ প্রচার বিলম্বের সূত্র লেখো। ১০-বিট কাউন্টারে যদি প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ১৫ ন্যানোসেকেন্ড হয়, সর্বোচ্চ বিলম্ব কত?
# মডুলো-১০ কাউন্টারে <math>Q_3</math> ও <math>Q_1</math> কেন রিসেট শর্তে ব্যবহার করা হয়? <math>Q_3 \cdot Q_0</math> ব্যবহার করলে কোন সমস্যা হবে?
# একটি ডিজিটাল ঘড়িতে সেকেন্ড গণনার জন্য কোন ধরনের মডুলো কাউন্টার ব্যবহার হয়? পুরো ব্যাখ্যা দাও।
# মডুলো-<math>N</math> কাউন্টারের রিসেট শর্তে কেন <math>N</math>-এর সব বিট ব্যবহার করা হয় না, শুধু <math>\text{১}</math>-বিটগুলো ব্যবহার করা হয়?
# একটি ৩-বিট উভয়মুখী কাউন্টার <math>Q_2 Q_1 Q_0 = \text{০১১}</math> অবস্থায় আছে। প্রথমে দুই ক্লক <math>M = \text{০}</math> তারপর দুই ক্লক <math>M = \text{১}</math> দিলে চার ক্লক পরে অবস্থা কী হবে?
'''উত্তর:'''
# ক্লক ১ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১১}</math> (দশমিক ৩)। ক্লক ২ এর পর: <math>Q_2 Q_1 Q_0 = \text{০১০}</math> (দশমিক ২)।
# উর্ধ্বগামীতে পরের ফ্লিপ-ফ্লপের ঘড়ির উৎস আগেরটির <math>Q</math>। নিম্নগামীতে <math>\bar{Q}</math>। শুধু এই একটি পার্থক্য।
# <math>M = \text{১}</math> (নিম্নগামী), <math>Q_1 Q_0 = \text{১০}</math> (দশমিক ২)। পরের ক্লকে: দশমিক <math>\text{২} - \text{১} = \text{১}</math>। অবস্থা: <math>Q_1 Q_0 = \text{০১}</math>।
# মডুলো-৮ = <math>2^3</math>। তাই ৩টি ফ্লিপ-ফ্লপ লাগবে এবং আলাদা রিসেট সার্কিট লাগবে না। কাউন্টার স্বাভাবিকভাবেই ০ থেকে ৭ পর্যন্ত গণনা করে ০ তে ফিরে আসে।
# মডুলো-৬ কাউন্টারের রিসেট শর্ত: <math>Q_2 \cdot Q_1 = \text{১}</math>। কারণ <math>\text{৬} = \text{১১০}</math>, বিট ২ ও বিট ১ হলো <math>\text{১}</math>।
# <math>\text{১২} - \text{৫} = \text{৭}</math>। বাইনারিতে: <math>Q_3 Q_2 Q_1 Q_0 = \text{০১১১}</math>।
# মডুলো-১৩: <math>\text{১৩} = \text{১১০১}</math>। ফ্লিপ-ফ্লপ: ৪টি। রিসেট শর্ত: <math>Q_3 \cdot Q_2 \cdot Q_0 = \text{১}</math>। ন্যান্ড গেটে <math>Q_3, Q_2, Q_0</math> সংযুক্ত।
# রিপল কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপ আগেরটির আউটপুটে পরিবর্তন দেখে টগল করে, তাই পরিবর্তন একে একে ছড়ায়। এই সময়ে মাঝের ক্ষণিক ভুল অবস্থা দেখা দেয়, এগুলোকে গ্লিচ বলে। আউটপুটে রেজিস্টার বা সিনক্রোনাস কাউন্টার ব্যবহার করে কমানো যায়।
# সর্বোচ্চ গণনা: <math>\text{৯৯}</math>। মোট ১০০টি অবস্থা। ব্যবহার: ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনায়, স্কোরবোর্ডে।
# <math>M = \text{০}</math> হলে: <math>Q_0 \oplus \text{০} = Q_0</math>, উর্ধ্বগামীর মতো। <math>M = \text{১}</math> হলে: <math>Q_0 \oplus \text{১} = \bar{Q}_0</math>, নিম্নগামীর মতো। একটি মাত্র গেট দিয়ে উভয় দিক নিয়ন্ত্রণ সম্ভব হয়।
# সূত্র: <math>\text{সর্বোচ্চ} = n \times t_p</math>। ১০-বিট কাউন্টারে: <math>\text{১০} \times \text{১৫} = \text{১৫০}</math> ন্যানোসেকেন্ড।
# <math>\text{১০} = \text{১০১০}</math>: বিট ৩ ও বিট ১ হলো <math>\text{১}</math>, তাই <math>Q_3 \cdot Q_1</math>। <math>Q_3 \cdot Q_0</math> ব্যবহার করলে রিসেট হতো <math>\text{৯} = \text{১০০১}</math>-এ, যা ভুল।
# ডিজিটাল ঘড়িতে সেকেন্ড: মডুলো-৬০ কাউন্টার (০ থেকে ৫৯ পর্যন্ত)। এটিকে একটি মডুলো-১০ (একক স্থান ০-৯) এবং একটি মডুলো-৬ (দশক স্থান ০-৫) কাউন্টার দিয়ে তৈরি করা যায়।
# <math>N</math>-এর যে বিটগুলো <math>\text{০}</math>, সেই ফ্লিপ-ফ্লপগুলো ওই অবস্থায় যেকোনো মান হতে পারে এবং রিসেট শর্ত মেলে না। শুধু <math>\text{১}</math>-বিটগুলো যাচাই করলেই <math>N</math> সংখ্যাটি অনন্যভাবে চেনা যায়।
# ক্লক ১ (<math>M=\text{০}</math>): <math>\text{০১১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ২ (<math>M=\text{০}</math>): <math>\text{১০০} \to \text{১০১}</math> (দশমিক ৫); ক্লক ৩ (<math>M=\text{১}</math>): <math>\text{১০১} \to \text{১০০}</math> (দশমিক ৪); ক্লক ৪ (<math>M=\text{১}</math>): <math>\text{১০০} \to \text{০১১}</math> (দশমিক ৩)। চার ক্লক পরে অবস্থা: <math>Q_2 Q_1 Q_0 = \text{০১১}</math>।
'''অ্যাসিনক্রোনাস কাউন্টার''' (তৃতীয় ভাগ)
== ক্যাসকেড কাউন্টার, আইসি চিপ ও বাস্তব প্রয়োগ ==
আগের দুটো ভাগে আমরা শিখেছিলাম অ্যাসিনক্রোনাস কাউন্টারের মূল ধারণা, উর্ধ্বগামী, নিম্নগামী, উভয়মুখী এবং মডুলো কাউন্টার। এই শেষ ভাগে আমরা দেখব কীভাবে ছোট ছোট কাউন্টারকে একসাথে জুড়ে বড় কাউন্টার তৈরি করা যায়, কোন কোন আইসি চিপ বাজারে পাওয়া যায়, এবং বাস্তব জীবনে এই সার্কিটগুলো কোথায় কোথায় কাজ করছে।
== ক. ক্যাসকেড কাউন্টার ==
=== বড় ঘড়ির উপমা ===
ধরো তুমি একটা বড় ডিজিটাল ঘড়ি তৈরি করতে চাও যেটা ০ থেকে ৯৯৯ পর্যন্ত গুনতে পারবে। তোমার কাছে আছে শুধু ছোট ছোট ঘড়ি যেগুলো ০ থেকে ৯ পর্যন্ত গুনতে পারে।
তুমি কী করবে? তুমি তিনটা ছোট ঘড়ি পাশাপাশি রাখবে। ডানেরটা একক স্থান গোনে, মাঝেরটা দশক স্থান গোনে, বাঁয়েরটা শতক স্থান গোনে। যখন ডানেরটা ৯ থেকে ০-তে ফেরে, সেই মুহূর্তে মাঝেরটাকে একবার টিক দেয়। যখন মাঝেরটা ৯ থেকে ০-তে ফেরে, বাঁয়েরটাকে একবার টিক দেয়। এভাবে তিনটা মিলে ০ থেকে ৯৯৯ পর্যন্ত গোনে।
এটাই ক্যাসকেড কাউন্টারের মূল নীতি।
=== ক্যাসকেড মানে কী? ===
ক্যাসকেড মানে ধারাবাহিকভাবে সংযুক্ত। একটি কাউন্টারের সর্বোচ্চ বিটের আউটপুট পরের কাউন্টারের ক্লক ইনপুট হিসেবে ব্যবহৃত হয়।
যখন প্রথম কাউন্টার তার সর্বোচ্চ মান থেকে শূন্যে ফেরে, সর্বোচ্চ বিটে একটি উঠতি বা নামতি প্রান্ত তৈরি হয়। সেই প্রান্তটিই পরের কাউন্টারকে এক ধাপ এগিয়ে দেয়।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেড সংযোগের নিয়ম
! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | ক্লক উৎস !! style="background:#3498DB; color:white;" | কখন পরেরটাকে টিক দেয় !! style="background:#3498DB; color:white;" | গণনার পরিসর
|-
| প্রথম || বাইরের ক্লক || নিজে ঘুরে এলে || <math>\text{০}</math> থেকে <math>N_1 - \text{১}</math>
|-
| দ্বিতীয় || প্রথমের MSB আউটপুট || প্রথম প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 - \text{১}</math>
|-
| তৃতীয় || দ্বিতীয়ের MSB আউটপুট || দ্বিতীয় প্রতিবার ঘুরলে || <math>\text{০}</math> থেকে <math>N_1 \times N_2 \times N_3 - \text{১}</math>
|}
=== দুটি ৪-বিট কাউন্টার দিয়ে ৮-বিট কাউন্টার ===
একটি ৪-বিট কাউন্টার ০ থেকে ১৫ পর্যন্ত গুনতে পারে, মানে মডুলো-১৬।
দুটি ৪-বিট কাউন্টার ক্যাসকেডে জোড়া দিলে:
সর্বোচ্চ গণনা = <math>N_1 \times N_2 = \text{১৬} \times \text{১৬} = \text{২৫৬}</math>
অর্থাৎ ০ থেকে ২৫৫ পর্যন্ত, মানে মডুলো-২৫৬ বা ৮-বিট কাউন্টার।
সংযোগ পদ্ধতি:
* প্রথম কাউন্টারের <math>Q_3</math> (সর্বোচ্চ বিট) সংযুক্ত হয় দ্বিতীয় কাউন্টারের ক্লক ইনপুটে।
* প্রথম কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো ৮-বিট ফলাফলের নিচের চারটি বিট।
* দ্বিতীয় কাউন্টারের <math>Q_0, Q_1, Q_2, Q_3</math> হলো উপরের চারটি বিট।
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৮-বিট ক্যাসকেড কাউন্টারের গণনার নমুনা
! style="background:#8E44AD; color:white;" | দশমিক !! style="background:#E74C3C; color:white;" | দ্বিতীয় কাউন্টার (<math>Q_7 Q_6 Q_5 Q_4</math>) !! style="background:#27AE60; color:white;" | প্রথম কাউন্টার (<math>Q_3 Q_2 Q_1 Q_0</math>) !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || শুরু
|-
| <math>\text{১৫}</math> || <math>\text{০০০০}</math> || <math>\text{১১১১}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১৬}</math> || <math>\text{০০০১}</math> || <math>\text{০০০০}</math> || প্রথম ঘুরল, দ্বিতীয় এক ধাপ এগোল
|-
| <math>\text{৩১}</math> || <math>\text{০০০১}</math> || <math>\text{১১১১}</math> || প্রথম আবার সর্বোচ্চে
|-
| <math>\text{৩২}</math> || <math>\text{০০১০}</math> || <math>\text{০০০০}</math> || প্রথম আবার ঘুরল
|-
| <math>\text{২৫৫}</math> || <math>\text{১১১১}</math> || <math>\text{১১১১}</math> || সর্বোচ্চ অবস্থা
|-
| <math>\text{০}</math> || <math>\text{০০০০}</math> || <math>\text{০০০০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ১: মডুলো-১০০ কাউন্টার ===
দুটি মডুলো-১০ কাউন্টার ক্যাসকেডে জুড়লে পাওয়া যায়:
<math>N = \text{১০} \times \text{১০} = \text{১০০}</math>
এটি ০ থেকে ৯৯ পর্যন্ত গুনতে পারে। ডিজিটাল ঘড়িতে সেকেন্ড ও মিনিট গণনার জন্য এই সার্কিটই ব্যবহার হয়।
প্রথম কাউন্টার: একক স্থানের অঙ্ক (০ থেকে ৯)।
দ্বিতীয় কাউন্টার: দশক স্থানের অঙ্ক (০ থেকে ৯)।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০ কাউন্টারের ধাপ
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | দ্বিতীয় কাউন্টার (দশক) !! style="background:#3498DB; color:white;" | প্রথম কাউন্টার (একক) !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম কাউন্টার সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরে দ্বিতীয়কে ঠেলল
|-
| <math>\text{৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || দুটোই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরে শুরুতে ফিরল
|}
=== ক্যাসকেড উদাহরণ ২: মডুলো-৬০ কাউন্টার ===
ঘড়িতে সেকেন্ড ০ থেকে ৫৯ পর্যন্ত গোনে, মানে মডুলো-৬০।
এটি তৈরি হয় একটি মডুলো-১০ এবং একটি মডুলো-৬ কাউন্টার ক্যাসকেডে জুড়ে:
<math>N = \text{১০} \times \text{৬} = \text{৬০}</math>
প্রথম কাউন্টার (মডুলো-১০): একক স্থান গোনে ০ থেকে ৯।
দ্বিতীয় কাউন্টার (মডুলো-৬): দশক স্থান গোনে ০ থেকে ৫।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৬০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | দশক অঙ্ক (মডুলো-৬) !! style="background:#3498DB; color:white;" | একক অঙ্ক (মডুলো-১০) !! style="background:#8E44AD; color:white;" | অর্থ
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || ৯ সেকেন্ড
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ১০ সেকেন্ড
|-
| <math>\text{৫৯}</math> || <math>\text{৫}</math> || <math>\text{৯}</math> || ৫৯ সেকেন্ড
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১ মিনিট পূর্ণ, শুরুতে ফিরল
|}
মডুলো-৬ কাউন্টার কীভাবে তৈরি হয়? ৩-বিট বাইনারি কাউন্টারে রিসেট লাগিয়ে: যখন গণনা ৬ (<math>\text{১১০}</math>) হয়, সাথে সাথে রিসেট করো। তখন <math>Q_2</math> এবং <math>Q_1</math>-এর অ্যান্ড গেটের আউটপুট ক্লিয়ার পিনে দেওয়া হয়।
=== ক্যাসকেড উদাহরণ ৩: মডুলো-১২ ঘণ্টা কাউন্টার ===
ঘড়ির ঘণ্টা ১ থেকে ১২ পর্যন্ত গোনে। এটা একটু বিশেষ কারণ ০ নেই, শুরু হয় ১ থেকে।
পদ্ধতি: একটি মডুলো-১৩ কাউন্টার তৈরি করো যেটা ০-এ না থেমে ১-এ থাকে।
বিকল্পভাবে: একটি মডুলো-১২ কাউন্টার (০ থেকে ১১) তৈরি করে ডিসপ্লেতে ১ যোগ করে দেখানো হয়।
একটি মডুলো-২ এবং একটি মডুলো-৬ ক্যাসকেডে:
<math>N = \text{২} \times \text{৬} = \text{১২}</math>
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১২ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | গণনা !! style="background:#27AE60; color:white;" | মডুলো-৬ অংশ !! style="background:#3498DB; color:white;" | মডুলো-২ অংশ !! style="background:#8E44AD; color:white;" | প্রদর্শিত ঘণ্টা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || ১
|-
| <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || ৬
|-
| <math>\text{১১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || ১১
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || ১২ (আবার)
|}
=== ক্যাসকেডে বিলম্ব সমস্যা ===
অ্যাসিনক্রোনাস ক্যাসকেড কাউন্টারে একটি গুরুতর সমস্যা আছে: প্রতিটি ফ্লিপ-ফ্লপের মধ্য দিয়ে সংকেত যেতে কিছুটা সময় লাগে, যাকে বলা হয় প্রোপাগেশন বিলম্ব।
যখন কাউন্টারগুলো ক্যাসকেডে থাকে, এই বিলম্ব জমা হতে থাকে।
ধরো প্রতিটি ফ্লিপ-ফ্লপে ১০ ন্যানোসেকেন্ড বিলম্ব। একটি ৪-বিট কাউন্টারে সর্বোচ্চ বিলম্ব হবে:
<math>\text{৪} \times \text{১০} = \text{৪০} \text{ ন্যানোসেকেন্ড}</math>
দুটো ৪-বিট কাউন্টার ক্যাসকেডে থাকলে:
<math>\text{৮} \times \text{১০} = \text{৮০} \text{ ন্যানোসেকেন্ড}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ক্যাসকেডে বিলম্ব বিশ্লেষণ
! style="background:#3498DB; color:white;" | কাউন্টারের সংখ্যা !! style="background:#3498DB; color:white;" | মোট বিট !! style="background:#3498DB; color:white;" | সর্বোচ্চ বিলম্ব (১০ ns/ফ্লিপ-ফ্লপ) !! style="background:#3498DB; color:white;" | সর্বোচ্চ ক্লক গতি
|-
| <math>\text{১}</math> টি ৪-বিট || <math>\text{৪}</math> || <math>\text{৪০}</math> ns || <math>\text{২৫}</math> MHz
|-
| <math>\text{২}</math> টি ৪-বিট || <math>\text{৮}</math> || <math>\text{৮০}</math> ns || <math>\text{১২.৫}</math> MHz
|-
| <math>\text{৩}</math> টি ৪-বিট || <math>\text{১২}</math> || <math>\text{১২০}</math> ns || <math>\text{৮.৩}</math> MHz
|-
| <math>\text{৪}</math> টি ৪-বিট || <math>\text{১৬}</math> || <math>\text{১৬০}</math> ns || <math>\text{৬.২}</math> MHz
|}
এই কারণেই বেশি বিটের দ্রুত কাউন্টারের জন্য সমকালীন কাউন্টার ব্যবহার করা হয়।
বিলম্বের প্রভাব: কাউন্টার পরিবর্তনের সময় ক্ষণিকের জন্য ভুল অবস্থায় থাকে। যেমন ০১১১ থেকে ১০০০-এ যাওয়ার সময় মাঝপথে ০১১০, ০১০০, ০০০০ ইত্যাদি ভুল অবস্থা দেখা দিতে পারে। একে বলে গ্লিচ বা হ্যাজার্ড।
== খ. সুপরিচিত আইসি চিপ পরিচিতি ==
=== আইসি চিপ কেন? ===
প্রতিটা কাউন্টার নিজে হাতে ফ্লিপ-ফ্লপ জুড়ে তৈরি করা কষ্টকর। তাই কারখানায় আগে থেকেই একটি ছোট চিপে পুরো কাউন্টার সার্কিট বানিয়ে রাখা হয়। এই চিপগুলোকে বলা হয় ইন্টিগ্রেটেড সার্কিট বা আইসি।
৭৪ সিরিজের টিটিএল আইসি চিপ ১৯৬০-এর দশক থেকে ব্যবহৃত হচ্ছে এবং আজও শিক্ষা ও প্রোটোটাইপ তৈরিতে অপরিহার্য।
=== ৭৪৯০ চিপ: দশমিক কাউন্টার ===
৭৪৯০ হলো একটি বহুল ব্যবহৃত আইসি চিপ যেটাকে বলা হয় "দশমিক কাউন্টার"। এটি আসলে দুটো আলাদা কাউন্টার একই প্যাকেজে:
একটি মডুলো-২ কাউন্টার (একটিমাত্র ফ্লিপ-ফ্লপ, ১টি বিট)।
একটি মডুলো-৫ কাউন্টার (তিনটি ফ্লিপ-ফ্লপ, ৩টি বিট)।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || <math>V_{CC}</math> || সরবরাহ ভোল্টেজ (+৫ ভোল্ট)
|-
| ৭ || GND || ভূমি সংযোগ (০ ভোল্ট)
|-
| ১৪ (A) || CKA || মডুলো-২ অংশের ক্লক ইনপুট
|-
| ১ (B) || CKB || মডুলো-৫ অংশের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || মডুলো-২ এর আউটপুট (বিট ০)
|-
| ৯ || <math>Q_B</math> || মডুলো-৫ এর আউটপুট (বিট ১)
|-
| ৮ || <math>Q_C</math> || মডুলো-৫ এর আউটপুট (বিট ২)
|-
| ১১ || <math>Q_D</math> || মডুলো-৫ এর আউটপুট (বিট ৩)
|-
| ২, ৩ || R0(1), R0(2) || রিসেট-টু-জিরো পিন (উভয়ে ১ হলে রিসেট)
|-
| ৬, ৭ || R9(1), R9(2) || রিসেট-টু-নাইন পিন (উভয়ে ১ হলে ৯-এ যায়)
|}
==== ৭৪৯০ দিয়ে বিসিডি মোড (মডুলো-১০) ====
বিসিডি মোডে চিপটি ০ থেকে ৯ পর্যন্ত গোনে।
সংযোগ: <math>Q_A</math>-কে CKB-তে সংযুক্ত করো। বাইরের ক্লক CKA-তে দাও।
এতে মডুলো-২ এবং মডুলো-৫ ক্যাসকেডে কাজ করে:
<math>N = \text{২} \times \text{৫} = \text{১০}</math>
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯০ বিসিডি মোডের সত্যক সারণী
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক মান !! style="background:#8E44AD; color:white;" | ব্যাখ্যা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || এক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || দুই
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || তিন
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || চার
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || পাঁচ
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || ছয়
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || সাত
|-
| <math>\text{৮}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৮}</math> || আট
|-
| <math>\text{৯}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || নয়
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
==== ৭৪৯০ দিয়ে দশমিক মোড ====
একই চিপ ভিন্নভাবে সংযুক্ত করে দ্বিগুণকারী হিসেবেও ব্যবহার করা যায়: CKB-তে বাইরের ক্লক দাও, <math>Q_D</math>-কে CKA-তে সংযুক্ত করো। এতে মডুলো-৫ আগে গোনে, তারপর মডুলো-২।
==== ৭৪৯০ দিয়ে রিসেট-টু-নাইন ====
R9(1) এবং R9(2) উভয়ে ১ করলে কাউন্টার সাথে সাথে ১০০১ (দশমিক ৯) অবস্থায় চলে যায়। এটি ঘড়ির সেটিং বা পরীক্ষার কাজে ব্যবহৃত হয়।
=== ৭৪৯৩ চিপ: ৪-বিট বাইনারি কাউন্টার ===
৭৪৯৩ হলো একটি ৪-বিট বাইনারি রিপল কাউন্টার। এটি ৪টি জেকে ফ্লিপ-ফ্লপ দিয়ে তৈরি। মডুলো-১৬ পর্যন্ত গুনতে পারে এবং রিসেট সংযোগ বদলে যেকোনো মডুলো তৈরি করা যায়।
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ চিপের পিন বিন্যাস
! style="background:#3498DB; color:white;" | পিন নম্বর !! style="background:#3498DB; color:white;" | নাম !! style="background:#3498DB; color:white;" | কাজ
|-
| ১৪ || CKA || প্রথম ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১ || CKB || বাকি তিনটি ফ্লিপ-ফ্লপের ক্লক ইনপুট
|-
| ১২ || <math>Q_A</math> || বিট ০ আউটপুট
|-
| ৯ || <math>Q_B</math> || বিট ১ আউটপুট
|-
| ৮ || <math>Q_C</math> || বিট ২ আউটপুট
|-
| ১১ || <math>Q_D</math> || বিট ৩ আউটপুট
|-
| ২, ৩ || R0(1), R0(2) || রিসেট পিন (উভয়ে ১ হলে শূন্যে ফেরে)
|}
==== ৭৪৯৩ দিয়ে মডুলো-১৬ কাউন্টার ====
<math>Q_A</math>-কে CKB-তে সংযুক্ত করো, R0(1) এবং R0(2) কে <math>\text{০}</math>-এ রাখো।
ফলাফল: ০ থেকে ১৫ পর্যন্ত পূর্ণ বাইনারি গণনা।
==== ৭৪৯৩ দিয়ে মডুলো-১২ কাউন্টার ====
১২ দশমিকে = ১১০০ বাইনারি। তাই <math>Q_D</math> এবং <math>Q_C</math> উভয়ে ১ হলেই রিসেট করতে হবে।
সংযোগ: R0(1)-এ <math>Q_D</math>, R0(2)-এ <math>Q_C</math> দাও।
গণনা ১২ (<math>\text{১১০০}</math>) হওয়ামাত্র রিসেট ঘটে, ফলে সার্কিট ০ থেকে ১১ পর্যন্ত গোনে।
==== ৭৪৯৩ দিয়ে বিভিন্ন মডুলো কাউন্টার ====
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ৭৪৯৩ দিয়ে তৈরি বিভিন্ন মডুলো কাউন্টার
! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | রিসেট শর্ত !! style="background:#3498DB; color:white;" | R0(1) সংযোগ !! style="background:#3498DB; color:white;" | R0(2) সংযোগ !! style="background:#3498DB; color:white;" | ব্যাখ্যা
|-
| ২ || <math>\text{০০১০}</math> || <math>Q_B</math> || <math>Q_B</math> || ০-১ গোনে
|-
| ৩ || <math>\text{০০১১}</math> || <math>Q_B</math> || <math>Q_A</math> || ০-২ গোনে
|-
| ৫ || <math>\text{০১০১}</math> || <math>Q_C</math> || <math>Q_A</math> || ০-৪ গোনে
|-
| ৬ || <math>\text{০১১০}</math> || <math>Q_C</math> || <math>Q_B</math> || ০-৫ গোনে
|-
| ৯ || <math>\text{১০০১}</math> || <math>Q_D</math> || <math>Q_A</math> || ০-৮ গোনে
|-
| ১০ || <math>\text{১০১০}</math> || <math>Q_D</math> || <math>Q_B</math> || ০-৯ গোনে
|-
| ১২ || <math>\text{১১০০}</math> || <math>Q_D</math> || <math>Q_C</math> || ০-১১ গোনে
|}
=== আইসি চিপ ব্যবহারের সুবিধা ===
{| class="wikitable" style="text-align:left; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | আইসি চিপ ব্যবহারের কারণ
! style="background:#27AE60; color:white; width:30%;" | সুবিধা !! style="background:#27AE60; color:white; width:70%;" | বিস্তারিত
|-
| সময় সাশ্রয় || নিজে ফ্লিপ-ফ্লপ জুড়তে ঘণ্টার পর ঘণ্টা লাগে, চিপে সব আগেই করা
|-
| নির্ভরযোগ্যতা || কারখানায় পরীক্ষিত এবং গ্যারান্টিযুক্ত কার্যক্ষমতা
|-
| ছোট আকার || একটি চিপে চারটি ফ্লিপ-ফ্লপ, পরিচিত DIP প্যাকেজে মাত্র ১৪টি পিন
|-
| কম খরচ || গণউৎপাদনের ফলে প্রতিটি চিপের দাম অত্যন্ত কম
|-
| সহজ সংযোগ || ডেটাশিট দেখে সরাসরি ব্রেডবোর্ডে সংযুক্ত করা যায়
|-
| মানকীকরণ || বিশ্বের যেকোনো প্রস্তুতকারকের ৭৪৯০ একই কাজ করে
|}
== গ. ব্যাপক বাস্তব প্রয়োগ ==
=== ডিজিটাল ঘড়ি তৈরি ===
ডিজিটাল ঘড়ি হলো অ্যাসিনক্রোনাস কাউন্টারের সবচেয়ে পরিচিত প্রয়োগ। একটা সম্পূর্ণ ডিজিটাল ঘড়ির সার্কিট বোঝা মানে পুরো অধ্যায়টাই বোঝা।
==== ঘড়ির মূল ব্লক চিত্র ====
একটি ডিজিটাল ঘড়িতে নিচের ব্লকগুলো থাকে, বাম থেকে ডানে সংকেত প্রবাহিত হয়:
<code>
স্ফটিক দোলক (৩২৭৬৮ Hz)
|
v
কম্পাঙ্ক বিভাজক (÷ ৩২৭৬৮)
|
v
১ Hz সংকেত (প্রতি সেকেন্ডে ১ স্পন্দন)
|
v
মডুলো-১০ কাউন্টার (একক সেকেন্ড: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক সেকেন্ড: ০-৫)
|
v
মডুলো-১০ কাউন্টার (একক মিনিট: ০-৯)
|
v
মডুলো-৬ কাউন্টার (দশক মিনিট: ০-৫)
|
v
মডুলো-১২ কাউন্টার (ঘণ্টা: ১-১২ বা ০-২৩)
|
v
বিসিডি-থেকে-সাত-খণ্ড ডিকোডার
|
v
সাত-খণ্ড প্রদর্শক (সংখ্যা দেখায়)
</code>
==== প্রতিটি ব্লকের মডুলো ব্যাখ্যা ====
{| class="wikitable" style="text-align:center; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ডিজিটাল ঘড়ির প্রতিটি ব্লক
! style="background:#3498DB; color:white;" | ব্লক !! style="background:#3498DB; color:white;" | মডুলো !! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ !! style="background:#3498DB; color:white;" | রিসেট শর্ত
|-
| একক সেকেন্ড || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের সেকেন্ড || গণনা = ১০
|-
| দশক সেকেন্ড || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের সেকেন্ড || গণনা = ৬
|-
| একক মিনিট || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || একক অঙ্কের মিনিট || গণনা = ১০
|-
| দশক মিনিট || মডুলো-৬ || <math>\text{০}</math> থেকে <math>\text{৫}</math> || দশক অঙ্কের মিনিট || গণনা = ৬
|-
| ঘণ্টা (১২ঘণ্টা) || মডুলো-১২ || <math>\text{১}</math> থেকে <math>\text{১২}</math> || ১২ঘণ্টার সময় || গণনা = ১২
|-
| ঘণ্টা (২৪ঘণ্টা) || মডুলো-২৪ || <math>\text{০}</math> থেকে <math>\text{২৩}</math> || ২৪ঘণ্টার সময় || গণনা = ২৪
|}
==== ঘড়ির মোট চক্র গণনা ====
১২ঘণ্টার ঘড়িতে একটি সম্পূর্ণ চক্রে মোট সেকেন্ড:
<math>N = \text{৬০} \times \text{৬০} \times \text{১২} = \text{৪৩২০০} \text{ সেকেন্ড}</math>
২৪ঘণ্টার ঘড়িতে:
<math>N = \text{৬০} \times \text{৬০} \times \text{২৪} = \text{৮৬৪০০} \text{ সেকেন্ড}</math>
==== স্ফটিক দোলক কেন? ====
কেন সাধারণ দোলক ব্যবহার না করে স্ফটিক (কোয়ার্টজ) দোলক ব্যবহার হয়? কারণ স্ফটিক দোলকের কম্পাঙ্ক অত্যন্ত স্থির। তাপমাত্রা বা বিদ্যুৎ সরবরাহের পরিবর্তনে এর কম্পাঙ্ক প্রায় বদলায় না। এটি ঘড়ির নির্ভুলতার মূল রহস্য।
ঘড়িতে সাধারণত ৩২৭৬৮ Hz স্ফটিক ব্যবহার হয়। এই সংখ্যাটা <math>\text{২}^{15}</math>, তাই ১৫টি দ্বিভাজন করলে সরাসরি ১ Hz পাওয়া যায়।
=== কম্পাঙ্ক বিভাজক: রেডিও ও টেলিযোগাযোগ ===
রেডিও সম্প্রচারে একটি নির্দিষ্ট কম্পাঙ্কে সংকেত পাঠাতে হয়। কিন্তু স্ফটিক দোলক সব কম্পাঙ্কে পাওয়া যায় না। তাই একটি বেশি কম্পাঙ্কের দোলক থেকে বিভাজন করে নির্দিষ্ট কম্পাঙ্ক তৈরি করা হয়।
উদাহরণ: একটি ১০ MHz স্ফটিক থেকে ১০০ kHz তৈরি করতে মডুলো-১০০ বিভাজক লাগবে।
<math>f_{out} = \frac{f_{in}}{N} = \frac{\text{১০,০০০,০০০}}{\text{১০০}} = \text{১০০,০০০} \text{ Hz} = \text{১০০} \text{ kHz}</math>
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | কম্পাঙ্ক বিভাজকের উদাহরণ
! style="background:#3498DB; color:white;" | ইনপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | বিভাজন অনুপাত (N) !! style="background:#3498DB; color:white;" | আউটপুট কম্পাঙ্ক !! style="background:#3498DB; color:white;" | প্রয়োগ
|-
| ৩২৭৬৮ Hz || ৩২৭৬৮ || ১ Hz || ঘড়ির সেকেন্ড স্পন্দন
|-
| ১ MHz || ১০০০ || ১ kHz || শ্রবণযোগ্য শব্দ সংকেত
|-
| ১০ MHz || ১০০ || ১০০ kHz || এএম রেডিও বাহক
|-
| ১০০ MHz || ১০ || ১০ MHz || এফএম রেডিও সহায়ক
|-
| ১ GHz || ১০০০ || ১ MHz || মোবাইল যোগাযোগ
|}
=== ঘটনা গণনাকারী: কারখানার উৎপাদন গণনা ===
একটি কারখানায় উৎপাদন লাইনে প্রতিদিন কতটা পণ্য তৈরি হলো তা গণনা করা দরকার। প্রতিটা পণ্য যখন সেন্সরের সামনে দিয়ে যায়, সেন্সর একটা বৈদ্যুতিক স্পন্দন তৈরি করে। এই স্পন্দনগুলো একটা কাউন্টারে গণনা হয়।
প্রতিদিন সর্বোচ্চ ৯৯৯৯ টা পণ্য গণনার জন্য:
চারটি মডুলো-১০ কাউন্টার ক্যাসকেডে:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ০০০০ থেকে ৯৯৯৯ পর্যন্ত গুনতে পারে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | উৎপাদন গণনা ব্যবস্থার উদাহরণ
! style="background:#3498DB; color:white;" | অঙ্ক !! style="background:#3498DB; color:white;" | কাউন্টার !! style="background:#3498DB; color:white;" | গণনা পরিসর !! style="background:#3498DB; color:white;" | বাস্তব অর্থ
|-
| একক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || শেষ এক অঙ্ক
|-
| দশক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || দ্বিতীয় অঙ্ক
|-
| শতক || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || তৃতীয় অঙ্ক
|-
| হাজার || মডুলো-১০ || <math>\text{০}</math> থেকে <math>\text{৯}</math> || প্রথম অঙ্ক
|}
পরিচিত উদাহরণ: পেট্রোল পাম্পে কতটুকু তেল দেওয়া হলো তা গণনার কাউন্টার, বাসের টিকিট মেশিনে যাত্রী গণনা, ওষুধ কারখানায় বড়ি গণনা।
=== স্বয়ংক্রিয় ট্র্যাফিক সংকেত নিয়ন্ত্রণ ===
ব্যস্ত রাস্তার সংকেত বাতি নির্দিষ্ট সময় পর পর পরিবর্তিত হয়। এটি একটি কাউন্টার দিয়ে নিয়ন্ত্রিত হয়।
ধরো একটি সংকেত চক্র:
* সবুজ: ৩০ সেকেন্ড
* হলুদ: ৫ সেকেন্ড
* লাল: ৩৫ সেকেন্ড
* মোট চক্র: ৭০ সেকেন্ড
একটি মডুলো-৭০ কাউন্টার তৈরি করো:
* গণনা ০ থেকে ২৯: সবুজ বাতি জ্বলে
* গণনা ৩০ থেকে ৩৪: হলুদ বাতি জ্বলে
* গণনা ৩৫ থেকে ৬৯: লাল বাতি জ্বলে
* গণনা ৭০: রিসেট, আবার শুরু
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত কাউন্টারের অবস্থা
! style="background:#3498DB; color:white;" | গণনার পরিসর !! style="background:#3498DB; color:white;" | সময় !! style="background:#3498DB; color:white;" | সক্রিয় বাতি !! style="background:#3498DB; color:white;" | ডিকোডার আউটপুট
|-
| <math>\text{০}</math> থেকে <math>\text{২৯}</math> || ৩০ সেকেন্ড || সবুজ || <math>Q < \text{৩০}</math> হলে সবুজ চালু
|-
| <math>\text{৩০}</math> থেকে <math>\text{৩৪}</math> || ৫ সেকেন্ড || হলুদ || <math>\text{৩০} \leq Q < \text{৩৫}</math>
|-
| <math>\text{৩৫}</math> থেকে <math>\text{৬৯}</math> || ৩৫ সেকেন্ড || লাল || <math>Q \geq \text{৩৫}</math>
|-
| <math>\text{৭০}</math> || মুহূর্তিক || রিসেট || কাউন্টার শূন্যে ফেরে
|}
=== ডিজিটাল স্টপওয়াচ সার্কিট ===
একটি স্টপওয়াচ ০.০০ থেকে ৯৯.৯৯ সেকেন্ড পর্যন্ত গোনে।
প্রয়োজনীয় কাউন্টার ব্লক:
* প্রথম দশমিক অঙ্ক (১/১০০ সেকেন্ড): মডুলো-১০
* দ্বিতীয় দশমিক অঙ্ক (১/১০ সেকেন্ড): মডুলো-১০
* একক সেকেন্ড: মডুলো-১০
* দশক সেকেন্ড: মডুলো-১০
ইনপুট ক্লক: ১০০ Hz (প্রতি সেকেন্ডে ১০০ স্পন্দন)।
সর্বোচ্চ গণনা:
<math>N = \text{১০} \times \text{১০} \times \text{১০} \times \text{১০} = \text{১০,০০০}</math>
এটি ১০,০০০ ÷ ১০০ = ১০০ সেকেন্ড পর্যন্ত গুনতে পারে।
স্টার্ট/স্টপ বোতাম: ক্লক গেটিং ব্যবহার হয়। একটি অ্যান্ড গেটের একটা ইনপুটে ক্লক এবং অন্যটায় স্টার্ট/স্টপ বোতামের সংকেত দেওয়া হয়।
== ঘ. অ্যাসিনক্রোনাস বনাম সমকালীন কাউন্টার ==
=== সমকালীন কাউন্টার কী? ===
যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক সংকেত একই সময়ে পায়, তাকে সমকালীন বা সিনক্রোনাস কাউন্টার বলে।
অ্যাসিনক্রোনাসে: ক্লক শুধু প্রথম ফ্লিপ-ফ্লপে যায়, বাকিরা আগেরটার আউটপুট থেকে ক্লক পায়।
সমকালীনে: ক্লক সরাসরি সব ফ্লিপ-ফ্লপে যায়।
=== বিস্তারিত তুলনামূলক সারণি ===
{| class="wikitable" style="text-align:center; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস ও সমকালীন কাউন্টারের বিস্তারিত তুলনা
! style="background:#3498DB; color:white; width:25%;" | বৈশিষ্ট্য !! style="background:#E74C3C; color:white; width:37%;" | অ্যাসিনক্রোনাস !! style="background:#27AE60; color:white; width:37%;" | সমকালীন
|-
| ক্লক সংযোগ || প্রতিটি ফ্লিপ-ফ্লপ আগেরটার আউটপুট থেকে ক্লক পায় || সব ফ্লিপ-ফ্লপে একই ক্লক সরাসরি যায়
|-
| বিলম্ব || বিট সংখ্যার সাথে বাড়ে (<math>n \times t_{pd}</math>) || একটি ফ্লিপ-ফ্লপের বিলম্বই সর্বোচ্চ (<math>t_{pd}</math>)
|-
| গতি || ধীর, বেশি বিটে বেশি ধীর || দ্রুত, বিট সংখ্যা নির্বিশেষে
|-
| গ্লিচ || আছে, পরিবর্তনের সময় ভুল অবস্থা || নেই, সব একসাথে পরিবর্তিত হয়
|-
| সার্কিট জটিলতা || সহজ, কম গেট || জটিল, বেশি গেট দরকার
|-
| ক্লক সরবরাহ || সহজ, একটি তার থেকে || জটিল, সব ফ্লিপ-ফ্লপে বিতরণ
|-
| বিদ্যুৎ খরচ || তুলনামূলক কম || বেশি (সব একসাথে পরিবর্তন)
|-
| ডিজাইন জটিলতা || সহজ || কঠিন
|-
| আইসি উদাহরণ || ৭৪৯০, ৭৪৯৩ || ৭৪১৬৩, ৭৪১৬১
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{n \cdot t_{pd}}</math> || <math>f_{max} = \frac{\text{১}}{t_{pd} + t_{setup}}</math>
|-
| প্রধান ব্যবহার || ঘড়ি, বিভাজক, কম গতির গণনা || প্রসেসর, দ্রুত ডিজিটাল সার্কিট
|}
=== কোনটি কোথায় ব্যবহার করবে? ===
অ্যাসিনক্রোনাস কাউন্টার বেছে নাও যখন:
* সার্কিট সহজ রাখতে চাও এবং গতি সমস্যা নয়।
* ক্লক গতি কম (কয়েক মেগাহার্টজের নিচে)।
* ঘড়ি, ডিবাউন্স সার্কিট, কম্পাঙ্ক বিভাজক তৈরি করছ।
* ব্রেডবোর্ডে শিক্ষামূলক প্রকল্পে কাজ করছ।
* বিদ্যুৎ সাশ্রয় গুরুত্বপূর্ণ।
সমকালীন কাউন্টার বেছে নাও যখন:
* ক্লক গতি বেশি দরকার (কয়েক মেগাহার্টজের উপরে)।
* গ্লিচমুক্ত আউটপুট দরকার।
* মাইক্রোপ্রসেসর, ডিজিটাল সংকেত প্রক্রিয়াকরণ সার্কিট তৈরি করছ।
* আউটপুট সরাসরি সংবেদনশীল লজিকে যাচ্ছে।
=== অ্যাসিনক্রোনাসের সীমাবদ্ধতা ও সমাধান ===
{| class="wikitable" style="text-align:left; width:95%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের সীমাবদ্ধতা ও সমাধান
! style="background:#E74C3C; color:white; width:30%;" | সীমাবদ্ধতা !! style="background:#E74C3C; color:white; width:35%;" | কারণ !! style="background:#27AE60; color:white; width:35%;" | সমাধান
|-
| জমানো বিলম্ব || প্রতিটি ফ্লিপ-ফ্লপ বিলম্ব যোগ করে || সমকালীন কাউন্টার ব্যবহার করো
|-
| গ্লিচ || পরিবর্তনের মুহূর্তে ভুল অবস্থা || আউটপুটে রেজিস্টার বা ডি ফ্লিপ-ফ্লপ যোগ করো
|-
| সীমিত ক্লক গতি || বিলম্ব বাড়লে গতি কমে || বেশি গতিতে সমকালীন ব্যবহার করো
|-
| ক্ষণিক ত্রুটি || গেটিং এর সময় ভুল ডিকোড || স্ট্রোব সংকেত ব্যবহার করো
|-
| বিট সংখ্যা বাড়লে ধীর || প্রতিটি বিটে বিলম্ব যোগ হয় || ক্যারি-লুকঅ্যাহেড পদ্ধতি ব্যবহার করো
|}
== ঙ. সমগ্র অধ্যায়ের সারসংক্ষেপ ==
=== গুরুত্বপূর্ণ সূত্র ও নিয়মের তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | অ্যাসিনক্রোনাস কাউন্টারের গুরুত্বপূর্ণ সূত্র
! style="background:#8E44AD; color:white; width:30%;" | সূত্র বা নিয়ম !! style="background:#8E44AD; color:white; width:35%;" | গাণিতিক রূপ !! style="background:#8E44AD; color:white; width:35%;" | ব্যাখ্যা
|-
| <math>n</math>-বিট কাউন্টারের মডুলো || <math>N = \text{২}^n</math> || <math>n</math>টি ফ্লিপ-ফ্লপ মিলে <math>\text{২}^n</math> অবস্থা
|-
| প্রয়োজনীয় বিট সংখ্যা || <math>n = \lceil \log_2 N \rceil</math> || মডুলো-<math>N</math> কাউন্টারে কমপক্ষে এতটা ফ্লিপ-ফ্লপ লাগবে
|-
| ক্যাসকেড কাউন্টারের মডুলো || <math>N = N_1 \times N_2 \times \cdots \times N_k</math> || <math>k</math>টি কাউন্টার ক্যাসকেডে
|-
| সর্বোচ্চ বিলম্ব || <math>t_{max} = n \times t_{pd}</math> || <math>n</math>টি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্বের যোগফল
|-
| সর্বোচ্চ ক্লক গতি || <math>f_{max} = \frac{\text{১}}{t_{max}}</math> || বিলম্বের বিপরীত মান
|-
| কম্পাঙ্ক বিভাজন || <math>f_{out} = \frac{f_{in}}{N}</math> || মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> ভাগে ভাগ করে
|-
| মডুলো-<math>N</math> রিসেট শর্ত || গণনা = <math>N</math> হলে তাৎক্ষণিক রিসেট || <math>N</math>-এর বাইনারি রূপে যে বিটগুলো ১, তাদের অ্যান্ড করে ক্লিয়ারে দাও
|-
| উর্ধ্বগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>\overline{Q_i}</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের পরিপূরক আউটপুট
|-
| নিম্নগামী ফ্লিপ-ফ্লপ সংযোগ || <math>FF_{i+1}</math>-এর ক্লক = <math>Q_i</math> || পূর্ববর্তী ফ্লিপ-ফ্লপের সরাসরি আউটপুট
|}
=== পরিভাষার তালিকা ===
{| class="wikitable" style="text-align:left; width:100%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | সম্পূর্ণ পরিভাষার তালিকা
! style="background:#27AE60; color:white; width:30%;" | বাংলা পরিভাষা !! style="background:#27AE60; color:white; width:70%;" | সংজ্ঞা
|-
| অ্যাসিনক্রোনাস কাউন্টার || যে কাউন্টারে সব ফ্লিপ-ফ্লপ একই ক্লক পায় না, প্রতিটি আগেরটার আউটপুট থেকে ক্লক পায়
|-
| উর্ধ্বগামী কাউন্টার || যে কাউন্টার <math>\text{০}</math> থেকে শুরু করে ক্রমাগত বাড়তে থাকে
|-
| নিম্নগামী কাউন্টার || যে কাউন্টার সর্বোচ্চ মান থেকে শুরু করে ক্রমাগত কমতে থাকে
|-
| উভয়মুখী কাউন্টার || উপর বা নিচ যেকোনো দিকে গণনা করতে পারে
|-
| মডুলো-<math>N</math> কাউন্টার || <math>N</math>টি অবস্থায় ঘোরে, মানে <math>\text{০}</math> থেকে <math>N-\text{১}</math> পর্যন্ত
|-
| রিপল কাউন্টার || অ্যাসিনক্রোনাস কাউন্টারের আরেক নাম, ঢেউয়ের মতো বিলম্ব এগিয়ে যায় বলে
|-
| প্রোপাগেশন বিলম্ব || সংকেত একটি ফ্লিপ-ফ্লপের মধ্য দিয়ে যেতে যে সময় লাগে
|-
| গ্লিচ || সার্কিট পরিবর্তনের মুহূর্তে ক্ষণিকের ভুল আউটপুট
|-
| প্রি-সেট || ফ্লিপ-ফ্লপকে জোর করে <math>\text{১}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্লিয়ার || ফ্লিপ-ফ্লপকে জোর করে <math>\text{০}</math>-এ নিয়ে যাওয়ার পিন
|-
| ক্যাসকেড || একাধিক কাউন্টার শ্রেণিতে জুড়ে বড় কাউন্টার তৈরি
|-
| কম্পাঙ্ক বিভাজক || কাউন্টারকে ক্লক কম্পাঙ্ক ভাগ করার কাজে ব্যবহার
|-
| বিসিডি কাউন্টার || বাইনারি কোডেড দশমিক, <math>\text{০}</math> থেকে <math>\text{৯}</math> পর্যন্ত দশমিক অঙ্ক বাইনারিতে
|-
| ক্লক গেটিং || একটি গেট দিয়ে ক্লক চালু বা বন্ধ করার পদ্ধতি
|-
| এমএসবি || সর্বোচ্চ তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার বাম দিকের বিট
|-
| এলএসবি || সর্বনিম্ন তাৎপর্যপূর্ণ বিট, বাইনারি সংখ্যার ডান দিকের বিট
|-
| জেকে ফ্লিপ-ফ্লপ || দুটি ইনপুট <math>J</math> ও <math>K</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, টগল মোড আছে
|-
| ডি ফ্লিপ-ফ্লপ || একটি ইনপুট <math>D</math>-বিশিষ্ট ফ্লিপ-ফ্লপ, ক্লকে ডি-র মান সংরক্ষণ করে
|-
| টগল || বর্তমান অবস্থার উল্টো অবস্থায় যাওয়া, <math>\text{০}</math> হলে <math>\text{১}</math>, <math>\text{১}</math> হলে <math>\text{০}</math>
|-
| সমকালীন কাউন্টার || সব ফ্লিপ-ফ্লপ একই ক্লক পায়, গ্লিচমুক্ত ও দ্রুততর
|}
== বিস্তারিত উদাহরণ ==
=== উদাহরণ ১: তিনটি ৭৪৯০ দিয়ে মডুলো-১০০০ কাউন্টার ===
তিনটি ৭৪৯০ চিপ ক্যাসকেডে জুড়ে মডুলো-১০০০ কাউন্টার তৈরি করো এবং গণনা যাচাই করো।
সংযোগ পদ্ধতি:
প্রথম চিপ: বাইরের ক্লক CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি একক স্থানের অঙ্ক দেখাবে।
দ্বিতীয় চিপ: প্রথম চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি দশক স্থান দেখাবে।
তৃতীয় চিপ: দ্বিতীয় চিপের <math>Q_D</math> এই চিপের CKA-তে। <math>Q_A</math> থেকে CKB-তে। এটি শতক স্থান দেখাবে।
মোট মডুলো: <math>N = \text{১০} \times \text{১০} \times \text{১০} = \text{১০০০}</math>
গণনা যাচাই:
{| class="wikitable" style="text-align:center; width:85%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-১০০০ কাউন্টারের বিশেষ মুহূর্ত
! style="background:#E74C3C; color:white;" | দশমিক মান !! style="background:#27AE60; color:white;" | তৃতীয় চিপ (শতক) !! style="background:#3498DB; color:white;" | দ্বিতীয় চিপ (দশক) !! style="background:#8E44AD; color:white;" | প্রথম চিপ (একক) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{৯}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || প্রথম চিপ সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || প্রথম ঘুরল, দ্বিতীয় এগোল
|-
| <math>\text{৯৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || প্রথম ও দ্বিতীয় সর্বোচ্চে
|-
| <math>\text{১০০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || দুটোই ঘুরল, তৃতীয় এগোল
|-
| <math>\text{৯৯৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || <math>\text{৯}</math> || তিনটিই সর্বোচ্চে
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || তিনটিই ঘুরে শুরুতে ফিরল
|}
=== উদাহরণ ২: ৭৪৯৩ দিয়ে মডুলো-৭ কাউন্টার ===
৭ দশমিকে = ০১১১ বাইনারি।
তাই <math>Q_C</math>, <math>Q_B</math>, <math>Q_A</math> তিনটিই ১ হলে রিসেট করতে হবে।
কিন্তু ৭৪৯৩-এ মাত্র দুটো রিসেট পিন আছে (R0(1) এবং R0(2))। তিনটি শর্ত যাচাই করতে অতিরিক্ত অ্যান্ড গেট লাগবে।
সংযোগ:
* R0(1)-এ <math>Q_C</math> সরাসরি দাও।
* একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই গেটের আউটপুট R0(2)-এ দাও।
যখন গণনা ৭ হয় (<math>Q_C = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>):
* R0(1) = <math>Q_C</math> = <math>\text{১}</math>
* R0(2) = <math>Q_B \cdot Q_A</math> = <math>\text{১} \cdot \text{১}</math> = <math>\text{১}</math>
* উভয়ে ১, তাই রিসেট। কাউন্টার ০ থেকে ৬ পর্যন্ত গোনে।
{| class="wikitable" style="text-align:center; width:80%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | মডুলো-৭ কাউন্টারের গণনা
! style="background:#3498DB; color:white;" | ক্লক !! style="background:#E74C3C; color:white;" | <math>Q_D</math> !! style="background:#E74C3C; color:white;" | <math>Q_C</math> !! style="background:#E74C3C; color:white;" | <math>Q_B</math> !! style="background:#E74C3C; color:white;" | <math>Q_A</math> !! style="background:#27AE60; color:white;" | দশমিক !! style="background:#8E44AD; color:white;" | R0(1) !! style="background:#8E44AD; color:white;" | R0(2) !! style="background:#F39C12; color:white;" | ঘটনা
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু
|-
| <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৩}</math> || <math>\text{০}</math> || <math>\text{১}</math> || স্বাভাবিক
|-
| <math>\text{৪}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{৪}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৫}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{৫}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৬}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{০}</math> || <math>\text{৬}</math> || <math>\text{১}</math> || <math>\text{০}</math> || স্বাভাবিক
|-
| <math>\text{৭}</math> || <math>\text{০}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{১}</math> || <math>\text{৭}</math> || <math>\text{১}</math> || <math>\text{১}</math> || রিসেট!
|-
| <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || আবার শুরু
|}
=== উদাহরণ ৩: ২৪ ঘণ্টার কাউন্টার তৈরি ===
২৪ ঘণ্টার কাউন্টার তৈরি করো, ০০ থেকে ২৩ পর্যন্ত।
২৪ = দুই অঙ্কের সংখ্যা: দশক অঙ্ক ০ থেকে ২, একক অঙ্ক ০ থেকে ৯ (তবে দশক ২ হলে একক সর্বোচ্চ ৩)।
পদ্ধতি:
* একক ঘণ্টার জন্য মডুলো-১০ কাউন্টার (কিন্তু দশক ২ থাকলে মডুলো-৪)।
* দশক ঘণ্টার জন্য মডুলো-৩ কাউন্টার (০, ১, ২)।
রিসেট শর্ত: যখন একসাথে দশক = ২ এবং একক = ৪ হবে, মানে সামগ্রিক গণনা = ২৪ হবে, তখন উভয় কাউন্টার রিসেট।
রিসেট সংকেত তৈরি: দশক কাউন্টারের <math>Q_B</math> (মান ২ = বাইনারি ১০, তাই <math>Q_B = \text{১}, Q_A = \text{০}</math>) এবং একক কাউন্টারের <math>Q_C</math> (মান ৪ = বাইনারি ০১০০, তাই <math>Q_C = \text{১}</math>)-এর অ্যান্ড করলে রিসেট সংকেত পাওয়া যাবে।
{| class="wikitable" style="text-align:center; width:75%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ২৪ ঘণ্টা কাউন্টারের বিশেষ অবস্থা
! style="background:#3498DB; color:white;" | ঘণ্টা !! style="background:#27AE60; color:white;" | দশক অঙ্ক !! style="background:#E74C3C; color:white;" | একক অঙ্ক !! style="background:#8E44AD; color:white;" | ঘটনা
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || শুরু বা মধ্যরাত
|-
| <math>\text{০৯}</math> || <math>\text{০}</math> || <math>\text{৯}</math> || একক সর্বোচ্চে
|-
| <math>\text{১০}</math> || <math>\text{১}</math> || <math>\text{০}</math> || দশক বাড়ল
|-
| <math>\text{১৯}</math> || <math>\text{১}</math> || <math>\text{৯}</math> || একক আবার সর্বোচ্চে
|-
| <math>\text{২০}</math> || <math>\text{২}</math> || <math>\text{০}</math> || দশক আবার বাড়ল
|-
| <math>\text{২৩}</math> || <math>\text{২}</math> || <math>\text{৩}</math> || সর্বোচ্চ মান
|-
| <math>\text{০০}</math> || <math>\text{০}</math> || <math>\text{০}</math> || রিসেট, নতুন দিন শুরু
|}
=== উদাহরণ ৪: কম্পাঙ্ক বিভাজনের গণনা ===
একটি ৪.৯১৫২ MHz স্ফটিক দোলক থেকে ৯৬০০ Hz UART ক্লক তৈরি করতে হবে।
বিভাজন অনুপাত:
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৪,৯১৫,২০০}}{\text{৯,৬০০}} = \text{৫১২}</math>
৫১২ = <math>\text{২}^9</math>, তাই ৯টি দ্বিভাজক (মডুলো-২ কাউন্টার) ক্যাসকেডে দিলেই হয়।
বিকল্পভাবে: মডুলো-৬৪ এবং মডুলো-৮ ক্যাসকেড: <math>\text{৬৪} \times \text{৮} = \text{৫১২}</math>।
=== উদাহরণ ৫: নিম্নগামী স্টপওয়াচ কাউন্টার ===
একটি মাইক্রোওয়েভ ওভেনে ৯৯ সেকেন্ড থেকে উল্টো গোনার সার্কিট তৈরি করো।
প্রয়োজন:
* একটি নিম্নগামী মডুলো-১০০ কাউন্টার।
* প্রাথমিক লোড: ১০০১ ১০০১ বিসিডি (দশমিক ৯৯)।
* গণনা ০০ হলে: বাজার বাজবে এবং থামবে।
সংযোগ:
* দুটি ৭৪৯০-এর ক্লিয়ার না ব্যবহার করে প্রিসেট ব্যবহার করো।
* প্রিসেট: একক কাউন্টার ৯-এ, দশক কাউন্টার ৯-এ।
* নিম্নগামীর জন্য: একক কাউন্টারের <math>Q_A</math> (এলএসবি) পরিবর্তে আউটপুটের পরিপূরক দ্বিতীয় কাউন্টারে দাও।
গণনার ধারা: ৯৯, ৯৮, ৯৭, ..., ১০, ০৯, ০৮, ..., ০১, ০০।
=== উদাহরণ ৬: ট্র্যাফিক লাইট নিয়ন্ত্রণ সার্কিটের বিস্তারিত ===
তিনটি রাস্তার সংকেত বাতি নিয়ন্ত্রণ করতে হবে যেখানে:
রাস্তা-১: সবুজ ৪৫s, হলুদ ৫s, লাল ৫০s। চক্র = ১০০s।
রাস্তা-২: সবুজ ৩০s, হলুদ ৫s, লাল ৬৫s। চক্র = ১০০s।
মোট চক্র = ১০০ সেকেন্ড, তাই মডুলো-১০০ কাউন্টার লাগবে।
কম্পাঙ্ক: ১ Hz (প্রতি সেকেন্ডে ১ স্পন্দন)।
ডিকোডার লজিক:
রাস্তা-১ সবুজ: গণনা ০ থেকে ৪৪ (মানে <math>Q < \text{৪৫}</math>)।
রাস্তা-১ হলুদ: গণনা ৪৫ থেকে ৪৯।
রাস্তা-১ লাল: গণনা ৫০ থেকে ৯৯।
রাস্তা-২ লাল: গণনা ০ থেকে ৬৪।
রাস্তা-২ হলুদ: গণনা ৬৫ থেকে ৬৯।
রাস্তা-২ সবুজ: গণনা ৭০ থেকে ৯৯।
{| class="wikitable" style="text-align:center; width:90%;"
|+ style="background:#2C3E50; color:white; padding:8px;" | ট্র্যাফিক সংকেত সারণি
! style="background:#3498DB; color:white;" | গণনা !! style="background:#3498DB; color:white;" | সেকেন্ড !! style="background:#27AE60; color:white;" | রাস্তা-১ !! style="background:#E74C3C; color:white;" | রাস্তা-২
|-
| <math>\text{০০}</math> থেকে <math>\text{৪৪}</math> || ৪৫ s || সবুজ || লাল
|-
| <math>\text{৪৫}</math> থেকে <math>\text{৪৯}</math> || ৫ s || হলুদ || লাল
|-
| <math>\text{৫০}</math> থেকে <math>\text{৬৪}</math> || ১৫ s || লাল || লাল (নিরাপদ বিরতি)
|-
| <math>\text{৬৫}</math> থেকে <math>\text{৬৯}</math> || ৫ s || লাল || হলুদ
|-
| <math>\text{৭০}</math> থেকে <math>\text{৯৯}</math> || ৩০ s || লাল || সবুজ
|-
| <math>\text{০০}</math> || মুহূর্তিক || রিসেট || রিসেট
|}
=== উদাহরণ ৭: বিলম্ব হিসাবের বিস্তারিত ===
একটি চার-স্তরের ক্যাসকেড কাউন্টারে (মোট ১৬ বিট) বিলম্ব বিশ্লেষণ করো।
প্রদত্ত:
* প্রতিটি ফ্লিপ-ফ্লপের প্রোপাগেশন বিলম্ব: <math>t_{pd} = \text{১৫}</math> নানোসেকেন্ড।
* প্রতিটি অ্যান্ড গেটের বিলম্ব: <math>t_{gate} = \text{৫}</math> নানোসেকেন্ড।
প্রথম কাউন্টার (৪ বিট): সর্বোচ্চ বিলম্ব = <math>\text{৪} \times \text{১৫} = \text{৬০}</math> ns।
দ্বিতীয় কাউন্টার (৪ বিট): প্রথমের বিলম্ব + নিজের বিলম্ব = <math>\text{৬০} + \text{৬০} = \text{১২০}</math> ns।
তৃতীয় কাউন্টার (৪ বিট): <math>\text{১২০} + \text{৬০} = \text{১৮০}</math> ns।
চতুর্থ কাউন্টার (৪ বিট): <math>\text{১৮০} + \text{৬০} = \text{২৪০}</math> ns।
সর্বোচ্চ ক্লক গতি:
<math>f_{max} = \frac{\text{১}}{\text{২৪০} \times \text{১০}^{-9}} \approx \text{৪.২}</math> MHz
তুলনা: সমকালীন ১৬-বিট কাউন্টারে সর্বোচ্চ বিলম্ব মাত্র কয়েকটি গেট স্তর, সাধারণত ৩০ থেকে ৬০ ns, তাই গতি ১০ থেকে ৩০ MHz হতে পারে।
== অনুশীলনী ==
=== সহজ প্রশ্ন ===
'''১.''' দুটি মডুলো-৫ কাউন্টার ক্যাসকেডে জুড়লে মোট মডুলো কত হবে?
'''উত্তর:''' <math>N = \text{৫} \times \text{৫} = \text{২৫}</math>। কাউন্টার ০ থেকে ২৪ পর্যন্ত গুনবে।
'''২.''' মডুলো-১৬ কাউন্টারের জন্য কতটি ফ্লিপ-ফ্লপ লাগবে?
'''উত্তর:''' <math>n = \log_2 \text{১৬} = \text{৪}</math>। চারটি ফ্লিপ-ফ্লপ লাগবে।
'''৩.''' একটি ৪-বিট অ্যাসিনক্রোনাস কাউন্টারে প্রতিটি ফ্লিপ-ফ্লপের বিলম্ব ২০ ns হলে সর্বোচ্চ বিলম্ব কত?
'''উত্তর:''' <math>t_{max} = \text{৪} \times \text{২০} = \text{৮০}</math> ns।
'''৪.''' ৭৪৯০ চিপের R0 পিনে উভয়ে লজিক ১ দিলে কী হয়?
'''উত্তর:''' কাউন্টার তাৎক্ষণিক রিসেট হয়ে ০০০০ অবস্থায় চলে যায়।
'''৫.''' মডুলো-৩২ কাউন্টারে কতটি বিট দরকার?
'''উত্তর:''' <math>n = \log_2 \text{৩২} = \text{৫}</math>। পাঁচটি বিট।
'''৬.''' ডিজিটাল ঘড়িতে ৩২৭৬৮ Hz থেকে ১ Hz পেতে বিভাজন অনুপাত কত?
'''উত্তর:''' <math>N = \text{৩২৭৬৮} = \text{২}^{15}</math>। মডুলো-৩২৭৬৮ বিভাজক লাগবে।
'''৭.''' একটি কাউন্টারের আউটপুটে হঠাৎ ভুল মান দেখা দিয়ে মিলিয়ে যাচ্ছে, এটি কী?
'''উত্তর:''' এটি গ্লিচ বা হ্যাজার্ড। অ্যাসিনক্রোনাস কাউন্টারে পরিবর্তনের মুহূর্তে ঘটে।
=== মাঝারি প্রশ্ন ===
'''৮.''' ৭৪৯৩ চিপ দিয়ে মডুলো-৯ কাউন্টার তৈরি করো। কোন পিনে কী সংযোগ দেবে?
'''উত্তর:'''
৯ = ১০০১ বাইনারি। তাই <math>Q_D = \text{১}</math> এবং <math>Q_A = \text{১}</math> হলে রিসেট করতে হবে।
সংযোগ:
* R0(1)-এ <math>Q_D</math>।
* R0(2)-এ <math>Q_A</math>।
* <math>Q_A</math>-কে CKB-তে, বাইরের ক্লক CKA-তে।
গণনা: ০ থেকে ৮ পর্যন্ত। ৯ হওয়ামাত্র রিসেট।
'''৯.''' একটি ৮০ Hz সংকেত থেকে ৪ Hz তৈরি করতে কোন মডুলোর কাউন্টার লাগবে?
'''উত্তর:''' <math>N = \frac{\text{৮০}}{\text{৪}} = \text{২০}</math>। মডুলো-২০ কাউন্টার লাগবে। দুটি মডুলো-১০ বা মডুলো-৪ ও মডুলো-৫ ক্যাসকেডে জুড়লে হয়।
'''১০.''' মডুলো-৪৮ কাউন্টার তৈরি করতে কোন দুটি কাউন্টার ক্যাসকেডে ব্যবহার করবে?
'''উত্তর:''' ৪৮ = ৬ × ৮ বা ৪৮ = ১৬ × ৩ বা ৪৮ = ১২ × ৪।
সহজ উপায়: মডুলো-৮ এবং মডুলো-৬ ক্যাসকেডে, <math>\text{৮} \times \text{৬} = \text{৪৮}</math>।
'''১১.''' একটি কাউন্টার ১ Hz ক্লকে চলে এবং ৩-বিটের। এটি কত সেকেন্ড পরে ঘুরে আসে?
'''উত্তর:''' <math>N = \text{২}^\text{৩} = \text{৮}</math>। প্রতি ৮ সেকেন্ডে একবার ঘুরে আসে।
'''১২.''' অ্যাসিনক্রোনাস কাউন্টারে গ্লিচ কমানোর দুটি উপায় লেখো।
'''উত্তর:'''
* আউটপুটে ডি ফ্লিপ-ফ্লপ যোগ করো (পাইপলাইনিং)। ক্লকের স্থির অবস্থায় আউটপুট পড়ো।
* স্ট্রোব পালস ব্যবহার করো: কেবল স্থির অবস্থায় আউটপুট ডিকোড করো।
'''১৩.''' ৭৪৯০ দিয়ে মডুলো-৬ কাউন্টার কীভাবে তৈরি করবে?
'''উত্তর:'''
বিসিডি মোডে (<math>Q_A</math> থেকে CKB) ৭৪৯০ মডুলো-১০ কাউন্টার হয়। মডুলো-৬ পেতে গণনা ৬ হলে রিসেট করতে হবে।
৬ = ০১১০ বাইনারি। তাই <math>Q_C = \text{১}</math> এবং <math>Q_B = \text{১}</math> হলে রিসেট।
* R0(1)-এ <math>Q_C</math>।
* R0(2)-এ <math>Q_B</math>।
গণনা: ০ থেকে ৫।
=== কঠিন প্রশ্ন ===
'''১৪.''' একটি ডিজিটাল ঘড়িতে মিনিট কাউন্টারের জন্য মডুলো-৬০ সার্কিট ডিজাইন করো। কতটি ৭৪৯০ চিপ লাগবে এবং সংযোগ কীভাবে হবে?
'''উত্তর:'''
মডুলো-৬০ = মডুলো-১০ × মডুলো-৬।
চিপ ১ (মডুলো-১০): একক মিনিটের অঙ্ক। বিসিডি মোডে সংযুক্ত (<math>Q_A</math> থেকে CKB)।
চিপ ২ (মডুলো-৬): দশক মিনিটের অঙ্ক। চিপ ১-এর <math>Q_D</math> থেকে চিপ ২-এর CKA-তে। R0(1)-এ <math>Q_C</math>, R0(2)-এ <math>Q_B</math>।
মোট ২টি ৭৪৯০ চিপ লাগবে।
'''১৫.''' তিন-স্তরের ক্যাসকেড কাউন্টারে (মডুলো-৫ × মডুলো-৮ × মডুলো-৩) মোট অবস্থা কত? বিলম্ব কত যদি প্রতিটি ফ্লিপ-ফ্লপে ১২ ns বিলম্ব থাকে?
'''উত্তর:'''
মোট মডুলো: <math>N = \text{৫} \times \text{৮} \times \text{৩} = \text{১২০}</math>।
মোট বিট: মডুলো-৫ এ ৩ বিট, মডুলো-৮ এ ৩ বিট, মডুলো-৩ এ ২ বিট। মোট ৮ বিট।
সর্বোচ্চ বিলম্ব: <math>t_{max} = \text{৮} \times \text{১২} = \text{৯৬}</math> ns।
সর্বোচ্চ ক্লক গতি: <math>f_{max} \approx \text{১০.৪}</math> MHz।
'''১৬.''' একটি স্বয়ংক্রিয় মেশিন প্রতি ১ মিনিটে একটি পণ্য তৈরি করে এবং প্রতিদিন ৮ ঘণ্টা চলে। সারাদিনের উৎপাদন গণনা করতে কত বিটের কাউন্টার লাগবে?
'''উত্তর:'''
৮ ঘণ্টায় মোট মিনিট = ৮ × ৬০ = ৪৮০ মিনিট = ৪৮০ পণ্য।
সর্বোচ্চ গণনা ৪৮০, তাই বিট সংখ্যা:
<math>n = \lceil \log_2 \text{৪৮০} \rceil = \lceil \text{৮.৯} \rceil = \text{৯}</math> বিট।
৯ বিটের কাউন্টার ০ থেকে ৫১১ পর্যন্ত গুনতে পারে, যা ৪৮০ গণনার জন্য যথেষ্ট।
'''১৭.''' ৭৪৯৩ চিপ দিয়ে মডুলো-১১ কাউন্টার তৈরি করো। ৭৪৯৩-এ মাত্র দুটি রিসেট পিন থাকায় বাড়তি অ্যান্ড গেট লাগবে কিনা বিশ্লেষণ করো।
'''উত্তর:'''
১১ = ১০১১ বাইনারি। রিসেট শর্ত: <math>Q_D = \text{১}</math>, <math>Q_B = \text{১}</math>, <math>Q_A = \text{১}</math>।
তিনটি শর্ত আছে, কিন্তু রিসেট পিন মাত্র দুটি। তাই একটি অ্যান্ড গেটে <math>Q_B</math> ও <math>Q_A</math> দিয়ে সেই আউটপুট R0(2)-এ এবং R0(1)-এ সরাসরি <math>Q_D</math> দাও।
যাচাই: গণনা ১১ হলে <math>Q_D = \text{১}, Q_B = \text{১}, Q_A = \text{১}</math>। R0(1) = ১, R0(2) = <math>Q_B \cdot Q_A</math> = ১। উভয়ে ১, রিসেট হবে।
'''১৮.''' দেখাও যে একটি মডুলো-৬০ ক্যাসকেড কাউন্টার মিনিটের পরিবর্তে সরাসরি মডুলো-৬০ কাউন্টার ব্যবহার করলে কী পার্থক্য হয়।
'''উত্তর:'''
মডুলো-৬০ কাউন্টার সরাসরি ০ থেকে ৫৯ পর্যন্ত বাইনারিতে গোনে। ৬ বিট দরকার।
কিন্তু ডিজিটাল ঘড়িতে দুটো আলাদা দশমিক অঙ্ক দেখাতে হয়, তাই বিসিডি পদ্ধতিতে মডুলো-১০ ও মডুলো-৬ ক্যাসকেড বেশি সুবিধাজনক।
সরাসরি মডুলো-৬০: বাইনারি থেকে দশমিক রূপান্তর ডিকোডার জটিল।
ক্যাসকেড মডুলো-১০×৬: প্রতিটি অঙ্ক আলাদাভাবে বিসিডিতে পাওয়া যায়, ডিকোডার সহজ।
'''১৯.''' একটি রেডিও স্টেশন ৯৮.৪ MHz-এ সম্প্রচার করে। ৯৮.৪ MHz = ৯৮৪ × ১০০ kHz। ১০০ kHz রেফারেন্স পেতে একটি ৯.৮৪ MHz স্ফটিক থেকে কত মডুলোর বিভাজক লাগবে?
'''উত্তর:'''
<math>N = \frac{f_{in}}{f_{out}} = \frac{\text{৯,৮৪০,০০০}}{\text{১০০,০০০}} = \text{৯৮.৪}</math>
এটি পূর্ণ সংখ্যা নয়। তাই সরাসরি বিভাজন সম্ভব নয়।
বিকল্প: ৯.৮৪ MHz থেকে প্রথমে ÷৯৮.৪ না করে, ৯.৮৪ = ৯.৮৪ MHz = ৯৮৪০ kHz। ÷৯৮.৪ এর বদলে ÷৯৮৪ করলে ১০ kHz পাওয়া যায়, তারপর ÷১০ করলে ১ kHz। ফেজ লকড লুপ ব্যবহার করলে ভগ্নাংশ বিভাজন সম্ভব।
'''২০.''' প্রমাণ করো যে মডুলো-<math>N</math> কাউন্টার কম্পাঙ্ক <math>N</math> দিয়ে ভাগ করে এবং একটি মডুলো-৩ কাউন্টারের সর্বোচ্চ বিটের কর্তব্যচক্র কত?
'''উত্তর:'''
কম্পাঙ্ক বিভাজন প্রমাণ: মডুলো-<math>N</math> কাউন্টার প্রতি <math>N</math>টি ইনপুট ক্লক স্পন্দনে একবার ঘুরে আসে। তাই আউটপুটের একটি চক্র = <math>N</math>টি ইনপুট চক্র। সুতরাং:
<math>f_{out} = \frac{f_{in}}{N}</math>
মডুলো-৩ কাউন্টারের কর্তব্যচক্র: মডুলো-৩ তিনটি অবস্থায় ঘোরে: ০০, ০১, ১০।
<math>Q_1</math> (সর্বোচ্চ বিট) এর মান:
* অবস্থা ০০: <math>Q_1 = \text{০}</math>
* অবস্থা ০১: <math>Q_1 = \text{০}</math>
* অবস্থা ১০: <math>Q_1 = \text{১}</math>
তিনটি অবস্থার মধ্যে একটিতে ১, তাই কর্তব্যচক্র = <math>\frac{\text{১}}{\text{৩}} \approx \text{৩৩.৩}\%</math>।
এটি ৫০% নয়, অর্থাৎ অসম কর্তব্যচক্র। যখন সমান কর্তব্যচক্র দরকার হয়, <math>\text{২}^n</math> মডুলো কাউন্টার বা বিশেষ সার্কিট ব্যবহার করতে হয়।
[[{{BOOKCATEGORY}}]]
g8dhyl3so69fj48xego3qcsadn3git7
আরিমা/ওমর বনাম ফ্রিটজলেইন, ২০০৫ পোস্টাল চ্যাম্পিয়নশিপ
0
31641
106483
102297
2026-06-04T17:21:44Z
R1F4T
9121
/* */
106483
wikitext
text/x-wiki
চার মাসব্যাপী খেলা এই গেমটি শেষ পর্যন্ত ফ্রিটজলাইনকে ২০০৫ আরিমা পোস্টাল চ্যাম্পিয়নশিপে অপরাজিত ১০-০ রেকর্ড এনে দেয়। ওমর এই গেমে জিতলে তিনি ও ফ্রিটজলাইন উভয়েই ৯-১ রেকর্ড নিয়ে প্রথম স্থানে টাই করতেন। অত্যন্ত ধীর টাইম কন্ট্রোলের কারণে একটি পোস্টাল গেমে চাল দেওয়ার আগে অনেকগুলো ভিন্ন ক্রম নিয়ে ভাবার সুযোগ পাওয়া যায়।
{{arimaa/game|15552|গেম}}
* '''1g:''' ওমর [[../Setup#Symmetric setups|৯৯অফ৯ সেটআপের]] একটি ভিন্নরূপ ব্যবহার করেন এবং তার ফাঁদগুলোর পেছনে কুকুর রাখেন। যেহেতু একটি কুকুরকে শত্রুর কুকুর দিয়ে ঠেলে সরানো যায় না, এই বিন্যাস ফাঁদ আক্রমণের পথ সীমিত করে দেয়। পরে একটি কুকুর ফাঁদ পেরিয়ে এগিয়ে যেতে পারে এবং তার জায়গায় একটি খরগোশ বা বিড়াল আসতে পারে।
* '''1s:''' ফ্রিটজলাইন ক্লাসিক ৯৯অফ৯ সেটআপ বেছে নেন, যেখানে ফাঁদগুলোর পেছনে বিড়াল থাকে। এতে শুরুতে তার হোম ফাঁদগুলো ওমরের চেয়ে কিছুটা বেশি ঝুঁকিতে থাকে, কারণ শত্রুর কুকুর বিড়ালকে সরিয়ে দিতে পারে। তবে ফাঁদের পেছনে বিড়াল এবং মাঝখানে কুকুর রাখলে সামগ্রিকভাবে বেশি নমনীয়তা পাওয়া যায়।
* '''2g:''' ওমর আক্রমণাত্মকভাবে তার হাতিকে চার ঘর এগিয়ে দেন, একটি বিড়াল ধরার বা উটকে উল্টে দেওয়ার হুমকি তৈরি করেন।
* '''2s:''' ফ্রিটজলাইন যদি এখন তার নিজের হাতিকে চার ঘর এগিয়ে দিতেন, তাহলে একটি বিড়াল হারাতেন কিন্তু একটি কুকুরকেও হুমকিতে ফেলতেন। এই ধরনের যেকোনো ধরা-ধরি চারটি ধাপই ব্যবহার করত এবং আরও হুমকি তৈরি করত, তাই এটি অস্পষ্ট ফলাফলের একটি [[../Race Positions|রেস]] শুরু করতে পারত। ফ্রিটজলাইন প্রথমে একটি কুকুরের বিনিময়ে একটি বিড়াল পেতেন, কিন্তু ওমরের তবুও প্রথম চালের সুবিধা থাকত। এই ধরনের রেস এড়িয়ে ফ্রিটজলাইন তার দুটি হোম ফাঁদ রক্ষা করেন এবং তার উটকে আড়াল করেন।
* '''3g:''' হাতির [[../Glossary#Blockade|স্মাদারের]] ঝুঁকির কারণে ওমর তার হাতিকে আর এগিয়ে দেন না। হাতিকে e6এ রাখাটা তখনই যুক্তিসংগত হত যদি ওমর দ্রুত আরেকটি ঘুঁটি এগিয়ে দেওয়ার পরিকল্পনা করতেন, যেটি f6এ ধরা থেকে সুরক্ষিত থাকত কিন্তু তবুও জিম্মি হয়ে যেতে পারত। বহু-ঘুঁটির আক্রমণ শুরু করতে প্রস্তুত না হয়ে ওমর তার হাতিকে এক ঘর পিছিয়ে নেন এবং বাকি তিন ধাপে ঘরে ঘুঁটি সাজান। ওমর ২গতে হাতিকে মাত্র দুই বা তিন ঘর এগিয়ে দিয়ে একই সাথে একটি বা দুটি ঘোড়া এগিয়ে দিলে সময় বাঁচাতে পারতেন।
* '''3s:''' ফ্রিটজলাইন তার হাতি এগিয়ে দেন, পূর্বদিকে সরিয়ে ওমরের উটের মুখোমুখি করেন। ফ্রিটজলাইনের পশ্চিমের ঘোড়া c6 ফাঁদ রক্ষা করে, ওমরের ঘোড়াকে b6 থেকে আটকে দেয়।
* '''4g:''' ওমর ফ্রিটজলাইনের পূর্বের ঘোড়াকে f3 ফাঁদের দিকে টেনে নেন। ফ্রিটজলাইন সহজেই ধরা এড়াতে পারবেন, কিন্তু ওমর ফ্রিটজলাইনকে রক্ষণে ব্যস্ত রেখে কৌশলগত সুবিধা নেওয়ার আশায় এটি করেন।
* '''4s:''' ফ্রিটজলাইন তার ঘোড়াকে জিম্মি হওয়ার আগেই মুক্ত করার সিদ্ধান্ত নেন। তিনি তার হাতি দিয়ে ঘোড়াকে আনফ্রিজ করেন; h7 খরগোশকে h5এ এগিয়ে দিয়েও ঘোড়াকে মুক্ত করা যেত, কিন্তু তাহলে খরগোশটি [[../Rabbit Advancement#Exposed to capture|উন্মুক্ত]] হয়ে যেত। আরেকটি বিকল্প ছিল g7 বিড়ালকে এগিয়ে দেওয়া, কিন্তু ফ্রিটজলাইন তার ঘোড়াকে g6এ ফিরিয়ে আনতে চেয়েছিলেন, যেটি বিড়াল সেখানে থাকলে সম্ভব হত না।
* '''5g:''' ওমর তার ঘোড়াকে ফ্রিটজলাইনের হাতির নাগালের বাইরে সরিয়ে নেন। এখন পর্যন্ত শুরুটা ছিল রক্ষণাত্মক, হাতি ছাড়া অন্য ঘুঁটিগুলো হুমকি এড়াতে পিছু হটছে।
* '''5s:''' ফ্রিটজলাইন h-ফাইলে একটি খরগোশ টানতে তার হাতিকে আরও বাইরের দিকে নিয়ে যান। পরবর্তী আরিমা তত্ত্ব এটিকে [[../Distribution_of_Force#Centralisation|অপছন্দ করত]], কিন্তু রক্ষণাত্মক খেলায় এটি যুক্তিসংগত মনে হয়েছিল, কারণ একটি খরগোশ ঘরের দিকে পিছু হটতে পারে না। ফ্রিটজলাইন পরিবর্তে তার হাতি দিয়ে ওমরের e3 ঘোড়াকে d3এ ঠেলে দিতে পারতেন, এতে ওমরের দুটি ঘোড়াই পশ্চিমে চলে যেত, যেখানে ফ্রিটজলাইনের উট গিয়ে তাদের মুখোমুখি হতে পারত। পূর্বে কোনো ঘোড়া না থাকায় ওমর সেখানেও [[../Attacking/Attacks Against a Camel Trap|ঝুঁকিতে]] পড়তেন এবং ফ্রিটজলাইন দুই পাশেই শক্তিশালী হুমকি তৈরি করতে পারতেন। তাড়াতাড়ি ফাঁদ আক্রমণে আগ্রহী না হয়ে ফ্রিটজলাইন স্বল্পমেয়াদী খরগোশ ধরার হুমকিকেই বেছে নেন।
* '''6g:''' ওমর তার হাতিকে পশ্চিমে সরিয়ে বড় হুমকি তৈরি করেন। ফ্রিটজলাইনের পক্ষে পূর্বে খরগোশ শিকার চালিয়ে যাওয়া কঠিন, কারণ তার পশ্চিমের ঘোড়া এবং সম্ভাব্যভাবে c6 ফাঁদ বিপদে পড়েছে।
* '''6s:''' পশ্চিমের ঘোড়া সরিয়ে b6 সাথে সাথে খুলে না দিয়ে ফ্রিটজলাইন তার হাতিকে কেন্দ্রে আনেন এবং ওমরের e3 ঘোড়াকে উল্টে দেওয়ার হুমকি তৈরি করেন।
* '''7g:''' নিজের হাতিকে কেন্দ্রে আনতে ওমর b6 ঘোড়াকে উল্টানোর বদলে দুইবার টেনে নেন। ওমর ঘোড়াটাকে b4এ টেনে নিতে পারতেন যেখান থেকে উদ্ধার করা কঠিন হত, কিন্তু তিনি তার হাতিকে যতটা সম্ভব কেন্দ্রে রাখতে চান, যাতে পূর্বে ফ্রিটজলাইনের অগ্রগতি সীমিত করা যায়।
* '''7s:''' ফ্রিটজলাইন তার ঘোড়াকে নিরাপদে নিয়ে যান। টানা-পিছানোর খেলা চলতে থাকলে ফ্রিটজলাইন সামান্য এগিয়ে থাকতেন, কারণ ওমরের একটি খরগোশ h4এ উন্মুক্ত অবস্থায় রয়েছে।
* '''8g:''' কিছুটা আক্রমণাত্মক চালে ওমর একটি ঘোড়াকে a6এ এগিয়ে দেন; লক্ষ্য করুন ঘোড়াটি শত্রুর উট থেকে দূরের পাশে এগিয়েছে। এই ঘোড়া একটি খরগোশ টানতে পারে, তবে সম্ভাব্য ফাঁদ আক্রমণে b6 নেওয়ারও হুমকি দেয়। তবে হাতি-ঘোড়ার আক্রমণে সাধারণত অন্য ঘুঁটির সমর্থন দরকার, এবং পশ্চিমে ওমরের ঘুঁটি খারাপভাবে সাজানো; c3 ফাঁদ পালটা আক্রমণের ঝুঁকিতেও রয়েছে। ওমরের উচিত ছিল আগে তার অন্য ঘোড়াকে g3এ এবং উটকে মাঝখানে সরিয়ে নমনীয়তা বাড়ানো।
* '''8s:''' ফ্রিটজলাইন ওমরের এগিয়ে যাওয়া ঘোড়ার পিছনে সাথে সাথে যান না, কারণ শক্তিশালী [[../Other Hostages|ঘোড়া জিম্মি]] করা জটিল হতে পারে। ফ্রিটজলাইন পরিবর্তে h4 খরগোশকে আরও সামনে টেনে নেন, এটিকে প্রথম হুমকি হিসেবে দেখেন যা পরে পশ্চিমে কার্যকর হুমকি তৈরি করতে পারে।
* '''9g:''' ওমর তার ঘোড়া দিয়ে ফ্রিটজলাইনের a8 খরগোশ বের করে আনতে পারতেন, কিন্তু এই মুহূর্তে খরগোশ টানার রেস ওমরের পক্ষে যেত না। c6এ আক্রমণ অনেক ধীর হত, কারণ ফ্রিটজলাইন খরগোশটি ধরে c6 রক্ষা করেও পালটা আক্রমণ করতে পারতেন। তাই ওমর পূর্বে তার উট এগিয়ে দেন, সম্ভবত টানা খরগোশকে কাজে লাগানোর পরিকল্পনায়। এগিয়ে যাওয়া উট প্রায়ই জিম্মি হওয়ার ঝুঁকিতে থাকে, কিন্তু পাশের সঙ্গী ঘুঁটি এটি কম সম্ভাবনাময় করে তুলতে পারে। পশ্চিমে ক্রমশ দুর্বল হয়ে পড়ায় ওমর c3 রক্ষা করতে একটি বিড়াল এগিয়ে দেন; এটি আক্রমণ বেশিক্ষণ আটকাবে না, কিন্তু ওমরকে আগে আক্রমণ করার সময় দিতে পারে।
* '''9s:''' ফ্রিটজলাইন তার হাতিকে পূর্বে সরিয়ে ওমরের উটের মুখোমুখি করেন। অন্য যাই হোক, হাতিকে সবসময় শত্রুর উটের দিকে নজর রাখতে হয়। ফ্রিটজলাইন খরগোশটিকে h6এ টেনে নেন, এখন এক চালেই ধরার হুমকি তৈরি করেন।
* '''10g:''' ওমর f6 রক্ষা করেন, তার হাতিকে [[../Attacking/Positioning#Positioning the elephant|f5এর বদলে e6এ]] রাখেন। উট ও কুকুর এগিয়ে দিয়ে ওমর f6এ বহু-ঘুঁটির আক্রমণের দিকে এগিয়ে যান।
* '''10s:''' ওমরের হাতি রক্ষা করায় f6এ কিছু ধরতে না পেরে ফ্রিটজলাইন তার উটকে পশ্চিমে সরান, f7এ একটি বিড়াল দিয়ে জায়গাটা পূরণ করেন।
* '''11g:''' ওমরের ঘোড়া খালি হাতে পিছু হটে, কিন্তু তার উট দমে না গিয়ে এগিয়ে যায়, f6এ তাৎক্ষণিক ধরার হুমকি তৈরি করে। h6এ বন্ধুত্বপূর্ণ খরগোশ থাকায় উটকে h6এ না জমিয়ে রাখা যাচ্ছে না জিম্মিও করা যাচ্ছে না। ফ্রিটজলাইনের জন্য এখানে যাই হোক না কেন, এটি দেখায় কীভাবে শুরুতে খরগোশ টানা পরে বিপদে ফেলতে পারে।
* '''11s:''' ফ্রিটজলাইন f6 রক্ষা করেন এবং তার পিছনের সারিতে জায়গা তৈরি করেন যাতে ওমরের উটকে g7এ ঠেলে দিয়ে সেখানে জমিয়ে জিম্মি করা যায়। ফ্রিটজলাইনের উট ওমরের পশ্চিমের ঘোড়ার দিকে এগিয়ে d6এ থামে। ওমরের হাতি e6এ থাকায় এটি ফ্রিটজলাইনের উটকে ঝুঁকিতে ফেলে, তবে কেবল তখনই যদি ওমর তার নিজের উট এবং একটি খরগোশ উভয়ই ছেড়ে দেন।
* '''12g:''' ওমরের উট একটি খরগোশকে f7 বা g7এ টেনে আনতে পারত, ফ্রিটজলাইনের কাছে উট জিম্মি করার কোনো ঘর রাখত না। দুর্ভাগ্যবশত, যেকোনো টানই চারটি ধাপ ব্যবহার করত, a5 ঘোড়াকে ফ্রিটজলাইনের উটের মুখে ফেলে c6এ হুমকিতে রাখত। সেই ফাঁদ রক্ষা করতে প্রস্তুত না হয়ে ওমর ঘোড়াকে আরও পিছিয়ে নেন। তিনি তার উটকে f6এ রাখেন, উট জিম্মি মেনে নেন কিন্তু ফ্রিটজলাইনের জন্য সেটা করাকে জটিল করে তোলেন।
* '''12s:''' ফ্রিটজলাইন উটকে জিম্মি করেন, যদিও সাময়িকভাবে অত্যন্ত বিশ্রী অবস্থানে। হাতি একটি ফাঁদ ঘরে রাখার আগে দুইবার তিনবার নিশ্চিত করতে হয় যে এটি নিরাপদ; এটি পোস্টাল গেম হওয়ায় ফ্রিটজলাইনের কাছে সেই সময় প্রচুর ছিল।<!----><p>ফ্রিটজলাইন তার উটকে পশ্চিমে সরান, তাৎক্ষণিক বিনিময়ের প্রস্তাব আর থাকে না। তবে d6 খালি হওয়ায় ওমরের হাতি এখন ফ্রিটজলাইনের বিড়ালকে e5এ উল্টে দিতে পারে।</p>
* '''13g:''' ওমর সেই উল্টানো কাজটি করেন, বিড়ালটি ধরে জিম্মির ক্ষতি কমানোর আশায়। ফ্রিটজলাইন সম্ভবত তার বিড়াল মুক্ত করে উট জিম্মি রাখতে পারবেন না, কারণ তার হাতি যদি e7 বা g7এ কোনো ঘুঁটি ছাড়া f6এ ঘুরন ধরে শেষ করে তাহলে সেটি ধরা পড়বে।
* '''13s:''' ফ্রিটজলাইন উটকে g7এ ঠেলে দেন; এতে ফ্রিটজলাইনের g6 ঘোড়া জমে যায়, কিন্তু ঘোড়াটি আগেও নড়তে পারত না কারণ তাহলে হাতি হারিয়ে যেত। d7 কুকুরকে পূর্বে সরানো ভুল হতে পারে, কারণ এটি একটি সম্ভাব্য [[../Camel Hostage#Central hostage|কেন্দ্রীয় জিম্মির]] পথ বন্ধ করে দেয় যদি ওমরের হাতি f5এ যায়। ফ্রিটজলাইন তার e8 কুকুর ও f8 খরগোশ পশ্চিমে সরিয়ে উটকে f8এ ঠেলে ফাঁদের পেছনে জিম্মি রাখতে পারতেন, এতে পূর্বের ঘোড়াও মুক্ত থাকত।
* '''14g:''' ওমর বিড়ালটিকে f4এ ঠেলে দেন। উটের [[../Glossary#Fork|ফর্কের]] ঝুঁকির কারণে ফ্রিটজলাইন e7 খালি না রাখলে এই চাল সম্ভব হত না। সেক্ষেত্রে ওমর বিড়ালটিকে দক্ষিণে ঠেলে হাতি e6এ ফিরিয়ে নিতে পারতেন; e4এ বিড়ালটি জমে যেত এবং একটি ঘোড়ার দ্বারা হুমকিতে পড়ত।
* '''14s:''' ফ্রিটজলাইন তার হাতি সরান যাতে পূর্বের ঘোড়া এগিয়ে যেতে পারে।
* '''15g:''' ওমর বিড়ালটি ধরেন। ওমর এখন f6এ [[../Glossary#Swarm|ঝাঁক]] দিতে এবং জিম্মি রক্ষা থেকে তার হাতিকে [[../Camel_Hostage#Multi-piece_defense|ঘুরিয়ে নিতে]] চান। ফ্রিটজলাইন দ্বিতীয় হুমকি তৈরি করে ওমরকে চাপে ফেলতে চান।
* '''15s:''' ফ্রিটজলাইনকে তার পূর্বের ঘোড়া সরাতেই হবে, নইলে এটি f4এ উল্টে দুই ধাপে ধরার হুমকিতে পড়বে। ফ্রিটজলাইন ঘোড়াটিকে g3এ এগিয়ে দেন, ওমরের কুকুরকে পিছিয়ে দেন। ফ্রিটজলাইন হয়তো f6এর ঝাঁক ঠেকানোর চেষ্টা করছেন, কিন্তু তার ঘোড়া এখন তাৎক্ষণিক ধরার ঝুঁকিতে যদি ওমর তার উট বিসর্জন দিতে রাজি থাকেন। ঘোড়াটি পরিবর্তে h-ফাইলে যেতে পারত, প্রাথমিক ঝাঁকের সুযোগ দিয়েও ওমরের হাতি সরে যাওয়ার পর f6এর নিয়ন্ত্রণ ফিরে নেওয়ার জন্য প্রস্তুত থাকত। এদিকে ফ্রিটজলাইনের অন্য ঘোড়া পশ্চিমে এগিয়ে যেতে পারত, ওমরের হাতি f6 রক্ষা করার সময় কোনো বিপদ ছাড়াই।
* '''16g:''' ওমর জিম্মি উটকে ছেড়ে দিয়ে ফ্রিটজলাইনের এগিয়ে যাওয়া ঘোড়াটি ধরেন। উট জিম্মিকারী প্রায়ই একটি ঘোড়ার বিনিময়ে উট পায়, কিন্তু ফ্রিটজলাইন এখানে আরও ভালো করতে পারতেন, বিশেষত কারণ ওমরের হাতি দ্রুত f6এ ফিরতে না পারলে একটি খরগোশ ধরারও সুযোগ ছিল।
* '''16s:''' ফ্রিটজলাইন উটটি ধরবেন; প্রশ্ন হল তার হাতি কোথায় শেষ করবে। ওমর যেহেতু সাথে সাথে f6 রক্ষা করতে পারেন, ফ্রিটজলাইনকে একটি খরগোশের কারণে হাতি কোণায় আটকে রাখলে চলবে না। ফ্রিটজলাইন e6এর বদলে f5 বেছে নেন, সম্ভবত পূর্বের পার্শ্ব রক্ষা করতে।<!----><p>ওমর এখন একটি উট হারিয়েছেন, কিন্তু ফ্রিটজলাইন একটি ঘোড়া ও একটি বিড়াল হারিয়েছেন। এটি [[../Relative Value of Pieces#Uneven Trades|প্রায় সমান]] হলেও এখন থেকে এক-এক বিনিময়ের খেলা ওমরের পক্ষে যাবে, বিশেষত যদি তিনি ফ্রিটজলাইনের বাকি ঘোড়াটি ধরতে পারেন। শত্রুর উট না থাকায় ফ্রিটজলাইনের ঘোড়া এখন ওমরের যেকোনো ঘোড়ার চেয়ে শক্তিশালী। এখান থেকে ফ্রিটজলাইনের উচিত এগিয়ে থাকার খেলা খেলা, সহজে কোনো ঘুঁটি না হারানো।</p>
* '''17g:''' f6এ হাতি-ঘোড়ার আক্রমণের লক্ষ্যে ওমর তার হাতিকে e6এ সরান, ফ্রিটজলাইনের উট বা ঘোড়ার g6এ যাওয়ার সরাসরি পথ বন্ধ করেন।
* '''17s:''' ওমরের পরিকল্পনা সম্ভবত না বুঝে ফ্রিটজলাইন দুটি কুকুরকেই আরও পূর্বে সরান। কাছাকাছি সক্রিয় শত্রু ঘোড়া থাকলে একটি কুকুরের পক্ষে g6 ধরে রাখা কঠিন। তাছাড়া দুটি কুকুরকে এক পাশে রাখা [[../Distribution of Force#Balance|প্রায়ই অপচয়]]। পশ্চিমে একটি কুকুর c3এ আক্রমণ সমর্থন করতে পারত।
* '''18g:''' ওমর তার পূর্বের ঘোড়া ও তার পেছনে একটি কুকুর এগিয়ে দেন, g6 দখলের প্রস্তুতি নেন। এখন ফ্রিটজলাইন h6 খরগোশকে ফাঁদে উল্টে দিলে লাভ হবে না, কারণ ফ্রেম সাথে সাথে ভেঙে যাবে।
* '''18s:''' পশ্চিমে কোনো আক্রমণ পরিকল্পনায় আস্থা না রেখে ফ্রিটজলাইন তার উটকে পূর্বে সরান, ভারসাম্য ফেরাতে এবং নতুন জিম্মি নেওয়ার আশায়।
* '''19g:''' ওমর f6এ হাতি-ঘোড়ার আক্রমণ চালিয়ে যান, ঘোড়াকে মুক্ত রাখতে একটি কুকুর এগিয়ে দেন। আবারও, h6 খরগোশ ফ্রিটজলাইনের সম্ভাব্য জিম্মিকে জটিল করে তোলে।
* '''19s:''' ফ্রিটজলাইনের উট আরও পূর্বে যায়, ওমরের ঘোড়া ও খরগোশকে হুমকি দিতে। তবে নিজের পূর্বের ঘোড়া না থাকায় ফ্রিটজলাইন হয়তো [[../Other Hostages#Horse-by-camel hostages|উট-ধারণকৃত জিম্মি]] নিশ্চিত করতে পারবেন না যা তার হাতিকে চলে যেতে দেবে।
* '''20g:''' ওমর তার হাতিকে f7এ সরান, ফ্রিটজলাইনের উটকে পশ্চিমে ঠেলে সম্ভাব্য ঘোড়া জিম্মির পথ বন্ধ করেন।
* '''20s:''' ফ্রিটজলাইন তার উটকে f6এ রাখেন, ওমরের হাতি f7এ থাকলে হাতি স্মাদারের মঞ্চ তৈরি করেন।
* '''21g:''' ওমর তার ঘোড়া পিছিয়ে নেন, কিন্তু তার কুকুর ও খরগোশ এখনও f6এ ঝুঁকিতে। ওমর পরিবর্তে উটকে উত্তরে টেনে বিড়ালকে পূর্বে ঠেলে তার হাতি কেন্দ্রীভূত করে ফ্রিটজলাইনের যেকোনো জিম্মি বিলম্বিত করতে পারতেন।
* '''21s:''' ফ্রিটজলাইন এখন ওমরের কুকুর এবং খরগোশ উভয়কেই হুমকি দেন। তাছাড়া f3এ হাতি-উটের আক্রমণও এখন সম্ভব।
* '''22g:''' ওমর একটি কুকুর ঠেলে একটি খরগোশ টানেন, কিন্তু এতে খুব কম অর্জন হয়। ওমরের হাতি f6 ফাঁদ ছেড়ে গেলে ফ্রিটজলাইন এখনও ওমরের কুকুর ধরতে পারেন।
* '''22s:''' ফ্রিটজলাইন হাতি স্মাদারের ব্যবস্থা করেন, পরের চালে সম্পন্ন করা যাবে যদি ওমর তার হাতি পশ্চিমে না সরান। তবে ফ্রিটজলাইনের উচিত ছিল c6 ফাঁদে একটি রক্ষক যোগ করা; এক জায়গায় মনোযোগী হলে অন্য জায়গা সহজেই অবহেলিত হয়।
* '''23g:''' ওমরের হাতি পালায়, এবং ফ্রিটজলাইনের b6 ঘোড়ার বিরুদ্ধে এক চালের হুমকি তৈরি করে। ঘোড়া ধরলে f6এ কুকুর ও খরগোশ হারানোর ক্ষতি পুষিয়ে নেওয়া যাবে।
* '''23s:''' ফ্রিটজলাইন কুকুর ও খরগোশের বিনিময়ে তার একমাত্র বাকি ঘোড়াটি বাঁচানোর সিদ্ধান্ত নেন। ওমরের কোনো উট না থাকায় ফ্রিটজলাইনের ঘোড়াকে কেবল ওমরের হাতিই হুমকি দিতে পারে, এবং ফ্রিটজলাইন দুটি ঘুঁটি রাখার মূল্য দেখেন যারা কেবল একটি হুমকির মুখে। ফ্রিটজলাইন এই বিনিময় করলে ওমরের ঘোড়াগুলো পুরো বোর্ড দাপাতে পারত।
* '''24g:''' ওমর তার হাতি কেন্দ্রে আনেন এবং f5 কুকুর বাঁচান। এটি ছিল একমাত্র চাল যা একসাথে এই দুটি কাজ করতে পারত, যেমন ২৩গ ছিল একমাত্র চাল যা ওমরের হাতি মুক্ত করে ফ্রিটজলাইনের ধরার হুমকি মোকাবেলা করতে পারত।
* '''24s:''' ফ্রিটজলাইন সরাসরি h6 খরগোশ ধরতে পারতেন, কিন্তু ঘুরন শেষে তার উট উন্মুক্ত থাকত। তাই ফ্রিটজলাইন তার হাতি f5এ সরিয়ে খরগোশটি g6এ টেনে নেন, ওমর ফাঁদ রক্ষা করলেও শক্ত খরগোশ ফ্রেম তৈরি করেন।
* '''25g:''' ওমর আবার f6 তার হাতি দিয়ে রক্ষা করেন। ফ্রিটজলাইনের ফাঁদ আক্রমণের আশঙ্কায় ওমর চারটি ঘুঁটি দিয়ে f3 রক্ষা করেন। ওমর তার পশ্চিমের ঘোড়াকে a-ফাইলেও সরান, সম্ভবত একটি খরগোশ টানার প্রস্তুতিতে। তবে f3এ ফ্রিটজলাইনের হুমকির আলোকে এটি অনেক ধীর হবে। ওমর পরিবর্তে মাঝখান দিয়ে একটি ঘোড়া এগিয়ে দিয়ে c7 বা f7 নেওয়ার চেষ্টা করতে পারতেন।
* '''25s:''' ফ্রিটজলাইন খরগোশকে ফ্রেম করেন এবং এতে ওমরের হাতিকে রক্ষায় [[../Glossary#Pin|পিন]] করেন। ফ্রিটজলাইন তার উট এগিয়ে দেন এবং শীঘ্রই f3 আক্রমণ করতে পারেন, তবে ফ্রেম ধরে রাখতে f6এর আশেপাশের ঘরগুলো দেখতে হবে। ফ্রিটজলাইন আরও ঘুঁটি এগিয়ে দিয়ে গোল লাইন পাতলা করলে ওমরের খরগোশ f6 থেকে বেরিয়ে গোলের হুমকি দিতে পারত।
* '''26g:''' f6এর পাশে উট-ধারণকৃত জিম্মির ভয়ে ওমর তার পূর্বের ঘোড়া ও কুকুর সরান। তবে হোম কোণায় ঘোড়া নিষ্ক্রিয় রাখা [[../Glossary#Away trap|দূরের ফাঁদের]] পাশে জিম্মি হওয়ার চেয়ে খুব বেশি ভালো নয়।
* '''26s:''' ফ্রিটজলাইন পূর্বে বিকশিত হন। g-ফাইলের খরগোশ গোলের হুমকিতে নয়, তার উটকে সমর্থন করতে এগিয়ে যায়, কারণ ওমরের রক্ষা এই মুহূর্তে যথেষ্ট শক্ত।
* '''27g:''' ওমর ধীর পরিকল্পনায় একটি খরগোশ টানা চালিয়ে যান। পূর্বে ফ্রিটজলাইনের হুমকির যথেষ্ট জবাব এটি নয়।
* '''27s:''' ফ্রিটজলাইন একটি কুকুর সামনে ঘুরিয়ে f3 আক্রমণে তার হাতিকে মুক্ত করার পরিকল্পনা করেন। শত্রুর উট চলে গেছে এবং বন্ধুত্বপূর্ণ উট পূর্বে টহল দিচ্ছে, তাই কুকুর f5 নিতে পারে এবং একটি খরগোশ g6 ধরে রাখতে পারে। ফ্রেম করা খরগোশ যেকোনো ক্ষেত্রে f5এ পিছু হটতে পারত না, কিন্তু ফ্রিটজলাইনের কুকুর ওমরকে ফ্রেম ভাঙতে বাধা দেবে।
* '''28g:''' ওমর তার e-ফাইলের বিড়াল ও কুকুর পিছিয়ে নেন। তবে এটি ফ্রিটজলাইনের হাতির e3এ যাওয়ার পথ পরিষ্কার করে দেয়, যেখান থেকে সে f3 ফাঁদে আক্রমণ নেতৃত্ব দিতে পারত। e4এ কুকুর সরাসরি বিপদে ছিল না যদি না শত্রু ঘুঁটি পাশের ঘরে ঘুরন শুরু করত।
* '''28s:''' ফ্রিটজলাইন f3 ফাঁদ আক্রমণ করেন, তার হাতি f5এ ফিরিয়ে রাখেন। ওমরের হাতি f4এ এলে তার উট পিছু হটতে পারে সেজন্য ফ্রিটজলাইন h4এ একটি খরগোশ এগিয়ে দেন।
* '''29g:''' ওমর f3 অবরোধ করেন, কিন্তু এই রক্ষা বেশিক্ষণ টিকবে না। তাছাড়া c3 এখন অরক্ষিত।
* '''29s:''' ফ্রিটজলাইন f3এ ওমরের কুকুর ও c3এ বিড়ালকে হুমকি দেন। বিড়াল সহজে বাঁচানো যাবে, কিন্তু এতে একটি গুরুত্বপূর্ণ ধাপ ব্যবহার হবে।
* '''30g:''' তিন ধাপে ওমর ফালানক্স তৈরি করেন যাতে পিন করা f2 খরগোশ রক্ষা করে ফ্রেম করা কুকুর বাঁচানো যায়। এতে c3 রক্ষা করে বিড়ালটিও বাঁচাতে একটি ধাপ বাকি থাকে।
* '''30s:''' কুকুর উল্টানো ওমরকে f3 রক্ষার মাত্র একটি পথ রেখে দেয়। ঘোড়া উল্টালেও একইভাবে ওমরের হাত বাঁধা যেত, কিন্তু ফ্রিটজলাইন দক্ষিণ-পূর্বে ওমরের ঘোড়াকে নিষ্ক্রিয় রাখতে পছন্দ করেন।
* '''31g:''' ওমরকে তার হাতি f4এ সরাতে হয় এবং এতে ফ্রেম করা খরগোশটি হারায়। ওমর ফ্রিটজলাইনের কুকুরকে e4এর বদলে f5এ ঠেলেন, যাতে এটি সাথে সাথে c3 ফাঁদে আক্রমণে যোগ দিতে না পারে।
* '''31s:''' ফ্রিটজলাইন ২৮সতে পরিকল্পনা করেছিলেন, h4 খরগোশ তার উটকে পিছু হটতে দেয়। উট জিম্মি হওয়া এবং জিম্মি ধরার মধ্যে এটিই পার্থক্য করতে পারে।
* '''32g:''' বিড়াল ফর্কের ভয়ে ওমর তার বিড়াল পশ্চিমে সরান। c3এ হাতি-ঘোড়ার আক্রমণের ভয়ে ওমর b-ফাইলে ফ্রিটজলাইনের ঘোড়া আটকান। তবে ফ্রিটজলাইন তার হাতি d3এ গেলে ফাঁদের মধ্য দিয়ে ঘোড়া সরাতে পারতেন।
* '''32s:''' ফ্রিটজলাইন তাৎক্ষণিক কুকুর-ধরার হুমকি তৈরি করেন, একই সাথে তার উট ও ওমরের হাতির মধ্যে দূরত্ব বাড়ান।
* '''33g:''' ওমর f6 রক্ষা করেন এবং যেকোনো সম্ভাব্য গোল আক্রমণের বিরুদ্ধে দক্ষিণ-পূর্ব মজবুত করেন। ফ্রিটজলাইনের উট f3 আক্রমণে আবার দক্ষিণে গেলে ওমরের কুকুর f6এ শক্তিশালী আক্রমণকারী হতে পারত।
* '''33s:''' ফ্রিটজলাইন f6এ ওমরের কুকুর ফ্রেম করার হুমকি দেন; এই ফ্রেম সম্ভবত ওমরকে কুকুর ছেড়ে দিতে বাধ্য করত, কারণ তা না হলে ফ্রিটজলাইনের হাতি বোর্ড নিয়ন্ত্রণ করত।
* '''34g:''' ওমর ফ্রেম-ধরা ঠেকান ও পশ্চিমের ঘোড়াকে তাৎক্ষণিক বিপদ থেকে সরান। ফ্রিটজলাইনের h4 খরগোশ আবার তার উটকে মুক্ত রাখে।
* '''34s:''' মূলত রক্ষণাত্মক চালে ফ্রিটজলাইনের উট ওমরের কুকুরকে কোণের দিকে ঠেলে দেয়। উট-দ্বারা-কুকুর জিম্মি দক্ষ নয়, কিন্তু ফ্রিটজলাইনের উট বিপদমুক্ত এবং ওমরের কুকুর কোণে আটকা। নিজের উট না থাকায় ওমর এই বিন্যাস থেকে খুব বেশি সুবিধা নিতে পারবেন না।
* '''35g:''' ওমর f3এ একটি খরগোশের হুমকি দেন, তার হাতি g-ফাইলে রেখে যাতে ঘোড়াকে g4এ টানা হলে তা সাথে সাথে g3এ ফিরতে পারে। কুকুরের পূর্বে যাওয়া পরস্পরবিরোধী মনে হতে পারে, কারণ এটি কুকুর ও c3 ফাঁদকে আরও দুর্বল করে। কিন্তু কুকুর d2এ থাকলে d3এ ঠেলা দিয়ে পিছু হটার পথ বন্ধ করা যেত।
* '''35s:''' ফ্রিটজলাইন f3 রক্ষা করেন এবং f6এ কুকুর ধরতে জায়গা তৈরি শুরু করেন। তবে f7 থেকে খরগোশ এগিয়ে দেওয়া বুদ্ধিমানের নাও হতে পারে, কারণ এতে তার পিছনের সারি পাতলা হয় এবং আরেকটি খরগোশ f3এ সম্ভাব্য ধরার ঝুঁকিতে পড়ে। ফ্রিটজলাইন পরিবর্তে তার ঘোড়া এগিয়ে দিতে পারতেন; c3এ হাতি-ঘোড়ার আক্রমণ পূর্বে ওমরের যেকোনো অগ্রগতির চেয়ে দ্রুত হতে পারত।
* '''36g:''' ওমর খরগোশ ফ্রেম করেন এবং এতে ফ্রিটজলাইনের হাতিকে e3এ পিন করেন। একটি সাধারণ খরগোশ রক্ষা করতে হাতি খুব কমই কাজে আসে; ফ্রিটজলাইনকে শীঘ্রই হয় খরগোশ ছেড়ে দিতে হবে অথবা দক্ষিণ-পূর্বে আরও ঘুঁটি এগিয়ে নতুন হুমকি তৈরি করতে হবে।
* '''36s:''' ফ্রিটজলাইন তার বিড়াল এগিয়ে দেন, f3এ সম্ভাব্য ঝাঁকের দিকে এগিয়ে যান। বিড়াল সরে যাওয়ায় ফ্রিটজলাইন ওমরের কুকুরকে f6এর কাছে আরেক ঘর ঠেলেন।
* '''37g:''' ওমর বিড়াল আটকান এবং তার ঘোড়াকে সামনে ঘুরিয়ে f6এ আক্রমণের হুমকি দেন।
* '''37s:''' ফ্রিটজলাইন অবশেষে কুকুরের বিরুদ্ধে এক চালের হুমকি তৈরি করেন। তিনি g5 এবং এতে g6ও আটকান। তবে g5 ও h5এ এখন খরগোশ থাকায় ফ্রিটজলাইনের হাতি চলে যেতে বাধ্য হলে f3এ আরও ক্ষতির মুখে পড়তে পারেন।
* '''38g:''' ওমরের পূর্বের ঘোড়া g6এর পথ পরিষ্কার করে।
* '''38s:''' ফ্রিটজলাইন আবার g5 অবরোধ করেন, কিন্তু ওমর সেই অবরোধ ভেঙে f3এ আরও খরগোশ হুমকিতে ফেলতে পারেন। ফ্রিটজলাইন তার ঘোড়াকে b6 থেকে d6এ সরান, সম্ভবত কেন্দ্র দিয়ে এগিয়ে দেওয়ার আশায়। তবে এতে উত্তর-পশ্চিমে একটি ফাঁক তৈরি হয়।
* '''39g:''' ওমর তার পশ্চিমের ঘোড়াকে এখন দুর্বল c6 ফাঁদের দিকে এগিয়ে দেন; ঘোড়া আরও এগোতে পারত, কিন্তু কোন ঘরে শেষ করবে সে ব্যাপারে সতর্ক থাকতে হবে, কারণ ফ্রিটজলাইন ফ্রেম করা খরগোশ ছেড়ে দিয়ে দ্বিতীয় হুমকি তৈরি করে একটি ঘোড়া বা কুকুর ধরতে পারলে খুশি হবেন। একটি বিড়াল c3 রক্ষা করতে এবং খরগোশ বিনিময় ঠেকাতে এগিয়ে আসে। পূর্বে খরগোশগুলো শত্রুর অগ্রগতি আটকাতে এগিয়ে যায়।
* '''39s:''' ফ্রিটজলাইন d-ফাইলে তার ঘোড়া এগিয়ে দেন, c3 আক্রমণ বা f3 থেকে তার খরগোশ মুক্ত করার লক্ষ্যে। ঘোড়া মাত্র তিন ধাপ নেয়, কারণ d3এ জমে যেতে পারে না কিন্তু d2এ যেতে পারে।
* '''40g:''' ওমর এখন f8 কুকুর সরাসরি না হারিয়ে তার হাতি পশ্চিমে সরাতে পারেন; ফ্রিটজলাইন সাথে সাথে f8 কুকুর ধরলেও ওমরের হাতি d5 বা d6 থেকেও d3 ঘোড়া ধরতে পারত। ওমর তার হাতিকে d4এ সরান, সম্ভবত ঘোড়াকে অনুসরণ করার পরিকল্পনায়।
* '''40s:''' ফ্রিটজলাইন তার ঘোড়াকে ওমরের হোম র্যাংকে নিয়ে যান, একটি কুকুর টেনে যাতে ওমর সাথে সাথে ঘোড়াটিকে d2এ টেনে তুলতে না পারেন।
* '''41g:''' ওমর c6 আক্রমণ করেন, যেটি মূলত এক ঘুরন আগেও করা যেত। ওমর স্পষ্টতই বিশ্বাস করেননি এই আক্রমণে রেস জেতা যাবে, কিন্তু এক ঘুরন পরে তিনি এখন সেদিকেই যাচ্ছেন।
* '''41s:''' ফ্রিটজলাইন কুকুরটি ধরেন এবং এতে তার উটও সক্রিয় হয়। তিনি পরিবর্তে d2 কুকুরকে পূর্বে ও c2 খরগোশকে দক্ষিণে ঠেলে পশ্চিমের অবস্থান মজবুত করতে পারতেন। আরেকটি বিকল্প ছিল f3 খরগোশ মুক্ত করার চেষ্টা, যা ওমরের c-ফাইলের খরগোশের আগে গোলে পৌঁছাতে পারত।
* '''42g:''' ওমর একটি খরগোশ ধরেন এবং তার খরগোশটি এক ধাপ এগিয়ে c-ফাইলে গোলের ব্যবস্থা করেন। পশ্চিমে ফ্রিটজলাইন অনেক দুর্বল, এবং পিছনের সারিতে আটকাতে গেলে আরও ঘুঁটি হারাত।
* '''42s:''' রোখা সম্ভব নয় এমন গোল হুমকির মুখে ফ্রিটজলাইন তার হাতি দিয়ে রক্ষা করতে বাধ্য হন, f3 খরগোশ এবং নিজের সম্ভাব্য গোল হুমকি ছেড়ে দেন। লক্ষ্য করুন কুকুর ধরার পরেই ফ্রিটজলাইন দ্রুত দুটি খরগোশ হারালেন।
* '''43g:''' c-ফাইল আটকানোয় ওমরকে অন্য ফাইলে গোলের পথ তৈরি করতে হবে। ফ্রিটজলাইন যদি a6এ ঘোড়া জিম্মি করে c7এ একটি কুকুর রাখেন, ওমরের কোনো কার্যকর গোল পথ থাকবে না এবং ফ্রিটজলাইনের মুক্ত ঘুঁটিতে বড় সুবিধা থাকবে। ঘোড়া জিম্মি আটকানোর চেষ্টায় ওমর b6এ একটি খরগোশ টেনে নেন। ওমর c3 ফাঁদও রক্ষা করেন, যদিও সেটা করতে গিয়ে c-ফাইলের খরগোশ d-ফাইলে চলে যায়, সম্ভাব্য গোল পথ থেকে দূরে।
* '''43s:''' ফ্রিটজলাইন c7এ একটি কুকুর রাখেন, হাতি b6এ গেলেও সম্ভাব্য c-ফাইল গোল আটকান। তিনি পূর্বে তার উটও এগিয়ে দেন; g5 বিড়াল পূর্বে ঠেলা না যাওয়ায় f6এ এটি বর্তমানে নিরাপদ।
* '''44g:''' ওমর তার ঘোড়া পিছিয়ে একটি খরগোশের হুমকি দেন। তবে ফ্রিটজলাইনের ঘোড়া পেছন থেকে c3 রক্ষা করতে পারে, এবং ওমর খরগোশকে তার নিজের দুর্বল গোল লাইনের দিকে বিনামূল্যে ধাপ দিয়ে দিয়েছেন। ওমরের ঘোড়া পরিবর্তে c7 থেকে কুকুর ঠেলে দিতে পারত, বা আগের ঘুরনেই c7 নিতে পারত বাড়তি ধাপ নিয়ে। এটি গোল আটকানো কঠিন করত যদি ওমর পশ্চিমে একটি খরগোশ এগিয়ে দিতে পারতেন।
* '''44s:''' ফ্রিটজলাইন c2 নেন এবং d3 লক্ষ্য করেন, ওমরের হাতিকে সেই ঘর থেকে আটকান। তবে d-ফাইলে হাতি থাকায় ফ্রিটজলাইন পশ্চিমে গোল আক্রমণের ঝুঁকিতে পড়তে পারেন।
* '''45g:''' ওমর একটি খরগোশ এগিয়ে দেন এবং c3এ একটি রক্ষক যোগ করেন। ফ্রিটজলাইনের c7এ কুকুর থাকায় ঘোড়ার সমর্থন ছাড়া খরগোশ সম্ভবত গোলে পৌঁছাতে পারবে না। ওমরের সাম্প্রতিক ঘোড়া পিছানো তাই একাধিক ঘুরন নষ্ট করতে পারে।
* '''45s:''' ওমরের c-ফাইলের খরগোশ আরও এগানোর ব্যাপারে চিন্তিত না হয়ে ফ্রিটজলাইন চার ধাপ পুরো ব্যবহার করে তার উটকে g5এ সরান, পূর্বে হুমকির মঞ্চ তৈরি করেন। খরগোশের সমর্থনে উট ওমরের হাতি পূর্বে এলেও মুক্ত থাকবে।
* '''46g:''' পূর্বে বা দক্ষিণ-পশ্চিমে সম্ভাব্য হুমকির আগে থাকতে ওমর পশ্চিমে তার খরগোশ ও কুকুর এগিয়ে দেন।
* '''46s:''' ফ্রিটজলাইন f6এ ওমরের পূর্বের ঘোড়াকে হুমকি দেন। ফ্রিটজলাইনের হাতি পশ্চিমে যায়, যাতে খরগোশ ফ্রেম কেবল পাশ বা পেছন থেকে সরানো যায়।
* '''47g:''' ওমরের পশ্চিমের ঘোড়া ফ্রেম ভাঙে, দুই চালের গোল হুমকি তৈরি করে। এতে ফ্রিটজলাইন আবার রক্ষাকে অগ্রাধিকার দিতে বাধ্য হবেন।
* '''47s:''' পশ্চিমে দীর্ঘমেয়াদী ঘোড়া জিম্মি হবে না, কিন্তু b6 নিয়ে ফ্রিটজলাইন c6 খরগোশের চলাচল সীমিত করেন। ঘোড়াটিকে b7এ ঠেলে দেওয়াই ভালো হত, যেখানে c7 কুকুরের ঠিক পাশে হত না। b7এ ঠেলার সুবিধা হল ওমরের হাতি ফ্রিটজলাইনের কুকুরকে পশ্চিমে ঠেলতে পারবে না, যা c-ফাইলে গোলের পথ খুলে দিত।
* '''48g:''' ওমর তার কুকুর, হাতি ও খরগোশ সরিয়ে f6 রক্ষা করেন এবং d-ফাইলে এক চালের গোল হুমকি তৈরি করেন। কুকুর এগানোয় ওমরের b3 বিড়াল c3এ ঝুঁকিতে পড়ে, যদিও ফ্রিটজলাইনের এখনই ধরার সময় নেই।
* '''48s:''' ফ্রিটজলাইন d-ফাইলে গোল আটকান। তিনি একটি খরগোশও এগিয়ে দেন, f-ফাইলে জায়গা নেন।
* '''49g:''' ওমর c5 কুকুর দক্ষিণে সরিয়ে c7 কুকুর পশ্চিমে টেনে দুটি পশ্চিমের ফাঁদ রক্ষা করেন এবং সম্ভাব্য c-ফাইলের গোল পথ আবার খোলেন।
* '''49s:''' c6 দিয়ে তার কুকুর এগিয়ে ফ্রিটজলাইন সেই ফাঁদের নিয়ন্ত্রণ নেন, ওমরের b6 ঘোড়া ও d5 খরগোশকে হুমকি দেন।
* '''50g:''' ওমর তাৎক্ষণিক বস্তু ক্ষতি এড়াতে পারতেন, কিন্তু শীঘ্রই চাপে পড়তেন। সম্ভবত দক্ষিণ-পশ্চিমে আক্রমণের ভয়ে ওমর ফ্রিটজলাইনের এগিয়ে যাওয়া ঘোড়া জমিয়ে হুমকি দেন, সম্ভাব্য ধরার রেসের ব্যবস্থা করেন। এই রেসে সম্ভবত ওমর ঘুঁটির সংখ্যায় এগিয়ে থাকতেন।
* '''50s:''' ফ্রিটজলাইন ঘোড়া বিনিময় মেনে নেন, কারণ c3 রক্ষা করলে একটি কুকুর হারাতে হত। এই পর্যায়ে ঘোড়া বিনিময় ফ্রিটজলাইনের জন্য খুব খারাপ নয়, কারণ তার এখন একটি উট ও দুটি কুকুর থাকবে আর ওমরের একটি ঘোড়া ও একটি কুকুর। ওমরের বাকি ঘোড়া f6এ ধরা পড়ার ঝুঁকিতে, যদিও ফ্রিটজলাইনের নিজের খরগোশ এখন সেটি আটকাচ্ছে।
* '''51g:''' ঘোড়া ধরার সময় ওমর তার হাতি উত্তরে এগিয়ে ফ্রিটজলাইনের কুকুরকে হুমকি দেন। শেষ কুকুর ধাপটি সাময়িকভাবে ঘোড়া সক্রিয় করে, কিন্তু বাঁচাবে না। ওমর পরিবর্তে d5 খরগোশ পূর্বে সরাতে পারতেন যাতে তার ঘোড়া f5এ জমে না যায়। তবে তিনি সম্ভবত d4এ কুকুর রাখতে চাননি, কারণ এটি পরের ঘুরনে c5 কুকুরের ফ্লিপ-ধরার পথ বন্ধ করত; ওমর পশ্চিমের গোল আক্রমণে তার হাতি রাখতে চান। ওমরের কুকুর দক্ষিণে সরানো ভালো হত, c3এ ফ্লিপ-ধরার পথ খোলার পাশাপাশি ফ্রিটজলাইনকে তার উটের ব্যাপারে আরও সতর্ক থাকতে বাধ্য করত।
* '''51s:''' ফ্রিটজলাইন পশ্চিমে তার কুকুর ও খরগোশ বাঁচাতে পারতেন, কিন্তু তাহলে পূর্বে একটি খরগোশ হারাতেন এবং ঘোড়া ধরার সুযোগও যেত। তাই ফ্রিটজলাইন ঘোড়া ধরতে যান।
* '''52g:''' ওমর ফ্লিপ-ধরা করেন, পশ্চিমের আক্রমণে তার হাতি রেখে দেন।
* '''52s:''' ফ্রিটজলাইন আগে খরগোশ ধরেন, যেটি নইলে গোলের হুমকি দিতে পারত। ওমরের ঘোড়া পরের ঘুরনে উদ্ধার করা সম্ভব নয়, তাই আগে খরগোশ ধরলে কিছু হারাতে হয় না। এখন c5এ থেকে ফ্রিটজলাইনের হাতি তার দুর্বল পশ্চিম পার্শ্ব রক্ষা করতে পারে।
* '''53g:''' ওমরের b3 বিড়াল c2এ ধরে b-ফাইল খরগোশের অগ্রগতির পথ পরিষ্কার করে এবং ওমরের হোম রক্ষা মজবুত করে। ওমর পরিবর্তে খরগোশ ফ্লিপ-ধরে a-ফাইলে আরেকটি খরগোশ এগিয়ে দিতে পারতেন, তার বিড়াল পশ্চিমের গোল আক্রমণে রেখে।
* '''53s:''' ফ্রিটজলাইন বিনিময় সম্পন্ন করেন এবং তার হাতি d4এ নিয়ে ওমরের কুকুরকে পূর্বে আটকে রাখেন।
* '''54g:''' ওমর পাতলা রক্ষার পশ্চিমে গোলের হুমকি দেন এবং তার বিড়াল b-ফাইলে ফিরিয়ে নেন।
* '''54s:''' ফ্রিটজলাইন গোল আটকান এবং সাময়িকভাবে ওমরের হাতিকে d6 থেকেও আটকান।
* '''55g:''' ফ্রিটজলাইনের কুকুরকে e6এ ঠেলতে পারলে ওমরের পশ্চিমে শক্তিশালী গোল হুমকি হতে পারে।
* '''55s:''' ফ্রিটজলাইন তার বিড়ালকে e6এ আনেন, e5 অবরোধ করেন এবং নিশ্চিত করেন যে তার কুকুর পশ্চিমের গোল আটকাতে পারবে। চতুর্থ ধাপে কুকুর সরান না, কারণ তাহলে c6এ ধরার সুযোগ দেওয়া হত। ফ্রিটজলাইনের পূর্বের গোল রক্ষা পাতলা হচ্ছে, কিন্তু তার হাতি ও উট ভালো অবস্থানে।
* '''56g:''' পূর্ব ও দক্ষিণ থেকে আটকানো ওমরের হাতি উত্তরে যায়। ওমর c3 রক্ষা করতে এবং কেন্দ্রীয় গোল আটকাতে d1 খরগোশ d3এ এগিয়ে দেন।
* '''56s:''' ফ্রিটজলাইন তার কুকুর মুক্ত করে এগিয়ে দেন, ওমরের গোল পথ আটকান এবং c3এ আক্রমণের হুমকি দেন।
* '''57g:''' ওমর তার হাতি পূর্বে সরিয়ে ফ্রিটজলাইনের উটের মুখোমুখি করেন। তবে এই পর্যায়ে ঘুঁটির [[../Distribution of Force#Alignment|বিন্যাস]] গৌণ বিষয়। ফ্রিটজলাইন পশ্চিমে আক্রমণের প্রস্তুতিতে, যার জবাব ওমর পূর্বে সাথে সাথে দিতে পারবেন না।
* '''57s:''' f6 ও f3 দুটোর ঝুঁকি মাথায় রেখে ফ্রিটজলাইন তার উটকে পূর্বে সরান। তার হাতি d3 নেয়, ওমরের কুকুরকে পূর্বে আটকে রাখে। ফ্রিটজলাইন এখন ভালো ভারসাম্যে আছেন, তার কুকুর ও উট বিপরীত পার্শ্বে সক্রিয় এবং হাতি মাঝখানে। ওমর খারাপভাবে ভারসামহীন এবং পশ্চিমে দ্রুত রক্ষা করতে হবে।
* '''58g:''' ওমর সাময়িকভাবে c3 রক্ষা করেন, কিন্তু সেটি দুর্বল রেখে দেন।
* '''58s:''' ফ্রিটজলাইন এখন তার কুকুর c3 দিয়ে নিতে পারতেন, কিন্তু f6 বা b-ফাইলের খরগোশ আরও এগানোতে বস্তু হারাতে চান না। তাই ফ্রিটজলাইন সেই খরগোশটি পশ্চিমে ঠেলেন এবং f6 পেছন থেকে রক্ষা করেন। ওমরের হুমকি ফুরিয়ে আসছে।
* '''59g:''' ওমর c-ফাইলে খরগোশ এগিয়ে দেন, কিন্তু তার হাতি আরও পূর্বে নিয়ে যান এই ভেবে যে ফ্রিটজলাইন সাথে সাথে খরগোশ ধরলে তিনি ফ্রিটজলাইনের উট ধরতে পারবেন। কিন্তু এই ধরনের বিনিময়ের পর ফ্রিটজলাইন তার e5 খরগোশ c3এ এগিয়ে শক্তিশালী গোল হুমকি তৈরি করতে পারতেন। অন্তিম খেলায় খরগোশের বিনিময়ে উট পাওয়া সবসময় উট ধরা পক্ষের পক্ষে যায় না।
* '''59s:''' ফ্রিটজলাইন রক্ষা করেন এবং তার উট আরও এগিয়ে দেন। ওমর এটি জিম্মি করতে পারতেন, কিন্তু তাহলে তার হাতি দক্ষিণ-পূর্ব কোণায় থাকত যখন ফ্রিটজলাইন পশ্চিমে ও কেন্দ্রে গোলের হুমকি দিচ্ছেন। ফ্রিটজলাইনের বেশি কেন্দ্রীভূত হাতি শেষ পর্যন্ত গোল আক্রমণে যোগ দিতে পারে, কারণ উট হারালেও গেম জিতলে কোনো ক্ষতি নেই।
* '''60g:''' জিম্মি এড়িয়ে ওমর তার হাতি পশ্চিমে সরান। ওমর প্রযুক্তিগতভাবে এক চালের গোল হুমকি তৈরি করতে পারতেন, কিন্তু তাহলে সাথে সাথে c6এ খরগোশ হারাত। ফ্রিটজলাইনের e4এ খরগোশ না থাকলে ওমরের কাছে একটি বাড়তি ধাপ থাকত যা আরও শক্তিশালী এক চালের গোল হুমকি তৈরি করতে পারত। ফ্রিটজলাইনের অবস্থানগত সুবিধা থাকলেও এই গেম একটি মাত্র ধাপে পাল্টে যেতে পারত।
* '''60s থেকে শেষ পর্যন্ত:''' ওমর ফ্রিটজলাইনের h-ফাইলের খরগোশ আটকাতে বাধ্য হন, তারপর ফ্রিটজলাইনের উট টানা থেকে আটকাতে। এতে শীঘ্রই ওমরের হাতি গোল লাইনে চলে আসে। 66g-এর পর এক চালের গোল হুমকি ফ্রিটজলাইন হিসাব ভুল করলে বা না দেখলে ওমর এখনও জিততে পারতেন। তবে ফ্রিটজলাইনের অবস্থান তাকে গোল রক্ষা করেও আক্রমণে শক্তিশালী ঘুঁটি রাখার সুযোগ দিয়েছিল।
<hr/>
২০০৫ সালের জুনে এই গেম শেষ হওয়ার পর ফ্রিটজলাইন মন্তব্য করেন যে সুবিধা বারবার পাল্টেছে এবং ৪০গতে ওমর অনেক শক্তিশালী অবস্থান নষ্ট করেছেন। তবে পরবর্তী বট বিশ্লেষণ অনুযায়ী ২১গ-এর পর থেকে ফ্রিটজলাইন ক্রমাগত সুবিধায় ছিলেন। রক্ষণমনস্ক ফ্রিটজলাইন প্রায়ই নিজের আক্রমণের সম্ভাবনা দেখতে পাননি। তবুও তিনি সেই সময়ের শীর্ষ খেলোয়াড় ছিলেন এবং ২০০৫ আরিমা বিশ্ব চ্যাম্পিয়নশিপও জিতেছিলেন।
{{BookCat}}
4i7vc8joj53p04qv30j7yz0uoh2nk76
106488
106483
2026-06-04T18:26:03Z
R1F4T
9121
106488
wikitext
text/x-wiki
চার মাসব্যাপী খেলা এই গেমটি শেষ পর্যন্ত ফ্রিটজলাইনকে ২০০৫ আরিমা পোস্টাল চ্যাম্পিয়নশিপে অপরাজিত ১০-০ রেকর্ড এনে দেয়। ওমর এই গেমে জিতলে তিনি ও ফ্রিটজলাইন উভয়েই ৯-১ রেকর্ড নিয়ে প্রথম স্থানে টাই করতেন। অত্যন্ত ধীর টাইম কন্ট্রোলের কারণে একটি পোস্টাল গেমে চাল দেওয়ার আগে অনেকগুলো ভিন্ন ক্রম নিয়ে ভাবার সুযোগ পাওয়া যায়।
{{arimaa/game|15552|গেম}}
* '''1g:''' ওমর [[../Setup#Symmetric setups|৯৯অফ৯ সেটআপের]] একটি ভিন্নরূপ ব্যবহার করেন এবং তার ফাঁদগুলোর পেছনে কুকুর রাখেন। যেহেতু একটি কুকুরকে শত্রুর কুকুর দিয়ে ঠেলে সরানো যায় না, এই বিন্যাস ফাঁদ আক্রমণের পথ সীমিত করে দেয়। পরে একটি কুকুর ফাঁদ পেরিয়ে এগিয়ে যেতে পারে এবং তার জায়গায় একটি খরগোশ বা বিড়াল আসতে পারে।
* '''1s:''' ফ্রিটজলাইন ক্লাসিক ৯৯অফ৯ সেটআপ বেছে নেন, যেখানে ফাঁদগুলোর পেছনে বিড়াল থাকে। এতে শুরুতে তার হোম ফাঁদগুলো ওমরের চেয়ে কিছুটা বেশি ঝুঁকিতে থাকে, কারণ শত্রুর কুকুর বিড়ালকে সরিয়ে দিতে পারে। তবে ফাঁদের পেছনে বিড়াল এবং মাঝখানে কুকুর রাখলে সামগ্রিকভাবে বেশি নমনীয়তা পাওয়া যায়।
* '''2g:''' ওমর আক্রমণাত্মকভাবে তার হাতিকে চার ঘর এগিয়ে দেন, একটি বিড়াল ধরার বা উটকে উল্টে দেওয়ার হুমকি তৈরি করেন।
* '''2s:''' ফ্রিটজলাইন যদি এখন তার নিজের হাতিকে চার ঘর এগিয়ে দিতেন, তাহলে একটি বিড়াল হারাতেন কিন্তু একটি কুকুরকেও হুমকিতে ফেলতেন। এই ধরনের যেকোনো ধরা-ধরি চারটি ধাপই ব্যবহার করত এবং আরও হুমকি তৈরি করত, তাই এটি অস্পষ্ট ফলাফলের একটি [[../Race Positions|রেস]] শুরু করতে পারত। ফ্রিটজলাইন প্রথমে একটি কুকুরের বিনিময়ে একটি বিড়াল পেতেন, কিন্তু ওমরের তবুও প্রথম চালের সুবিধা থাকত। এই ধরনের রেস এড়িয়ে ফ্রিটজলাইন তার দুটি হোম ফাঁদ রক্ষা করেন এবং তার উটকে আড়াল করেন।
* '''3g:''' হাতির [[../Glossary#Blockade|স্মাদারের]] ঝুঁকির কারণে ওমর তার হাতিকে আর এগিয়ে দেন না। হাতিকে e6-এ রাখাটা তখনই যুক্তিসংগত হত যদি ওমর দ্রুত আরেকটি ঘুঁটি এগিয়ে দেওয়ার পরিকল্পনা করতেন, যেটি f6-এ ধরা থেকে সুরক্ষিত থাকত কিন্তু তবুও জিম্মি হয়ে যেতে পারত। বহু-ঘুঁটির আক্রমণ শুরু করতে প্রস্তুত না হয়ে ওমর তার হাতিকে এক ঘর পিছিয়ে নেন এবং বাকি তিন ধাপে ঘরে ঘুঁটি সাজান। ওমর ২গতে হাতিকে মাত্র দুই বা তিন ঘর এগিয়ে দিয়ে একই সাথে একটি বা দুটি ঘোড়া এগিয়ে দিলে সময় বাঁচাতে পারতেন।
* '''3s:''' ফ্রিটজলাইন তার হাতি এগিয়ে দেন, পূর্বদিকে সরিয়ে ওমরের উটের মুখোমুখি করেন। ফ্রিটজলাইনের পশ্চিমের ঘোড়া c6 ফাঁদ রক্ষা করে, ওমরের ঘোড়াকে b6 থেকে আটকে দেয়।
* '''4g:''' ওমর ফ্রিটজলাইনের পূর্বের ঘোড়াকে f3 ফাঁদের দিকে টেনে নেন। ফ্রিটজলাইন সহজেই ধরা এড়াতে পারবেন, কিন্তু ওমর ফ্রিটজলাইনকে রক্ষণে ব্যস্ত রেখে কৌশলগত সুবিধা নেওয়ার আশায় এটি করেন।
* '''4s:''' ফ্রিটজলাইন তার ঘোড়াকে জিম্মি হওয়ার আগেই মুক্ত করার সিদ্ধান্ত নেন। তিনি তার হাতি দিয়ে ঘোড়াকে আনফ্রিজ করেন; h7 খরগোশকে h5-এ এগিয়ে দিয়েও ঘোড়াকে মুক্ত করা যেত, কিন্তু তাহলে খরগোশটি [[../Rabbit Advancement#Exposed to capture|উন্মুক্ত]] হয়ে যেত। আরেকটি বিকল্প ছিল g7 বিড়ালকে এগিয়ে দেওয়া, কিন্তু ফ্রিটজলাইন তার ঘোড়াকে g6-এ ফিরিয়ে আনতে চেয়েছিলেন, যেটি বিড়াল সেখানে থাকলে সম্ভব হত না।
* '''5g:''' ওমর তার ঘোড়াকে ফ্রিটজলাইনের হাতির নাগালের বাইরে সরিয়ে নেন। এখন পর্যন্ত শুরুটা ছিল রক্ষণাত্মক, হাতি ছাড়া অন্য ঘুঁটিগুলো হুমকি এড়াতে পিছু হটছে।
* '''5s:''' ফ্রিটজলাইন h-ফাইলে একটি খরগোশ টানতে তার হাতিকে আরও বাইরের দিকে নিয়ে যান। পরবর্তী আরিমা তত্ত্ব এটিকে [[../Distribution_of_Force#Centralisation|অপছন্দ করত]], কিন্তু রক্ষণাত্মক খেলায় এটি যুক্তিসংগত মনে হয়েছিল, কারণ একটি খরগোশ ঘরের দিকে পিছু হটতে পারে না। ফ্রিটজলাইন পরিবর্তে তার হাতি দিয়ে ওমরের e3 ঘোড়াকে d3-এ ঠেলে দিতে পারতেন, এতে ওমরের দুটি ঘোড়াই পশ্চিমে চলে যেত, যেখানে ফ্রিটজলাইনের উট গিয়ে তাদের মুখোমুখি হতে পারত। পূর্বে কোনো ঘোড়া না থাকায় ওমর সেখানেও [[../Attacking/Attacks Against a Camel Trap|ঝুঁকিতে]] পড়তেন এবং ফ্রিটজলাইন দুই পাশেই শক্তিশালী হুমকি তৈরি করতে পারতেন। তাড়াতাড়ি ফাঁদ আক্রমণে আগ্রহী না হয়ে ফ্রিটজলাইন স্বল্পমেয়াদী খরগোশ ধরার হুমকিকেই বেছে নেন।
* '''6g:''' ওমর তার হাতিকে পশ্চিমে সরিয়ে বড় হুমকি তৈরি করেন। ফ্রিটজলাইনের পক্ষে পূর্বে খরগোশ শিকার চালিয়ে যাওয়া কঠিন, কারণ তার পশ্চিমের ঘোড়া এবং সম্ভাব্যভাবে c6 ফাঁদ বিপদে পড়েছে।
* '''6s:''' পশ্চিমের ঘোড়া সরিয়ে b6 সাথে সাথে খুলে না দিয়ে ফ্রিটজলাইন তার হাতিকে কেন্দ্রে আনেন এবং ওমরের e3 ঘোড়াকে উল্টে দেওয়ার হুমকি তৈরি করেন।
* '''7g:''' নিজের হাতিকে কেন্দ্রে আনতে ওমর b6 ঘোড়াকে উল্টানোর বদলে দুইবার টেনে নেন। ওমর ঘোড়াটাকে b4-এ টেনে নিতে পারতেন যেখান থেকে উদ্ধার করা কঠিন হত, কিন্তু তিনি তার হাতিকে যতটা সম্ভব কেন্দ্রে রাখতে চান, যাতে পূর্বে ফ্রিটজলাইনের অগ্রগতি সীমিত করা যায়।
* '''7s:''' ফ্রিটজলাইন তার ঘোড়াকে নিরাপদে নিয়ে যান। টানা-পিছানোর খেলা চলতে থাকলে ফ্রিটজলাইন সামান্য এগিয়ে থাকতেন, কারণ ওমরের একটি খরগোশ h4-এ উন্মুক্ত অবস্থায় রয়েছে।
* '''8g:''' কিছুটা আক্রমণাত্মক চালে ওমর একটি ঘোড়াকে a6-এ এগিয়ে দেন; লক্ষ্য করুন ঘোড়াটি শত্রুর উট থেকে দূরের পাশে এগিয়েছে। এই ঘোড়া একটি খরগোশ টানতে পারে, তবে সম্ভাব্য ফাঁদ আক্রমণে b6 নেওয়ারও হুমকি দেয়। তবে হাতি-ঘোড়ার আক্রমণে সাধারণত অন্য ঘুঁটির সমর্থন দরকার, এবং পশ্চিমে ওমরের ঘুঁটি খারাপভাবে সাজানো; c3 ফাঁদ পালটা আক্রমণের ঝুঁকিতেও রয়েছে। ওমরের উচিত ছিল আগে তার অন্য ঘোড়াকে g3-এ এবং উটকে মাঝখানে সরিয়ে নমনীয়তা বাড়ানো।
* '''8s:''' ফ্রিটজলাইন ওমরের এগিয়ে যাওয়া ঘোড়ার পিছনে সাথে সাথে যান না, কারণ শক্তিশালী [[../Other Hostages|ঘোড়া জিম্মি]] করা জটিল হতে পারে। ফ্রিটজলাইন পরিবর্তে h4 খরগোশকে আরও সামনে টেনে নেন, এটিকে প্রথম হুমকি হিসেবে দেখেন যা পরে পশ্চিমে কার্যকর হুমকি তৈরি করতে পারে।
* '''9g:''' ওমর তার ঘোড়া দিয়ে ফ্রিটজলাইনের a8 খরগোশ বের করে আনতে পারতেন, কিন্তু এই মুহূর্তে খরগোশ টানার রেস ওমরের পক্ষে যেত না। c6-এ আক্রমণ অনেক ধীর হত, কারণ ফ্রিটজলাইন খরগোশটি ধরে c6 রক্ষা করেও পালটা আক্রমণ করতে পারতেন। তাই ওমর পূর্বে তার উট এগিয়ে দেন, সম্ভবত টানা খরগোশকে কাজে লাগানোর পরিকল্পনায়। এগিয়ে যাওয়া উট প্রায়ই জিম্মি হওয়ার ঝুঁকিতে থাকে, কিন্তু পাশের সঙ্গী ঘুঁটি এটি কম সম্ভাবনাময় করে তুলতে পারে। পশ্চিমে ক্রমশ দুর্বল হয়ে পড়ায় ওমর c3 রক্ষা করতে একটি বিড়াল এগিয়ে দেন; এটি আক্রমণ বেশিক্ষণ আটকাবে না, কিন্তু ওমরকে আগে আক্রমণ করার সময় দিতে পারে।
* '''9s:''' ফ্রিটজলাইন তার হাতিকে পূর্বে সরিয়ে ওমরের উটের মুখোমুখি করেন। অন্য যাই হোক, হাতিকে সবসময় শত্রুর উটের দিকে নজর রাখতে হয়। ফ্রিটজলাইন খরগোশটিকে h6-এ টেনে নেন, এখন এক চালেই ধরার হুমকি তৈরি করেন।
* '''10g:''' ওমর f6 রক্ষা করেন, তার হাতিকে [[../Attacking/Positioning#Positioning the elephant|f5এর বদলে e6এ]] রাখেন। উট ও কুকুর এগিয়ে দিয়ে ওমর f6-এ বহু-ঘুঁটির আক্রমণের দিকে এগিয়ে যান।
* '''10s:''' ওমরের হাতি রক্ষা করায় f6-এ কিছু ধরতে না পেরে ফ্রিটজলাইন তার উটকে পশ্চিমে সরান, f7-এ একটি বিড়াল দিয়ে জায়গাটা পূরণ করেন।
* '''11g:''' ওমরের ঘোড়া খালি হাতে পিছু হটে, কিন্তু তার উট দমে না গিয়ে এগিয়ে যায়, f6-এ তাৎক্ষণিক ধরার হুমকি তৈরি করে। h6-এ বন্ধুত্বপূর্ণ খরগোশ থাকায় উটকে h6-এ না জমিয়ে রাখা যাচ্ছে না জিম্মিও করা যাচ্ছে না। ফ্রিটজলাইনের জন্য এখানে যাই হোক না কেন, এটি দেখায় কীভাবে শুরুতে খরগোশ টানা পরে বিপদে ফেলতে পারে।
* '''11s:''' ফ্রিটজলাইন f6 রক্ষা করেন এবং তার পিছনের সারিতে জায়গা তৈরি করেন যাতে ওমরের উটকে g7-এ ঠেলে দিয়ে সেখানে জমিয়ে জিম্মি করা যায়। ফ্রিটজলাইনের উট ওমরের পশ্চিমের ঘোড়ার দিকে এগিয়ে d6-এ থামে। ওমরের হাতি e6-এ থাকায় এটি ফ্রিটজলাইনের উটকে ঝুঁকিতে ফেলে, তবে কেবল তখনই যদি ওমর তার নিজের উট এবং একটি খরগোশ উভয়ই ছেড়ে দেন।
* '''12g:''' ওমরের উট একটি খরগোশকে f7 বা g7-এ টেনে আনতে পারত, ফ্রিটজলাইনের কাছে উট জিম্মি করার কোনো ঘর রাখত না। দুর্ভাগ্যবশত, যেকোনো টানই চারটি ধাপ ব্যবহার করত, a5 ঘোড়াকে ফ্রিটজলাইনের উটের মুখে ফেলে c6-এ হুমকিতে রাখত। সেই ফাঁদ রক্ষা করতে প্রস্তুত না হয়ে ওমর ঘোড়াকে আরও পিছিয়ে নেন। তিনি তার উটকে f6-এ রাখেন, উট জিম্মি মেনে নেন কিন্তু ফ্রিটজলাইনের জন্য সেটা করাকে জটিল করে তোলেন।
* '''12s:''' ফ্রিটজলাইন উটকে জিম্মি করেন, যদিও সাময়িকভাবে অত্যন্ত বিশ্রী অবস্থানে। হাতি একটি ফাঁদ ঘরে রাখার আগে দুইবার তিনবার নিশ্চিত করতে হয় যে এটি নিরাপদ; এটি পোস্টাল গেম হওয়ায় ফ্রিটজলাইনের কাছে সেই সময় প্রচুর ছিল।<!----><p>ফ্রিটজলাইন তার উটকে পশ্চিমে সরান, তাৎক্ষণিক বিনিময়ের প্রস্তাব আর থাকে না। তবে d6 খালি হওয়ায় ওমরের হাতি এখন ফ্রিটজলাইনের বিড়ালকে e5-এ উল্টে দিতে পারে।</p>
* '''13g:''' ওমর সেই উল্টানো কাজটি করেন, বিড়ালটি ধরে জিম্মির ক্ষতি কমানোর আশায়। ফ্রিটজলাইন সম্ভবত তার বিড়াল মুক্ত করে উট জিম্মি রাখতে পারবেন না, কারণ তার হাতি যদি e7 বা g7-এ কোনো ঘুঁটি ছাড়া f6-এ ঘুরন ধরে শেষ করে তাহলে সেটি ধরা পড়বে।
* '''13s:''' ফ্রিটজলাইন উটকে g7-এ ঠেলে দেন; এতে ফ্রিটজলাইনের g6 ঘোড়া জমে যায়, কিন্তু ঘোড়াটি আগেও নড়তে পারত না কারণ তাহলে হাতি হারিয়ে যেত। d7 কুকুরকে পূর্বে সরানো ভুল হতে পারে, কারণ এটি একটি সম্ভাব্য [[../Camel Hostage#Central hostage|কেন্দ্রীয় জিম্মির]] পথ বন্ধ করে দেয় যদি ওমরের হাতি f5-এ যায়। ফ্রিটজলাইন তার e8 কুকুর ও f8 খরগোশ পশ্চিমে সরিয়ে উটকে f8-এ ঠেলে ফাঁদের পেছনে জিম্মি রাখতে পারতেন, এতে পূর্বের ঘোড়াও মুক্ত থাকত।
* '''14g:''' ওমর বিড়ালটিকে f4-এ ঠেলে দেন। উটের [[../Glossary#Fork|ফর্কের]] ঝুঁকির কারণে ফ্রিটজলাইন e7 খালি না রাখলে এই চাল সম্ভব হত না। সেক্ষেত্রে ওমর বিড়ালটিকে দক্ষিণে ঠেলে হাতি e6-এ ফিরিয়ে নিতে পারতেন; e4-এ বিড়ালটি জমে যেত এবং একটি ঘোড়ার দ্বারা হুমকিতে পড়ত।
* '''14s:''' ফ্রিটজলাইন তার হাতি সরান যাতে পূর্বের ঘোড়া এগিয়ে যেতে পারে।
* '''15g:''' ওমর বিড়ালটি ধরেন। ওমর এখন f6-এ [[../Glossary#Swarm|ঝাঁক]] দিতে এবং জিম্মি রক্ষা থেকে তার হাতিকে [[../Camel_Hostage#Multi-piece_defense|ঘুরিয়ে নিতে]] চান। ফ্রিটজলাইন দ্বিতীয় হুমকি তৈরি করে ওমরকে চাপে ফেলতে চান।
* '''15s:''' ফ্রিটজলাইনকে তার পূর্বের ঘোড়া সরাতেই হবে, নইলে এটি f4-এ উল্টে দুই ধাপে ধরার হুমকিতে পড়বে। ফ্রিটজলাইন ঘোড়াটিকে g3-এ এগিয়ে দেন, ওমরের কুকুরকে পিছিয়ে দেন। ফ্রিটজলাইন হয়তো f6এর ঝাঁক ঠেকানোর চেষ্টা করছেন, কিন্তু তার ঘোড়া এখন তাৎক্ষণিক ধরার ঝুঁকিতে যদি ওমর তার উট বিসর্জন দিতে রাজি থাকেন। ঘোড়াটি পরিবর্তে h-ফাইলে যেতে পারত, প্রাথমিক ঝাঁকের সুযোগ দিয়েও ওমরের হাতি সরে যাওয়ার পর f6এর নিয়ন্ত্রণ ফিরে নেওয়ার জন্য প্রস্তুত থাকত। এদিকে ফ্রিটজলাইনের অন্য ঘোড়া পশ্চিমে এগিয়ে যেতে পারত, ওমরের হাতি f6 রক্ষা করার সময় কোনো বিপদ ছাড়াই।
* '''16g:''' ওমর জিম্মি উটকে ছেড়ে দিয়ে ফ্রিটজলাইনের এগিয়ে যাওয়া ঘোড়াটি ধরেন। উট জিম্মিকারী প্রায়ই একটি ঘোড়ার বিনিময়ে উট পায়, কিন্তু ফ্রিটজলাইন এখানে আরও ভালো করতে পারতেন, বিশেষত কারণ ওমরের হাতি দ্রুত f6-এ ফিরতে না পারলে একটি খরগোশ ধরারও সুযোগ ছিল।
* '''16s:''' ফ্রিটজলাইন উটটি ধরবেন; প্রশ্ন হল তার হাতি কোথায় শেষ করবে। ওমর যেহেতু সাথে সাথে f6 রক্ষা করতে পারেন, ফ্রিটজলাইনকে একটি খরগোশের কারণে হাতি কোণায় আটকে রাখলে চলবে না। ফ্রিটজলাইন e6এর বদলে f5 বেছে নেন, সম্ভবত পূর্বের পার্শ্ব রক্ষা করতে।<!----><p>ওমর এখন একটি উট হারিয়েছেন, কিন্তু ফ্রিটজলাইন একটি ঘোড়া ও একটি বিড়াল হারিয়েছেন। এটি [[../Relative Value of Pieces#Uneven Trades|প্রায় সমান]] হলেও এখন থেকে এক-এক বিনিময়ের খেলা ওমরের পক্ষে যাবে, বিশেষত যদি তিনি ফ্রিটজলাইনের বাকি ঘোড়াটি ধরতে পারেন। শত্রুর উট না থাকায় ফ্রিটজলাইনের ঘোড়া এখন ওমরের যেকোনো ঘোড়ার চেয়ে শক্তিশালী। এখান থেকে ফ্রিটজলাইনের উচিত এগিয়ে থাকার খেলা খেলা, সহজে কোনো ঘুঁটি না হারানো।</p>
* '''17g:''' f6-এ হাতি-ঘোড়ার আক্রমণের লক্ষ্যে ওমর তার হাতিকে e6-এ সরান, ফ্রিটজলাইনের উট বা ঘোড়ার g6-এ যাওয়ার সরাসরি পথ বন্ধ করেন।
* '''17s:''' ওমরের পরিকল্পনা সম্ভবত না বুঝে ফ্রিটজলাইন দুটি কুকুরকেই আরও পূর্বে সরান। কাছাকাছি সক্রিয় শত্রু ঘোড়া থাকলে একটি কুকুরের পক্ষে g6 ধরে রাখা কঠিন। তাছাড়া দুটি কুকুরকে এক পাশে রাখা [[../Distribution of Force#Balance|প্রায়ই অপচয়]]। পশ্চিমে একটি কুকুর c3-এ আক্রমণ সমর্থন করতে পারত।
* '''18g:''' ওমর তার পূর্বের ঘোড়া ও তার পেছনে একটি কুকুর এগিয়ে দেন, g6 দখলের প্রস্তুতি নেন। এখন ফ্রিটজলাইন h6 খরগোশকে ফাঁদে উল্টে দিলে লাভ হবে না, কারণ ফ্রেম সাথে সাথে ভেঙে যাবে।
* '''18s:''' পশ্চিমে কোনো আক্রমণ পরিকল্পনায় আস্থা না রেখে ফ্রিটজলাইন তার উটকে পূর্বে সরান, ভারসাম্য ফেরাতে এবং নতুন জিম্মি নেওয়ার আশায়।
* '''19g:''' ওমর f6-এ হাতি-ঘোড়ার আক্রমণ চালিয়ে যান, ঘোড়াকে মুক্ত রাখতে একটি কুকুর এগিয়ে দেন। আবারও, h6 খরগোশ ফ্রিটজলাইনের সম্ভাব্য জিম্মিকে জটিল করে তোলে।
* '''19s:''' ফ্রিটজলাইনের উট আরও পূর্বে যায়, ওমরের ঘোড়া ও খরগোশকে হুমকি দিতে। তবে নিজের পূর্বের ঘোড়া না থাকায় ফ্রিটজলাইন হয়তো [[../Other Hostages#Horse-by-camel hostages|উট-ধারণকৃত জিম্মি]] নিশ্চিত করতে পারবেন না যা তার হাতিকে চলে যেতে দেবে।
* '''20g:''' ওমর তার হাতিকে f7-এ সরান, ফ্রিটজলাইনের উটকে পশ্চিমে ঠেলে সম্ভাব্য ঘোড়া জিম্মির পথ বন্ধ করেন।
* '''20s:''' ফ্রিটজলাইন তার উটকে f6-এ রাখেন, ওমরের হাতি f7-এ থাকলে হাতি স্মাদারের মঞ্চ তৈরি করেন।
* '''21g:''' ওমর তার ঘোড়া পিছিয়ে নেন, কিন্তু তার কুকুর ও খরগোশ এখনও f6-এ ঝুঁকিতে। ওমর পরিবর্তে উটকে উত্তরে টেনে বিড়ালকে পূর্বে ঠেলে তার হাতি কেন্দ্রীভূত করে ফ্রিটজলাইনের যেকোনো জিম্মি বিলম্বিত করতে পারতেন।
* '''21s:''' ফ্রিটজলাইন এখন ওমরের কুকুর এবং খরগোশ উভয়কেই হুমকি দেন। তাছাড়া f3-এ হাতি-উটের আক্রমণও এখন সম্ভব।
* '''22g:''' ওমর একটি কুকুর ঠেলে একটি খরগোশ টানেন, কিন্তু এতে খুব কম অর্জন হয়। ওমরের হাতি f6 ফাঁদ ছেড়ে গেলে ফ্রিটজলাইন এখনও ওমরের কুকুর ধরতে পারেন।
* '''22s:''' ফ্রিটজলাইন হাতি স্মাদারের ব্যবস্থা করেন, পরের চালে সম্পন্ন করা যাবে যদি ওমর তার হাতি পশ্চিমে না সরান। তবে ফ্রিটজলাইনের উচিত ছিল c6 ফাঁদে একটি রক্ষক যোগ করা; এক জায়গায় মনোযোগী হলে অন্য জায়গা সহজেই অবহেলিত হয়।
* '''23g:''' ওমরের হাতি পালায়, এবং ফ্রিটজলাইনের b6 ঘোড়ার বিরুদ্ধে এক চালের হুমকি তৈরি করে। ঘোড়া ধরলে f6-এ কুকুর ও খরগোশ হারানোর ক্ষতি পুষিয়ে নেওয়া যাবে।
* '''23s:''' ফ্রিটজলাইন কুকুর ও খরগোশের বিনিময়ে তার একমাত্র বাকি ঘোড়াটি বাঁচানোর সিদ্ধান্ত নেন। ওমরের কোনো উট না থাকায় ফ্রিটজলাইনের ঘোড়াকে কেবল ওমরের হাতিই হুমকি দিতে পারে, এবং ফ্রিটজলাইন দুটি ঘুঁটি রাখার মূল্য দেখেন যারা কেবল একটি হুমকির মুখে। ফ্রিটজলাইন এই বিনিময় করলে ওমরের ঘোড়াগুলো পুরো বোর্ড দাপাতে পারত।
* '''24g:''' ওমর তার হাতি কেন্দ্রে আনেন এবং f5 কুকুর বাঁচান। এটি ছিল একমাত্র চাল যা একসাথে এই দুটি কাজ করতে পারত, যেমন ২৩গ ছিল একমাত্র চাল যা ওমরের হাতি মুক্ত করে ফ্রিটজলাইনের ধরার হুমকি মোকাবেলা করতে পারত।
* '''24s:''' ফ্রিটজলাইন সরাসরি h6 খরগোশ ধরতে পারতেন, কিন্তু ঘুরন শেষে তার উট উন্মুক্ত থাকত। তাই ফ্রিটজলাইন তার হাতি f5-এ সরিয়ে খরগোশটি g6-এ টেনে নেন, ওমর ফাঁদ রক্ষা করলেও শক্ত খরগোশ ফ্রেম তৈরি করেন।
* '''25g:''' ওমর আবার f6 তার হাতি দিয়ে রক্ষা করেন। ফ্রিটজলাইনের ফাঁদ আক্রমণের আশঙ্কায় ওমর চারটি ঘুঁটি দিয়ে f3 রক্ষা করেন। ওমর তার পশ্চিমের ঘোড়াকে a-ফাইলেও সরান, সম্ভবত একটি খরগোশ টানার প্রস্তুতিতে। তবে f3-এ ফ্রিটজলাইনের হুমকির আলোকে এটি অনেক ধীর হবে। ওমর পরিবর্তে মাঝখান দিয়ে একটি ঘোড়া এগিয়ে দিয়ে c7 বা f7 নেওয়ার চেষ্টা করতে পারতেন।
* '''25s:''' ফ্রিটজলাইন খরগোশকে ফ্রেম করেন এবং এতে ওমরের হাতিকে রক্ষায় [[../Glossary#Pin|পিন]] করেন। ফ্রিটজলাইন তার উট এগিয়ে দেন এবং শীঘ্রই f3 আক্রমণ করতে পারেন, তবে ফ্রেম ধরে রাখতে f6এর আশেপাশের ঘরগুলো দেখতে হবে। ফ্রিটজলাইন আরও ঘুঁটি এগিয়ে দিয়ে গোল লাইন পাতলা করলে ওমরের খরগোশ f6 থেকে বেরিয়ে গোলের হুমকি দিতে পারত।
* '''26g:''' f6এর পাশে উট-ধারণকৃত জিম্মির ভয়ে ওমর তার পূর্বের ঘোড়া ও কুকুর সরান। তবে হোম কোণায় ঘোড়া নিষ্ক্রিয় রাখা [[../Glossary#Away trap|দূরের ফাঁদের]] পাশে জিম্মি হওয়ার চেয়ে খুব বেশি ভালো নয়।
* '''26s:''' ফ্রিটজলাইন পূর্বে বিকশিত হন। g-ফাইলের খরগোশ গোলের হুমকিতে নয়, তার উটকে সমর্থন করতে এগিয়ে যায়, কারণ ওমরের রক্ষা এই মুহূর্তে যথেষ্ট শক্ত।
* '''27g:''' ওমর ধীর পরিকল্পনায় একটি খরগোশ টানা চালিয়ে যান। পূর্বে ফ্রিটজলাইনের হুমকির যথেষ্ট জবাব এটি নয়।
* '''27s:''' ফ্রিটজলাইন একটি কুকুর সামনে ঘুরিয়ে f3 আক্রমণে তার হাতিকে মুক্ত করার পরিকল্পনা করেন। শত্রুর উট চলে গেছে এবং বন্ধুত্বপূর্ণ উট পূর্বে টহল দিচ্ছে, তাই কুকুর f5 নিতে পারে এবং একটি খরগোশ g6 ধরে রাখতে পারে। ফ্রেম করা খরগোশ যেকোনো ক্ষেত্রে f5-এ পিছু হটতে পারত না, কিন্তু ফ্রিটজলাইনের কুকুর ওমরকে ফ্রেম ভাঙতে বাধা দেবে।
* '''28g:''' ওমর তার e-ফাইলের বিড়াল ও কুকুর পিছিয়ে নেন। তবে এটি ফ্রিটজলাইনের হাতির e3-এ যাওয়ার পথ পরিষ্কার করে দেয়, যেখান থেকে সে f3 ফাঁদে আক্রমণ নেতৃত্ব দিতে পারত। e4-এ কুকুর সরাসরি বিপদে ছিল না যদি না শত্রু ঘুঁটি পাশের ঘরে ঘুরন শুরু করত।
* '''28s:''' ফ্রিটজলাইন f3 ফাঁদ আক্রমণ করেন, তার হাতি f5-এ ফিরিয়ে রাখেন। ওমরের হাতি f4-এ এলে তার উট পিছু হটতে পারে সেজন্য ফ্রিটজলাইন h4-এ একটি খরগোশ এগিয়ে দেন।
* '''29g:''' ওমর f3 অবরোধ করেন, কিন্তু এই রক্ষা বেশিক্ষণ টিকবে না। তাছাড়া c3 এখন অরক্ষিত।
* '''29s:''' ফ্রিটজলাইন f3-এ ওমরের কুকুর ও c3-এ বিড়ালকে হুমকি দেন। বিড়াল সহজে বাঁচানো যাবে, কিন্তু এতে একটি গুরুত্বপূর্ণ ধাপ ব্যবহার হবে।
* '''30g:''' তিন ধাপে ওমর ফালানক্স তৈরি করেন যাতে পিন করা f2 খরগোশ রক্ষা করে ফ্রেম করা কুকুর বাঁচানো যায়। এতে c3 রক্ষা করে বিড়ালটিও বাঁচাতে একটি ধাপ বাকি থাকে।
* '''30s:''' কুকুর উল্টানো ওমরকে f3 রক্ষার মাত্র একটি পথ রেখে দেয়। ঘোড়া উল্টালেও একইভাবে ওমরের হাত বাঁধা যেত, কিন্তু ফ্রিটজলাইন দক্ষিণ-পূর্বে ওমরের ঘোড়াকে নিষ্ক্রিয় রাখতে পছন্দ করেন।
* '''31g:''' ওমরকে তার হাতি f4-এ সরাতে হয় এবং এতে ফ্রেম করা খরগোশটি হারায়। ওমর ফ্রিটজলাইনের কুকুরকে e4এর বদলে f5-এ ঠেলেন, যাতে এটি সাথে সাথে c3 ফাঁদে আক্রমণে যোগ দিতে না পারে।
* '''31s:''' ফ্রিটজলাইন ২৮সতে পরিকল্পনা করেছিলেন, h4 খরগোশ তার উটকে পিছু হটতে দেয়। উট জিম্মি হওয়া এবং জিম্মি ধরার মধ্যে এটিই পার্থক্য করতে পারে।
* '''32g:''' বিড়াল ফর্কের ভয়ে ওমর তার বিড়াল পশ্চিমে সরান। c3-এ হাতি-ঘোড়ার আক্রমণের ভয়ে ওমর b-ফাইলে ফ্রিটজলাইনের ঘোড়া আটকান। তবে ফ্রিটজলাইন তার হাতি d3-এ গেলে ফাঁদের মধ্য দিয়ে ঘোড়া সরাতে পারতেন।
* '''32s:''' ফ্রিটজলাইন তাৎক্ষণিক কুকুর-ধরার হুমকি তৈরি করেন, একই সাথে তার উট ও ওমরের হাতির মধ্যে দূরত্ব বাড়ান।
* '''33g:''' ওমর f6 রক্ষা করেন এবং যেকোনো সম্ভাব্য গোল আক্রমণের বিরুদ্ধে দক্ষিণ-পূর্ব মজবুত করেন। ফ্রিটজলাইনের উট f3 আক্রমণে আবার দক্ষিণে গেলে ওমরের কুকুর f6-এ শক্তিশালী আক্রমণকারী হতে পারত।
* '''33s:''' ফ্রিটজলাইন f6-এ ওমরের কুকুর ফ্রেম করার হুমকি দেন; এই ফ্রেম সম্ভবত ওমরকে কুকুর ছেড়ে দিতে বাধ্য করত, কারণ তা না হলে ফ্রিটজলাইনের হাতি বোর্ড নিয়ন্ত্রণ করত।
* '''34g:''' ওমর ফ্রেম-ধরা ঠেকান ও পশ্চিমের ঘোড়াকে তাৎক্ষণিক বিপদ থেকে সরান। ফ্রিটজলাইনের h4 খরগোশ আবার তার উটকে মুক্ত রাখে।
* '''34s:''' মূলত রক্ষণাত্মক চালে ফ্রিটজলাইনের উট ওমরের কুকুরকে কোণের দিকে ঠেলে দেয়। উট-দ্বারা-কুকুর জিম্মি দক্ষ নয়, কিন্তু ফ্রিটজলাইনের উট বিপদমুক্ত এবং ওমরের কুকুর কোণে আটকা। নিজের উট না থাকায় ওমর এই বিন্যাস থেকে খুব বেশি সুবিধা নিতে পারবেন না।
* '''35g:''' ওমর f3-এ একটি খরগোশের হুমকি দেন, তার হাতি g-ফাইলে রেখে যাতে ঘোড়াকে g4-এ টানা হলে তা সাথে সাথে g3-এ ফিরতে পারে। কুকুরের পূর্বে যাওয়া পরস্পরবিরোধী মনে হতে পারে, কারণ এটি কুকুর ও c3 ফাঁদকে আরও দুর্বল করে। কিন্তু কুকুর d2-এ থাকলে d3-এ ঠেলা দিয়ে পিছু হটার পথ বন্ধ করা যেত।
* '''35s:''' ফ্রিটজলাইন f3 রক্ষা করেন এবং f6-এ কুকুর ধরতে জায়গা তৈরি শুরু করেন। তবে f7 থেকে খরগোশ এগিয়ে দেওয়া বুদ্ধিমানের নাও হতে পারে, কারণ এতে তার পিছনের সারি পাতলা হয় এবং আরেকটি খরগোশ f3-এ সম্ভাব্য ধরার ঝুঁকিতে পড়ে। ফ্রিটজলাইন পরিবর্তে তার ঘোড়া এগিয়ে দিতে পারতেন; c3-এ হাতি-ঘোড়ার আক্রমণ পূর্বে ওমরের যেকোনো অগ্রগতির চেয়ে দ্রুত হতে পারত।
* '''36g:''' ওমর খরগোশ ফ্রেম করেন এবং এতে ফ্রিটজলাইনের হাতিকে e3-এ পিন করেন। একটি সাধারণ খরগোশ রক্ষা করতে হাতি খুব কমই কাজে আসে; ফ্রিটজলাইনকে শীঘ্রই হয় খরগোশ ছেড়ে দিতে হবে অথবা দক্ষিণ-পূর্বে আরও ঘুঁটি এগিয়ে নতুন হুমকি তৈরি করতে হবে।
* '''36s:''' ফ্রিটজলাইন তার বিড়াল এগিয়ে দেন, f3-এ সম্ভাব্য ঝাঁকের দিকে এগিয়ে যান। বিড়াল সরে যাওয়ায় ফ্রিটজলাইন ওমরের কুকুরকে f6এর কাছে আরেক ঘর ঠেলেন।
* '''37g:''' ওমর বিড়াল আটকান এবং তার ঘোড়াকে সামনে ঘুরিয়ে f6-এ আক্রমণের হুমকি দেন।
* '''37s:''' ফ্রিটজলাইন অবশেষে কুকুরের বিরুদ্ধে এক চালের হুমকি তৈরি করেন। তিনি g5 এবং এতে g6ও আটকান। তবে g5 ও h5-এ এখন খরগোশ থাকায় ফ্রিটজলাইনের হাতি চলে যেতে বাধ্য হলে f3-এ আরও ক্ষতির মুখে পড়তে পারেন।
* '''38g:''' ওমরের পূর্বের ঘোড়া g6এর পথ পরিষ্কার করে।
* '''38s:''' ফ্রিটজলাইন আবার g5 অবরোধ করেন, কিন্তু ওমর সেই অবরোধ ভেঙে f3-এ আরও খরগোশ হুমকিতে ফেলতে পারেন। ফ্রিটজলাইন তার ঘোড়াকে b6 থেকে d6-এ সরান, সম্ভবত কেন্দ্র দিয়ে এগিয়ে দেওয়ার আশায়। তবে এতে উত্তর-পশ্চিমে একটি ফাঁক তৈরি হয়।
* '''39g:''' ওমর তার পশ্চিমের ঘোড়াকে এখন দুর্বল c6 ফাঁদের দিকে এগিয়ে দেন; ঘোড়া আরও এগোতে পারত, কিন্তু কোন ঘরে শেষ করবে সে ব্যাপারে সতর্ক থাকতে হবে, কারণ ফ্রিটজলাইন ফ্রেম করা খরগোশ ছেড়ে দিয়ে দ্বিতীয় হুমকি তৈরি করে একটি ঘোড়া বা কুকুর ধরতে পারলে খুশি হবেন। একটি বিড়াল c3 রক্ষা করতে এবং খরগোশ বিনিময় ঠেকাতে এগিয়ে আসে। পূর্বে খরগোশগুলো শত্রুর অগ্রগতি আটকাতে এগিয়ে যায়।
* '''39s:''' ফ্রিটজলাইন d-ফাইলে তার ঘোড়া এগিয়ে দেন, c3 আক্রমণ বা f3 থেকে তার খরগোশ মুক্ত করার লক্ষ্যে। ঘোড়া মাত্র তিন ধাপ নেয়, কারণ d3-এ জমে যেতে পারে না কিন্তু d2-এ যেতে পারে।
* '''40g:''' ওমর এখন f8 কুকুর সরাসরি না হারিয়ে তার হাতি পশ্চিমে সরাতে পারেন; ফ্রিটজলাইন সাথে সাথে f8 কুকুর ধরলেও ওমরের হাতি d5 বা d6 থেকেও d3 ঘোড়া ধরতে পারত। ওমর তার হাতিকে d4-এ সরান, সম্ভবত ঘোড়াকে অনুসরণ করার পরিকল্পনায়।
* '''40s:''' ফ্রিটজলাইন তার ঘোড়াকে ওমরের হোম র্যাংকে নিয়ে যান, একটি কুকুর টেনে যাতে ওমর সাথে সাথে ঘোড়াটিকে d2-এ টেনে তুলতে না পারেন।
* '''41g:''' ওমর c6 আক্রমণ করেন, যেটি মূলত এক ঘুরন আগেও করা যেত। ওমর স্পষ্টতই বিশ্বাস করেননি এই আক্রমণে রেস জেতা যাবে, কিন্তু এক ঘুরন পরে তিনি এখন সেদিকেই যাচ্ছেন।
* '''41s:''' ফ্রিটজলাইন কুকুরটি ধরেন এবং এতে তার উটও সক্রিয় হয়। তিনি পরিবর্তে d2 কুকুরকে পূর্বে ও c2 খরগোশকে দক্ষিণে ঠেলে পশ্চিমের অবস্থান মজবুত করতে পারতেন। আরেকটি বিকল্প ছিল f3 খরগোশ মুক্ত করার চেষ্টা, যা ওমরের c-ফাইলের খরগোশের আগে গোলে পৌঁছাতে পারত।
* '''42g:''' ওমর একটি খরগোশ ধরেন এবং তার খরগোশটি এক ধাপ এগিয়ে c-ফাইলে গোলের ব্যবস্থা করেন। পশ্চিমে ফ্রিটজলাইন অনেক দুর্বল, এবং পিছনের সারিতে আটকাতে গেলে আরও ঘুঁটি হারাত।
* '''42s:''' রোখা সম্ভব নয় এমন গোল হুমকির মুখে ফ্রিটজলাইন তার হাতি দিয়ে রক্ষা করতে বাধ্য হন, f3 খরগোশ এবং নিজের সম্ভাব্য গোল হুমকি ছেড়ে দেন। লক্ষ্য করুন কুকুর ধরার পরেই ফ্রিটজলাইন দ্রুত দুটি খরগোশ হারালেন।
* '''43g:''' c-ফাইল আটকানোয় ওমরকে অন্য ফাইলে গোলের পথ তৈরি করতে হবে। ফ্রিটজলাইন যদি a6-এ ঘোড়া জিম্মি করে c7-এ একটি কুকুর রাখেন, ওমরের কোনো কার্যকর গোল পথ থাকবে না এবং ফ্রিটজলাইনের মুক্ত ঘুঁটিতে বড় সুবিধা থাকবে। ঘোড়া জিম্মি আটকানোর চেষ্টায় ওমর b6-এ একটি খরগোশ টেনে নেন। ওমর c3 ফাঁদও রক্ষা করেন, যদিও সেটা করতে গিয়ে c-ফাইলের খরগোশ d-ফাইলে চলে যায়, সম্ভাব্য গোল পথ থেকে দূরে।
* '''43s:''' ফ্রিটজলাইন c7-এ একটি কুকুর রাখেন, হাতি b6-এ গেলেও সম্ভাব্য c-ফাইল গোল আটকান। তিনি পূর্বে তার উটও এগিয়ে দেন; g5 বিড়াল পূর্বে ঠেলা না যাওয়ায় f6-এ এটি বর্তমানে নিরাপদ।
* '''44g:''' ওমর তার ঘোড়া পিছিয়ে একটি খরগোশের হুমকি দেন। তবে ফ্রিটজলাইনের ঘোড়া পেছন থেকে c3 রক্ষা করতে পারে, এবং ওমর খরগোশকে তার নিজের দুর্বল গোল লাইনের দিকে বিনামূল্যে ধাপ দিয়ে দিয়েছেন। ওমরের ঘোড়া পরিবর্তে c7 থেকে কুকুর ঠেলে দিতে পারত, বা আগের ঘুরনেই c7 নিতে পারত বাড়তি ধাপ নিয়ে। এটি গোল আটকানো কঠিন করত যদি ওমর পশ্চিমে একটি খরগোশ এগিয়ে দিতে পারতেন।
* '''44s:''' ফ্রিটজলাইন c2 নেন এবং d3 লক্ষ্য করেন, ওমরের হাতিকে সেই ঘর থেকে আটকান। তবে d-ফাইলে হাতি থাকায় ফ্রিটজলাইন পশ্চিমে গোল আক্রমণের ঝুঁকিতে পড়তে পারেন।
* '''45g:''' ওমর একটি খরগোশ এগিয়ে দেন এবং c3-এ একটি রক্ষক যোগ করেন। ফ্রিটজলাইনের c7-এ কুকুর থাকায় ঘোড়ার সমর্থন ছাড়া খরগোশ সম্ভবত গোলে পৌঁছাতে পারবে না। ওমরের সাম্প্রতিক ঘোড়া পিছানো তাই একাধিক ঘুরন নষ্ট করতে পারে।
* '''45s:''' ওমরের c-ফাইলের খরগোশ আরও এগানোর ব্যাপারে চিন্তিত না হয়ে ফ্রিটজলাইন চার ধাপ পুরো ব্যবহার করে তার উটকে g5-এ সরান, পূর্বে হুমকির মঞ্চ তৈরি করেন। খরগোশের সমর্থনে উট ওমরের হাতি পূর্বে এলেও মুক্ত থাকবে।
* '''46g:''' পূর্বে বা দক্ষিণ-পশ্চিমে সম্ভাব্য হুমকির আগে থাকতে ওমর পশ্চিমে তার খরগোশ ও কুকুর এগিয়ে দেন।
* '''46s:''' ফ্রিটজলাইন f6-এ ওমরের পূর্বের ঘোড়াকে হুমকি দেন। ফ্রিটজলাইনের হাতি পশ্চিমে যায়, যাতে খরগোশ ফ্রেম কেবল পাশ বা পেছন থেকে সরানো যায়।
* '''47g:''' ওমরের পশ্চিমের ঘোড়া ফ্রেম ভাঙে, দুই চালের গোল হুমকি তৈরি করে। এতে ফ্রিটজলাইন আবার রক্ষাকে অগ্রাধিকার দিতে বাধ্য হবেন।
* '''47s:''' পশ্চিমে দীর্ঘমেয়াদী ঘোড়া জিম্মি হবে না, কিন্তু b6 নিয়ে ফ্রিটজলাইন c6 খরগোশের চলাচল সীমিত করেন। ঘোড়াটিকে b7-এ ঠেলে দেওয়াই ভালো হত, যেখানে c7 কুকুরের ঠিক পাশে হত না। b7-এ ঠেলার সুবিধা হল ওমরের হাতি ফ্রিটজলাইনের কুকুরকে পশ্চিমে ঠেলতে পারবে না, যা c-ফাইলে গোলের পথ খুলে দিত।
* '''48g:''' ওমর তার কুকুর, হাতি ও খরগোশ সরিয়ে f6 রক্ষা করেন এবং d-ফাইলে এক চালের গোল হুমকি তৈরি করেন। কুকুর এগানোয় ওমরের b3 বিড়াল c3-এ ঝুঁকিতে পড়ে, যদিও ফ্রিটজলাইনের এখনই ধরার সময় নেই।
* '''48s:''' ফ্রিটজলাইন d-ফাইলে গোল আটকান। তিনি একটি খরগোশও এগিয়ে দেন, f-ফাইলে জায়গা নেন।
* '''49g:''' ওমর c5 কুকুর দক্ষিণে সরিয়ে c7 কুকুর পশ্চিমে টেনে দুটি পশ্চিমের ফাঁদ রক্ষা করেন এবং সম্ভাব্য c-ফাইলের গোল পথ আবার খোলেন।
* '''49s:''' c6 দিয়ে তার কুকুর এগিয়ে ফ্রিটজলাইন সেই ফাঁদের নিয়ন্ত্রণ নেন, ওমরের b6 ঘোড়া ও d5 খরগোশকে হুমকি দেন।
* '''50g:''' ওমর তাৎক্ষণিক বস্তু ক্ষতি এড়াতে পারতেন, কিন্তু শীঘ্রই চাপে পড়তেন। সম্ভবত দক্ষিণ-পশ্চিমে আক্রমণের ভয়ে ওমর ফ্রিটজলাইনের এগিয়ে যাওয়া ঘোড়া জমিয়ে হুমকি দেন, সম্ভাব্য ধরার রেসের ব্যবস্থা করেন। এই রেসে সম্ভবত ওমর ঘুঁটির সংখ্যায় এগিয়ে থাকতেন।
* '''50s:''' ফ্রিটজলাইন ঘোড়া বিনিময় মেনে নেন, কারণ c3 রক্ষা করলে একটি কুকুর হারাতে হত। এই পর্যায়ে ঘোড়া বিনিময় ফ্রিটজলাইনের জন্য খুব খারাপ নয়, কারণ তার এখন একটি উট ও দুটি কুকুর থাকবে আর ওমরের একটি ঘোড়া ও একটি কুকুর। ওমরের বাকি ঘোড়া f6-এ ধরা পড়ার ঝুঁকিতে, যদিও ফ্রিটজলাইনের নিজের খরগোশ এখন সেটি আটকাচ্ছে।
* '''51g:''' ঘোড়া ধরার সময় ওমর তার হাতি উত্তরে এগিয়ে ফ্রিটজলাইনের কুকুরকে হুমকি দেন। শেষ কুকুর ধাপটি সাময়িকভাবে ঘোড়া সক্রিয় করে, কিন্তু বাঁচাবে না। ওমর পরিবর্তে d5 খরগোশ পূর্বে সরাতে পারতেন যাতে তার ঘোড়া f5-এ জমে না যায়। তবে তিনি সম্ভবত d4-এ কুকুর রাখতে চাননি, কারণ এটি পরের ঘুরনে c5 কুকুরের ফ্লিপ-ধরার পথ বন্ধ করত; ওমর পশ্চিমের গোল আক্রমণে তার হাতি রাখতে চান। ওমরের কুকুর দক্ষিণে সরানো ভালো হত, c3-এ ফ্লিপ-ধরার পথ খোলার পাশাপাশি ফ্রিটজলাইনকে তার উটের ব্যাপারে আরও সতর্ক থাকতে বাধ্য করত।
* '''51s:''' ফ্রিটজলাইন পশ্চিমে তার কুকুর ও খরগোশ বাঁচাতে পারতেন, কিন্তু তাহলে পূর্বে একটি খরগোশ হারাতেন এবং ঘোড়া ধরার সুযোগও যেত। তাই ফ্রিটজলাইন ঘোড়া ধরতে যান।
* '''52g:''' ওমর ফ্লিপ-ধরা করেন, পশ্চিমের আক্রমণে তার হাতি রেখে দেন।
* '''52s:''' ফ্রিটজলাইন আগে খরগোশ ধরেন, যেটি নইলে গোলের হুমকি দিতে পারত। ওমরের ঘোড়া পরের ঘুরনে উদ্ধার করা সম্ভব নয়, তাই আগে খরগোশ ধরলে কিছু হারাতে হয় না। এখন c5-এ থেকে ফ্রিটজলাইনের হাতি তার দুর্বল পশ্চিম পার্শ্ব রক্ষা করতে পারে।
* '''53g:''' ওমরের b3 বিড়াল c2-এ ধরে b-ফাইল খরগোশের অগ্রগতির পথ পরিষ্কার করে এবং ওমরের হোম রক্ষা মজবুত করে। ওমর পরিবর্তে খরগোশ ফ্লিপ-ধরে a-ফাইলে আরেকটি খরগোশ এগিয়ে দিতে পারতেন, তার বিড়াল পশ্চিমের গোল আক্রমণে রেখে।
* '''53s:''' ফ্রিটজলাইন বিনিময় সম্পন্ন করেন এবং তার হাতি d4-এ নিয়ে ওমরের কুকুরকে পূর্বে আটকে রাখেন।
* '''54g:''' ওমর পাতলা রক্ষার পশ্চিমে গোলের হুমকি দেন এবং তার বিড়াল b-ফাইলে ফিরিয়ে নেন।
* '''54s:''' ফ্রিটজলাইন গোল আটকান এবং সাময়িকভাবে ওমরের হাতিকে d6 থেকেও আটকান।
* '''55g:''' ফ্রিটজলাইনের কুকুরকে e6-এ ঠেলতে পারলে ওমরের পশ্চিমে শক্তিশালী গোল হুমকি হতে পারে।
* '''55s:''' ফ্রিটজলাইন তার বিড়ালকে e6-এ আনেন, e5 অবরোধ করেন এবং নিশ্চিত করেন যে তার কুকুর পশ্চিমের গোল আটকাতে পারবে। চতুর্থ ধাপে কুকুর সরান না, কারণ তাহলে c6-এ ধরার সুযোগ দেওয়া হত। ফ্রিটজলাইনের পূর্বের গোল রক্ষা পাতলা হচ্ছে, কিন্তু তার হাতি ও উট ভালো অবস্থানে।
* '''56g:''' পূর্ব ও দক্ষিণ থেকে আটকানো ওমরের হাতি উত্তরে যায়। ওমর c3 রক্ষা করতে এবং কেন্দ্রীয় গোল আটকাতে d1 খরগোশ d3-এ এগিয়ে দেন।
* '''56s:''' ফ্রিটজলাইন তার কুকুর মুক্ত করে এগিয়ে দেন, ওমরের গোল পথ আটকান এবং c3-এ আক্রমণের হুমকি দেন।
* '''57g:''' ওমর তার হাতি পূর্বে সরিয়ে ফ্রিটজলাইনের উটের মুখোমুখি করেন। তবে এই পর্যায়ে ঘুঁটির [[../Distribution of Force#Alignment|বিন্যাস]] গৌণ বিষয়। ফ্রিটজলাইন পশ্চিমে আক্রমণের প্রস্তুতিতে, যার জবাব ওমর পূর্বে সাথে সাথে দিতে পারবেন না।
* '''57s:''' f6 ও f3 দুটোর ঝুঁকি মাথায় রেখে ফ্রিটজলাইন তার উটকে পূর্বে সরান। তার হাতি d3 নেয়, ওমরের কুকুরকে পূর্বে আটকে রাখে। ফ্রিটজলাইন এখন ভালো ভারসাম্যে আছেন, তার কুকুর ও উট বিপরীত পার্শ্বে সক্রিয় এবং হাতি মাঝখানে। ওমর খারাপভাবে ভারসামহীন এবং পশ্চিমে দ্রুত রক্ষা করতে হবে।
* '''58g:''' ওমর সাময়িকভাবে c3 রক্ষা করেন, কিন্তু সেটি দুর্বল রেখে দেন।
* '''58s:''' ফ্রিটজলাইন এখন তার কুকুর c3 দিয়ে নিতে পারতেন, কিন্তু f6 বা b-ফাইলের খরগোশ আরও এগানোতে বস্তু হারাতে চান না। তাই ফ্রিটজলাইন সেই খরগোশটি পশ্চিমে ঠেলেন এবং f6 পেছন থেকে রক্ষা করেন। ওমরের হুমকি ফুরিয়ে আসছে।
* '''59g:''' ওমর c-ফাইলে খরগোশ এগিয়ে দেন, কিন্তু তার হাতি আরও পূর্বে নিয়ে যান এই ভেবে যে ফ্রিটজলাইন সাথে সাথে খরগোশ ধরলে তিনি ফ্রিটজলাইনের উট ধরতে পারবেন। কিন্তু এই ধরনের বিনিময়ের পর ফ্রিটজলাইন তার e5 খরগোশ c3-এ এগিয়ে শক্তিশালী গোল হুমকি তৈরি করতে পারতেন। অন্তিম খেলায় খরগোশের বিনিময়ে উট পাওয়া সবসময় উট ধরা পক্ষের পক্ষে যায় না।
* '''59s:''' ফ্রিটজলাইন রক্ষা করেন এবং তার উট আরও এগিয়ে দেন। ওমর এটি জিম্মি করতে পারতেন, কিন্তু তাহলে তার হাতি দক্ষিণ-পূর্ব কোণায় থাকত যখন ফ্রিটজলাইন পশ্চিমে ও কেন্দ্রে গোলের হুমকি দিচ্ছেন। ফ্রিটজলাইনের বেশি কেন্দ্রীভূত হাতি শেষ পর্যন্ত গোল আক্রমণে যোগ দিতে পারে, কারণ উট হারালেও গেম জিতলে কোনো ক্ষতি নেই।
* '''60g:''' জিম্মি এড়িয়ে ওমর তার হাতি পশ্চিমে সরান। ওমর প্রযুক্তিগতভাবে এক চালের গোল হুমকি তৈরি করতে পারতেন, কিন্তু তাহলে সাথে সাথে c6-এ খরগোশ হারাত। ফ্রিটজলাইনের e4-এ খরগোশ না থাকলে ওমরের কাছে একটি বাড়তি ধাপ থাকত যা আরও শক্তিশালী এক চালের গোল হুমকি তৈরি করতে পারত। ফ্রিটজলাইনের অবস্থানগত সুবিধা থাকলেও এই গেম একটি মাত্র ধাপে পাল্টে যেতে পারত।
* '''60s থেকে শেষ পর্যন্ত:''' ওমর ফ্রিটজলাইনের h-ফাইলের খরগোশ আটকাতে বাধ্য হন, তারপর ফ্রিটজলাইনের উট টানা থেকে আটকাতে। এতে শীঘ্রই ওমরের হাতি গোল লাইনে চলে আসে। 66g-এর পর এক চালের গোল হুমকি ফ্রিটজলাইন হিসাব ভুল করলে বা না দেখলে ওমর এখনও জিততে পারতেন। তবে ফ্রিটজলাইনের অবস্থান তাকে গোল রক্ষা করেও আক্রমণে শক্তিশালী ঘুঁটি রাখার সুযোগ দিয়েছিল।
<hr/>
২০০৫ সালের জুনে এই গেম শেষ হওয়ার পর ফ্রিটজলাইন মন্তব্য করেন যে সুবিধা বারবার পাল্টেছে এবং ৪০গতে ওমর অনেক শক্তিশালী অবস্থান নষ্ট করেছেন। তবে পরবর্তী বট বিশ্লেষণ অনুযায়ী ২১গ-এর পর থেকে ফ্রিটজলাইন ক্রমাগত সুবিধায় ছিলেন। রক্ষণমনস্ক ফ্রিটজলাইন প্রায়ই নিজের আক্রমণের সম্ভাবনা দেখতে পাননি। তবুও তিনি সেই সময়ের শীর্ষ খেলোয়াড় ছিলেন এবং ২০০৫ আরিমা বিশ্ব চ্যাম্পিয়নশিপও জিতেছিলেন।
{{BookCat}}
a1gtu4gw634evff3nrnwzxhqu5uplc7
উইকিশৈশব:মার্কিন যুক্তরাষ্ট্রের স্বাধীনতার সনদ/ফেডারেলিস্ট পেপারস/ফেডারেলিস্ট নং ৪১-৫০
100
32200
106475
103182
2026-06-04T14:33:29Z
R1F4T
9121
106475
wikitext
text/x-wiki
[[../|ফেডারালিস্ট পেপারস]]-এর এই উপপৃষ্ঠায় ফেডারালিস্ট পেপারস-এর ৪১-৫০ নম্বরের পাঠ্য রয়েছে। ফেডারালিস্ট পেপারস সম্পর্কে আরও তথ্যের জন্য, এই বিষয়ের মূল পৃষ্ঠাটি দেখুন। এই পৃষ্ঠার তথ্য [http://thomas.loc.gov/home/histdox/fedpapers.html দ্য লাইব্রেরি অফ কংগ্রেস ওয়েবসাইট] থেকে নেওয়া হয়েছে।
'''ফেডারালিস্ট পেপারস:'''
[[#ফেডারালিস্ট নং ৪১|৪১]] [[#ফেডারালিস্ট নং ৪২|৪২]] [[#ফেডারালিস্ট নং ৪৩|৪৩]] [[#ফেডারালিস্ট নং ৪৪|৪৪]] [[#ফেডারালিস্ট নং ৪৫|৪৫]] [[#ফেডারালিস্ট নং ৪৬|৪৬]] [[#ফেডারালিস্ট নং ৪৭|৪৭]] [[#ফেডারালিস্ট নং ৪৮|৪৮]] [[#ফেডারালিস্ট নং ৪৯|৪৯]] [[#ফেডারালিস্ট নং ৫০|৫০]]
__NOTOC__
এই পৃষ্ঠায় থাকা ফেডারালিস্ট পেপারসগুলো হলো:
{| class="wikitable"
|-
!নং
!শিরোনাম
!লেখক
|-
!৪১
|সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর সাধারণ পর্যালোচনা
|জেমস ম্যাডিসন
|-
!৪২
|সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর আরও বিবেচনা
|জেমস ম্যাডিসন
|-
!৪৩
|একই বিষয়ের ধারাবাহিকতা: সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর আরও বিবেচনা
|জেমস ম্যাডিসন
|-
!৪৪
|বিভিন্ন অঙ্গরাজ্যের কর্তৃত্বের ওপর বিধিনিষেধ
|জেমস ম্যাডিসন
|-
!৪৫
|অঙ্গরাজ্য সরকারগুলোর প্রতি ইউনিয়নের ক্ষমতা থেকে আগত কথিত বিপদের বিবেচনা
|জেমস ম্যাডিসন
|-
!৪৬
|অঙ্গরাজ্য এবং ফেডারেল সরকারের প্রভাবের তুলনা
|জেমস ম্যাডিসন
|-
!৪৭
|নতুন সরকারের বিশেষ কাঠামো এবং এর বিভিন্ন অংশের মধ্যে ক্ষমতার বণ্টন
|জেমস ম্যাডিসন
|-
!৪৮
|এই বিভাগগুলোকে এতটা আলাদা করা উচিত নয় যে একে অপরের ওপর কোনো সাংবিধানিক নিয়ন্ত্রণ না থাকে
|জেমস ম্যাডিসন
|-
!৪৯
|একটি কনভেনশনের মাধ্যমে জনগণের কাছে আবেদন করে সরকারের যেকোনো এক বিভাগের অনুপ্রবেশের বিরুদ্ধে সুরক্ষার পদ্ধতি
|আলেকজান্ডার হ্যামিল্টন বা জেমস ম্যাডিসন
|-
!৫০
|জনগণের কাছে পর্যায়ক্রমিক আবেদনের বিবেচনা
|আলেকজান্ডার হ্যামিল্টন বা জেমস ম্যাডিসন
|}
==ফেডারালিস্ট নং ৪১==
ফেডারালিস্ট নং ৪১-এর শিরোনাম হলো ''"সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর সাধারণ পর্যালোচনা"'। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''কনভেনশন দ্বারা প্রস্তাবিত সংবিধানকে দুটি সাধারণ দৃষ্টিকোণ থেকে বিবেচনা করা যেতে পারে। প্রথমটি হলো সরকারে ন্যস্ত ক্ষমতার পরিমাণ বা মাত্রা, যার মধ্যে অঙ্গরাজ্যগুলোর ওপর আরোপিত বিধিনিষেধগুলো অন্তর্ভুক্ত। দ্বিতীয়টি হলো, সরকারের বিশেষ কাঠামো এবং এর বিভিন্ন শাখার মধ্যে এই ক্ষমতার বণ্টন। বিষয়ের প্রথম দৃষ্টিকোণের অধীনে, দুটি গুরুত্বপূর্ণ প্রশ্ন ওঠে: ১. সাধারণ সরকারের কাছে হস্তান্তরিত ক্ষমতার কোনো অংশ কি অপ্রয়োজনীয় বা অনুপযুক্ত? ২. এর সমগ্র অংশটি কি বিভিন্ন অঙ্গরাজ্যের হাতে থাকা এক্তিয়ারের জন্য বিপজ্জনক? সাধারণ সরকারের সামগ্রিক ক্ষমতা কি এতে যতটুকু ন্যস্ত হওয়া উচিত তার চেয়ে বেশি? এটি হলো প্রথম প্রশ্ন। যারা সরকারের ব্যাপক ক্ষমতার বিরুদ্ধে ব্যবহৃত যুক্তিগুলো মনোযোগের সাথে লক্ষ্য করেছেন, তারা নিশ্চয়ই খেয়াল করেছেন যে, এই যুক্তির প্রণেতারা একটি প্রয়োজনীয় লক্ষ্য অর্জনের জন্য এই ক্ষমতাগুলো কতটা অপরিহার্য ছিল তা খুব কমই বিবেচনা করেছেন। তারা বরং সেই সমস্ত অসুবিধার ওপর জোর দিতে পছন্দ করেছেন যা সমস্ত রাজনৈতিক সুবিধার সাথে অনিবার্যভাবে মিশে থাকে; এবং প্রতিটি ক্ষমতা বা আস্থার সম্ভাব্য অপব্যবহারের ওপর, যার একটি উপকারী ব্যবহারও করা যেতে পারে। বিষয়টি পরিচালনার এই পদ্ধতি আমেরিকার জনগণের সুবুদ্ধির ওপর চাপিয়ে দেওয়া যায় না। এটি লেখকের সূক্ষ্মতা প্রদর্শন করতে পারে; এটি অলঙ্কারশাস্ত্র এবং বক্তৃতার জন্য একটি সীমাহীন ক্ষেত্র উন্মুক্ত করতে পারে; এটি চিন্তাহীনদের আবেগকে উস্কে দিতে পারে, এবং ভুল চিন্তাবিদদের কুসংস্কারকে নিশ্চিত করতে পারে: তবে শান্ত এবং অকপট মানুষরা তৎক্ষণাৎ উপলব্ধি করবেন যে, মানুষের শুদ্ধতম আশীর্বাদের মধ্যেও কিছু খাদ থাকতে হবে; যে পছন্দটি সর্বদা নিখুঁতের জন্য নয়, বরং অন্তত বৃহত্তর মঙ্গলের জন্য করতে হবে, যদি অপেক্ষাকৃত কম মন্দের জন্য নাও হয়; এবং প্রতিটি রাজনৈতিক প্রতিষ্ঠানে, জনগণের সুখকে এগিয়ে নেওয়ার ক্ষমতার সাথে এমন একটি বিচক্ষণতা জড়িত থাকে যা অপপ্রয়োগ এবং অপব্যবহার করা যেতে পারে। অতএব, তারা দেখতে পাবেন যে, যেসব ক্ষেত্রে ক্ষমতা প্রদান করতে হবে, সেখানে প্রথমেই সিদ্ধান্ত নিতে হবে যে এ ধরনের ক্ষমতা জনগণের মঙ্গলের জন্য প্রয়োজনীয় কি না; আর ইতিবাচক সিদ্ধান্তের ক্ষেত্রে পরবর্তী কাজ হবে, জনগণের ক্ষতির জন্য ক্ষমতার অপব্যবহারের বিরুদ্ধে যতটা সম্ভব কার্যকরভাবে পাহারা দেওয়া। এই বিষয়ে সঠিক বিচার করতে হলে, ইউনিয়নের সরকারকে প্রদত্ত ক্ষমতাগুলো পর্যালোচনা করা যথাযথ হবে; এবং এটি আরও সুবিধাজনকভাবে করার জন্য, এগুলোকে নিম্নলিখিত বিভিন্ন লক্ষ্যের সাথে সম্পর্কিত ভিন্ন ভিন্ন শ্রেণিতে ভাগ করা যেতে পারে: ১. বিদেশি বিপদের বিরুদ্ধে নিরাপত্তা; ২. বিদেশি রাষ্ট্রগুলোর সাথে সম্পর্কের নিয়ন্ত্রণ; ৩. অঙ্গরাজ্যগুলোর মধ্যে সম্প্রীতি এবং সঠিক সম্পর্ক বজায় রাখা; ৪. সাধারণ উপযোগিতার কিছু বিবিধ উদ্দেশ্য; ৫. কিছু ক্ষতিকারক কাজ থেকে অঙ্গরাজ্যগুলোকে নিবৃত্ত রাখা; ৬. এই সমস্ত ক্ষমতাগুলোকে যথাযথ কার্যকারিতা দেওয়ার বিধান। প্রথম শ্রেণির অন্তর্ভুক্ত ক্ষমতাগুলো হলো যুদ্ধ ঘোষণা এবং লেটার্স অফ মার্ক (লুটপাটের অনুমতিপত্র) প্রদান করা; সেনাবাহিনী এবং নৌবহর সরবরাহ করা; মিলিশিয়াদের নিয়ন্ত্রণ এবং আহ্বান করা; অর্থ সংগ্রহ এবং ঋণ নেওয়া। বিদেশি বিপদের বিরুদ্ধে নিরাপত্তা নাগরিক সমাজের অন্যতম প্রাথমিক উদ্দেশ্য। এটি আমেরিকান ইউনিয়নের একটি ঘোষিত এবং অপরিহার্য লক্ষ্য। এটি অর্জনের জন্য প্রয়োজনীয় ক্ষমতা অবশ্যই ফেডারেল কাউন্সিলগুলোর কাছে কার্যকরভাবে ন্যস্ত করতে হবে। যুদ্ধ ঘোষণার ক্ষমতা কি প্রয়োজনীয়? কেউই এই প্রশ্নের উত্তর নেতিবাচকভাবে দেবেন না। অতএব, এর ইতিবাচক প্রমাণের ভেতরে প্রবেশ করা অপ্রয়োজনীয় হবে। বিদ্যমান কনফেডারেশন এই ক্ষমতাটিকে সবচেয়ে পর্যাপ্ত আকারে প্রতিষ্ঠিত করেছে। সেনাবাহিনী গঠন এবং নৌবহর সজ্জিত করার ক্ষমতা কি প্রয়োজনীয়? এটি পূর্ববর্তী ক্ষমতার সাথে জড়িত। এটি আত্মরক্ষার ক্ষমতার সাথেও যুক্ত। কিন্তু সেনা গঠন এবং নৌবহর সরবরাহের, এবং যুদ্ধ ও শান্তি উভয় সময়েই এগুলো রক্ষণাবেক্ষণের জন্য কি একটি অনির্দিষ্ট ক্ষমতা দেওয়ার প্রয়োজন ছিল? এই প্রশ্নগুলোর উত্তর অন্যত্র এত আগেই দেওয়া হয়েছে যে এখানে এগুলোর বিশদ আলোচনার অবকাশ নেই। প্রকৃতপক্ষে এর উত্তর এতই সুস্পষ্ট এবং চূড়ান্ত বলে মনে হয় যে কোথাও এর আলোচনার ন্যায্যতা প্রমাণ করা কঠিন। যারা আক্রমণের শক্তিকে সীমাবদ্ধ করতে পারে না, তারা প্রতিরক্ষার জন্য প্রয়োজনীয় শক্তিকে কোন যুক্তিতে সীমাবদ্ধ করবে? যদি একটি ফেডারেল সংবিধান অন্যান্য সমস্ত জাতির উচ্চাকাঙ্ক্ষাকে শৃঙ্খলিত করতে বা প্রচেষ্টাকে সীমাবদ্ধ করতে পারত, তবেই এটি তার নিজস্ব সরকারের বিচক্ষণতাকে শৃঙ্খলিত করতে এবং নিজের নিরাপত্তার জন্য প্রচেষ্টায় সীমা নির্ধারণ করতে পারত।''
''শান্তিকালীন সময়ে যুদ্ধের প্রস্তুতি নিরাপদে কীভাবে নিষিদ্ধ করা যেতে পারে, যদি না আমরা একইভাবে প্রতিটি শত্রুভাবাপন্ন জাতির প্রস্তুতি এবং সংস্থাকে নিষিদ্ধ করতে পারি? নিরাপত্তার উপায়গুলো কেবল আক্রমণের উপায় এবং বিপদ দ্বারাই নিয়ন্ত্রিত হতে পারে। এগুলো আসলে সর্বদা এই নিয়মগুলোর দ্বারাই নির্ধারিত হবে, অন্য কিছু দ্বারা নয়। আত্মরক্ষার আবেগের বিরুদ্ধে সাংবিধানিক বাধা সৃষ্টি করা বৃথা। এটি বৃথার চেয়েও খারাপ; কারণ এটি সংবিধানেই ক্ষমতার প্রয়োজনীয় জবরদখল রোপণ করে, যার প্রতিটি দৃষ্টান্ত অপ্রয়োজনীয় এবং বহুমুখী পুনরাবৃত্তির একটি জীবাণু। যদি কোনো জাতি ক্রমাগত একটি সুশৃঙ্খল সেনাবাহিনী বজায় রাখে, যা উচ্চাকাঙ্ক্ষা বা প্রতিশোধের জন্য প্রস্তুত থাকে, তবে তা তার নাগালের মধ্যে থাকা সবচেয়ে শান্তিকামী জাতিগুলোকেও অনুরূপ সতর্কতা অবলম্বন করতে বাধ্য করে।''
''পঞ্চদশ শতাব্দী ছিল শান্তিকালীন সামরিক সংস্থাসমূহের জন্য এক দুর্ভাগ্যজনক যুগ। এগুলো ফ্রান্সের সপ্তম চার্লস দ্বারা প্রবর্তিত হয়েছিল। সমগ্র ইউরোপ এই উদাহরণ অনুসরণ করেছে, বা বাধ্য হয়েছে। যদি অন্যান্য জাতি এই উদাহরণ অনুসরণ না করত, তবে সমগ্র ইউরোপকে অনেক আগেই একজন সার্বজনীন সম্রাটের শৃঙ্খল পরতে হতো। যদি ফ্রান্স ছাড়া প্রতিটি জাতি এখন তাদের শান্তি সংস্থাসমূহ ভেঙে দেয়, তবে একই পরিণতি হতে পারে। রোমের প্রবীণ সৈন্যদল অন্যান্য সমস্ত জাতির বিশৃঙ্খল বীরত্বের চেয়ে অনেক বেশি শক্তিশালী ছিল এবং তাকে বিশ্বের অধীশ্বরী করে তুলেছিল। এটাও কম সত্য নয় যে, রোমের স্বাধীনতা তার সামরিক বিজয়েরই চূড়ান্ত শিকার হয়েছিল; এবং ইউরোপের স্বাধীনতা, যতক্ষণ পর্যন্ত অস্তিত্ব ছিল, কিছু ব্যতিক্রম ছাড়া তার সামরিক সংস্থাসমূহেরই মূল্য ছিল। অতএব, একটি স্থায়ী বাহিনী বিপজ্জনক হওয়ার পাশাপাশি একটি প্রয়োজনীয় ব্যবস্থা হতে পারে। ক্ষুদ্রতম পরিসরে এর অসুবিধা রয়েছে। একটি বিস্তৃত পরিসরে এর পরিণতি মারাত্মক হতে পারে। যেকোনো পরিসরে এটি প্রশংসনীয় সতর্কতা এবং প্রজ্ঞার বিষয়। একটি জ্ঞানী জাতি এই সমস্ত বিবেচনাকে একত্রিত করবে; এবং, যদিও এটি তাড়াহুড়ো করে নিজেকে এমন কোনো সংস্থান থেকে বঞ্চিত করবে না যা তার নিরাপত্তার জন্য অপরিহার্য হয়ে উঠতে পারে, তবে এটি এমন কোনোটির আশ্রয় নেওয়ার প্রয়োজনীয়তা এবং বিপদ উভয়ই হ্রাস করার জন্য তার সমস্ত বিচক্ষণতা প্রয়োগ করবে যা তার স্বাধীনতার জন্য অশুভ হতে পারে। এই বিচক্ষণতার সুস্পষ্ট চিহ্নগুলো প্রস্তাবিত সংবিধানে অঙ্কিত রয়েছে। ইউনিয়ন নিজেই, যা এটি সুসংহত ও সুরক্ষিত করে, এমন একটি সামরিক সংস্থার প্রতিটি অজুহাত ধ্বংস করে দেয় যা বিপজ্জনক হতে পারে। একতাবদ্ধ আমেরিকা, একমুঠো সৈন্য নিয়ে বা একক সৈন্য ছাড়াও, বিভক্ত আমেরিকার চেয়ে বিদেশি উচ্চাকাঙ্ক্ষার কাছে অনেক বেশি দুর্ভেদ্য ভঙ্গি প্রদর্শন করে, যেখানে যুদ্ধের জন্য প্রস্তুত এক লক্ষ অভিজ্ঞ সৈনিক রয়েছে। আগের একটি উপলক্ষে মন্তব্য করা হয়েছিল যে, এই অজুহাতের অভাব ইউরোপের একটি জাতির স্বাধীনতা রক্ষা করেছে। তার দ্বীপময় অবস্থান এবং সামুদ্রিক সম্পদের কারণে তার প্রতিবেশীদের সেনাবাহিনীর কাছে অজেয় হয়ে ওঠায়, গ্রেট ব্রিটেনের শাসকরা কখনো বাস্তব বা কৃত্রিম বিপদের মাধ্যমে জনগণকে একটি বিশাল শান্তি সংস্থায় প্রতারিত করতে সক্ষম হননি। বিশ্বের শক্তিশালী জাতিগুলো থেকে মার্কিন যুক্তরাষ্ট্রের দূরত্ব তাদের একই সুখকর নিরাপত্তা দেয়। একটি বিপজ্জনক সংস্থা কখনো প্রয়োজনীয় বা যুক্তিসঙ্গত হতে পারে না, যতক্ষণ তারা একটি ঐক্যবদ্ধ জাতি হিসেবে থাকে। তবে এটি যেন এক মুহূর্তের জন্যও ভুলে যাওয়া না হয় যে তারা এই সুবিধার জন্য কেবল ইউনিয়নের কাছে ঋণী। এর বিলুপ্তির মুহূর্তটি হবে একটি নতুন ব্যবস্থার শুরুর দিন। দুর্বল রাজ্যগুলোর ভয়, বা শক্তিশালী রাজ্য বা কনফেডারেশনগুলোর উচ্চাকাঙ্ক্ষা, নতুন বিশ্বে একই উদাহরণ স্থাপন করবে যেমনটা সপ্তম চার্লস পুরোনো বিশ্বে করেছিলেন। সেখানে সার্বজনীন অনুকরণের কারণগুলো থেকেই এখানেও সেই উদাহরণ অনুসরণ করা হবে। আমাদের পরিস্থিতি থেকে গ্রেট ব্রিটেনের মতো মূল্যবান সুবিধা নেওয়ার পরিবর্তে, আমেরিকার চেহারা কেবল ইউরোপ মহাদেশের একটি অনুলিপি হবে। এটি সব জায়গায় স্থায়ী সেনাবাহিনী এবং চিরস্থায়ী করের মাঝে পিষ্ট স্বাধীনতা উপস্থাপন করবে। বিভক্ত আমেরিকার ভাগ্য ইউরোপের চেয়েও বেশি বিপর্যয়কর হবে। ইউরোপে মন্দের উৎসগুলো তার নিজস্ব সীমানার মধ্যে সীমাবদ্ধ। বিশ্বের অন্য কোনো প্রান্তের উচ্চতর শক্তি তার প্রতিদ্বন্দ্বী জাতিগুলোর মধ্যে চক্রান্ত করে না, তাদের পারস্পরিক শত্রুতাকে উস্কে দেয় না, এবং তাদের বিদেশি উচ্চাকাঙ্ক্ষা, ঈর্ষা এবং প্রতিশোধের হাতিয়ারে পরিণত করে না। আমেরিকায় তার অভ্যন্তরীণ ঈর্ষা, বিবাদ এবং যুদ্ধ থেকে উদ্ভূত দুর্দশাগুলো তার ভাগ্যের একটি অংশ মাত্র হবে। মন্দের একটি প্রচুর সংযোজন সেই সম্পর্ক থেকে উদ্ভূত হবে যেটিতে ইউরোপ পৃথিবীর এই প্রান্তের সাথে দাঁড়িয়ে আছে, এবং পৃথিবীর অন্য কোনো প্রান্ত ইউরোপের সাথে যে সম্পর্ক বহন করে না। অনৈক্যের পরিণতির এই চিত্র খুব বেশি রঙিন বা খুব বেশিবার প্রদর্শন করা যায় না। শান্তি ভালোবাসেন এমন প্রত্যেক ব্যক্তি, নিজের দেশকে ভালোবাসেন এমন প্রত্যেক ব্যক্তি, স্বাধীনতা ভালোবাসেন এমন প্রত্যেক ব্যক্তির এটি সর্বদা চোখের সামনে রাখা উচিত, যাতে তিনি হৃদয়ে আমেরিকার ইউনিয়নের প্রতি যথাযথ সংযুক্তি লালন করতে পারেন এবং এটি সংরক্ষণের উপায়গুলোর যথাযথ মূল্য দিতে সক্ষম হন।''
''ইউনিয়নের কার্যকর প্রতিষ্ঠার পরে, স্থায়ী সেনাবাহিনী থেকে বিপদের বিরুদ্ধে সর্বোত্তম সম্ভাব্য সতর্কতা হলো সেই মেয়াদের সীমাবদ্ধতা যার জন্য তাদের সহায়তায় রাজস্ব বরাদ্দ করা যেতে পারে। সংবিধান সতর্কতার সাথে এই বিধানটি যুক্ত করেছে। আমি এখানে সেই পর্যবেক্ষণগুলোর পুনরাবৃত্তি করব না যা, আমি মনে করি, এই বিষয়টিকে একটি ন্যায্য এবং সন্তোষজনক আলোতে উপস্থাপন করেছে। তবে সংবিধানের এই অংশের বিরুদ্ধে একটি যুক্তির প্রতি দৃষ্টি আকর্ষণ করা অনুপযুক্ত নাও হতে পারে, যা গ্রেট ব্রিটেনের নীতি এবং অনুশীলন থেকে নেওয়া হয়েছে। বলা হয় যে সেই রাজ্যে সেনাবাহিনীর ধারাবাহিকতার জন্য আইনসভার বার্ষিক ভোটের প্রয়োজন হয়; যেখানে আমেরিকান সংবিধান এই সংকটপূর্ণ সময়কালকে দুই বছর পর্যন্ত দীর্ঘায়িত করেছে। এই আকারেই তুলনাটি সাধারণত জনসাধারণের সামনে উপস্থাপন করা হয়: কিন্তু এটি কি একটি সঠিক রূপ? এটি কি একটি ন্যায্য তুলনা? ব্রিটিশ সংবিধান কি সংসদীয় বিচক্ষণতাকে এক বছরে সীমাবদ্ধ করে? আমেরিকান সংবিধান কি কংগ্রেসের ওপর দুই বছরের বরাদ্দ চাপিয়ে দেয়? এর বিপরীতে, এটা ভুলের প্রণেতাদের নিজেদের কাছে অজানা থাকতে পারে না যে, ব্রিটিশ সংবিধান আইনসভার বিচক্ষণতার ওপর কোনো সীমাই নির্ধারণ করে না, এবং আমেরিকান সংবিধান আইনসভাকে সবচেয়ে দীর্ঘ গ্রহণযোগ্য মেয়াদ হিসেবে দুই বছরের মধ্যে বেঁধে দেয়। ব্রিটিশ উদাহরণ থেকে যুক্তিটি যদি সঠিকভাবে বলা হতো, তবে তা এমন দাঁড়াত: সেনা সংস্থার জন্য সরবরাহের বরাদ্দের মেয়াদ, যদিও ব্রিটিশ সংবিধানে অসীম, তবুও বাস্তবে সংসদীয় বিচক্ষণতার দ্বারা এক বছরে সীমাবদ্ধ করা হয়েছে। এখন, যদি গ্রেট ব্রিটেনে, যেখানে হাউস অফ কমন্স সাত বছরের জন্য নির্বাচিত হয়; যেখানে এত বড় অংশের সদস্য এত অল্প অংশের মানুষ দ্বারা নির্বাচিত হয়; যেখানে নির্বাচকরা প্রতিনিধিদের দ্বারা এত বেশি দুর্নীতিগ্রস্ত, এবং প্রতিনিধিরা ক্রাউনের দ্বারা এত বেশি দুর্নীতিগ্রস্ত, সেখানে প্রতিনিধি সংস্থা যদি অনির্দিষ্টকালের জন্য সেনাবাহিনীতে বরাদ্দ দেওয়ার ক্ষমতা রাখতে পারে, এক বছরের বেশি মেয়াদ বাড়ানোর ইচ্ছা বা সাহস না করেই, তবে আমেরিকার প্রতিনিধিরা, যারা প্রতি দ্বিতীয় বছরে সমগ্র জনগণের দ্বারা স্বাধীনভাবে নির্বাচিত হন, তাদের দুই বছরের সংক্ষিপ্ত সময়ের মধ্যে স্পষ্টভাবে সীমাবদ্ধ এই বরাদ্দের ওপর বিচক্ষণতার সাথে নিরাপদে বিশ্বাস করা যায় না - এমন ভান করতে কি সন্দেহের নিজেরই লজ্জিত হওয়া উচিত নয়? একটি খারাপ কারণ খুব কমই নিজেকে প্রকাশ করতে ব্যর্থ হয়। এই সত্যের, ফেডারেল সরকারের বিরোধিতার পরিচালনা একটি অপরিবর্তনীয় উদাহরণ। তবে যে সমস্ত ভুল করা হয়েছে, সেগুলোর মধ্যে জনগণের স্থায়ী সেনাবাহিনীর প্রতি যে সতর্ক ঈর্ষা রয়েছে, তাকে সেই পক্ষে তালিকাভুক্ত করার চেষ্টার চেয়ে লক্ষণীয় আর কিছু নেই। এই প্রচেষ্টা সেই গুরুত্বপূর্ণ বিষয়ে পুরোপুরি জনযোগাযোগ জাগ্রত করেছে; এবং এমন তদন্তের দিকে পরিচালিত করেছে যা অবশ্যই একটি পুঙ্খানুপুঙ্খ এবং সার্বজনীন প্রত্যয়ে শেষ হতে হবে, কেবল এই নয় যে সংবিধান সেই দিক থেকে বিপদের বিরুদ্ধে সবচেয়ে কার্যকর সুরক্ষার ব্যবস্থা করেছে, বরং জাতীয় প্রতিরক্ষা এবং ইউনিয়ন সংরক্ষণের জন্য পুরোপুরি পর্যাপ্ত একটি সংবিধান ছাড়া আর কিছুই আমেরিকাকে রাজ্য বা কনফেডারেশনে বিভক্ত হওয়ার কারণে সৃষ্টি হতে পারে এমন বহু স্থায়ী সেনাবাহিনী থেকে বাঁচাতে পারবে না, এবং প্রতিটিতে এই সংস্থাগুলোর এমন প্রগতিশীল বৃদ্ধি থেকে রক্ষা করতে পারবে না, যা সেগুলোকে মানুষের সম্পত্তি ও স্বাধীনতার জন্য ততটাই বোঝাস্বরূপ এবং অশুভ করে তুলবে, যতটা একটি ঐক্যবদ্ধ এবং দক্ষ সরকারের অধীনে প্রয়োজনীয় হয়ে উঠতে পারে এমন কোনো সংস্থা প্রথমটির জন্য সহনীয় এবং দ্বিতীয়টির জন্য নিরাপদ হতে বাধ্য। নৌবাহিনী সরবরাহ ও রক্ষণাবেক্ষণ করার ক্ষমতার সুস্পষ্ট প্রয়োজনীয়তা সংবিধানের সেই অংশটিকে নিন্দার মনোভাব থেকে রক্ষা করেছে, যা অন্য কয়েকটি অংশকে রেহাই দিয়েছে। প্রকৃতপক্ষে, এটিকে আমেরিকার অন্যতম বড় আশীর্বাদ হিসেবে গণ্য করতে হবে যে, তার ইউনিয়ন যেমন তার সামুদ্রিক শক্তির একমাত্র উৎস হবে, তেমনি এটি বিদেশ থেকে বিপদের বিরুদ্ধে তার নিরাপত্তার একটি প্রধান উৎস হবে। এদিক থেকে আমাদের পরিস্থিতি গ্রেট ব্রিটেনের দ্বীপগত সুবিধার আরেকটি সাদৃশ্য বহন করে। আমাদের নিরাপত্তার ওপর বিদেশি উদ্যোগগুলোকে প্রতিহত করতে সবচেয়ে সক্ষম ব্যাটারিগুলো ভাগ্যক্রমে এমন যে সেগুলো কখনোই কোনো বিশ্বাসঘাতক সরকারের দ্বারা আমাদের স্বাধীনতার বিরুদ্ধে ঘোরানো যাবে না। আটলান্টিক সীমান্তের অধিবাসীদের সকলেই নৌ সুরক্ষার এই বিধানের প্রতি গভীরভাবে আগ্রহী, এবং তারা যদি এযাবৎকাল শান্তিতে ঘুমাতে পেরে থাকেন; যদি তাদের সম্পত্তি স্বেচ্ছাচারী অভিযাত্রীদের লুণ্ঠনমূলক মনোভাবের বিরুদ্ধে নিরাপদ থেকে থাকে; যদি তাদের সামুদ্রিক শহরগুলো এখনো সাহসী এবং আকস্মিক আক্রমণকারীদের দাবির কাছে নতিস্বীকার করে অগ্নিকাণ্ডের আতঙ্ক থেকে নিজেদের মুক্ত করতে বাধ্য না হয়, তবে সৌভাগ্যের এই দৃষ্টান্তগুলোকে বিদ্যমান সরকারের তার দাবি করা আনুগত্যকারীদের রক্ষা করার ক্ষমতার জন্য দায়ী করা উচিত নয়, বরং ক্ষণস্থায়ী এবং ভ্রান্ত কারণগুলোর জন্য দায়ী করা উচিত। যদি আমরা ভার্জিনিয়া এবং মেরিল্যান্ডকে বাদ দিই, যা তাদের পূর্ব সীমান্তে বিশেষভাবে ঝুঁকিপূর্ণ, ইউনিয়নের কোনো অংশেরই নিউইয়র্কের চেয়ে এই বিষয়ে বেশি উদ্বেগ অনুভব করা উচিত নয়। এর সমুদ্র উপকূল বিশাল। রাজ্যের একটি অত্যন্ত গুরুত্বপূর্ণ জেলা হলো একটি দ্বীপ। রাজ্যটি নিজেই পঞ্চাশ লিগেরও বেশি দীর্ঘ একটি বড় নৌযান চলাচলের উপযোগী নদী দ্বারা অবরুদ্ধ। এর বাণিজ্যের মহান কেন্দ্র, এর সম্পদের মহান আধার, প্রতি মুহূর্তে ঘটনাবলির দয়ায় পড়ে থাকে এবং বিদেশি শত্রুর নির্দেশের বা এমনকি জলদস্যু ও অসভ্যদের লোভী দাবির অপমানজনক পালনের জন্য প্রায় জিম্মি হিসেবে বিবেচিত হতে পারে। ইউরোপীয় বিষয়াদির অনিশ্চিত পরিস্থিতির ফলস্বরূপ যদি একটি যুদ্ধ বেঁধে যায় এবং এর সাথে যুক্ত সমস্ত অনিয়ন্ত্রিত আবেগ সাগরে উন্মুক্ত হয়ে যায়, তবে অপমান এবং লুটতরাজ থেকে আমাদের রক্ষা পাওয়া, কেবল সেই উপাদানেই নয়, এর সীমান্তবর্তী অন্য প্রতিটি অংশেও, সত্যিকার অর্থেই অলৌকিক হবে। আমেরিকার বর্তমান অবস্থায়, এই বিপর্যয়গুলোর মুখে সরাসরি উন্মুক্ত রাজ্যগুলোর বর্তমানে বিদ্যমান একটি সাধারণ সরকারের মরীচিকা থেকে আশা করার কিছুই নেই; এবং যদি তাদের একক সম্পদ নিজেদের বিপদের বিরুদ্ধে শক্তিশালী করার কাজের সমান হতো, তবে সুরক্ষার উপায়গুলো দ্বারাই সুরক্ষিত হওয়ার বিষয়টি প্রায় নিঃশেষ হয়ে যেত। মিলিশিয়াদের নিয়ন্ত্রণ এবং আহ্বান করার ক্ষমতা ইতিমধ্যেই যথেষ্ট সমর্থন এবং ব্যাখ্যা করা হয়েছে। জাতীয় প্রতিরক্ষায় যে অর্থ প্রয়োগ করা হবে তার মূল শক্তি হিসেবে অর্থ সংগ্রহ এবং ঋণ নেওয়ার ক্ষমতা যথাযথভাবে এর সাথে একই শ্রেণিতে ফেলা হয়েছে। এই ক্ষমতাটিও ইতিমধ্যেই অনেক মনোযোগের সাথে পরীক্ষা করা হয়েছে এবং আমি বিশ্বাস করি, সংবিধান দ্বারা এটিকে যে বিস্তৃতি এবং রূপ দেওয়া হয়েছে, তা স্পষ্টভাবে প্রয়োজনীয় হিসেবে দেখানো হয়েছে। আমি কেবল তাদের জন্য একটি অতিরিক্ত চিন্তার প্রতিফলন ঘটাতে চাই যারা যুক্তি দেন যে ক্ষমতাটি বাহ্যিক করের মধ্যে সীমাবদ্ধ থাকা উচিত ছিল, যার দ্বারা তারা অন্যান্য দেশ থেকে আমদানি করা পণ্যের ওপর কর বোঝান। সন্দেহ নেই যে এটি সর্বদা রাজস্বের একটি মূল্যবান উৎস হবে; উল্লেখযোগ্য সময়ের জন্য এটি একটি প্রধান উৎস হতে হবে; এই মুহূর্তে এটি একটি অপরিহার্য উৎস। তবে আমরা এই বিষয়ে খুব ভুল ধারণা তৈরি করতে পারি, যদি আমরা আমাদের গণনায় মনে না রাখি যে বিদেশি বাণিজ্য থেকে প্রাপ্ত রাজস্বের পরিমাণ আমদানির পরিমাণ এবং ধরন উভয়ের পরিবর্তনের সাথে পরিবর্তিত হতে হবে; এবং এই পরিবর্তনগুলো জনসংখ্যার অগ্রগতির সাথে সামঞ্জস্যপূর্ণ নয়, যা জনসাধারণের চাহিদার সাধারণ পরিমাপ হতে হবে। যতক্ষণ কৃষিই শ্রমের একমাত্র ক্ষেত্র থাকে, ভোক্তারা বহুগুণ হওয়ায় উৎপাদিত পণ্যের আমদানি বাড়তে হবে। যত তাড়াতাড়ি কৃষির দ্বারা প্রয়োজনীয় নয় এমন হাতগুলোর দ্বারা দেশীয় উৎপাদন শুরু হয়, মানুষের সংখ্যা বাড়ার সাথে সাথে আমদানিকৃত উৎপাদন হ্রাস পাবে। আরও দূরবর্তী পর্যায়ে, আমদানিতে কাঁচামালের একটি উল্লেখযোগ্য অংশ থাকতে পারে, যা রপ্তানির জন্য বস্তুতে পরিণত হবে এবং তাই নিরুৎসাহজনক শুল্ক দ্বারা বোঝাই হওয়ার চেয়ে বরং বাউন্টির (ভর্তুকি) উৎসাহ প্রয়োজন হবে। একটি সরকারি ব্যবস্থা, যা স্থায়িত্বের জন্য তৈরি করা হয়েছে, তার এই বিপ্লবগুলো বিবেচনা করা উচিত এবং নিজেকে সেগুলোর সাথে খাপ খাইয়ে নিতে সক্ষম হওয়া উচিত। কিছু লোক, যারা কর আরোপের ক্ষমতার প্রয়োজনীয়তা অস্বীকার করেননি, তারা সংবিধানের বিরুদ্ধে অত্যন্ত তীব্র আক্রমণ করেছেন, এটি সংজ্ঞায়িত করার ভাষার ওপর ভিত্তি করে। এটি জোরালোভাবে বলা এবং প্রতিধ্বনিত করা হয়েছে যে, "ঋণ পরিশোধ এবং মার্কিন যুক্তরাষ্ট্রের সাধারণ প্রতিরক্ষা ও সাধারণ মঙ্গলের ব্যবস্থা করার জন্য কর, শুল্ক, ইম্পোস্ট এবং আবগারি ধার্য ও সংগ্রহ করার" ক্ষমতা, সাধারণ প্রতিরক্ষা বা সাধারণ মঙ্গলের জন্য প্রয়োজনীয় বলে দাবি করা যেতে পারে এমন প্রতিটি ক্ষমতা প্রয়োগ করার জন্য একটি সীমাহীন কমিশনের সমতুল্য। আপত্তি তোলার জন্য এই লেখকরা কতটা দুর্দশার মধ্যে কাজ করছেন, তার এর চেয়ে শক্তিশালী প্রমাণ আর দেওয়া যেতে পারে না যে তারা এমন একটি অপব্যাখ্যার কাছে মাথা নত করছেন। কংগ্রেসের ক্ষমতাগুলোর অন্য কোনো গণনা বা সংজ্ঞা যদি সংবিধানে পাওয়া না যেত, ঠিক উদ্ধৃত সাধারণ অভিব্যক্তিগুলো ছাড়া, আপত্তির লেখকরা এর জন্য কিছুটা কারণ খুঁজে পেতেন; যদিও সম্ভাব্য সব ক্ষেত্রে আইন প্রণয়নের কর্তৃত্ব বর্ণনা করার এমন একটি বিশ্রী রূপের কারণ খুঁজে পাওয়া কঠিন হতো। সংবাদপত্রের স্বাধীনতা, জুরির দ্বারা বিচার ধ্বংস করার ক্ষমতা, বা এমনকি বংশধরের ধারা বা হস্তান্তরের রূপ নিয়ন্ত্রণ করার ক্ষমতাকে "সাধারণ মঙ্গলের জন্য অর্থ সংগ্রহ" শব্দগুলো দ্বারা খুব অদ্ভুতভাবে প্রকাশ করতে হবে। "কিন্তু আপত্তির কী কারণ থাকতে পারে, যখন এই সাধারণ পদগুলো দ্বারা নির্দেশিত বস্তুগুলোর একটি সুনির্দিষ্ট বিবরণ অবিলম্বে অনুসরণ করে, এবং একটি সেমিকোলনের চেয়ে দীর্ঘ বিরতি দ্বারাও আলাদা করা হয় না? যদি একই দলিলের বিভিন্ন অংশকে এমনভাবে ব্যাখ্যা করতে হয়, যাতে প্রতিটি অংশের অর্থ বোঝা যায় যা এটি বহন করবে, তবে একই বাক্যের একটি অংশকে কি অর্থের অংশীদারিত্ব থেকে সম্পূর্ণভাবে বাদ দেওয়া হবে; এবং আরও সন্দেহজনক এবং অনির্দিষ্ট পদগুলোকে কি তাদের পূর্ণ বিস্তৃতিতে ধরে রাখা হবে, এবং সুস্পষ্ট ও সুনির্দিষ্ট অভিব্যক্তিগুলোকে কোনো তাত্পর্য থেকে বঞ্চিত করা হবে? নির্দিষ্ট ক্ষমতাগুলোর গণনা সন্নিবেশ করার উদ্দেশ্য কী হতে পারে, যদি এগুলো এবং অন্য সব পূর্ববর্তী সাধারণ ক্ষমতার অন্তর্ভুক্ত করার উদ্দেশ্য থাকে? প্রথমে একটি সাধারণ বাক্যাংশ ব্যবহার করা এবং তারপরে নির্দিষ্ট বিবরণ দিয়ে এটি ব্যাখ্যা করা এবং যোগ্যতা অর্জনের চেয়ে স্বাভাবিক বা সাধারণ আর কিছুই নেই। কিন্তু নির্দিষ্ট বিবরণের একটি গণনার ধারণা যা সাধারণ অর্থকে ব্যাখ্যা বা যোগ্যতা অর্জন করে না, এবং বিভ্রান্ত ও ভুল পথে চালিত করা ছাড়া অন্য কোনো প্রভাব ফেলতে পারে না, তা একটি অযৌক্তিকতা, যা, যেহেতু আমরা আপত্তির লেখকদের বা সংবিধানের লেখকদের ওপর অভিযোগ তোলার উভয় সংকটে পড়েছি, আমাদের অনুমান করার স্বাধীনতা নিতে হবে যে এটি শেষোক্তদের সাথে উদ্ভূত হয়নি। এখানকার আপত্তিটি আরও অসাধারণ, কারণ এটি মনে হয় যে কনভেনশন দ্বারা ব্যবহৃত ভাষাটি কনফেডারেশনের আর্টিকেলস থেকে নেওয়া একটি অনুলিপি। রাজ্যগুলোর মধ্যে ইউনিয়নের উদ্দেশ্যগুলো, যেমনটি তৃতীয় অনুচ্ছেদে বর্ণিত হয়েছে, হলো "তাদের সাধারণ প্রতিরক্ষা, তাদের স্বাধীনতার নিরাপত্তা এবং পারস্পরিক ও সাধারণ মঙ্গল।" অষ্টম অনুচ্ছেদের পদগুলো আরও বেশি অভিন্ন: "সাধারণ প্রতিরক্ষা বা সাধারণ মঙ্গলের জন্য ব্যয় করা হবে এবং কংগ্রেসের মার্কিন যুক্তরাষ্ট্র দ্বারা অনুমোদিত সমস্ত যুদ্ধের ব্যয় এবং অন্যান্য সমস্ত ব্যয় একটি সাধারণ কোষাগার থেকে মেটানো হবে," ইত্যাদি। নবম অনুচ্ছেদে আবার অনুরূপ একটি ভাষা দেখা যায়। নতুন সংবিধানের ওপর স্থাপিত নির্মাণকে ন্যায়সঙ্গত করবে এমন নিয়মগুলোর দ্বারা এই অনুচ্ছেদগুলোর যেকোনো একটিকে বোঝান, এবং সেগুলো বিদ্যমান কংগ্রেসে সম্ভাব্য সব ক্ষেত্রে আইন প্রণয়নের ক্ষমতা অর্পণ করে।''
''কিন্তু সেই সমাবেশ সম্পর্কে কী ভাবা হতো, যদি, এই সাধারণ অভিব্যক্তিগুলোর সাথে নিজেদের যুক্ত করে এবং যে সুনির্দিষ্ট বিবরণগুলো তাদের আমদানি নিশ্চিত করে এবং সীমাবদ্ধ করে সেগুলোকে অবজ্ঞা করে, তারা সাধারণ প্রতিরক্ষা এবং সাধারণ মঙ্গলের জন্য একটি সীমাহীন ক্ষমতা প্রয়োগ করত? আমি আপত্তিকারীদের নিজেদের কাছেই আবেদন করছি, তারা কি সে ক্ষেত্রে কংগ্রেসের সমর্থনে একই যুক্তি প্রয়োগ করত যা তারা এখন কনভেনশনের বিরুদ্ধে ব্যবহার করছে। ভুলের জন্য নিজের নিন্দা থেকে পালানো কতটা কঠিন!''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি প্রস্তাবিত [[../../Constitution/|সংবিধানের]] নির্দিষ্ট কাঠামো সম্পর্কে একটি দীর্ঘ আলোচনার সূচনা করে, যা সিরিজের বাকি অংশ জুড়ে চলে। এই প্রবন্ধের বিষয়টি ফেডারালিস্ট নং ৪২-এ অব্যাহত রয়েছে।
==ফেডারালিস্ট নং ৪২==
ফেডারালিস্ট নং ৪২-এর শিরোনাম হলো ''"সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর অধিকতর পর্যালোচনা"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''সাধারণ সরকারের কাছে ন্যস্ত ক্ষমতার দ্বিতীয় শ্রেণিতে রয়েছে বিদেশি রাষ্ট্রগুলোর সাথে সম্পর্ক নিয়ন্ত্রণের ক্ষমতাগুলো, যেমন: চুক্তি সম্পাদন করা; রাষ্ট্রদূত, অন্যান্য জনমন্ত্রী এবং কনসাল পাঠানো ও গ্রহণ করা; গভীর সমুদ্রে সংঘটিত জলদস্যুতা ও গুরুতর অপরাধ (ফেলোনি) এবং আন্তর্জাতিক আইনের বিরুদ্ধে অপরাধগুলো সংজ্ঞায়িত ও শাস্তি প্রদান করা; বৈদেশিক বাণিজ্য নিয়ন্ত্রণ করা, যার মধ্যে রয়েছে ১৮০৮ সালের পর দাস আমদানি নিষিদ্ধ করার ক্ষমতা এবং এই ধরনের আমদানি নিরুৎসাহিত করার জন্য মাথাপিছু দশ ডলারের একটি মধ্যবর্তী শুল্ক আরোপ করা। ক্ষমতার এই শ্রেণিটি ফেডারেল প্রশাসনের একটি সুস্পষ্ট এবং অপরিহার্য শাখা গঠন করে। যদি আমাদের কোনো দিক থেকে এক জাতি হতে হয়, তবে তা স্পষ্টভাবে অন্যান্য জাতির সাপেক্ষে হওয়া উচিত। চুক্তি সম্পাদন করা এবং রাষ্ট্রদূত পাঠানো ও গ্রহণ করার ক্ষমতাগুলো নিজেদের যৌক্তিকতার কথা নিজেই বলে। এই দুটির অন্তর্ভুক্তিই কনফেডারেশনের অনুচ্ছেদে রয়েছে, পার্থক্য কেবল এই যে, প্রথমটি কনভেনশনের পরিকল্পনা অনুযায়ী এমন একটি ব্যতিক্রম থেকে মুক্ত হয়েছে, যার অধীনে রাজ্যগুলোর নিয়মনীতির দ্বারা চুক্তিগুলো মূলত ব্যর্থ হতে পারত; এবং রাষ্ট্রদূতদের সংক্রান্ত পূর্ববর্তী বিধানটিতে "অন্যান্য জনমন্ত্রী এবং কনসাল" নিয়োগ ও গ্রহণ করার ক্ষমতাটি স্পষ্টভাবে এবং অত্যন্ত যথাযথভাবে যুক্ত করা হয়েছে। রাষ্ট্রদূত শব্দটি, যদি কঠোরভাবে গ্রহণ করা হয়, যেমনটি কনফেডারেশনের অনুচ্ছেদগুলোর দ্বিতীয়টিতে প্রয়োজন বলে মনে হয়, তবে এটি কেবল সর্বোচ্চ স্তরের জনমন্ত্রীদের বোঝায়, এবং সেই স্তরগুলোকে বাদ দেয় যা মার্কিন যুক্তরাষ্ট্র সবচেয়ে বেশি পছন্দ করতে পারে, যেখানে বিদেশি দূতাবাসের প্রয়োজন হতে পারে। এবং কোনো বিস্তৃত ব্যাখ্যার অধীনেও শব্দটি কনসালদের অন্তর্ভুক্ত করবে না। তবুও এটি সুবিধাজনক বলে প্রমাণিত হয়েছে, এবং কংগ্রেসের অনুশীলন ছিল যে, অধস্তন স্তরের জনমন্ত্রীদের নিয়োগ করা এবং কনসাল পাঠানো ও গ্রহণ করা। এটি সত্য যে, যেসব ক্ষেত্রে বাণিজ্যিক চুক্তিগুলো কনসালদের পারস্পরিক নিয়োগের শর্ত দেয়, যাদের কার্যাবলি বাণিজ্যের সাথে যুক্ত, সেখানে বিদেশি কনসালদের স্বীকৃতি বাণিজ্যিক চুক্তি সম্পাদনের ক্ষমতার মধ্যে পড়তে পারে; এবং যেখানে এই ধরনের কোনো চুক্তি বিদ্যমান নেই, সেখানে বিদেশি দেশগুলোতে আমেরিকান কনসাল পাঠানোর বিষয়টি সম্ভবত কনফেডারেশনের নবম অনুচ্ছেদ দ্বারা প্রদত্ত সেই কর্তৃত্বের আওতায় আসতে পারে, যা মার্কিন যুক্তরাষ্ট্রের সাধারণ বিষয়গুলো পরিচালনার জন্য প্রয়োজনীয় সমস্ত বেসামরিক কর্মকর্তা নিয়োগের ক্ষমতা দেয়। কিন্তু যেখানে পূর্ববর্তী কোনো চুক্তিতে শর্ত দেওয়া নেই, সেখানে মার্কিন যুক্তরাষ্ট্রে কনসালদের স্বীকৃতি প্রদানের বিষয়ে কোথাও কোনো বিধান রাখা হয়নি বলে মনে হয়। এই বাদ পড়া বিষয়টি পূরণ করা হলো এমন একটি ছোট উদাহরণ, যেখানে কনভেনশন তাদের পূর্ববর্তী মডেলের চেয়ে উন্নতি সাধন করেছে। কিন্তু সবচেয়ে ক্ষুদ্র বিধানগুলোও তখন গুরুত্বপূর্ণ হয়ে ওঠে যখন সেগুলো ক্ষমতার ধীরে ধীরে এবং অলক্ষিত জবরদখলের প্রয়োজনীয়তা বা অজুহাত দূর করতে প্রবণ হয়। যেসব ক্ষেত্রে কংগ্রেস কনফেডারেশনের ত্রুটিগুলোর দ্বারা বাধ্য হয়ে বা প্রতারিত হয়ে তাদের সনদপ্রাপ্ত ক্ষমতার লঙ্ঘন করেছে, তার একটি তালিকা তাদের বেশ অবাক করবে যারা এই বিষয়ে কোনো মনোযোগ দেননি; এবং এটি নতুন সংবিধানের পক্ষে একটি গুরুত্বপূর্ণ যুক্তি হবে, যা পুরোনোটির আরও সুস্পষ্ট এবং লক্ষণীয় ত্রুটিগুলোর পাশাপাশি ক্ষুদ্র ত্রুটিগুলোর জন্যও সমানভাবে সতর্কতার সাথে বিধান দিয়েছে বলে মনে হয়। গভীর সমুদ্রে সংঘটিত জলদস্যুতা ও গুরুতর অপরাধ এবং আন্তর্জাতিক আইনের বিরুদ্ধে অপরাধগুলোকে সংজ্ঞায়িত এবং শাস্তি দেওয়ার ক্ষমতা সমান যৌক্তিকতার সাথেই সাধারণ সরকারের অন্তর্গত, এবং এটি কনফেডারেশনের অনুচ্ছেদগুলোর ওপর আরও বড় একটি উন্নতি। এই অনুচ্ছেদগুলোতে আন্তর্জাতিক আইনের বিরুদ্ধে অপরাধের ক্ষেত্রে কোনো বিধান নেই; এবং ফলস্বরূপ এটি যেকোনো অবিবেচক সদস্যের ক্ষমতায় ছেড়ে দেয় যেন তারা বিদেশি রাষ্ট্রগুলোর সাথে কনফেডারেসিকে বিবাদে জড়াতে পারে। জলদস্যুতা এবং গুরুতর অপরাধের বিষয়ে ফেডারেল অনুচ্ছেদগুলোর বিধান এই অপরাধগুলোর বিচারের জন্য আদালত প্রতিষ্ঠা ছাড়া আর বেশি দূর এগোয় না। জলদস্যুতার সংজ্ঞা হয়তো কোনো অসুবিধা ছাড়াই আন্তর্জাতিক আইনের ওপর ছেড়ে দেওয়া যেতে পারত; যদিও বেশিরভাগ পৌর বিধিতে এর একটি আইনি সংজ্ঞা পাওয়া যায়।''
''গভীর সমুদ্রে গুরুতর অপরাধের (ফেলোনি) একটি সংজ্ঞা স্পষ্টতই প্রয়োজনীয়। ফেলোনি এমন একটি শব্দ যার অর্থ বেশ শিথিল, এমনকি ইংল্যান্ডের সাধারণ আইনেও (কমন ল); এবং সেই রাজ্যের সংবিধিবদ্ধ আইনেও এর নানা তাৎপর্য রয়েছে। কিন্তু সেই বা অন্য কোনো জাতির সাধারণ বা সংবিধিবদ্ধ আইন এই জাতির কার্যধারার জন্য একটি মানদণ্ড হওয়া উচিত নয়, যদি না তা পূর্বে আইনি গ্রহণের মাধ্যমে নিজস্ব করে নেওয়া হয়। বিভিন্ন রাজ্যের বিধিতে সংজ্ঞায়িত শব্দটির অর্থ ততটাই অবাস্তব হবে যতটা পূর্বেরটি একটি অসম্মানজনক এবং অবৈধ নির্দেশক হতো। এটি যেকোনো দুটি রাজ্যে হুবহু এক নয়; এবং প্রতিটি রাজ্যের ফৌজদারি আইনের প্রতিটি সংশোধনের সাথে পরিবর্তিত হয়। তাই নিশ্চিততা এবং অভিন্নতার খাতিরে, এই ক্ষেত্রে গুরুতর অপরাধ সংজ্ঞায়িত করার ক্ষমতা প্রতিটি দিক থেকেই প্রয়োজনীয় এবং যথাযথ ছিল।''
''বৈদেশিক বাণিজ্যের নিয়ন্ত্রণ, এই বিষয়ের ওপর নেওয়া বিভিন্ন দৃষ্টিভঙ্গির আওতায় পড়ায়, এটি ফেডারেল প্রশাসনের কাছে যথাযথভাবে অর্পিত হওয়ার অতিরিক্ত প্রমাণের প্রয়োজন নেই, এটি ইতিমধ্যেই যথেষ্ট বিস্তারিতভাবে আলোচনা করা হয়েছে। নিসন্দেহে এটি কাম্য ছিল যে দাস আমদানি নিষিদ্ধ করার ক্ষমতাটি ১৮০৮ সাল পর্যন্ত স্থগিত না করে অবিলম্বে কার্যকর করার সুযোগ দেওয়া হতো। তবে সাধারণ সরকারের ওপর এই বিধিনিষেধ বা পুরো ধারাটি যেভাবে প্রকাশ করা হয়েছে, তার কারণ ব্যাখ্যা করা কঠিন নয়। মানবতার পক্ষে এটি একটি বড় অর্জন হিসেবে বিবেচনা করা উচিত যে, বিশ বছরের একটি সময়কাল এই রাজ্যগুলোর মধ্যে চিরতরে এমন একটি ব্যবসাকে শেষ করে দিতে পারে, যা এত দীর্ঘ সময় ধরে এবং এত জোরালোভাবে আধুনিক নীতির বর্বরতাকে তিরস্কার করেছে; যে, সেই সময়ের মধ্যে এটি ফেডারেল সরকারের কাছ থেকে যথেষ্ট নিরুৎসাহ পাবে, এবং ইউনিয়নের এত বিশাল সংখ্যাগরিষ্ঠতার দ্বারা দেওয়া নিষেধাজ্ঞামূলক উদাহরণের মাধ্যমে যে কয়েকটি রাজ্য এই অস্বাভাবিক ব্যবসা চালিয়ে যাচ্ছে তাদের সম্মতিতে এটি পুরোপুরি বাতিল করা যেতে পারে। হতভাগ্য আফ্রিকানদের জন্য এটি আনন্দের হতো, যদি তাদের ইউরোপীয় ভাইদের অত্যাচার থেকে মুক্তি পাওয়ার সমান সম্ভাবনা তাদের সামনে থাকত!''
''এই ধারাটিকে বিকৃত করে সংবিধানের বিরুদ্ধে একটি আপত্তি হিসেবে তুলে ধরার চেষ্টা করা হয়েছে, একে একদিক থেকে একটি অবৈধ প্রথার অপরাধমূলক সহ্যশীলতা হিসেবে উপস্থাপন করে, এবং অন্যদিক থেকে ইউরোপ থেকে আমেরিকায় স্বেচ্ছায় এবং উপকারী অভিবাসন রোধ করার উদ্দেশ্যে রচিত বলে বর্ণনা করে। আমি এই ভুল ব্যাখ্যাগুলো উল্লেখ করছি এই উদ্দেশ্যে নয় যে এগুলোর কোনো উত্তর দেব, কারণ এরা এর যোগ্য নয়, বরং প্রস্তাবিত সরকারের বিরুদ্ধে তাদের বিরোধিতা পরিচালনার জন্য কেউ কেউ যে ধরন এবং মনোভাব উপযুক্ত বলে মনে করেছেন, তার নমুনা হিসেবে। তৃতীয় শ্রেণির অন্তর্ভুক্ত ক্ষমতাগুলো হলো সেগুলো, যা অঙ্গরাজ্যগুলোর মধ্যে সম্প্রীতি এবং সঠিক সম্পর্ক বজায় রাখার বিধান দেয়। এই শিরোনামের অধীনে রাজ্যগুলোর কর্তৃত্বের ওপর আরোপিত নির্দিষ্ট বিধিনিষেধ এবং বিচার বিভাগের কিছু ক্ষমতা অন্তর্ভুক্ত করা যেতে পারে; তবে প্রথমটি একটি স্বতন্ত্র শ্রেণির জন্য সংরক্ষিত রাখা হয়েছে, এবং দ্বিতীয়টি আমরা যখন সরকারের কাঠামো এবং সংগঠনে পৌঁছাব তখন বিশেষভাবে পরীক্ষা করা হবে। আমি নিজেকে এই তৃতীয় বর্ণনার আওতাভুক্ত অবশিষ্ট ক্ষমতাগুলোর একটি সারসংক্ষেপ পর্যালোচনার মধ্যে সীমাবদ্ধ রাখব, যেমন: বিভিন্ন রাজ্য এবং ভারতীয় উপজাতিগুলোর মধ্যে বাণিজ্য নিয়ন্ত্রণ করা; মুদ্রা তৈরি করা, তার এবং বিদেশি মুদ্রার মান নিয়ন্ত্রণ করা; মার্কিন যুক্তরাষ্ট্রের প্রচলিত মুদ্রা এবং সিকিউরিটিজ জাল করার শাস্তি বিধান করা; ওজন ও পরিমাপের মান নির্ধারণ করা; নাগরিকত্ব লাভের (ন্যাচারালাইজেশন) এবং দেউলিয়াত্বের জন্য অভিন্ন নিয়ম প্রতিষ্ঠা করা; প্রতিটি রাজ্যের সরকারি কাজ, রেকর্ড এবং বিচারিক কার্যধারা কীভাবে প্রমাণিত হবে এবং অন্যান্য রাজ্যে সেগুলোর কী প্রভাব থাকবে তা নির্ধারণ করা; এবং পোস্ট অফিস ও পোস্ট রাস্তা স্থাপন করা। এর বিভিন্ন সদস্যের মধ্যে বাণিজ্য নিয়ন্ত্রণ করার জন্য বিদ্যমান কনফেডারেসিতে ক্ষমতার অভাব হলো সেসব অভাবের মধ্যে অন্যতম যা অভিজ্ঞতার দ্বারা স্পষ্টভাবে নির্দেশিত হয়েছে। এই বিষয়ে পূর্ববর্তী প্রবন্ধগুলো যে প্রমাণ ও মন্তব্যগুলো তুলে ধরেছে, তার সাথে এটি যোগ করা যেতে পারে যে এই পরিপূরক বিধানটি ছাড়া বৈদেশিক বাণিজ্য নিয়ন্ত্রণের মহান এবং অপরিহার্য ক্ষমতাটি অসম্পূর্ণ এবং অকার্যকর হতো। এই ক্ষমতার একটি অত্যন্ত গুরুত্বপূর্ণ লক্ষ্য ছিল যে রাজ্যগুলো অন্য রাজ্যগুলোর মাধ্যমে আমদানি ও রপ্তানি করে, তাদের ওপর শেষোক্তদের দ্বারা আরোপিত অন্যায্য অবদান থেকে মুক্তি দেওয়া। যদি এরা রাজ্য এবং রাজ্যের মধ্যে বাণিজ্য নিয়ন্ত্রণ করতে স্বাধীন হতো, তবে এটা আগে থেকেই বোঝা যেত যে আমদানি ও রপ্তানি করা পণ্যগুলোর ওপর তাদের এক্তিয়ারের মধ্য দিয়ে যাওয়ার সময় এমন শুল্ক আরোপ করার উপায় খুঁজে বের করা হতো, যা শেষোক্তের প্রস্তুতকারক এবং প্রথমটির গ্রাহকদের ওপর পড়ত। অতীত অভিজ্ঞতার দ্বারা আমরা নিশ্চিত হতে পারি যে, ভবিষ্যতের কৌশলগুলোর মাধ্যমে এমন একটি প্রথা চালু করা হবে; এবং সেই সাথে মানুষের বিষয়াদি সম্পর্কে সাধারণ জ্ঞানের দ্বারা, এটি নিরবচ্ছিন্ন শত্রুতাকে পুষ্ট করবে, এবং খুব সম্ভবত জনশান্তির মারাত্মক বিঘ্ন ঘটিয়ে শেষ হবে। যারা আবেগ বা স্বার্থের মাধ্যমে প্রশ্নটি দেখেন না, তাদের কাছে বাণিজ্যিক রাজ্যগুলোর তাদের অবাণিজ্যিক প্রতিবেশীদের কাছ থেকে যেকোনো রূপে একটি পরোক্ষ রাজস্ব সংগ্রহের ইচ্ছা যতটা অনুচিত ঠিক ততটাই অন্যায্য বলে মনে হবে; কারণ এটি ক্ষতিগ্রস্ত পক্ষকে, ক্ষোভ এবং স্বার্থ উভয়ের দ্বারাই, তাদের বৈদেশিক বাণিজ্যের জন্য কম সুবিধাজনক চ্যানেলগুলোর আশ্রয় নিতে উদ্দীপিত করবে। কিন্তু একটি বর্ধিত এবং স্থায়ী স্বার্থের পক্ষে যুক্তি দেওয়া যুক্তির মৃদু কণ্ঠস্বর প্রায়শই জনসভা এবং ব্যক্তিদের সামনে অবিলম্বে এবং অপরিমিত লাভের জন্য অধৈর্য লোভের চিৎকারে ডুবে যায়। কনফেডারেটেড রাজ্যগুলোর পারস্পরিক বাণিজ্যের ওপর একটি তদারকিকারী কর্তৃপক্ষের প্রয়োজনীয়তা আমাদের নিজস্ব উদাহরণের পাশাপাশি অন্যান্য উদাহরণ দ্বারাও চিত্রিত হয়েছে। সুইজারল্যান্ডে, যেখানে ইউনিয়ন খুব দুর্বল, প্রতিটি ক্যান্টন টোল না বাড়িয়ে তার এক্তিয়ারের মধ্য দিয়ে অন্যান্য ক্যান্টনে পণ্য চলাচলের অনুমতি দিতে বাধ্য। জার্মানিতে এটি সাম্রাজ্যের একটি আইন যে, যুবরাজ এবং রাজ্যগুলো সম্রাট এবং ডায়েটের সম্মতি ছাড়া সেতু, নদী বা পথগুলোতে টোল বা শুল্ক আরোপ করবে না; যদিও পূর্ববর্তী একটি কাগজের উদ্ধৃতি থেকে প্রতীয়মান হয় যে, এই কনফেডারেসির অন্যান্য অনেক উদাহরণের মতো এই ক্ষেত্রেও অনুশীলন আইনকে অনুসরণ করেনি, এবং এখানে যে অনিষ্টগুলোর পূর্বাভাস দেওয়া হয়েছে সেখানেও তা তৈরি করেছে। নেদারল্যান্ডসের ইউনিয়নের তার সদস্যদের ওপর আরোপিত বিধিনিষেধগুলোর মধ্যে একটি হলো যে, তারা সাধারণ অনুমতি ছাড়া তাদের প্রতিবেশীদের জন্য অসুবিধাজনক শুল্ক স্থাপন করবে না। ভারতীয় উপজাতিদের সাথে বাণিজ্যের নিয়ন্ত্রণটি অত্যন্ত যথাযথভাবে কনফেডারেশনের অনুচ্ছেদগুলোর দুটি সীমাবদ্ধতা থেকে মুক্ত করা হয়েছে, যা বিধানটিকে অস্পষ্ট এবং পরস্পরবিরোধী করে তোলে। সেখানে ক্ষমতাটি কেবল সেই ভারতীয়দের মধ্যেই সীমাবদ্ধ যারা কোনো রাজ্যের সদস্য নয়, এবং এটি তার নিজস্ব সীমার মধ্যে কোনো রাজ্যের আইনি অধিকার লঙ্ঘন বা ক্ষুণ্ন করতে পারবে না। কোন ধরনের ভারতীয়দের একটি রাজ্যের সদস্য হিসেবে গণ্য করা হবে, তা এখনো নিষ্পত্তি হয়নি, এবং এটি ফেডারেল কাউন্সিলগুলোতে প্রায়শই বিভ্রান্তি এবং বিতর্কের প্রশ্ন হয়ে দাঁড়িয়েছে। এবং কীভাবে ভারতীয়দের সাথে বাণিজ্য, যদিও তারা কোনো রাজ্যের সদস্য নয়, তবুও তার আইনি এক্তিয়ারের মধ্যে বসবাস করে, অভ্যন্তরীণ আইন প্রণয়নের অধিকারে অনুপ্রবেশ না করে একটি বাহ্যিক কর্তৃপক্ষের দ্বারা নিয়ন্ত্রিত হতে পারে, তা একেবারেই বোধগম্য নয়। কনফেডারেশনের অনুচ্ছেদগুলো যে অবিবেচকের মতো অসম্ভবকে অর্জন করার চেষ্টা করেছে, এটিই তার একমাত্র উদাহরণ নয়; ইউনিয়নে আংশিক সার্বভৌমত্বকে রাজ্যগুলোতে সম্পূর্ণ সার্বভৌমত্বের সাথে মেলানোর চেষ্টা; একটি অংশ কেড়ে নিয়ে এবং পুরোটা রেখে দিয়ে একটি গাণিতিক স্বতঃসিদ্ধকে ধ্বংস করার চেষ্টা। মুদ্রা তৈরি করা, তার মান এবং বিদেশি মুদ্রার মান নিয়ন্ত্রণ করার ক্ষমতা সম্পর্কে এটুকুই মন্তব্য করা দরকার যে, এই শেষোক্ত ক্ষেত্রে বিধান করে, সংবিধান কনফেডারেশনের অনুচ্ছেদে একটি বড় বাদ পড়া বিষয় পূরণ করেছে। বিদ্যমান কংগ্রেসের কর্তৃত্ব কেবল তাদের নিজস্ব বা নিজ নিজ রাজ্যগুলোর কর্তৃত্ব দ্বারা 'তৈরি' মুদ্রার নিয়ন্ত্রণের মধ্যেই সীমাবদ্ধ। এটি এক নজরেই দেখা যায় যে, বর্তমান মুদ্রার মানে প্রস্তাবিত অভিন্নতা বিদেশি মুদ্রাকে বিভিন্ন রাজ্যের বিভিন্ন নিয়মের অধীন করে ধ্বংস করা যেতে পারে। সরকারি সিকিউরিটিজ এবং প্রচলিত মুদ্রা জাল করার শাস্তি অবশ্যই সেই কর্তৃপক্ষের কাছে হস্তান্তর করা হয়েছে যা উভয়ের মান সুরক্ষিত করবে। ওজন এবং পরিমাপের নিয়ন্ত্রণ কনফেডারেশনের অনুচ্ছেদ থেকে স্থানান্তরিত হয়েছে এবং মুদ্রা নিয়ন্ত্রণের পূর্ববর্তী ক্ষমতার মতো একই বিবেচনার ওপর প্রতিষ্ঠিত।''
''নাগরিকত্ব লাভের (ন্যাচারালাইজেশন) নিয়মে বৈসাদৃশ্য দীর্ঘদিন ধরে আমাদের ব্যবস্থায় একটি ত্রুটি হিসেবে এবং জটিল ও সূক্ষ্ম প্রশ্নের ভিত্তি স্থাপনকারী হিসেবে চিহ্নিত হয়ে আসছে। কনফেডারেশনের চতুর্থ অনুচ্ছেদে ঘোষণা করা হয়েছে "যে এই প্রতিটি রাজ্যের মুক্ত অধিবাসীরা, দরিদ্র, ভবঘুরে এবং বিচার থেকে পলাতক ব্যক্তিরা ব্যতীত, বিভিন্ন রাজ্যে মুক্ত নাগরিকদের সমস্ত সুযোগ-সুবিধা এবং অনাক্রম্যতার অধিকারী হবে; এবং প্রতিটি রাজ্যের জনগণ, প্রতিটি অন্য রাজ্যে, ব্যবসা এবং বাণিজ্যের সমস্ত সুযোগ-সুবিধা উপভোগ করবে," ইত্যাদি। এখানে ভাষার একটি লক্ষণীয় বিভ্রান্তি রয়েছে। অনুচ্ছেদের এক অংশে কেন মুক্ত অধিবাসী, অন্য অংশে মুক্ত নাগরিক এবং আরেক অংশে জনগণ শব্দগুলো ব্যবহৃত হয়েছে; বা "মুক্ত নাগরিকদের সমস্ত সুযোগ-সুবিধা এবং অনাক্রম্যতার" সাথে "ব্যবসা এবং বাণিজ্যের সমস্ত সুযোগ-সুবিধা" যোগ করার অর্থ কী ছিল, তা সহজে নির্ধারণ করা যায় না। তবে এটি প্রায় অনিবার্য একটি ব্যাখ্যা বলে মনে হয় যে, যারা একটি রাজ্যের মুক্ত অধিবাসী হিসেবে আসে, যদিও তারা সেই রাজ্যের নাগরিক নয়, তারা অন্য প্রতিটি রাজ্যে শেষোক্তটির মুক্ত নাগরিকদের সমস্ত সুযোগ-সুবিধার অধিকারী; অর্থাৎ, তারা তাদের নিজস্ব রাজ্যে যে সুযোগ-সুবিধা পাওয়ার অধিকারী তার চেয়ে বেশি সুযোগ-সুবিধা পাওয়ার অধিকারী: তাই এটি একটি নির্দিষ্ট রাজ্যের ক্ষমতার মধ্যে থাকতে পারে, বা বরং প্রতিটি রাজ্য এমন একটি প্রয়োজনীয়তার মধ্যে পড়ে, যে এটি কেবল তার নিজের মধ্যে যাদের নাগরিকত্বের অধিকার দিতে পারে তাদেরকেই নয়, বরং এর এক্তিয়ারের মধ্যে যাদের অধিবাসী হতে অনুমতি দিতে পারে তাদের সবাইকেই অন্য রাজ্যে নাগরিকত্বের অধিকার প্রদান করে। কিন্তু যদি "অধিবাসী" শব্দটির এমন একটি ব্যাখ্যা স্বীকার করা হয় যা নির্দিষ্ট সুযোগ-সুবিধাগুলোকে কেবল নাগরিকদের মধ্যেই সীমাবদ্ধ রাখবে, তবে অসুবিধাটি কেবল হ্রাস পায়, দূর হয় না। প্রতিটি রাজ্যের দ্বারা অন্য প্রতিটি রাজ্যে বিদেশিদের নাগরিকত্ব দেওয়ার অত্যন্ত অনুচিত ক্ষমতাটি তখনও বজায় থাকবে। এক রাজ্যে, স্বল্প সময়ের জন্য বসবাস নাগরিকত্বের সমস্ত অধিকার নিশ্চিত করে: অন্যটিতে, আরও বেশি গুরুত্বের যোগ্যতা প্রয়োজন হয়। তাই একজন বিদেশি, যিনি আইনত শেষোক্ত রাজ্যে নির্দিষ্ট অধিকারের জন্য অক্ষম, তিনি কেবল প্রথমোক্ত রাজ্যে পূর্ববর্তী বসবাসের মাধ্যমে তার অক্ষমতা এড়াতে পারেন; এবং এইভাবে এক রাজ্যের আইন অন্যটির এক্তিয়ারের মধ্যে অন্যটির আইনের চেয়ে অযৌক্তিকভাবে সর্বোচ্চ হয়ে ওঠে। এটা নিছকই সৌভাগ্য যে এই বিষয়ে খুব গুরুতর জটিলতাগুলো এযাবৎকাল এড়ানো গেছে। বেশ কয়েকটি রাজ্যের আইন দ্বারা, নির্দিষ্ট বর্ণনার বিদেশিদের, যারা নিজেদের আপত্তিকর করে তুলেছিল, তাদের ওপর এমন নিষেধাজ্ঞা আরোপ করা হয়েছিল যা কেবল নাগরিকত্বের অধিকারের সাথেই নয় বরং বসবাসের সুবিধার সাথেও অসঙ্গতিপূর্ণ। পরিণতি কী হতো, যদি এমন ব্যক্তিরা বসবাস বা অন্য কোনোভাবে অন্য রাজ্যের আইনের অধীনে নাগরিকের চরিত্র অর্জন করত এবং তারপর তাদের নিষিদ্ধ করা রাজ্যের মধ্যে বসবাস এবং নাগরিকত্ব উভয় ক্ষেত্রেই তাদের অধিকার দাবি করত? আইনি পরিণতি যাই হোক না কেন, সম্ভবত অন্যান্য পরিণতিও ঘটত, যা এতটা গুরুতর প্রকৃতির যে এর বিরুদ্ধে ব্যবস্থা গ্রহণ না করে পারা যায় না। সেই অনুযায়ী নতুন সংবিধানটি মার্কিন যুক্তরাষ্ট্র জুড়ে নাগরিকত্ব লাভের একটি অভিন্ন নিয়ম প্রতিষ্ঠা করার জন্য সাধারণ সরকারকে অনুমোদন দিয়ে এর বিরুদ্ধে এবং এই বিষয়ে কনফেডারেশনের ত্রুটি থেকে উদ্ভূত অন্যান্য সমস্ত সমস্যার বিরুদ্ধে অত্যন্ত যৌক্তিকভাবে বিধান করেছে। দেউলিয়াত্বের অভিন্ন আইন প্রতিষ্ঠা করার ক্ষমতা বাণিজ্যের নিয়ন্ত্রণের সাথে এত ঘনিষ্ঠভাবে যুক্ত এবং এটি এত বেশি জালিয়াতি প্রতিরোধ করবে যেখানে পক্ষগুলো বা তাদের সম্পত্তি বিভিন্ন রাজ্যে থাকতে পারে বা সরানো যেতে পারে যে, এর উপযোগিতা নিয়ে প্রশ্ন ওঠার সম্ভাবনা নেই। সাধারণ আইনের দ্বারা প্রতিটি রাজ্যের সরকারি কাজ, রেকর্ড এবং বিচারিক কার্যধারা কীভাবে প্রমাণিত হবে এবং অন্যান্য রাজ্যে সেগুলোর কী প্রভাব থাকবে তা নির্ধারণ করার ক্ষমতা কনফেডারেশনের অনুচ্ছেদে এই বিষয়ক ধারার ওপর একটি সুস্পষ্ট এবং মূল্যবান উন্নতি। শেষোক্তটির অর্থ অত্যন্ত অনির্দিষ্ট, এবং এটি যে কোনো ব্যাখ্যাই বহন করুক না কেন এর খুব কমই গুরুত্ব থাকতে পারে। এখানে প্রতিষ্ঠিত ক্ষমতাটি ন্যায়বিচারের একটি অত্যন্ত সুবিধাজনক হাতিয়ার হিসেবে পরিণত হতে পারে, এবং এটি সন্নিহিত রাজ্যগুলোর সীমান্তে বিশেষভাবে উপকারী হতে পারে, যেখানে ন্যায়বিচারের আওতাধীন বিষয়গুলো প্রক্রিয়ার যেকোনো পর্যায়ে হঠাৎ এবং গোপনে একটি বিদেশি এক্তিয়ারের মধ্যে স্থানান্তরিত হতে পারে। পোস্ট রাস্তা স্থাপন করার ক্ষমতা প্রতিটি দৃষ্টিকোণ থেকে একটি ক্ষতিকারকহীন ক্ষমতা হতে হবে, এবং এটি হয়তো বুদ্ধিমান পরিচালনার মাধ্যমে জনসাধারণের জন্য বড় সুবিধার একটি উত্পাদনশীল মাধ্যমে পরিণত হতে পারে।''
''অঙ্গরাজ্যগুলোর মধ্যে যোগাযোগ সহজতর করার প্রবণতা রাখে এমন কোনো কিছুই জনগণের মনোযোগের অযোগ্য বলে বিবেচিত হতে পারে না।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি ফেডারালিস্ট নং ৪১-এ শুরু হওয়া একটি থিম বা বিষয়েরই ধারাবাহিকতা। এখানে, ম্যাডিসন দাবি করেছেন যে, ফেডারেল সরকারকে নির্দিষ্ট ক্ষমতা প্রদান করা বাস্তবে অঙ্গরাজ্যগুলোর সাপেক্ষে ফেডারেল সরকারের কাজ করার ক্ষমতাকে সীমাবদ্ধ করতে কাজ করে।
ফেডারালিস্ট নং ৪১-এ ম্যাডিসন ফেডারেল সরকারকে প্রদত্ত ক্ষমতার ছয়টি শ্রেণি বর্ণনা করেছিলেন:
১. বিদেশি বিপদের বিরুদ্ধে নিরাপত্তা;
২. বিদেশি রাষ্ট্রগুলোর সাথে সম্পর্কের নিয়ন্ত্রণ;
৩. অঙ্গরাজ্যগুলোর মধ্যে সম্প্রীতি এবং সঠিক সম্পর্ক বজায় রাখা;
৪. সাধারণ উপযোগিতার কিছু বিবিধ উদ্দেশ্য;
৫. কিছু ক্ষতিকারক কাজ থেকে অঙ্গরাজ্যগুলোকে নিবৃত্ত রাখা;
৬. এই সমস্ত ক্ষমতাগুলোকে যথাযথ কার্যকারিতা দেওয়ার বিধান।
ফেডারালিস্ট নং ৪২-এ ম্যাডিসন দুই এবং তিন নম্বর শ্রেণিতে ফিরে এসেছেন।
মার্কিন যুক্তরাষ্ট্রের সুপ্রিম কোর্ট, যা [[../../সংবিধান/|সংবিধান]] প্রণেতাদের মূল উদ্দেশ্য নির্দেশকারী উৎস হিসেবে ফেডারালিস্ট পেপারগুলোকে প্রায়শই উদ্ধৃত করেছে, তারা এই সংগ্রহের অন্য যেকোনো রচনার চেয়ে ফেডারালিস্ট নং ৪২-কে সবচেয়ে বেশিবার উদ্ধৃত করেছে।
==ফেডারালিস্ট নং ৪৩==
ফেডারালিস্ট নং ৪৩-এর শিরোনাম হলো ''"একই বিষয়ের ধারাবাহিকতা: সংবিধান দ্বারা প্রদত্ত ক্ষমতাগুলোর আরও পর্যালোচনা"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''চতুর্থ শ্রেণিতে নিম্নলিখিত বিবিধ ক্ষমতাগুলো অন্তর্ভুক্ত রয়েছে: ১. "একটি নির্দিষ্ট সময়ের জন্য লেখক এবং উদ্ভাবকদের তাদের নিজ নিজ লেখা এবং আবিষ্কারের ওপর একচেটিয়া অধিকার নিশ্চিত করার মাধ্যমে বিজ্ঞান এবং দরকারী শিল্পকলার অগ্রগতি প্রচার করার" ক্ষমতা। এই ক্ষমতার উপযোগিতা নিয়ে খুব কমই প্রশ্ন উঠবে। গ্রেট ব্রিটেনে লেখকদের কপিরাইটকে সাধারণ আইনের (কমন ল) অধিকার হিসেবে আনুষ্ঠানিকভাবে রায় দেওয়া হয়েছে। কার্যকর আবিষ্কারগুলোর অধিকারও সমান যুক্তিতে উদ্ভাবকদের অন্তর্গত বলে মনে হয়।''
''উভয় ক্ষেত্রেই জনগণের কল্যাণ ব্যক্তিদের দাবির সাথে পুরোপুরি মিলে যায়। অঙ্গরাজ্যগুলো আলাদাভাবে কোনো ক্ষেত্রেই কার্যকর বিধান তৈরি করতে পারে না, এবং তাদের বেশিরভাগই কংগ্রেসের দৃষ্টান্ত অনুযায়ী পাস করা আইনের মাধ্যমে এই বিষয়ের সিদ্ধান্ত আগে থেকেই অনুমান করে নিয়েছে। ২. "যে জেলাটি (দশ মাইল বর্গক্ষেত্রের বেশি নয়) নির্দিষ্ট রাজ্যগুলোর সমর্পণ এবং কংগ্রেসের গ্রহণের দ্বারা মার্কিন যুক্তরাষ্ট্রের সরকারের আসন হয়ে উঠতে পারে, তার ওপর সমস্ত ক্ষেত্রে একচেটিয়া আইন প্রণয়ন করা; এবং যেসব রাজ্যে দুর্গ, ম্যাগাজিন, অস্ত্রাগার, ডকইয়ার্ড এবং অন্যান্য প্রয়োজনীয় ভবন নির্মাণের জন্য রাজ্যের আইনসভার সম্মতিতে ক্রয় করা সমস্ত স্থানের ওপর একই কর্তৃত্ব প্রয়োগ করা।" সরকারের আসনে সম্পূর্ণ কর্তৃত্বের অপরিহার্য প্রয়োজনীয়তা নিজেই এর প্রমাণ বহন করে। এটি ইউনিয়নের প্রতিটি আইনসভা, আমি বলতে পারি বিশ্বের, এর সাধারণ আধিপত্যের গুণে প্রয়োগ করা একটি ক্ষমতা। এটি ছাড়া, কেবল যে জনসাধারণের কর্তৃত্বকেই অপমানিত করা হতে পারে এবং বিনা শাস্তিতে এর কার্যক্রম ব্যাহত করা যেতে পারে তা-ই নয়; বরং সরকারের আসনভুক্ত রাজ্যের ওপর সাধারণ সরকারের সদস্যদের তাদের দায়িত্ব পালনে সুরক্ষার জন্য নির্ভরশীলতা, জাতীয় পরিষদের ওপর ভীতি বা প্রভাবের অভিযোগ আনতে পারে, যা সরকারের জন্য সমানভাবে অসম্মানজনক এবং কনফেডারেন্সির অন্যান্য সদস্যদের জন্য অসন্তোষজনক। এই বিবেচনার আরও বেশি ওজন রয়েছে, কারণ সরকারের স্থায়ী বাসস্থানে জনসাধারণের উন্নতির ধীরে ধীরে সঞ্চয় একটি একক রাজ্যের হাতে ছেড়ে দেওয়ার জন্য অত্যধিক বড় একটি জনসাধারণের প্রতিশ্রুতি হবে, এবং সরকারের স্থানান্তরের ক্ষেত্রে এত বেশি বাধা সৃষ্টি করবে, যা এর প্রয়োজনীয় স্বাধীনতাকে আরও ক্ষুণ্ন করবে। বিপরীত প্রকৃতির যেকোনো ঈর্ষা মেটানোর জন্য এই ফেডারেল জেলার পরিধি যথেষ্ট সীমাবদ্ধ। এবং যেহেতু এটি সমর্পণকারী রাজ্যের সম্মতিতে এই কাজে ব্যবহার করা হবে; যেহেতু রাজ্যটি নিসন্দেহে চুক্তিতে এর অধিবাসী নাগরিকদের অধিকার এবং সম্মতির জন্য বিধান করবে; যেহেতু অধিবাসীরা সমর্পণের ইচ্ছুক পক্ষ হওয়ার জন্য যথেষ্ট স্বার্থের প্রলোভন খুঁজে পাবে; যেহেতু তাদের ওপর কর্তৃত্ব প্রয়োগকারী সরকার নির্বাচনে তাদের কণ্ঠস্বর থাকবে; যেহেতু স্থানীয় উদ্দেশ্যে তাদের নিজস্ব ভোটাধিকার থেকে উদ্ভূত একটি পৌর আইনসভা অবশ্যই তাদের অনুমোদিত হবে; এবং যেহেতু রাজ্যের আইনসভার এবং এর সমর্পিত অংশের অধিবাসীদের সমর্পণে সম্মত হওয়ার কর্তৃত্ব সংবিধান গ্রহণে রাজ্যের সমগ্র জনগণের কাছ থেকে উদ্ভূত হবে, তাই প্রতিটি কল্পনীয় আপত্তি দূর করা হয়েছে বলে মনে হয়। সাধারণ সরকার কর্তৃক প্রতিষ্ঠিত দুর্গ, ম্যাগাজিন ইত্যাদির ওপর অনুরূপ কর্তৃত্বের প্রয়োজনীয়তাও কম স্পষ্ট নয়। এই ধরনের জায়গাগুলোতে ব্যয় করা জনসাধারণের অর্থ, এবং সেখানে জমা রাখা জনসাধারণের সম্পত্তি, দাবি করে যে সেগুলোকে নির্দিষ্ট রাজ্যের কর্তৃত্ব থেকে অব্যাহতি দেওয়া উচিত। সম্পূর্ণ ইউনিয়নের নিরাপত্তা নির্ভর করতে পারে এমন জায়গাগুলো এর কোনো নির্দিষ্ট সদস্যের ওপর কোনো মাত্রায় নির্ভরশীল হওয়াও সঠিক হবে না। প্রতিটি এমন প্রতিষ্ঠানে সংশ্লিষ্ট রাজ্যগুলোর সম্মতি দাবি করার মাধ্যমে এখানেও সমস্ত আপত্তি এবং দ্বিধা দূর করা হয়েছে। ৩. "রাষ্ট্রদ্রোহের শাস্তি ঘোষণা করা, কিন্তু রাষ্ট্রদ্রোহের কোনো অ্যাটেইন্ডার (অধিকারচ্যুতি) রক্ত বা বাজেয়াপ্তকরণের দুর্নীতি ঘটাবে না, কেবল দণ্ডিত ব্যক্তির জীবদ্দশায় ছাড়া।" যেহেতু মার্কিন যুক্তরাষ্ট্রের বিরুদ্ধে রাষ্ট্রদ্রোহ করা হতে পারে, তাই মার্কিন যুক্তরাষ্ট্রের কর্তৃত্বের এটি শাস্তি দেওয়ার ক্ষমতা থাকা উচিত। তবে যেহেতু নতুন এবং কৃত্রিম রাষ্ট্রদ্রোহগুলো সেই দুর্দান্ত ইঞ্জিন হয়েছে যার মাধ্যমে মুক্ত সরকারের স্বাভাবিক সন্তান সহিংস উপদলগুলো সাধারণত একে অপরের ওপর তাদের বিকল্প বিদ্বেষ প্রকাশ করেছে, তাই কনভেনশন দুর্দান্ত বিচারের সাথে অপরাধের একটি সাংবিধানিক সংজ্ঞা সন্নিবেশ করে, এর প্রমাণের জন্য প্রয়োজনীয় প্রমাণ নির্দিষ্ট করে এবং কংগ্রেসকে, এমনকি এটি শাস্তি দেওয়ার ক্ষেত্রেও, দোষের পরিণতি এর লেখকের ব্যক্তির বাইরে প্রসারিত করতে বাধা দিয়ে এই অদ্ভুত বিপদের বিরুদ্ধে একটি বাধা তৈরি করেছে। ৪. "ইউনিয়নে নতুন রাজ্যগুলো গ্রহণ করা; কিন্তু কোনো নতুন রাজ্য অন্য কোনো রাজ্যের এক্তিয়ারের মধ্যে গঠিত বা নির্মিত হবে না; এবং সংশ্লিষ্ট রাজ্যগুলোর আইনসভাগুলোর পাশাপাশি কংগ্রেসের সম্মতি ছাড়া দুই বা ততোধিক রাজ্য বা রাজ্যের অংশগুলোর মিলনে কোনো রাজ্য গঠিত হবে না।" কনফেডারেশনের অনুচ্ছেদে, এই গুরুত্বপূর্ণ বিষয়ে কোনো বিধান পাওয়া যায় না। মার্কিন যুক্তরাষ্ট্রের পদক্ষেপে যোগ দেওয়ার সময় কানাডাকে অধিকার হিসেবে গ্রহণ করা হওয়ার কথা ছিল; এবং অন্যান্য কলোনিগুলো, যার দ্বারা স্পষ্টতই অন্যান্য ব্রিটিশ কলোনি বোঝানো হয়েছিল, নয়টি রাজ্যের বিবেচনার ভিত্তিতে। নতুন রাজ্যগুলোর চূড়ান্ত প্রতিষ্ঠা সেই দলিলের সংকলকদের দ্বারা উপেক্ষা করা হয়েছে বলে মনে হয়। আমরা এই বর্জনের অসুবিধা দেখেছি, এবং এর দ্বারা কংগ্রেস ক্ষমতার যে অনুমান করতে পরিচালিত হয়েছে তা দেখেছি। তাই নতুন ব্যবস্থাটি অত্যন্ত যথাযথভাবেই এই ত্রুটি পূরণ করেছে। সাধারণ সতর্কতা, যে ফেডারেল কর্তৃপক্ষের এবং সংশ্লিষ্ট রাজ্যগুলোর সম্মতি ছাড়া কোনো নতুন রাজ্য গঠিত হবে না, এটি এমন নীতির সাথে সামঞ্জস্যপূর্ণ যা এই ধরনের লেনদেন পরিচালনা করা উচিত। কোনো রাজ্যের সম্মতি ছাড়া তার বিভাজনের মাধ্যমে নতুন রাজ্য নির্মাণের বিরুদ্ধে বিশেষ সতর্কতা বৃহত্তর রাজ্যগুলোর ঈর্ষাকে শান্ত করে; ঠিক যেমন ছোট রাজ্যগুলোর ঈর্ষা তাদের সম্মতি ছাড়া রাজ্যগুলোর মিলনের বিরুদ্ধে অনুরূপ সতর্কতা দ্বারা শান্ত হয়। ৫. "মার্কিন যুক্তরাষ্ট্রের অন্তর্গত অঞ্চল বা অন্যান্য সম্পত্তি সম্পর্কে সমস্ত প্রয়োজনীয় নিয়ম এবং প্রবিধান নিষ্পত্তি এবং তৈরি করা, এই শর্তে যে, সংবিধানে এমন কিছুই ব্যাখ্যা করা হবে না যা মার্কিন যুক্তরাষ্ট্রের বা কোনো নির্দিষ্ট রাজ্যের দাবির ক্ষতি করে।" এটি অত্যন্ত গুরুত্বপূর্ণ একটি ক্ষমতা, এবং পূর্বেরটির যৌক্তিকতা দেখানো বিবেচনার অনুরূপ বিবেচনার দ্বারা প্রয়োজনীয়। যুক্ত শর্তটি নিজেই সঠিক, এবং সম্ভবত পশ্চিমা অঞ্চল নিয়ে ঈর্ষা এবং প্রশ্নগুলোর কারণে একেবারে প্রয়োজনীয় হয়ে উঠেছিল যা জনসাধারণের কাছে যথেষ্ট পরিচিত। ৬. "ইউনিয়নের প্রতিটি রাজ্যকে সরকারের একটি প্রজাতান্ত্রিক রূপের নিশ্চয়তা দেওয়া; তাদের প্রত্যেককে আক্রমণের হাত থেকে রক্ষা করা; এবং আইনসভার, বা কার্যনির্বাহীর (যখন আইনসভা ডাকা যায় না) আবেদনে, গার্হস্থ্য সহিংসতার বিরুদ্ধে।" প্রজাতান্ত্রিক নীতির ওপর প্রতিষ্ঠিত এবং প্রজাতান্ত্রিক সদস্যদের নিয়ে গঠিত একটি কনফেডারেসিতে, তত্ত্বাবধায়ক সরকারের স্পষ্টভাবে অভিজাত বা রাজতান্ত্রিক উদ্ভাবনের বিরুদ্ধে ব্যবস্থাকে রক্ষা করার কর্তৃত্ব থাকা উচিত। এই ধরনের ইউনিয়নের প্রকৃতি যত বেশি ঘনিষ্ঠ হবে, সদস্যদের একে অপরের রাজনৈতিক প্রতিষ্ঠানে তত বেশি স্বার্থ থাকবে; এবং চুক্তির অধীনে যে সরকারের রূপগুলোতে প্রবেশ করা হয়েছিল তা মূলত বজায় রাখা উচিত বলে জোর দেওয়ার তত বেশি অধিকার থাকবে। কিন্তু একটি অধিকার একটি প্রতিকার বোঝায়; এবং সংবিধান দ্বারা যেখানে এটি জমা রাখা হয়েছে তা ছাড়া প্রতিকারটি আর কোথায় জমা রাখা যেতে পারে? ভিন্ন নীতি এবং রূপের সরকারগুলো যেকোনো ধরনের ফেডারেল জোটের জন্য সমজাতীয় প্রকৃতির সরকারগুলোর তুলনায় কম উপযুক্ত বলে প্রমাণিত হয়েছে। মন্টেস্কিউ বলেন, "জার্মানির কনফেডারেট প্রজাতন্ত্রটি বিভিন্ন রাজপুত্রের অধীনস্থ স্বাধীন শহর এবং ক্ষুদ্র রাজ্য নিয়ে গঠিত, অভিজ্ঞতা আমাদের দেখায় যে এটি হল্যান্ড এবং সুইজারল্যান্ডের চেয়ে বেশি অসিদ্ধ।" তিনি আরও যোগ করেন, "ম্যাসেডনের রাজা অ্যাম্ফিক্টিয়নদের মধ্যে একটি আসন পাওয়ার সাথে সাথেই গ্রীস ধ্বংস হয়ে গিয়েছিল।" পরবর্তী ক্ষেত্রে, নিসন্দেহে, অসামঞ্জস্যপূর্ণ শক্তির পাশাপাশি নতুন কনফেডারেটের রাজতান্ত্রিক রূপেরও ঘটনার ওপর প্রভাব ছিল। এটি সম্ভবত জিজ্ঞাসা করা হতে পারে, এই ধরনের সতর্কতার কী প্রয়োজন থাকতে পারে, এবং এটি রাজ্যগুলোর নিজেদের সম্মতি ছাড়া রাজ্য সরকারগুলোতে পরিবর্তনের অজুহাত হয়ে উঠতে পারে কিনা। এই প্রশ্নগুলোর প্রস্তুত উত্তর রয়েছে। যদি সাধারণ সরকারের হস্তক্ষেপের প্রয়োজন না হয়, তবে এই ধরনের ঘটনার বিধান সংবিধানে কেবল একটি ক্ষতিকারকহীন বাড়াবাড়ি হবে। কিন্তু কে বলতে পারে নির্দিষ্ট রাজ্যগুলোর খেয়ালখুশি, উদ্যোগী নেতাদের উচ্চাকাঙ্ক্ষা, বা বিদেশি শক্তির ষড়যন্ত্র এবং প্রভাব দ্বারা কী ধরনের পরীক্ষা তৈরি হতে পারে? দ্বিতীয় প্রশ্নের উত্তরে এটি বলা যেতে পারে যে, যদি সাধারণ সরকার এই সাংবিধানিক কর্তৃপক্ষের বলে হস্তক্ষেপ করে, তবে এটি অবশ্যই কর্তৃত্ব অনুসরণ করতে বাধ্য থাকবে। তবে কর্তৃত্বটি সরকারের একটি প্রজাতান্ত্রিক রূপের নিশ্চয়তার চেয়ে বেশি প্রসারিত নয়, যা নিশ্চিত করা হবে এমন রূপের একটি পূর্ব-বিদ্যমান সরকার ধরে নেয়। তাই, যতদিন বিদ্যমান প্রজাতান্ত্রিক রূপগুলো রাজ্যগুলোর দ্বারা অব্যাহত থাকে, সেগুলো ফেডারেল সংবিধান দ্বারা নিশ্চিত করা হয়। যখনই রাজ্যগুলো অন্যান্য প্রজাতান্ত্রিক রূপ প্রতিস্থাপন করতে চাইবে, তাদের তা করার অধিকার থাকবে এবং শেষোক্তটির জন্য ফেডারেল গ্যারান্টি দাবি করার অধিকার থাকবে। তাদের ওপর কেবল যে বিধিনিষেধ আরোপ করা হয়েছে তা হলো যে, তারা প্রজাতান্ত্রিকের বদলে অ-প্রজাতান্ত্রিক সংবিধান বিনিময় করবে না; একটি বিধিনিষেধ যা, ধরে নেওয়া যায়, খুব কমই একটি অভিযোগ হিসেবে বিবেচিত হবে।''
''একটি সমাজ থেকে তার গঠনকারী অংশগুলোর প্রতি আক্রমণের বিরুদ্ধে সুরক্ষা প্রাপ্য। এখানে ব্যবহৃত অভিব্যক্তির পরিধি প্রতিটি রাজ্যকে কেবল বিদেশি শত্রুতার বিরুদ্ধেই নয়, বরং তার আরও শক্তিশালী প্রতিবেশীদের উচ্চাকাঙ্ক্ষী বা প্রতিহিংসাপরায়ণ উদ্যোগের বিরুদ্ধেও সুরক্ষিত করে বলে মনে হয়। প্রাচীন এবং আধুনিক উভয় কনফেডারেসির ইতিহাস প্রমাণ করে যে ইউনিয়নের দুর্বল সদস্যদের এই অনুচ্ছেদের নীতির প্রতি সংবেদনশীল হওয়া উচিত নয়। গার্হস্থ্য সহিংসতার বিরুদ্ধে সুরক্ষা সমান যৌক্তিকতার সাথে যুক্ত করা হয়েছে। এটি লক্ষ্য করা হয়েছে যে, এমনকি সুইস ক্যান্টনগুলোর মধ্যেও, যা ঠিকভাবে বললে এক সরকারের অধীনে নয়, এই বস্তুর জন্য বিধান করা হয়েছে; এবং সেই লিগের ইতিহাস আমাদের জানায় যে পারস্পরিক সহায়তা প্রায়শই দাবি করা হয় এবং প্রদান করা হয়; এবং সবচেয়ে গণতান্ত্রিক, সেইসাথে অন্যান্য ক্যান্টনগুলোর দ্বারাও। আমাদের নিজেদের মধ্যে একটি সাম্প্রতিক এবং সুপরিচিত ঘটনা আমাদের অনুরূপ প্রকৃতির জরুরি অবস্থার জন্য প্রস্তুত থাকতে সতর্ক করেছে। প্রথম দেখায়, এটি প্রজাতান্ত্রিক তত্ত্বের সাথে সামঞ্জস্যপূর্ণ বলে মনে নাও হতে পারে, এটি অনুমান করা যে হয় সংখ্যাগরিষ্ঠের অধিকার নেই, বা সংখ্যালঘুর শক্তি থাকবে, একটি সরকারকে ধ্বংস করার; এবং ফলস্বরূপ, ফেডারেল হস্তক্ষেপের কখনো প্রয়োজন হতে পারে না, তবে যখন এটি অনুচিত হবে। কিন্তু তাত্ত্বিক যুক্তি, এই ক্ষেত্রে যেমন অন্যান্য বেশিরভাগ ক্ষেত্রে, অনুশীলনের পাঠ দ্বারা যোগ্য হতে হবে। কেন সহিংসতার উদ্দেশ্যে অবৈধ সংমিশ্রণগুলো একটি রাজ্যের সংখ্যাগরিষ্ঠের দ্বারা, বিশেষ করে একটি ছোট রাজ্যের দ্বারা গঠিত হতে পারে না, ঠিক যেমন একটি কাউন্টির বা একই রাজ্যের একটি জেলার সংখ্যাগরিষ্ঠের দ্বারা গঠিত হতে পারে; এবং যদি পরবর্তী ক্ষেত্রে রাজ্যের কর্তৃপক্ষের স্থানীয় ম্যাজিস্ট্রেটকে রক্ষা করা উচিত হয়, তবে পূর্ববর্তী ক্ষেত্রে ফেডারেল কর্তৃপক্ষের কি রাজ্যের কর্তৃপক্ষকে সমর্থন করা উচিত নয়? তাছাড়া, রাজ্যের সংবিধানগুলোর কিছু অংশ ফেডারেল সংবিধানের সাথে এমনভাবে জড়িত যে একটিতে হিংসাত্মক আঘাত দিলে অন্যটিতে ক্ষত যোগাযোগ না করে তা করা যায় না।''
''একটি রাজ্যে বিদ্রোহ খুব কমই একটি ফেডারেল হস্তক্ষেপকে প্ররোচিত করবে, যদি না সেগুলোতে জড়িতদের সংখ্যা সরকারের বন্ধুদের সাথে কোনো অনুপাতে থাকে। এটি অনেক বেশি ভালো হবে যে এই ধরনের ক্ষেত্রে সহিংসতা তত্ত্বাবধায়ক শক্তি দ্বারা অবদমিত হওয়া উচিত, সংখ্যাগরিষ্ঠকে একটি রক্তক্ষয়ী এবং একগুঁয়ে প্রতিযোগিতার দ্বারা তাদের কারণ বজায় রাখার জন্য ছেড়ে দেওয়ার চেয়ে। হস্তক্ষেপ করার অধিকারের অস্তিত্ব সাধারণত এটি প্রয়োগ করার প্রয়োজনীয়তা রোধ করবে। এটি কি সত্য যে প্রজাতান্ত্রিক সরকারগুলোতে শক্তি এবং অধিকার অগত্যা একই দিকে থাকে? ক্ষুদ্রতর দলের কি আর্থিক সম্পদের, সামরিক প্রতিভা এবং অভিজ্ঞতার, বা বিদেশি শক্তি থেকে গোপন সহায়তার এমন শ্রেষ্ঠত্ব থাকতে পারে না, যা এটিকে তলোয়ারের আবেদনেও উচ্চতর করে তুলবে? একটি আরও কমপ্যাক্ট এবং সুবিধাজনক অবস্থান কি একই দিকে স্কেলটি ঘুরিয়ে দিতে পারে না, এমন একটি উচ্চতর সংখ্যার বিরুদ্ধে যা তার শক্তির একটি তাত্ক্ষণিক এবং সংগৃহীত প্রয়োগে কম সক্ষম? বাস্তবিক শক্তির বিচারে, অধিবাসীদের আদমশুমারিতে প্রচলিত নিয়ম দ্বারা বা একটি নির্বাচনের ঘটনা নির্ধারণকারী নিয়ম দ্বারা বিজয়ের হিসাব করা যেতে পারে, এমন কল্পনা করার চেয়ে বেশি কাল্পনিক আর কিছুই হতে পারে না!''
''পরিশেষে, এটা কি ঘটতে পারে না যে নাগরিকদের সংখ্যালঘু এলিয়েন বাসিন্দাদের, অভিযাত্রীদের আকস্মিক মিলন, বা রাজ্যের সংবিধান যাদের ভোটাধিকার দেয়নি তাদের যোগদানের মাধ্যমে ব্যক্তিবর্গের সংখ্যাগরিষ্ঠ হয়ে উঠতে পারে? আমি কিছু রাজ্যে প্রচুর পরিমাণে থাকা একটি অসুখী প্রজাতির জনসংখ্যার কথা উল্লেখ করছি না, যারা নিয়মিত সরকারের শান্ত সময়ে মানুষের স্তরের নিচে ডুবে থাকে; কিন্তু যারা নাগরিক সহিংসতার উত্তাল দৃশ্যে মানব চরিত্রে আবির্ভূত হতে পারে এবং যে দলের সাথে তারা নিজেদের যুক্ত করতে পারে তাদের শক্তির শ্রেষ্ঠত্ব দিতে পারে। যেসব ক্ষেত্রে ন্যায়বিচার কোন দিকে রয়েছে তা নিয়ে সন্দেহ থাকতে পারে, সেখানে দুটি সহিংস উপদল, যারা অস্ত্র ধারণ করে এবং একটি রাজ্যকে টুকরো টুকরো করে ফেলে, তাদের দ্বারা স্থানীয় আগুনে উত্তপ্ত না হওয়া কনফেডারেট রাজ্যগুলোর প্রতিনিধিদের চেয়ে ভালো আম্পায়ার আর কী চাওয়া যেতে পারে? বিচারকদের নিরপেক্ষতার সাথে তারা বন্ধুদের স্নেহ যুক্ত করবে। আনন্দিত হতো যদি সমস্ত মুক্ত সরকার তাদের দুর্বলতাগুলোর জন্য এমন একটি প্রতিকার উপভোগ করতে পারত; যদি মানবজাতির সার্বজনীন শান্তির জন্য সমানভাবে কার্যকর একটি প্রকল্প স্থাপন করা যেত! যদি জিজ্ঞাসা করা হয়, সমস্ত রাজ্যে বিস্তৃত এবং সম্পূর্ণ শক্তির শ্রেষ্ঠত্ব নিয়ে গঠিত একটি বিদ্রোহের প্রতিকার কী হবে, যদিও তা সাংবিধানিক অধিকার নয়? উত্তরটি অবশ্যই হতে হবে যে, এমন একটি ঘটনা যেমন মানব প্রতিকারের সীমার বাইরে হবে, তেমনি সৌভাগ্যবশত এটি মানব সম্ভাবনার সীমার মধ্যেও নেই; এবং এটি ফেডারেল সংবিধানের একটি পর্যাপ্ত সুপারিশ যে, এটি এমন একটি বিপদের ঝুঁকি হ্রাস করে যার জন্য কোনো সম্ভাব্য সংবিধান প্রতিকার প্রদান করতে পারে না। মন্টেস্কিউ কর্তৃক গণনাকৃত একটি কনফেডারেট প্রজাতন্ত্রের সুবিধাগুলোর মধ্যে একটি গুরুত্বপূর্ণ সুবিধা হলো, "যদি কোনো একটি রাজ্যে একটি জনপ্রিয় বিদ্রোহ ঘটে, তবে অন্যরা তা দমন করতে সক্ষম হয়। যদি এক অংশে অপব্যবহার প্রবেশ করে, তবে যেগুলো ভালো থাকে সেগুলো দ্বারা সেগুলো সংস্কার করা হয়।" ৭. "এই সংবিধান গ্রহণের আগে চুক্তিবদ্ধ সমস্ত ঋণ এবং প্রতিশ্রুতি বিবেচনা করা, যা এই সংবিধানের অধীনে মার্কিন যুক্তরাষ্ট্রের বিরুদ্ধে কনফেডারেশনের অধীনে যেমন বৈধ ছিল তার চেয়ে কম নয়।" এটি কেবল একটি ঘোষণামূলক প্রস্তাব হিসেবে বিবেচনা করা যেতে পারে; এবং অন্যান্য কারণের মধ্যে, মার্কিন যুক্তরাষ্ট্রের বিদেশি পাওনাদারদের সন্তুষ্টির জন্য ঢোকানো হতে পারে, যারা এই কাল্পনিক মতবাদের অপরিচিত হতে পারে না যে, নাগরিক সমাজের রাজনৈতিক রূপে একটি পরিবর্তনের তার নৈতিক বাধ্যবাধকতাগুলো দ্রবীভূত করার জাদুকরী প্রভাব রয়েছে। সংবিধানের ওপর প্রয়োগ করা ক্ষুদ্রতর সমালোচনাগুলোর মধ্যে, এটি মন্তব্য করা হয়েছে যে প্রতিশ্রুতিগুলোর বৈধতা মার্কিন যুক্তরাষ্ট্রের পক্ষে এবং তাদের বিরুদ্ধে জোর দিয়ে বলা উচিত ছিল; এবং ক্ষুদ্র সমালোচকদের সাধারণত চিহ্নিত করে এমন চেতনায়, বাদ পড়াটিকে জাতীয় অধিকারের বিরুদ্ধে একটি ষড়যন্ত্রে রূপান্তরিত এবং প্রসারিত করা হয়েছে। এই আবিষ্কারের লেখকদের বলা যেতে পারে, যা অন্য কয়েকজনকে জানানোর প্রয়োজন রয়েছে, যে প্রতিশ্রুতিগুলো তাদের প্রকৃতিতে পারস্পরিক, একপাশে তাদের বৈধতার একটি জোর দিয়ে বলা, অগত্যা অন্য পাশে একটি বৈধতা জড়িত করে; এবং যেহেতু অনুচ্ছেদটি কেবল ঘোষণামূলক, একটি ক্ষেত্রে নীতির প্রতিষ্ঠা প্রতিটি ক্ষেত্রের জন্য যথেষ্ট। তাদের আরও বলা যেতে পারে যে, প্রতিটি সংবিধানকে তার সতর্কতাগুলো এমন বিপদগুলোর মধ্যে সীমাবদ্ধ রাখতে হবে যা পুরোপুরি কাল্পনিক নয়; এবং কোনো প্রকৃত বিপদের অস্তিত্ব থাকতে পারে না যে সরকার, তার সামনে এই সাংবিধানিক ঘোষণার সাথে বা এমনকি এটি ছাড়াও, এখানে নিন্দিত অজুহাতে জনসাধারণের কাছে যথাযথভাবে পাওনা ঋণগুলো মওকুফ করার সাহস করবে। ৮. "মাত্র দুটি ব্যতিক্রমের অধীনে রাজ্যগুলোর তিন-চতুর্থাংশ দ্বারা অনুমোদিত হওয়ার জন্য সংশোধনীগুলোর বিধান করা।" অভিজ্ঞতা দ্বারা যে দরকারী পরিবর্তনগুলো প্রস্তাব করা হবে, তা পূর্বাভাস না দিয়ে পারা যায় না। তাই, সেগুলো প্রবর্তনের জন্য একটি পদ্ধতির বিধান করা প্রয়োজনীয় ছিল। কনভেনশন দ্বারা পছন্দ করা পদ্ধতিটি যৌক্তিকতার প্রতিটি চিহ্ন দ্বারা অঙ্কিত বলে মনে হয়। এটি সমানভাবে সেই চরম সুবিধার বিরুদ্ধে রক্ষা করে, যা সংবিধানকে খুব পরিবর্তনশীল করে তুলবে; এবং সেই চরম অসুবিধার বিরুদ্ধে, যা এর আবিষ্কৃত ত্রুটিগুলোকে স্থায়ী করতে পারে। এটি তদ্ব্যতীত, সাধারণ এবং রাজ্য সরকারগুলোকে ত্রুটিগুলোর সংশোধনের উদ্ভব করতে সমানভাবে সক্ষম করে, যেমনটা একদিকে বা অন্যদিকে অভিজ্ঞতার দ্বারা নির্দেশ করা যেতে পারে। সিনেটে ভোটাধিকারের সমতার পক্ষে ব্যতিক্রমটি সম্ভবত রাজ্যগুলোর অবশিষ্ট সার্বভৌমত্বের একটি প্যাল্যাডিয়াম (রক্ষাকবচ) হিসেবে বোঝানো হয়েছিল, যা আইনসভার একটি শাখায় প্রতিনিধিত্বের সেই নীতি দ্বারা নিহিত এবং সুরক্ষিত; এবং সম্ভবত সেই সমতার সাথে বিশেষভাবে সংযুক্ত রাজ্যগুলোর দ্বারা জোর দেওয়া হয়েছিল। অন্য ব্যতিক্রমটি অবশ্যই একই বিবেচনার ভিত্তিতে স্বীকার করা হয়েছে যা এর দ্বারা রক্ষিত বিশেষাধিকার তৈরি করেছিল। ৯. "নয়টি রাজ্যের কনভেনশনগুলোর অনুমোদন এই সংবিধানটিকে অনুমোদনকারী রাজ্যগুলোর মধ্যে প্রতিষ্ঠার জন্য যথেষ্ট হবে।" এই অনুচ্ছেদটি নিজেই কথা বলে।''
''কেবল জনগণের সুস্পষ্ট কর্তৃত্বই সংবিধানকে যথাযথ বৈধতা দিতে পারে। তেরোটি রাজ্যের সর্বসম্মত অনুমোদনের প্রয়োজন হলে সমগ্রের অপরিহার্য স্বার্থগুলো একক সদস্যের খেয়ালখুশি বা দুর্নীতির অধীন হয়ে যেত। এটি কনভেনশনে দূরদৃষ্টির অভাব চিহ্নিত করত, যা আমাদের নিজস্ব অভিজ্ঞতা অমার্জনীয় করে তুলত। এই উপলক্ষে অত্যন্ত সূক্ষ্ম প্রকৃতির দুটি প্রশ্ন নিজেদের উপস্থাপন করে: ১. কোন নীতির ভিত্তিতে কনফেডারেশন, যা রাজ্যগুলোর মধ্যে একটি চুক্তির গৌরবময় রূপে দাঁড়িয়ে আছে, এতে পক্ষগুলোর সর্বসম্মত সম্মতি ছাড়া বাতিল করা যেতে পারে? ২. সংবিধান অনুমোদনকারী নয়টি বা ততোধিক রাজ্য এবং বাকি কয়েকটির মধ্যে কী সম্পর্ক বজায় থাকবে যারা এতে পক্ষ হবে না? প্রথম প্রশ্নের উত্তর একবারে মামলার সম্পূর্ণ প্রয়োজনীয়তার দিকে ফিরে গিয়ে দেওয়া হয়; আত্মরক্ষার মহান নীতির দিকে; প্রকৃতি এবং প্রকৃতির ঈশ্বরের অতিক্রান্ত আইনের দিকে, যা ঘোষণা করে যে সমাজের নিরাপত্তা এবং সুখই সেই উদ্দেশ্য যার দিকে সমস্ত রাজনৈতিক প্রতিষ্ঠান লক্ষ্য রাখে এবং যেগুলোর কাছে এই ধরনের সমস্ত প্রতিষ্ঠানকে উৎসর্গ করতে হবে। সম্ভবত, চুক্তির নীতিগুলোর বাইরে অনুসন্ধান না করেও একটি উত্তর পাওয়া যেতে পারে। এর আগে কনফেডারেশনের ত্রুটিগুলোর মধ্যে উল্লেখ করা হয়েছে যে, অনেক রাজ্যে এটি নিছক একটি আইনি অনুমোদনের চেয়ে উচ্চতর কোনো অনুমোদন পায়নি। পারস্পরিকতার নীতিটি দাবি করে বলে মনে হয় যে অন্যান্য রাজ্যের ওপর এর বাধ্যবাধকতা একই মানদণ্ডে হ্রাস করা উচিত। আইনি কর্তৃপক্ষের সাধারণ কাজের ওপর প্রতিষ্ঠিত স্বাধীন সার্বভৌমদের মধ্যে একটি চুক্তি পক্ষগুলোর মধ্যে একটি লিগ বা চুক্তির চেয়ে উচ্চতর কোনো বৈধতার দাবি করতে পারে না। চুক্তির বিষয়ে এটি একটি প্রতিষ্ঠিত মতবাদ যে, সমস্ত অনুচ্ছেদ একে অপরের পারস্পরিক শর্ত; যে কোনো একটি অনুচ্ছেদের লঙ্ঘন হলো সমগ্র চুক্তির লঙ্ঘন; এবং যে, পক্ষগুলোর যেকোনো একটির দ্বারা সংঘটিত একটি লঙ্ঘন, অন্যদের মুক্ত করে, এবং তাদের অনুমোদন দেয়, যদি তারা চায়, তবে চুক্তিটিকে লঙ্ঘিত এবং অকার্যকর ঘোষণা করার। ফেডারেল চুক্তি বাতিলের জন্য নির্দিষ্ট রাজ্যগুলোর সম্মতি বাতিল করার পক্ষে একটি যৌক্তিকতার জন্য এই সূক্ষ্ম সত্যগুলোর কাছে আবেদন করা যদি দুর্ভাগ্যজনকভাবে প্রয়োজনীয় হয়ে ওঠে, তবে অভিযোগকারী পক্ষগুলো কি তাদের সামনে মুখোমুখি হওয়া বহুগুণিত এবং গুরুত্বপূর্ণ লঙ্ঘনগুলোর উত্তর দেওয়াকে একটি কঠিন কাজ বলে মনে করবে না? এমন সময় এসেছে যখন আমাদের সবার জন্য এই অনুচ্ছেদটি যে ধারণাগুলো প্রদর্শন করে তা গোপন রাখা বাধ্যতামূলক ছিল। দৃশ্যপট এখন বদলে গেছে, এবং সেই সাথে একই উদ্দেশ্যগুলো যে অংশের নির্দেশ দেয় তাও। দ্বিতীয় প্রশ্নটিও কম সূক্ষ্ম নয়; এবং এর কেবল কাল্পনিক হওয়ার চাটুকার সম্ভাবনা এর অত্যধিক কৌতূহলী আলোচনাকে নিষেধ করে। এটি এমন একটি মামলা যা নিজের জন্য বিধান করার জন্য ছেড়ে দিতে হবে। সাধারণভাবে, এটি পর্যবেক্ষণ করা যেতে পারে যে, যদিও সম্মত এবং অসম্মত রাজ্যগুলোর মধ্যে কোনো রাজনৈতিক সম্পর্ক থাকতে পারে না, তবুও নৈতিক সম্পর্কগুলো বাতিল না হয়েই থাকবে। ন্যায়বিচারের দাবি, একদিক এবং অন্যদিক উভয় ক্ষেত্রেই, বলবৎ থাকবে এবং তা পূরণ করতে হবে; মানবতার অধিকারগুলো সমস্ত ক্ষেত্রেই যথাযথভাবে এবং পারস্পরিকভাবে সম্মান করতে হবে; যেখানে একটি সাধারণ স্বার্থের বিবেচনা এবং সর্বোপরি, অতীতের আনন্দদায়ক দৃশ্যগুলোর স্মরণ এবং পুনর্মিলনের বাধাগুলোর ওপর দ্রুত বিজয়ের প্রত্যাশা, আশা করা যায়, একদিকে সংযম এবং অন্যদিকে বিচক্ষণতার আহ্বান বৃথা যাবে না।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি ফেডারালিস্ট নং ৪১-এ ম্যাডিসন কর্তৃক শুরু হওয়া এবং ফেডারালিস্ট নং ৪২-এ অব্যাহত থাকা একটি থিম বা বিষয়েরই ধারাবাহিকতা।
==ফেডারালিস্ট নং ৪৪==
ফেডারালিস্ট নং ৪৪-এর শিরোনাম হলো ''"বিভিন্ন অঙ্গরাজ্যের কর্তৃত্বের ওপর বিধিনিষেধ"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''ফেডারেল কর্তৃপক্ষের পক্ষে বিধানগুলোর একটি পঞ্চম শ্রেণিতে বিভিন্ন অঙ্গরাজ্যের কর্তৃত্বের ওপর নিম্নলিখিত বিধিনিষেধগুলো অন্তর্ভুক্ত রয়েছে: ১. "কোনো রাজ্য কোনো চুক্তি, জোট বা কনফেডারেশনে প্রবেশ করবে না; মার্ক এবং রিপ্রাইসালের চিঠি প্রদান করবে না; মুদ্রা তৈরি করবে না; ঋণের বিল জারি করবে না; ঋণ পরিশোধের বৈধ দরপত্র হিসেবে সোনা ও রূপা ছাড়া অন্য কিছু তৈরি করবে না; কোনো বিল অব অ্যাটেইন্ডার, ভূতাপেক্ষ (ex-post-facto) আইন, অথবা চুক্তির বাধ্যবাধকতা ক্ষুণ্নকারী কোনো আইন পাস করবে না; বা অভিজাত কোনো উপাধি প্রদান করবে না।" চুক্তি, জোট এবং কনফেডারেশনের বিরুদ্ধে নিষেধাজ্ঞা বিদ্যমান ইউনিয়নের অনুচ্ছেদগুলোর একটি অংশ তৈরি করে; এবং এমন কারণে যার কোনো ব্যাখ্যার প্রয়োজন নেই, নতুন সংবিধানে অনুলিপি করা হয়েছে। লেটারস অব মার্কের নিষেধাজ্ঞা পুরনো ব্যবস্থার আরেকটি অংশ, তবে নতুনে এটি কিছুটা প্রসারিত হয়েছে। পূর্ববর্তীটি অনুসারে, যুদ্ধের ঘোষণার পরে রাজ্যগুলো লেটারস অব মার্ক প্রদান করতে পারত; পরবর্তীটি অনুসারে, এই লাইসেন্সগুলো যুদ্ধ চলাকালীন পাশাপাশি ঘোষণার আগেও মার্কিন যুক্তরাষ্ট্রের সরকারের কাছ থেকে পেতে হবে। এই পরিবর্তনটি বিদেশি শক্তিগুলোর সাথে সম্পর্কিত সমস্ত বিষয়ে অভিন্নতার সুবিধা এবং যাদের আচরণের জন্য জাতি নিজেই দায়ী থাকবে তাদের ক্ষেত্রে জাতির কাছে তাত্ক্ষণিক দায়বদ্ধতার দ্বারা পুরোপুরি ন্যায়সঙ্গত।''
''মুদ্রা তৈরির অধিকার, যা এখানে রাজ্যগুলোর কাছ থেকে নেওয়া হয়েছে, কনফেডারেশন কর্তৃক কংগ্রেসের অধিকারের সাথে সমবর্তী অধিকার হিসেবে তাদের হাতে ছেড়ে দেওয়া হয়েছিল, খাদ এবং মান নিয়ন্ত্রণ করার কংগ্রেসের একচেটিয়া অধিকারের পক্ষে একটি ব্যতিক্রমের অধীনে। এই দৃষ্টান্তে, নতুন বিধানটি পুরনোর ওপর একটি উন্নতি। যদিও খাদ এবং মান সাধারণ কর্তৃপক্ষের ওপর নির্ভর করত, নির্দিষ্ট রাজ্যগুলোতে মুদ্রা তৈরির অধিকার ব্যয়বহুল টাঁকশাল বাড়ানো এবং প্রচলিত টুকরোগুলোর রূপ ও ওজনকে বৈচিত্র্যময় করা ছাড়া অন্য কোনো প্রভাব ফেলতে পারত না। পরবর্তী অসুবিধাটি সেই উদ্দেশ্যগুলোর একটিকে পরাজিত করে যার জন্য ক্ষমতাটি মূলত ফেডারেল প্রধানের কাছে জমা দেওয়া হয়েছিল; এবং যতক্ষণ পূর্ববর্তীটি পুনরায় মুদ্রা তৈরির জন্য কেন্দ্রীয় টাঁকশালে সোনা এবং রূপার একটি অসুবিধাজনক প্রেরণ রোধ করতে পারে, উদ্দেশ্যটি সাধারণ কর্তৃপক্ষের অধীনে প্রতিষ্ঠিত স্থানীয় টাঁকশালগুলোর দ্বারা সমানভাবে অর্জন করা যেতে পারে।''
''ঋণের বিলগুলোতে নিষেধাজ্ঞার সম্প্রসারণ প্রত্যেক নাগরিককে তার ন্যায়বিচারের প্রতি ভালোবাসা এবং জনসমৃদ্ধির প্রকৃত উৎসগুলো সম্পর্কে তার জ্ঞানের অনুপাতে আনন্দ দেবে। শান্তির পর থেকে আমেরিকা কাগজের মুদ্রার মানুষের মধ্যে মানুষের প্রয়োজনীয় আস্থার ওপর, জনসাধারণের পরিষদের প্রয়োজনীয় আস্থার ওপর, জনগণের শিল্প ও নৈতিকতার ওপর এবং প্রজাতান্ত্রিক সরকারের চরিত্রের ওপর যে ক্ষতিকারক প্রভাব থেকে যে ক্ষতির সম্মুখীন হয়েছে, তা এই অবিবেচক পদক্ষেপের জন্য দায়ী রাজ্যগুলোর বিরুদ্ধে একটি বিশাল ঋণ তৈরি করে, যা দীর্ঘকাল অপূর্ণ থাকতে হবে; অথবা বরং অপরাধবোধের একটি সঞ্চয়, যা ন্যায়বিচারের বেদিতে স্বেচ্ছায় ত্যাগের মাধ্যম ছাড়া অন্য কোনো উপায়ে প্রায়শ্চিত্ত করা যায় না, সেই ক্ষমতার যা এর হাতিয়ার হয়েছে। এই প্ররোচনামূলক বিবেচনার পাশাপাশি, এটি পর্যবেক্ষণ করা যেতে পারে যে, যে কারণগুলো রাজ্যগুলোকে মুদ্রা নিয়ন্ত্রণের ক্ষমতা অস্বীকার করার প্রয়োজনীয়তা দেখায়, সেগুলো সমান জোর দিয়ে প্রমাণ করে যে তাদের মুদ্রার জায়গায় কাগজের মাধ্যম প্রতিস্থাপন করার স্বাধীনতা থাকা উচিত নয়। যদি প্রতিটি রাজ্যের তার মুদ্রার মান নিয়ন্ত্রণ করার অধিকার থাকে, তবে রাজ্যগুলোর মতোই অনেকগুলো ভিন্ন মুদ্রা থাকতে পারে এবং এভাবে তাদের মধ্যে যোগাযোগ বাধাগ্রস্ত হবে; এর মানের ভূতাপেক্ষ পরিবর্তন করা হতে পারে, এবং এভাবে অন্যান্য রাজ্যের নাগরিকরা ক্ষতিগ্রস্ত হতে পারে, এবং রাজ্যগুলোর নিজেদের মধ্যে শত্রুতা প্রজ্বলিত হতে পারে। বিদেশি শক্তির প্রজারা একই কারণ থেকে ভুগতে পারে, এবং তাই ইউনিয়নের একক সদস্যের অবিবেচনার দ্বারা ইউনিয়নটি অসম্মানিত এবং জড়িয়ে পড়তে পারে। রাজ্যগুলোর কাগজে মুদ্রা ইস্যু করার ক্ষমতার তুলনায় সোনা বা রূপার মুদ্রা তৈরির ক্ষমতার ক্ষেত্রে এই অনিষ্টগুলোর কোনোটিই কম ঘটনা নয়। ঋণ পরিশোধের দরপত্র হিসেবে সোনা এবং রূপা ছাড়া অন্য কিছু তৈরি করার ক্ষমতা, কাগজের মুদ্রা ইস্যু করার ক্ষমতার মতো একই নীতিতে রাজ্যগুলোর কাছ থেকে প্রত্যাহার করা হয়েছে। বিল অব অ্যাটেইন্ডার, ভূতাপেক্ষ আইন এবং চুক্তির বাধ্যবাধকতা ক্ষুণ্নকারী আইনগুলো সামাজিক চুক্তির প্রথম নীতিগুলোর এবং সঠিক আইন প্রণয়নের প্রতিটি নীতির পরিপন্থী। পূর্ববর্তী দুটি রাজ্য সংবিধানের কয়েকটির আগে যুক্ত ঘোষণাগুলো দ্বারা স্পষ্টভাবে নিষিদ্ধ, এবং সেগুলো সব এই মৌলিক সনদগুলোর চেতনা এবং সুযোগ দ্বারা নিষিদ্ধ। তবুও আমাদের নিজস্ব অভিজ্ঞতা আমাদের শিখিয়েছে যে, এই বিপদগুলোর বিরুদ্ধে অতিরিক্ত বেড়াগুলো বাদ দেওয়া উচিত নয়। অত্যন্ত যথাযথভাবেই, তাই, কনভেনশন ব্যক্তিগত নিরাপত্তা এবং ব্যক্তিগত অধিকারের পক্ষে এই সাংবিধানিক প্রাচীর যুক্ত করেছে; এবং আমি খুব প্রতারিত হবো যদি তারা তা করতে গিয়ে তাদের উপাদানগুলোর অকাট্য স্বার্থের মতো প্রকৃত অনুভূতিগুলোর সাথে বিশ্বস্ততার সাথে পরামর্শ না করে থাকে। আমেরিকার শান্ত লোকেরা জনসাধারণের পরিষদগুলোকে পরিচালিত করা ওঠানামা করা নীতিতে ক্লান্ত। তারা অনুশোচনা এবং ক্ষোভের সাথে দেখেছে যে ব্যক্তিগত অধিকারকে প্রভাবিত করে এমন ক্ষেত্রে আকস্মিক পরিবর্তন এবং আইনী হস্তক্ষেপ উদ্যোগী এবং প্রভাবশালী ফাটকাবাজদের হাতে চাকরি হয়ে ওঠে এবং সম্প্রদায়ের বেশি-পরিশ্রমী এবং কম-জ্ঞাত অংশের জন্য ফাঁদে পরিণত হয়। তারা এটিও দেখেছে যে, একটি আইনী হস্তক্ষেপ পুনরাবৃত্তির একটি দীর্ঘ চেইনের প্রথম লিঙ্ক মাত্র, প্রতিটি পরবর্তী হস্তক্ষেপ স্বাভাবিকভাবেই পূর্ববর্তীটির প্রভাব দ্বারা উৎপাদিত হয়। তারা খুব সঠিকভাবে অনুমান করে, তাই, কিছু পুঙ্খানুপুঙ্খ সংস্কারের অভাব রয়েছে, যা জনসাধারণের পদক্ষেপে জল্পনা-কল্পনা দূর করবে, একটি সাধারণ বিচক্ষণতা এবং শিল্পকে অনুপ্রাণিত করবে এবং সমাজের ব্যবসায় একটি নিয়মিত গতিপথ দেবে। অভিজাত উপাধিগুলোর বিষয়ে নিষেধাজ্ঞা কনফেডারেশনের অনুচ্ছেদগুলো থেকে অনুলিপি করা হয়েছে এবং এর কোনো মন্তব্যের প্রয়োজন নেই। ২. "কোনো রাজ্য কংগ্রেসের সম্মতি ছাড়া আমদানি বা রপ্তানির ওপর কোনো শুল্ক আরোপ করবে না, কেবল তার পরিদর্শন আইন কার্যকর করার জন্য যা একেবারে প্রয়োজনীয় হতে পারে তা ছাড়া, এবং কোনো রাজ্য দ্বারা আমদানি বা রপ্তানির ওপর আরোপিত সমস্ত শুল্কের নিট উৎপাদন মার্কিন যুক্তরাষ্ট্রের কোষাগারের ব্যবহারের জন্য হবে; এবং এই ধরনের সমস্ত আইন কংগ্রেসের সংশোধন এবং নিয়ন্ত্রণের সাপেক্ষে হবে। কোনো রাজ্য কংগ্রেসের সম্মতি ছাড়া টনেজের ওপর কোনো শুল্ক আরোপ করবে না, শান্তির সময়ে সৈন্য বা যুদ্ধজাহাজ রাখবে না, অন্য রাজ্য বা বিদেশি শক্তির সাথে কোনো চুক্তিতে প্রবেশ করবে না, অথবা যুদ্ধে লিপ্ত হবে না যদি না প্রকৃতপক্ষে আক্রমণ করা হয়, বা এমন আসন্ন বিপদে যা বিলম্বের অনুমতি দেবে না।" আমদানি এবং রপ্তানির ওপর রাজ্যগুলোর ক্ষমতার ওপর বিধিনিষেধ সেই সমস্ত যুক্তি দ্বারা প্রয়োগ করা হয় যা ফেডারেল পরিষদের কাছে বাণিজ্যের নিয়ন্ত্রণ জমা দেওয়ার প্রয়োজনীয়তা প্রমাণ করে। তাই, এই বিষয়ে আর মন্তব্য করা অপ্রয়োজনীয়, কেবল এই ছাড়া যে পদ্ধতিতে বিধিনিষেধটি যোগ্য বলে মনে হয় তা রাজ্যগুলোর জন্য তাদের আমদানি এবং রপ্তানির সুবিধার জন্য বিধান করার একটি যুক্তিসঙ্গত বিবেচনা সুরক্ষিত করার জন্য এবং মার্কিন যুক্তরাষ্ট্রের জন্য এই বিবেচনার অপব্যবহারের বিরুদ্ধে একটি যুক্তিসঙ্গত চেক সুরক্ষিত করার জন্য একসাথে ভালোভাবে গণনা করা হয়েছে।''
''এই ধারার বাকি বিবরণগুলো এমন যুক্তির মধ্যে পড়ে যা হয় এত স্পষ্ট, বা এত পুরোপুরি বিকশিত হয়েছে যে, সেগুলো কোনো মন্তব্য ছাড়াই এড়িয়ে যাওয়া যেতে পারে। ষষ্ঠ এবং শেষ শ্রেণিতে সেই বিভিন্ন ক্ষমতা এবং বিধানগুলো অন্তর্ভুক্ত রয়েছে যার মাধ্যমে বাকি সবগুলোকে কার্যকারিতা দেওয়া হয়। ১. এগুলোর মধ্যে প্রথমটি হলো, "পূর্ববর্তী ক্ষমতাগুলো এবং এই সংবিধান দ্বারা মার্কিন যুক্তরাষ্ট্রের সরকারে বা এর কোনো বিভাগ বা কর্মকর্তার কাছে ন্যস্ত অন্যান্য সমস্ত ক্ষমতা কার্যকর করার জন্য প্রয়োজনীয় এবং সঠিক হবে এমন সমস্ত আইন প্রণয়নের ক্ষমতা।" সংবিধানের খুব কম অংশই এর চেয়ে বেশি অসংযমের সাথে আক্রমণ করা হয়েছে; তবুও এর একটি ন্যায্য তদন্তে, কোনো অংশ বেশি পুরোপুরি অভেদ্য বলে মনে হতে পারে না। এই ক্ষমতার সারমর্ম (SUBSTANCE) ছাড়া, পুরো সংবিধানটি একটি মৃত অক্ষর হবে। যারা অনুচ্ছেদটির আপত্তি করেন, তাই, সংবিধানের একটি অংশ হিসেবে, তারা কেবল বোঝাতে পারেন যে বিধানটির ফর্ম (FORM) অনুচিত। কিন্তু তারা কি বিবেচনা করেছেন যে আরও ভালো কোনো ফর্ম প্রতিস্থাপন করা যেত কিনা? এই বিষয়ে সংবিধান যে আরও চারটি সম্ভাব্য পদ্ধতি গ্রহণ করতে পারত তা রয়েছে। তারা বিদ্যমান কনফেডারেশনের দ্বিতীয় অনুচ্ছেদটি অনুলিপি করতে পারত, যা স্পষ্টভাবে (EXPRESSLY) অর্পণ করা হয়নি এমন কোনো ক্ষমতা প্রয়োগ নিষিদ্ধ করত; তারা "প্রয়োজনীয় এবং সঠিক" সাধারণ শর্তের অধীনে অন্তর্ভুক্ত ক্ষমতাগুলোর একটি ইতিবাচক গণনার চেষ্টা করতে পারত; তারা সাধারণ সংজ্ঞা থেকে বাদ দেওয়া ক্ষমতাগুলো নির্দিষ্ট করে তাদের একটি নেতিবাচক গণনার চেষ্টা করতে পারত; তারা এই প্রয়োজনীয় এবং সঠিক ক্ষমতাগুলোকে নির্মাণ এবং অনুমানের ওপর ছেড়ে দিয়ে বিষয়ে সম্পূর্ণ নীরব থাকতে পারত। যদি কনভেনশন কনফেডারেশনের দ্বিতীয় অনুচ্ছেদটি গ্রহণের প্রথম পদ্ধতিটি গ্রহণ করত, তবে এটি স্পষ্ট যে নতুন কংগ্রেস ক্রমাগত উন্মোচিত হত, যেমনটি তাদের পূর্বসূরিরা ছিলেন, "স্পষ্টভাবে" শব্দটি এত কঠোরতার সাথে ব্যাখ্যা করার বিকল্পের কাছে, যাতে সরকারকে যেকোনো বাস্তব কর্তৃত্ব থেকে নিরস্ত্র করা যায়, বা এত স্বাধীনতার সাথে যাতে বিধিনিষেধের শক্তি পুরোপুরি ধ্বংস হয়ে যায়।''
''এটি দেখানো সহজ হবে, যদি এটি প্রয়োজনীয় হত, যে কনফেডারেশনের অনুচ্ছেদগুলোর দ্বারা অর্পিত কোনো গুরুত্বপূর্ণ ক্ষমতা কংগ্রেস কর্তৃক নির্মাণ (CONSTRUCTION) বা নিহিতার্থের (IMPLICATION) মতবাদের কমবেশি আশ্রয় না নিয়ে কার্যকর করা হয়নি বা করা যেতে পারে না। যেহেতু নতুন ব্যবস্থার অধীনে অর্পিত ক্ষমতাগুলো আরও বিস্তৃত, তাই যে সরকারকে এটি পরিচালনা করতে হবে তারা কিছু না করে জনসাধারণের স্বার্থের সাথে বিশ্বাসঘাতকতা করার, বা অত্যন্ত প্রয়োজনীয় এবং সঠিক ক্ষমতা প্রয়োগ করে সংবিধান লঙ্ঘন করার, কিন্তু একই সাথে স্পষ্টভাবে (EXPRESSLY) মঞ্জুর না করার বিকল্পের সাথে নিজেকে আরও বেশি দুর্দশাগ্রস্ত দেখতে পাবে। যদি কনভেনশন তাদের অন্যান্য ক্ষমতাগুলো কার্যকর করার জন্য প্রয়োজনীয় এবং সঠিক ক্ষমতাগুলোর একটি ইতিবাচক গণনার চেষ্টা করত, তবে প্রচেষ্টাটিতে সংবিধান সম্পর্কিত প্রতিটি বিষয়ে আইনের একটি সম্পূর্ণ সারসংক্ষেপ জড়িত থাকত; যা কেবল বিদ্যমান অবস্থার সাথেই নয়, বরং ভবিষ্যত যে সমস্ত সম্ভাব্য পরিবর্তন আনতে পারে তার সাথেও সামঞ্জস্যপূর্ণ; কারণ একটি সাধারণ ক্ষমতার প্রতিটি নতুন প্রয়োগে, বিশেষ ক্ষমতাগুলো, যা সাধারণ ক্ষমতার উদ্দেশ্য অর্জনের উপায়, সর্বদা অগত্যা সেই উদ্দেশ্যের সাথে পরিবর্তিত হতে হবে এবং উদ্দেশ্যটি একই থাকা সত্ত্বেও প্রায়শই যথাযথভাবে পরিবর্তিত হবে।''
''যদি তারা সাধারণ ক্ষমতাগুলো কার্যকর করার জন্য প্রয়োজনীয় বা সঠিক নয় এমন বিশেষ ক্ষমতা বা উপায়গুলো গণনা করার চেষ্টা করত, তবে কাজটি কম কাল্পনিক হত না; এবং এই আরও আপত্তির জন্য দায়ী হত যে, গণনায় প্রতিটি ত্রুটি কর্তৃত্বের একটি ইতিবাচক অনুদানের সমতুল্য হত। যদি, এই পরিণতি এড়াতে, তারা ব্যতিক্রমগুলোর একটি আংশিক গণনার চেষ্টা করত এবং অবশিষ্ট অংশটিকে সাধারণ পদগুলোর দ্বারা বর্ণনা করত, প্রয়োজনীয় বা সঠিক নয় (NOT NECESSARY OR PROPER), তবে এটি অবশ্যই ঘটত যে গণনাটি বাদ দেওয়া ক্ষমতাগুলোর কেবল কয়েকটিকে অন্তর্ভুক্ত করত; যে এগুলো এমন হত যা ধরে নেওয়ার বা সহ্য করার সম্ভাবনা সবচেয়ে কম হত, কারণ গণনাটি অবশ্যই এমন নির্বাচন করত যা সবচেয়ে কম প্রয়োজনীয় বা সঠিক হত; এবং অবশিষ্টাংশে অন্তর্ভুক্ত অপ্রয়োজনীয় এবং অনুচিত ক্ষমতাগুলো আংশিক গণনা করা না হলে যতটুকু জোর দিয়ে বাদ দেওয়া হত তার চেয়ে কম জোর দিয়ে বাদ দেওয়া হত। যদি সংবিধানে এই বিষয়ে নীরবতা অবলম্বন করা হতো, তবে এতে কোনো সন্দেহ নেই যে সাধারণ ক্ষমতাগুলো কার্যকর করার মাধ্যম হিসেবে প্রয়োজনীয় সমস্ত বিশেষ ক্ষমতাগুলো এড়ানো যায় না এমন অনুমানের মাধ্যমে সরকারের হাতে অর্পিত হতো। আইনে বা যুক্তিতে এর চেয়ে স্পষ্টভাবে আর কোনো স্বতঃসিদ্ধ প্রতিষ্ঠিত হয়নি যে, যেখানে উদ্দেশ্য প্রয়োজন, সেখানে উপায়গুলো অনুমোদিত; যেখানে কোনো কাজ করার সাধারণ ক্ষমতা দেওয়া হয়, তা করার জন্য প্রয়োজনীয় প্রতিটি বিশেষ ক্ষমতা অন্তর্ভুক্ত থাকে। যদি, তাই, কনভেনশন এই শেষ পদ্ধতিটি অনুসরণ করত, তাদের পরিকল্পনার বিরুদ্ধে এখন বলা প্রতিটি আপত্তি তার সমস্ত যুক্তিসঙ্গততা নিয়েই থেকে যেত; এবং এমন একটি অজুহাত দূর না করার প্রকৃত অসুবিধা বহন করতে হতো যা ইউনিয়নের অপরিহার্য ক্ষমতাগুলোকে প্রশ্নের মুখে ফেলার জন্য সংকটময় মুহূর্তে ব্যবহার করা যেতে পারে। যদি প্রশ্ন করা হয় যে, কংগ্রেস যদি সংবিধানের এই অংশের ভুল ব্যাখ্যা করে এবং এর সত্য অর্থ দ্বারা অনুমোদিত নয় এমন ক্ষমতা প্রয়োগ করে, তবে তার পরিণতি কী হবে, আমি উত্তর দিই, তারা যদি তাদের ওপর ন্যস্ত অন্য কোনো ক্ষমতার ভুল ব্যাখ্যা করে বা প্রসারিত করে তবে যা হতো; যেন সাধারণ ক্ষমতাটিকে বিশেষে সংকুচিত করা হয়েছিল এবং সেগুলোর যেকোনো একটি লঙ্ঘিত হতো; সংক্ষেপে, যদি রাজ্য আইনসভাগুলো তাদের নিজ নিজ সাংবিধানিক কর্তৃত্বগুলো লঙ্ঘন করে তবে যা হতো, ঠিক তাই। প্রথম দৃষ্টান্তে, জবরদখলটির সাফল্য নির্বাহী এবং বিচার বিভাগগুলোর ওপর নির্ভর করবে, যাদের আইনী কাজগুলোর ব্যাখ্যা এবং কার্যকর করতে হবে; এবং শেষ উপায় হিসেবে একটি প্রতিকার এমন জনগণের কাছ থেকে পেতে হবে যারা আরও বিশ্বস্ত প্রতিনিধিদের নির্বাচনের মাধ্যমে জবরদখলকারীদের কাজগুলো বাতিল করতে পারে। সত্যটি হলো যে, রাজ্য আইনসভার চেয়ে ফেডারেল আইনসভার অসাংবিধানিক কাজের বিরুদ্ধে এই চূড়ান্ত প্রতিকারের ওপর বেশি আস্থা রাখা যেতে পারে, এই স্পষ্ট কারণে যে, পূর্ববর্তীটির এমন প্রতিটি কাজ পরবর্তীটির অধিকারের ওপর আক্রমণ হবে, এরা সর্বদা উদ্ভাবনটিকে চিহ্নিত করতে, জনগণের কাছে অ্যালার্ম বাজাতে এবং ফেডারেল প্রতিনিধিদের পরিবর্তনে প্রভাব ফেলতে তাদের স্থানীয় প্রভাব প্রয়োগ করতে প্রস্তুত থাকবে। রাজ্য আইনসভা এবং পূর্ববর্তীটির আচরণ পর্যবেক্ষণে আগ্রহী জনগণের মধ্যে এমন কোনো মধ্যবর্তী সংস্থা না থাকায়, রাজ্য সংবিধানের লঙ্ঘনগুলো অলক্ষ্য এবং অপ্রতিকারকৃত থাকার সম্ভাবনা বেশি। ২. "এই সংবিধান এবং মার্কিন যুক্তরাষ্ট্রের আইন যা এর অনুসরণে প্রণীত হবে, এবং মার্কিন যুক্তরাষ্ট্রের কর্তৃত্বের অধীনে প্রণীত সমস্ত চুক্তি, দেশের সর্বোচ্চ আইন হবে এবং প্রতিটি রাজ্যের বিচারকরা এর দ্বারা আবদ্ধ থাকবেন, কোনো রাজ্যের সংবিধানে বা আইনে বিপরীত যাই থাকুক না কেন।" সংবিধানের বিরোধীদের অবিবেচক উৎসাহ তাদের এর এই অংশেও আক্রমণ করতে বাধ্য করেছে, যা ছাড়া এটি স্পষ্টতই এবং আমূল ত্রুটিপূর্ণ হতো। এর সম্পর্কে সম্পূর্ণ সংবেদনশীল হওয়ার জন্য, আমাদের কেবল এক মুহূর্তের জন্য ধরে নিতে হবে যে রাজ্য সংবিধানগুলোর শ্রেষ্ঠত্ব তাদের পক্ষে একটি সংরক্ষক ধারার দ্বারা সম্পূর্ণ রেখে দেওয়া হয়েছিল। প্রথমত, যেহেতু এই সংবিধানগুলো বিদ্যমান কনফেডারেশনের অনুচ্ছেদগুলোর দ্বারা বাদ দেওয়া হয়নি এমন সমস্ত ক্ষেত্রে রাজ্য আইনসভাগুলোকে পরম সার্বভৌমত্ব দিয়ে বিনিয়োগ করে, প্রস্তাবিত সংবিধানে থাকা সমস্ত কর্তৃপক্ষ, যতক্ষণ না সেগুলো কনফেডারেশনে গণনাকৃতদের ছাড়িয়ে যায়, বাতিল করা হতো, এবং নতুন কংগ্রেসকে তাদের পূর্বসূরিদের মতো একই শক্তিহীন অবস্থায় নামিয়ে আনা হতো। দ্বিতীয়ত, যেহেতু কিছু রাজ্যের সংবিধান কনফেডারেন্সির বিদ্যমান ক্ষমতাগুলোকে স্পষ্টভাবে এবং পুরোপুরি স্বীকৃতিও দেয় না, পূর্ববর্তীটির শ্রেষ্ঠত্বের একটি স্পষ্ট সংরক্ষণ, এমন রাজ্যগুলোতে, প্রস্তাবিত সংবিধানে থাকা প্রতিটি ক্ষমতাকে প্রশ্নের মুখে ফেলত। তৃতীয়ত, যেহেতু রাজ্যগুলোর সংবিধান একে অপরের থেকে অনেক আলাদা, এটি ঘটতে পারে যে রাজ্যগুলোর জন্য মহান এবং সমান গুরুত্বপূর্ণ একটি চুক্তি বা জাতীয় আইন, কিছু সংবিধানের সাথে হস্তক্ষেপ করবে এবং অন্যদের সাথে করবে না, এবং ফলস্বরূপ কিছু রাজ্যে বৈধ হবে, একই সময়ে যে এটি অন্যদের কোনো প্রভাব ফেলবে না। পরিশেষে, বিশ্ব প্রথমবারের মতো সমস্ত সরকারের মৌলিক নীতিগুলোর একটি বিপর্যয়ের ওপর প্রতিষ্ঠিত একটি সরকার ব্যবস্থা দেখত; এটি সর্বত্র সমগ্র সমাজের কর্তৃত্বকে অংশগুলোর কর্তৃত্বের অধীনস্থ হতে দেখত; এটি এমন একটি দানব দেখত, যার মাথাটি সদস্যদের নির্দেশনার অধীনে ছিল। ৩. "সিনেটর এবং প্রতিনিধিরা, এবং বিভিন্ন রাজ্য আইনসভার সদস্যরা, এবং মার্কিন যুক্তরাষ্ট্র এবং বিভিন্ন রাজ্যের সমস্ত নির্বাহী ও বিচার বিভাগীয় কর্মকর্তারা এই সংবিধানকে সমর্থন করার জন্য শপথ বা ঘোষণার দ্বারা আবদ্ধ হবেন।" এটি জিজ্ঞাসা করা হয়েছে যে কেন রাজ্য ম্যাজিস্ট্রেসিকে ফেডারেল সংবিধান সমর্থন করতে বাধ্য হওয়া প্রয়োজনীয় বলে মনে করা হয়েছিল, এবং রাজ্য সংবিধানের পক্ষে মার্কিন যুক্তরাষ্ট্রের কর্মকর্তাদের ওপর অনুরূপ শপথ চাপিয়ে দেওয়া অপ্রয়োজনীয় বলে মনে করা হয়েছিল। পার্থক্যের জন্য বেশ কয়েকটি কারণ নির্ধারণ করা যেতে পারে। আমি নিজেকে একটি দিয়ে সন্তুষ্ট করি, যা স্পষ্ট এবং চূড়ান্ত। রাজ্য সংবিধানগুলো কার্যকর করতে ফেডারেল সরকারের সদস্যদের কোনো সংস্থা থাকবে না। বিপরীতে, রাজ্য সরকারগুলোর সদস্যদের এবং কর্মকর্তাদের ফেডারেল সংবিধান কার্যকর করতে একটি অপরিহার্য সংস্থা থাকবে। রাষ্ট্রপতি এবং সিনেটের নির্বাচন সমস্ত ক্ষেত্রে বিভিন্ন রাজ্যের আইনসভাগুলোর ওপর নির্ভর করবে। এবং প্রতিনিধি পরিষদের নির্বাচন প্রথম দৃষ্টান্তে একই কর্তৃত্বের ওপর সমানভাবে নির্ভর করবে; এবং সম্ভবত, চিরকাল রাজ্যের কর্মকর্তাদের দ্বারা এবং আইন অনুসারে পরিচালিত হবে। ৪. ফেডারেল ক্ষমতাগুলোকে কার্যকারিতা দেওয়ার বিধানগুলোর মধ্যে নির্বাহী এবং বিচার বিভাগগুলোর অন্তর্গতগুলো যুক্ত করা যেতে পারে: তবে যেহেতু এগুলো অন্য জায়গায় বিশেষ পরীক্ষার জন্য সংরক্ষিত, আমি এখানে এগুলো এড়িয়ে যাচ্ছি। আমরা এখন বিস্তারিতভাবে পর্যালোচনা করেছি, প্রস্তাবিত সংবিধানের দ্বারা ফেডারেল সরকারের কাছে ন্যস্ত ক্ষমতার যোগফল বা পরিমাণ রচনা করা সমস্ত অনুচ্ছেদ, এবং এই অনস্বীকার্য সিদ্ধান্তে নিয়ে আসা হয়েছি, যে ক্ষমতার কোনো অংশই ইউনিয়নের প্রয়োজনীয় উদ্দেশ্যগুলো সাধনের জন্য অপ্রয়োজনীয় বা অনুচিত নয়। তাই প্রশ্নটি হলো যে, এই পরিমাণ ক্ষমতা মঞ্জুর করা হবে কি না, তা অন্য একটি প্রশ্নের সমাধান করে, যে ইউনিয়নের জরুরি অবস্থার সাথে সামঞ্জস্যপূর্ণ একটি সরকার প্রতিষ্ঠিত হবে কি না; বা অন্য কথায়, ইউনিয়ন নিজেই সংরক্ষিত হবে কি না।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি পৃথক অঙ্গরাজ্যগুলোর ক্ষমতার ওপর সংবিধানের সীমাবদ্ধতা নিয়ে আলোচনা করে, যাকে অ্যান্টি-ফেডারালিস্টরা কঠোরভাবে নিন্দা করেছিল, যারা অঙ্গরাজ্যগুলোর জন্য আরও বেশি মাত্রায় সার্বভৌমত্ব চেয়েছিল।
==ফেডারালিস্ট নং ৪৫==
ফেডারালিস্ট নং ৪৫-এর শিরোনাম হলো ''"ইউনিয়নের ক্ষমতা থেকে অঙ্গরাজ্য সরকারগুলোর প্রতি কথিত বিপদ বিবেচনা"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''যেহেতু দেখানো হয়েছে যে ফেডারেল সরকারের কাছে হস্তান্তরিত ক্ষমতার কোনোটিই অপ্রয়োজনীয় বা অনুচিত নয়, তাই পরবর্তী বিবেচ্য প্রশ্নটি হলো, এই সমস্ত ক্ষমতার সমষ্টি বিভিন্ন অঙ্গরাজ্যের হাতে অবশিষ্ট থাকা কর্তৃত্বের অংশের জন্য বিপজ্জনক হবে কিনা। কনভেনশনের পরিকল্পনার বিরোধীরা, প্রথমে ফেডারেল সরকারের উদ্দেশ্যগুলোর জন্য কতটা ক্ষমতা একেবারে প্রয়োজনীয় ছিল তা বিবেচনা করার পরিবর্তে, নির্দিষ্ট অঙ্গরাজ্যগুলোর সরকারগুলোর ওপর প্রস্তাবিত মাত্রার ক্ষমতার সম্ভাব্য পরিণতি সম্পর্কে একটি গৌণ অনুসন্ধানে নিজেদের ক্লান্ত করেছেন। কিন্তু যদি ইউনিয়ন, যেমনটি দেখানো হয়েছে, বিদেশি বিপদের বিরুদ্ধে আমেরিকার জনগণের নিরাপত্তার জন্য অপরিহার্য হয়; যদি এটি বিভিন্ন অঙ্গরাজ্যের মধ্যে বিবাদ এবং যুদ্ধের বিরুদ্ধে তাদের নিরাপত্তার জন্য অপরিহার্য হয়; যদি এটি তাদের সেই হিংস্র এবং নিপীড়ক দলগুলোর বিরুদ্ধে রক্ষা করার জন্য অপরিহার্য হয় যা স্বাধীনতার আশীর্বাদগুলোকে তিক্ত করে তোলে, এবং সেই সামরিক প্রতিষ্ঠানগুলোর বিরুদ্ধে যা ধীরে ধীরে এর একেবারে উৎসকে বিষাক্ত করে তুলবে; এক কথায়, ইউনিয়ন যদি আমেরিকার জনগণের সুখের জন্য অপরিহার্য হয়, তবে কি এমন একটি সরকারের বিরুদ্ধে আপত্তি তোলা অযৌক্তিক নয়, যা ছাড়া ইউনিয়নের উদ্দেশ্যগুলো অর্জন করা যায় না, যে এমন একটি সরকার পৃথক অঙ্গরাজ্যগুলোর সরকারগুলোর গুরুত্ব হ্রাস করতে পারে? তাহলে কি আমেরিকান বিপ্লব সাধিত হয়েছিল, আমেরিকান কনফেডারেসি গঠিত হয়েছিল, হাজার হাজার মানুষের মূল্যবান রক্তপাত হয়েছিল, এবং লক্ষ লক্ষ মানুষের কষ্টার্জিত সম্পদ ব্যয় করা হয়েছিল, এজন্য নয় যে আমেরিকার জনগণ শান্তি, স্বাধীনতা এবং নিরাপত্তা উপভোগ করবে, বরং এজন্য যে পৃথক অঙ্গরাজ্যগুলোর সরকার, সেই নির্দিষ্ট পৌর প্রতিষ্ঠানগুলো ক্ষমতার একটি নির্দিষ্ট পরিধি উপভোগ করতে পারে, এবং সার্বভৌমত্বের নির্দিষ্ট মর্যাদা এবং বৈশিষ্ট্যগুলোতে সজ্জিত হতে পারে? আমরা পুরোনো বিশ্বে এই অধার্মিক মতবাদ সম্পর্কে শুনেছি যে, জনগণ রাজাদের জন্য তৈরি হয়েছিল, রাজারা জনগণের জন্য নয়। একই মতবাদ কি নতুন বিশ্বে, অন্য আকারে পুনরুজ্জীবিত হতে চলেছে যে জনগণের দৃঢ় সুখকে ভিন্ন রূপের রাজনৈতিক প্রতিষ্ঠানগুলোর দৃষ্টিভঙ্গির জন্য উৎসর্গ করা হবে? রাজনীতিবিদদের পক্ষে এটা ধরে নেওয়া খুব তাড়াতাড়ি যে আমরা ভুলে যাব যে জনসাধারণের মঙ্গল, বিপুল সংখ্যক মানুষের প্রকৃত কল্যাণই হলো অনুসরণ করার সর্বোচ্চ উদ্দেশ্য; এবং যে কোনো রূপের সরকারের অন্য কোনো মূল্য নেই যতক্ষণ না এটি এই উদ্দেশ্য অর্জনের জন্য উপযুক্ত হতে পারে। কনভেনশনের পরিকল্পনা যদি জনসাধারণের সুখের প্রতিকূল হতো, তবে আমার কণ্ঠস্বর হতো, পরিকল্পনাটি প্রত্যাখ্যান করুন। যদি ইউনিয়ন নিজেই জনসাধারণের সুখের সাথে অসামঞ্জস্যপূর্ণ হতো, তবে এটি হতো, ইউনিয়ন বাতিল করুন। একইভাবে, যতদূর রাজ্যগুলোর সার্বভৌমত্ব জনগণের সুখের সাথে সামঞ্জস্যপূর্ণ করা যায় না, প্রতিটি ভালো নাগরিকের কণ্ঠস্বর হতে হবে,''
''পূর্ববর্তীটিকে পরবর্তীটির জন্য উৎসর্গ করা হোক। এই ত্যাগ কতটা প্রয়োজনীয়, তা দেখানো হয়েছে। অবশিষ্ট অংশ কতটা বিপন্ন হবে, তা আমাদের সামনের প্রশ্ন। এই কাগজপত্রের গতিপথে বেশ কয়েকটি গুরুত্বপূর্ণ বিবেচ্য বিষয় স্পর্শ করা হয়েছে, যা এই অনুমানকে নিরুৎসাহিত করে যে ফেডারেল সরকারের কার্যক্রম ধীরে ধীরে রাজ্য সরকারগুলোর জন্য মারাত্মক প্রমাণিত হবে। আমি বিষয়টি যত বেশি ঘুরাই, তত বেশি আমি নিশ্চিত হই যে প্রথম স্কেলের চেয়ে শেষ স্কেলের প্রাধান্যের দ্বারা ভারসাম্য বিঘ্নিত হওয়ার সম্ভাবনা অনেক বেশি। আমরা প্রাচীন এবং আধুনিক কনফেডারেসির সমস্ত উদাহরণে দেখেছি, সদস্যদের মধ্যে একটি শক্তিশালী প্রবণতা ক্রমাগত নিজেকে প্রকাশ করে, সাধারণ সরকারকে তার কর্তৃত্ব থেকে বঞ্চিত করার জন্য, পরবর্তীটির নিজের রক্ষা করার খুব অকার্যকর ক্ষমতা সহ। যদিও, এই উদাহরণগুলোর বেশিরভাগ ক্ষেত্রে, সিস্টেমটি বিবেচনাধীন সিস্টেমের থেকে এতটাই আলাদা ছিল যে পূর্ববর্তীটির ভাগ্য থেকে পরবর্তীটি সম্পর্কে কোনো অনুমানকে ব্যাপকভাবে দুর্বল করে দেয়, তবুও, যেহেতু রাজ্যগুলো প্রস্তাবিত সংবিধানের অধীনে সক্রিয় সার্বভৌমত্বের একটি খুব বিস্তৃত অংশ ধরে রাখবে, তাই অনুমানটি পুরোপুরি উপেক্ষা করা উচিত নয়। অ্যাকিয়ান লিগে এটি সম্ভাব্য যে ফেডারেল প্রধানের একটি মাত্রা এবং ক্ষমতার প্রজাতি ছিল, যা এটিকে কনভেনশন দ্বারা গঠিত সরকারের সাথে যথেষ্ট সাদৃশ্য দিয়েছিল। লাইসিয়ান কনফেডারেসি, যতদূর এর নীতি এবং রূপ প্রেরণ করা হয়, অবশ্যই এর সাথে আরও বেশি সাদৃশ্য বহন করেছে। তবুও ইতিহাস আমাদের জানায় না যে এগুলোর কোনোটিই কখনো অবক্ষয়িত হয়েছিল, বা একটি একত্রিত সরকারে পরিণত হওয়ার প্রবণতা দেখিয়েছিল। বিপরীতে, আমরা জানি যে তাদের একটির ধ্বংস সাবঅর্ডিনেট কর্তৃপক্ষগুলোর মতবিরোধ এবং শেষ পর্যন্ত বিচ্ছিন্নতা রোধে ফেডারেল কর্তৃপক্ষের অক্ষমতা থেকে উদ্ভূত হয়েছিল। এই ঘটনাগুলো আমাদের মনোযোগের আরও যোগ্য, কারণ বাহ্যিক কারণগুলো যার দ্বারা উপাদান অংশগুলোকে একসাথে চাপ দেওয়া হয়েছিল তা আমাদের ক্ষেত্রের চেয়ে অনেক বেশি অসংখ্য এবং শক্তিশালী ছিল; এবং ফলস্বরূপ সদস্যদের মাথার সাথে এবং একে অপরের সাথে আবদ্ধ করার জন্য কম শক্তিশালী লিগামেন্ট যথেষ্ট হবে। সামন্ততান্ত্রিক ব্যবস্থায়, আমরা অনুরূপ প্রবণতার উদাহরণ দেখেছি। স্থানীয় সার্বভৌম এবং জনগণের মধ্যে প্রতিটি ক্ষেত্রে যথাযথ সহানুভূতির অভাব, এবং কিছু ক্ষেত্রে সাধারণ সার্বভৌম এবং পরবর্তীটির মধ্যে সহানুভূতি থাকা সত্ত্বেও, এটি সাধারণত ঘটেছিল যে স্থানীয় সার্বভৌমরা জবরদখলের প্রতিদ্বন্দ্বিতায় জয়লাভ করেছিল।''
''যদি কোনো বাহ্যিক বিপদ অভ্যন্তরীণ সম্প্রীতি এবং অধীনতা প্রয়োগ না করত, এবং বিশেষ করে, যদি স্থানীয় সার্বভৌমরা জনগণের স্নেহ ধারণ করত, তবে ইউরোপের মহান রাজ্যগুলো এই সময়ে ততগুলো স্বাধীন রাজপুত্র নিয়ে গঠিত হতো যতগুলো পূর্বে সামন্ত ব্যারন ছিল। রাজ্য সরকার ফেডারেল সরকারের সুবিধা পাবে, আমরা তাদের একে অপরের ওপর একজনের তাৎক্ষণিক নির্ভরতার বিষয়ে তুলনা করি কিনা; ব্যক্তিগত প্রভাবের ওজনের ক্ষেত্রে যা প্রতিটি পক্ষ ধারণ করবে; তাদের ওপর অর্পিত ক্ষমতাগুলোর ক্ষেত্রে; জনগণের পূর্বানুরাগ এবং সম্ভাব্য সমর্থনের ক্ষেত্রে; একে অপরের পদক্ষেপগুলো প্রতিহত এবং হতাশ করার স্বভাব এবং অনুষদের ক্ষেত্রে। রাজ্য সরকারগুলোকে ফেডারেল সরকারের উপাদান এবং অপরিহার্য অংশ হিসেবে বিবেচনা করা যেতে পারে; যেখানে পরবর্তীটি কোনোভাবেই পূর্ববর্তীটির কার্যক্রম বা সংগঠনের জন্য অপরিহার্য নয়। রাজ্য আইনসভাগুলোর হস্তক্ষেপ ছাড়া, মার্কিন যুক্তরাষ্ট্রের রাষ্ট্রপতি আদৌ নির্বাচিত হতে পারবেন না। তার নিয়োগে তাদের সর্বদা একটি বড় অংশ থাকতে হবে, এবং সম্ভবত, বেশিরভাগ ক্ষেত্রেই তারা নিজেরাই এটি নির্ধারণ করবে। সিনেট একেবারে এবং একচেটিয়াভাবে রাজ্য আইনসভা দ্বারা নির্বাচিত হবে। এমনকি প্রতিনিধি পরিষদ, যদিও সরাসরি জনগণের কাছ থেকে নেওয়া হয়, তবে সেই শ্রেণির পুরুষদের প্রভাবের অধীনে খুব বেশি নির্বাচিত হবে, যাদের জনগণের ওপর প্রভাব তাদের রাজ্য আইনসভাগুলোতে নির্বাচনের সুযোগ করে দেয়। এইভাবে, ফেডারেল সরকারের প্রধান শাখাগুলোর প্রতিটি কমবেশি রাজ্য সরকারগুলোর অনুগ্রহের কাছে তার অস্তিত্বের ঋণী হবে, এবং ফলস্বরূপ এমন একটি নির্ভরতা অনুভব করতে হবে, যা তাদের প্রতি খুব বেশি আধিপত্য বিস্তারের চেয়ে খুব বেশি আজ্ঞাবহ স্বভাব তৈরি করার সম্ভাবনা অনেক বেশি। অন্যদিকে, রাজ্য সরকারগুলোর উপাদান অংশগুলো কোনো ক্ষেত্রেই ফেডারেল সরকারের প্রত্যক্ষ সংস্থার কাছে তাদের নিয়োগের জন্য ঋণী হবে না, এবং খুব কম, যদি একেবারেই হয়, এর সদস্যদের স্থানীয় প্রভাবের কাছে। মার্কিন যুক্তরাষ্ট্রের সংবিধানের অধীনে নিযুক্ত ব্যক্তির সংখ্যা নির্দিষ্ট রাজ্যগুলোর অধীনে নিযুক্ত সংখ্যার চেয়ে অনেক কম হবে।''
''ফলস্বরূপ পূর্ববর্তীটির পক্ষে পরবর্তীটির চেয়ে ব্যক্তিগত প্রভাব কম থাকবে। তেরো এবং ততোধিক রাজ্যের আইনসভা, নির্বাহী এবং বিচার বিভাগীয় বিভাগের সদস্য, শান্তিরক্ষক, মিলিশিয়া কর্মকর্তা, বিচার বিভাগের মন্ত্রী পর্যায়ের কর্মকর্তা, সমস্ত কাউন্টি, কর্পোরেশন এবং শহরের কর্মকর্তাদের সাথে, ত্রিশ লক্ষেরও বেশি মানুষের জন্য, একে অপরের সাথে মিশে থাকা এবং প্রতিটি শ্রেণি এবং বৃত্তের মানুষের সাথে বিশেষ পরিচিতি থাকা, ফেডারেল সিস্টেমের প্রশাসনে নিযুক্ত প্রতিটি বর্ণনার লোকদের সংখ্যা এবং প্রভাব উভয় ক্ষেত্রেই সমস্ত অনুপাত ছাড়িয়ে যেতে হবে। তেরোটি রাজ্যের তিনটি মহান বিভাগের সদস্যদের সাথে ইউনিয়নের একক সরকারের সংশ্লিষ্ট বিভাগের সদস্যদের তুলনা করুন, বিচার বিভাগ থেকে শান্তিরক্ষকদের বাদ দিয়ে; ত্রিশ লক্ষ লোকের মিলিশিয়া কর্মকর্তাদের যেকোনো প্রতিষ্ঠানের সামরিক এবং সামুদ্রিক কর্মকর্তাদের সাথে তুলনা করুন যা সম্ভাবনার সীমার মধ্যে রয়েছে, বা, আমি যোগ করতে পারি, সম্ভাবনার, এবং কেবল এই দৃষ্টিকোণ থেকেই, আমরা রাজ্যগুলোর সুবিধাকে নির্ণায়ক হিসেবে ঘোষণা করতে পারি। ফেডারেল সরকারের যদি রাজস্ব সংগ্রাহক থাকে, তবে রাজ্য সরকারগুলোরও তাদের থাকবে। এবং যেহেতু পূর্ববর্তীটির সংগ্রাহকরা প্রধানত সমুদ্র উপকূলে থাকবে, এবং খুব বেশি অসংখ্য হবে না, যেখানে পরবর্তীটির সংগ্রাহকরা দেশের মুখ জুড়ে ছড়িয়ে পড়বে, এবং খুব অসংখ্য হবে, এই দৃষ্টিকোণ থেকেও সুবিধা একই দিকে রয়েছে।''
''এটি সত্য যে, কনফেডারেশন রাজ্যগুলো জুড়ে বাহ্যিক পাশাপাশি অভ্যন্তরীণ কর সংগ্রহের ক্ষমতার অধিকারী হবে এবং তা প্রয়োগ করতে পারে; তবে এটি সম্ভাব্য যে এই ক্ষমতার আশ্রয় নেওয়া হবে না, কেবল রাজস্বের পরিপূরক উদ্দেশ্যগুলো ছাড়া; যে একটি বিকল্প তখন রাজ্যগুলোকে তাদের নিজস্ব পূর্ববর্তী সংগ্রহের মাধ্যমে তাদের কোটা সরবরাহ করার জন্য দেওয়া হবে; এবং যে চূড়ান্ত সংগ্রহ, ইউনিয়নের তাৎক্ষণিক কর্তৃত্বের অধীনে, সাধারণত বিভিন্ন রাজ্য দ্বারা নিযুক্ত কর্মকর্তাদের দ্বারা এবং নিয়ম অনুসারে করা হবে। প্রকৃতপক্ষে এটি অত্যন্ত সম্ভাব্য যে, অন্যান্য ক্ষেত্রে, বিশেষ করে বিচারিক ক্ষমতার সংগঠনে, রাজ্যগুলোর কর্মকর্তাদের ইউনিয়নের সংশ্লিষ্ট কর্তৃত্ব দিয়ে সজ্জিত করা হবে।''
''তবে যদি এমনটি ঘটে যে ফেডারেল সরকারের অধীনে অভ্যন্তরীণ রাজস্বের পৃথক সংগ্রাহক নিয়োগ করা হয়, তবে পুরো সংখ্যার প্রভাব বিপরীত স্কেলে রাজ্য কর্মকর্তাদের ভিড়ের সাথে তুলনীয় হবে না।''
''যে প্রতিটি জেলায় একজন ফেডারেল কালেক্টর বরাদ্দ করা হবে, সেখানে ত্রিশ বা চল্লিশ, বা তারও বেশি, বিভিন্ন বর্ণনার কর্মকর্তা থাকবে না, এবং তাদের মধ্যে অনেকেই চরিত্র ও ওজনের ব্যক্তি, যাদের প্রভাব রাজ্যের পক্ষে থাকবে। প্রস্তাবিত সংবিধান দ্বারা ফেডারেল সরকারের কাছে অর্পিত ক্ষমতাগুলো কম এবং সংজ্ঞায়িত। যে ক্ষমতাগুলো রাজ্য সরকারগুলোতে থাকবে তা অসংখ্য এবং অনির্দিষ্ট। পূর্ববর্তীটি প্রধানত বাহ্যিক বিষয়গুলোতে প্রয়োগ করা হবে, যেমন যুদ্ধ, শান্তি, আলোচনা এবং বৈদেশিক বাণিজ্য; যার শেষের সাথে কর আরোপের ক্ষমতা, বেশিরভাগ অংশের জন্য, সংযুক্ত থাকবে। বিভিন্ন রাজ্যের জন্য সংরক্ষিত ক্ষমতাগুলো সেই সমস্ত বিষয়গুলোতে প্রসারিত হবে যা, বিষয়গুলোর সাধারণ গতিপথে, মানুষের জীবন, স্বাধীনতা এবং সম্পত্তি এবং রাজ্যের অভ্যন্তরীণ শৃঙ্খলা, উন্নতি এবং সমৃদ্ধির সাথে সম্পর্কিত। ফেডারেল সরকারের কার্যক্রম যুদ্ধ এবং বিপদের সময়ে সবচেয়ে বিস্তৃত এবং গুরুত্বপূর্ণ হবে; রাজ্য সরকারগুলোর কার্যক্রম, শান্তি এবং নিরাপত্তার সময়ে। যেহেতু পূর্ববর্তী সময়কালগুলো সম্ভবত পরবর্তীটির তুলনায় একটি ছোট অনুপাত বহন করবে, তাই রাজ্য সরকারগুলো এখানে ফেডারেল সরকারের ওপর আরেকটি সুবিধা উপভোগ করবে। প্রকৃতপক্ষে, জাতীয় প্রতিরক্ষার জন্য ফেডারেল ক্ষমতাগুলো যত বেশি পর্যাপ্ত হবে, বিপদের সেই দৃশ্যগুলো তত কম ঘন ঘন হবে যা নির্দিষ্ট রাজ্যগুলোর সরকারগুলোর ওপর তাদের আধিপত্যকে সমর্থন করতে পারে। যদি নতুন সংবিধান নির্ভুলতা এবং সততার সাথে পরীক্ষা করা হয়, তবে দেখা যাবে যে এটি যে পরিবর্তনের প্রস্তাব করে তা ইউনিয়নে নতুন ক্ষমতা যুক্ত করার চেয়ে এর মূল ক্ষমতাগুলোকে শক্তিশালী করার মধ্যে অনেক কম নিহিত। বাণিজ্যের নিয়ন্ত্রণ, এটি সত্য, একটি নতুন ক্ষমতা; তবে এটি এমন একটি সংযোজন বলে মনে হয় যার খুব কম লোকই বিরোধিতা করে এবং যা থেকে কোনো আশঙ্কার সৃষ্টি হয় না। যুদ্ধ এবং শান্তি, সেনাবাহিনী এবং নৌবহর, চুক্তি এবং অর্থ, অন্যান্য আরও উল্লেখযোগ্য ক্ষমতাগুলোর সাথে সম্পর্কিত ক্ষমতাগুলো সবই কনফেডারেশনের অনুচ্ছেদগুলোর দ্বারা বিদ্যমান কংগ্রেসের ওপর ন্যস্ত। প্রস্তাবিত পরিবর্তন এই ক্ষমতাগুলোকে বড় করে না; এটি কেবল সেগুলো পরিচালনার একটি আরও কার্যকর মোড প্রতিস্থাপন করে। কর আরোপের সাথে সম্পর্কিত পরিবর্তনটিকে সবচেয়ে গুরুত্বপূর্ণ বলে মনে করা যেতে পারে; এবং তবুও বর্তমান কংগ্রেসের সাধারণ প্রতিরক্ষা এবং সাধারণ কল্যাণের জন্য রাজ্যগুলোর কাছ থেকে অনির্দিষ্ট অর্থের সরবরাহের দাবি করার সম্পূর্ণ কর্তৃত্ব রয়েছে, যেমনটি ভবিষ্যতের কংগ্রেসের পৃথক নাগরিকদের কাছ থেকে তাদের দাবি করার জন্য থাকবে; এবং পরবর্তীটি রাজ্যগুলোর নিজেদের চেয়ে বেশি বাধ্য হবে না, তাদের ওপর যথাক্রমে কর ধার্য করা কোটা পরিশোধ করতে। যদি রাজ্যগুলো সময়ানুবর্তিতার সাথে কনফেডারেশনের অনুচ্ছেদগুলো মেনে চলত, বা একক ব্যক্তিদের প্রতি সাফল্যের সাথে ব্যবহার করা যেতে পারে এমন শান্তিপূর্ণ উপায়ে তাদের সম্মতি প্রয়োগ করা যেত, তবে আমাদের অতীত অভিজ্ঞতা এমন একটি মতামতকে সমর্থন করা থেকে অনেক দূরে যে, রাজ্য সরকারগুলো তাদের সাংবিধানিক ক্ষমতা হারাত এবং ধীরে ধীরে একটি সম্পূর্ণ একত্রীকরণের মধ্য দিয়ে যেত। এমন একটি ঘটনা ঘটত বলে বজায় রাখা মানে একবারে বলা যে, রাজ্য সরকারগুলোর অস্তিত্ব ইউনিয়নের প্রয়োজনীয় উদ্দেশ্যগুলো সাধনকারী যেকোনো ব্যবস্থার সাথে বেমানান।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি প্রস্তাবিত মার্কিন যুক্তরাষ্ট্রের সংবিধানের অধীনে ফেডারেল সরকারের শক্তি পৃথক অঙ্গরাজ্যগুলোর জন্য কোনো বিপদ সৃষ্টি করে কিনা তা পরীক্ষা করে, যা অ্যান্টি-ফেডারালিস্টদের একটি প্রধান উদ্বেগের বিষয় ছিল।
==ফেডারালিস্ট নং ৪৬==
ফেডারালিস্ট নং ৪৬-এর শিরোনাম হলো ''"অঙ্গরাজ্য এবং ফেডারেল সরকারের প্রভাবের তুলনা"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''গত প্রবন্ধের বিষয়টি পুনরায় শুরু করে, জনগণের পূর্বানুরাগ এবং সমর্থনের ক্ষেত্রে ফেডারেল সরকার নাকি অঙ্গরাজ্য সরকারগুলো সুবিধাজনক অবস্থানে থাকবে, তা অনুসন্ধান করতে আমি অগ্রসর হচ্ছি। তাদের নিযুক্তির ভিন্ন ভিন্ন পদ্ধতি থাকা সত্ত্বেও, আমাদের উভয়কেই মার্কিন যুক্তরাষ্ট্রের বৃহৎ নাগরিক সমাজের ওপর যথেষ্ট নির্ভরশীল হিসেবে বিবেচনা করতে হবে।''
''প্রথমটির ক্ষেত্রে আমি এখানে এই অবস্থানটি ধরে নিচ্ছি এবং প্রমাণগুলো অন্য জায়গার জন্য সংরক্ষিত রাখছি। ফেডারেল এবং অঙ্গরাজ্য সরকারগুলো আসলে জনগণের ভিন্ন ভিন্ন প্রতিনিধি এবং ট্রাস্টি, যারা ভিন্ন ভিন্ন ক্ষমতা নিয়ে গঠিত এবং ভিন্ন ভিন্ন উদ্দেশ্যে পরিকল্পিত। সংবিধানের বিরোধীরা এই বিষয়ে তাদের যুক্তিতর্কে জনগণকে পুরোপুরি দৃষ্টির আড়ালে রেখেছেন বলে মনে হয়; এবং এই ভিন্ন ভিন্ন প্রতিষ্ঠানগুলোকে কেবল পারস্পরিক প্রতিদ্বন্দ্বী এবং শত্রু হিসেবেই নয়, বরং একে অপরের কর্তৃত্ব জবরদখল করার প্রচেষ্টায় কোনো সাধারণ ঊর্ধ্বতন কর্তৃপক্ষের নিয়ন্ত্রণমুক্ত হিসেবেও দেখেছেন। এই ভদ্রলোকদের এখানে তাদের ভুলের কথা মনে করিয়ে দেওয়া আবশ্যক। তাদের অবশ্যই জানাতে হবে যে চূড়ান্ত কর্তৃত্ব, তার উদ্ভব যেখানেই হোক না কেন, কেবল জনগণের হাতেই নিহিত, এবং এটি কেবল ভিন্ন ভিন্ন সরকারের তুলনামূলক উচ্চাকাঙ্ক্ষা বা পরিচালনার ওপর নির্ভর করবে না যে, তাদের মধ্যে কোনটি বা কোনোটি অন্যটির ব্যয়ে নিজের এক্তিয়ারভুক্ত এলাকা সম্প্রসারিত করতে সক্ষম হবে কিনা। শালীনতার চেয়ে সত্য কম দাবি করে না যে, প্রতিটি ক্ষেত্রেই ঘটনাটি তাদের সাধারণ নির্বাচকদের অনুভূতি এবং অনুমোদনের ওপর নির্ভরশীল বলে ধরে নেওয়া উচিত। পূর্ববর্তী একটি উপলক্ষে প্রস্তাবিত বিবেচনাগুলো ছাড়াও আরও অনেক বিবেচনা এটি সন্দেহের অতীত বলে মনে করে যে জনগণের প্রথম এবং সবচেয়ে স্বাভাবিক অনুরাগ তাদের নিজ নিজ অঙ্গরাজ্যের সরকারগুলোর প্রতিই থাকবে।''
''এগুলোর প্রশাসনে বিপুল সংখ্যক ব্যক্তি উন্নতির আশা করবেন। এগুলোর উপহার থেকে বিপুল সংখ্যক পদ এবং পারিশ্রমিক প্রবাহিত হবে। এগুলোর তত্ত্বাবধায়ক যত্নের মাধ্যমে, জনগণের আরও বেশি গার্হস্থ্য এবং ব্যক্তিগত স্বার্থ নিয়ন্ত্রিত ও সুরক্ষিত হবে। এগুলোর বিষয়াদির সাথে, জনগণ আরও বেশি পরিচিত এবং সূক্ষ্মভাবে ওয়াকিবহাল থাকবেন। এবং এগুলোর সদস্যদের সাথে, জনগণের একটি বড় অংশের ব্যক্তিগত পরিচিতি এবং বন্ধুত্বের, এবং পারিবারিক ও দলীয় অনুরাগের বন্ধন থাকবে; তাই এগুলোর পক্ষে জনপ্রিয় পক্ষপাতিত্ব সবচেয়ে দৃঢ়ভাবে ঝুঁকে পড়বে বলে আশা করা যায়। অভিজ্ঞতাও এই ক্ষেত্রে একই কথা বলে। ফেডারেল প্রশাসন, যদিও একটি উন্নত ব্যবস্থার অধীনে যা আশা করা যেতে পারে তার তুলনায় এযাবৎকাল পর্যন্ত অত্যন্ত ত্রুটিপূর্ণ, তা সত্ত্বেও যুদ্ধের সময়, এবং বিশেষ করে যখন কাগজের মুদ্রা ইস্যুর স্বাধীন তহবিলের গ্রহণযোগ্যতা ছিল, তখন এর কার্যকলাপ এবং গুরুত্ব এমন মাত্রায় ছিল যা ভবিষ্যতের যেকোনো পরিস্থিতিতে এর পক্ষে থাকা সম্ভব।''
''এটি এমন সব পদক্ষেপের সাথেও যুক্ত ছিল যার উদ্দেশ্য ছিল প্রিয় সবকিছুর সুরক্ষা এবং সাধারণভাবে জনগণের জন্য আকাঙ্ক্ষিত সবকিছু অর্জন করা। তা সত্ত্বেও, প্রাথমিক কংগ্রেসগুলোর জন্য ক্ষণস্থায়ী উদ্দীপনা শেষ হওয়ার পর, সর্বদা দেখা গেছে যে জনগণের মনোযোগ এবং অনুরাগ নতুন করে তাদের নিজস্ব নির্দিষ্ট সরকারগুলোর দিকে ফিরে গেছে; যে ফেডারেল কাউন্সিল কোনো সময়েই জনপ্রিয় আনুকূল্যের প্রতিমা ছিল না; এবং এর ক্ষমতা ও গুরুত্বের প্রস্তাবিত সম্প্রসারণের বিরোধিতা সাধারণত সেই লোকেরাই করেছেন যারা তাদের সহ নাগরিকদের পূর্বধারণাগুলোর ওপর নিজেদের রাজনৈতিক গুরুত্ব তৈরি করতে চেয়েছিলেন। অতএব, যদি ভবিষ্যতে জনগণ অঙ্গরাজ্য সরকারগুলোর চেয়ে ফেডারেল সরকারের প্রতি বেশি পক্ষপাতদুষ্ট হয়, তবে সেই পরিবর্তন কেবল একটি উন্নত প্রশাসনের এমন সুস্পষ্ট এবং অপ্রতিরোধ্য প্রমাণের মাধ্যমেই ঘটতে পারে, যা তাদের পূর্ববর্তী সমস্ত প্রবণতাকে অতিক্রম করবে। এবং সেক্ষেত্রে, জনগণকে অবশ্যই তাদের বেশিরভাগ আস্থা সেখানে স্থাপন করা থেকে বাধা দেওয়া উচিত নয় যেখানে তারা এটিকে সবচেয়ে বেশি প্রাপ্য বলে আবিষ্কার করতে পারে; তবে সেক্ষেত্রেও অঙ্গরাজ্য সরকারগুলোর ভয় পাওয়ার খুব কমই থাকবে, কারণ এটি কেবল একটি নির্দিষ্ট পরিধির মধ্যেই সম্ভব যে ফেডারেল ক্ষমতা সুবিধাজনকভাবে পরিচালিত হতে পারে। অবশিষ্ট যে পয়েন্টগুলোতে আমি ফেডারেল এবং অঙ্গরাজ্য সরকারগুলোর তুলনা করার প্রস্তাব করছি, তা হলো একে অপরের পদক্ষেপগুলো প্রতিরোধ এবং হতাশ করার ক্ষেত্রে তাদের নিজ নিজ স্বভাব এবং অনুষদ। এটি ইতিমধ্যেই প্রমাণিত হয়েছে যে ফেডারেল সরকারের সদস্যরা অঙ্গরাজ্য সরকারগুলোর সদস্যদের ওপর ততটাই নির্ভরশীল হবেন, যতটা না পরবর্তীটি পূর্ববর্তীটির ওপর হবে। এটিও প্রতীয়মান হয়েছে যে, জনগণ, যাদের ওপর উভয়ই নির্ভর করবে, তাদের পূর্বধারণা ফেডারেল সরকারের চেয়ে অঙ্গরাজ্য সরকারগুলোর পক্ষেই বেশি থাকবে। একে অপরের প্রতি প্রত্যেকের স্বভাব যতদূর এই কারণগুলো দ্বারা প্রভাবিত হতে পারে, অঙ্গরাজ্য সরকারগুলোর অবশ্যই স্পষ্ট সুবিধা থাকতে হবে।''
''কিন্তু একটি স্বতন্ত্র এবং অত্যন্ত গুরুত্বপূর্ণ দৃষ্টিকোণ থেকে, সুবিধাও একই দিকে থাকবে। সদস্যরা নিজেরাই ফেডারেল সরকারে যে পূর্বধারণাগুলো নিয়ে যাবেন, তা সাধারণত অঙ্গরাজ্যগুলোর অনুকূল হবে; পক্ষান্তরে এটা খুব কমই ঘটবে যে অঙ্গরাজ্য সরকারগুলোর সদস্যরা সাধারণ সরকারের পক্ষে জনপরিষদগুলোতে কোনো পক্ষপাতিত্ব নিয়ে যাবেন। নির্দিষ্ট অঙ্গরাজ্যগুলোর আইনসভায় একটি জাতীয় মনোভাব যতটা বিরাজ করবে, তার চেয়ে কংগ্রেসের সদস্যদের মধ্যে একটি স্থানীয় মনোভাব নিঃসন্দেহে অনেক বেশি বিরাজ করবে। সবাই জানে যে অঙ্গরাজ্য আইনসভাগুলো দ্বারা সংঘটিত ভুলগুলোর একটি বড় অংশ সদস্যদের সেই স্বভাব থেকে উদ্ভূত হয় যেখানে তারা যে কাউন্টি বা জেলায় বসবাস করেন তার নির্দিষ্ট এবং পৃথক দৃষ্টিভঙ্গির জন্য অঙ্গরাজ্যের ব্যাপক এবং স্থায়ী স্বার্থকে বিসর্জন দেন। এবং যদি তারা তাদের নির্দিষ্ট অঙ্গরাজ্যের সামষ্টিক কল্যাণকে অন্তর্ভুক্ত করার জন্য তাদের নীতিকে যথেষ্ট পরিমাণে প্রসারিত না করেন, তবে কীভাবে কল্পনা করা যায় যে তারা ইউনিয়নের সামগ্রিক সমৃদ্ধি এবং এর সরকারের মর্যাদা ও সম্মানকে তাদের অনুরাগ এবং পরামর্শের বস্তুতে পরিণত করবেন? একই কারণে যে অঙ্গরাজ্য আইনসভার সদস্যরা জাতীয় বিষয়গুলোর সাথে নিজেদের যথেষ্ট যুক্ত করার সম্ভাবনা কম, ফেডারেল আইনসভার সদস্যরা স্থানীয় বিষয়গুলোর সাথে নিজেদের খুব বেশি যুক্ত করার সম্ভাবনা রয়েছে। পূর্ববর্তীটির কাছে কাউন্টি এবং শহরগুলো যেমন, পরবর্তীটির কাছে অঙ্গরাজ্যগুলোও তেমন হবে। পদক্ষেপগুলো প্রায়শই তাদের সম্ভাব্য প্রভাব অনুসারে সিদ্ধান্ত নেওয়া হবে, জাতীয় সমৃদ্ধি এবং সুখের ওপর নয়, বরং পৃথক অঙ্গরাজ্যগুলোর সরকার এবং জনগণের কুসংস্কার, স্বার্থ এবং সাধনার ওপর। কংগ্রেসের কার্যপ্রণালীকে সাধারণভাবে কোন মনোভাবটি চিহ্নিত করেছে? তাদের জার্নালগুলোর পাঠ, সেইসাথে সেই সমাবেশে আসন গ্রহণকারী ব্যক্তিদের অকপট স্বীকারোক্তি আমাদের জানাবে যে, সদস্যরা প্রায়শই একটি সাধারণ স্বার্থের নিরপেক্ষ অভিভাবকের চেয়ে তাদের নিজ নিজ অঙ্গরাজ্যের পক্ষপাতীদের চরিত্রই বেশি প্রদর্শন করেছেন; যে একটি উপলক্ষে স্থানীয় বিবেচনার অনুচিত বিসর্জন দিয়ে ফেডারেল সরকারের পরিবর্ধন করা হয়েছে, সেখানে নির্দিষ্ট অঙ্গরাজ্যগুলোর স্থানীয় কুসংস্কার, স্বার্থ এবং দৃষ্টিভঙ্গির প্রতি অযৌক্তিক মনোযোগের কারণে একশোবার জাতির বৃহত্তর স্বার্থ ক্ষতিগ্রস্ত হয়েছে। এই প্রতিফলনগুলোর দ্বারা আমি এটা বোঝাতে চাই না যে, নতুন ফেডারেল সরকার বিদ্যমান সরকারের অনুসৃত নীতির চেয়ে বেশি প্রসারিত পরিকল্পনা গ্রহণ করবে না; তার চেয়েও কম, যে এর দৃষ্টিভঙ্গি অঙ্গরাজ্য আইনসভাগুলোর মতোই সীমাবদ্ধ হবে; বরং কেবল এটাই যে এটি উভয়ের মনোভাবেরই যথেষ্ট অংশীদার হবে, যাতে পৃথক অঙ্গরাজ্যগুলোর অধিকার, বা তাদের সরকারগুলোর বিশেষাধিকারগুলো আক্রমণ করতে অনাগ্রহী হয়। ফেডারেল সরকারের কাছ থেকে আত্মসাতের মাধ্যমে তাদের বিশেষাধিকারগুলো বৃদ্ধি করার জন্য অঙ্গরাজ্য সরকারগুলোর উদ্দেশ্যগুলো সদস্যদের মধ্যে কোনো পারস্পরিক পূর্বপ্রবণতা দ্বারা বাতিল হবে না। তবে যদি এটা স্বীকার করে নেওয়া হয় যে ফেডারেল সরকার অঙ্গরাজ্য সরকারগুলোর সমান স্বভাব অনুভব করতে পারে তার ক্ষমতাকে যথাযথ সীমার বাইরে প্রসারিত করার জন্য, তবে পরবর্তীটির কাছে এই ধরনের জবরদখলকে পরাজিত করার উপায়ের ক্ষেত্রে এখনও সুবিধা থাকবে। যদি কোনো নির্দিষ্ট অঙ্গরাজ্যের কোনো কাজ, যদিও জাতীয় সরকারের প্রতি অবন্ধুসুলভ হয়, সেই অঙ্গরাজ্যে সাধারণভাবে জনপ্রিয় হয় এবং অঙ্গরাজ্যের কর্মকর্তাদের শপথ খুব বেশি স্থূলভাবে লঙ্ঘন না করে, তবে এটি অবিলম্বে কার্যকর করা হয় এবং অবশ্যই, ঘটনাস্থলেই এবং কেবল অঙ্গরাজ্যের ওপর নির্ভর করে। ফেডারেল সরকারের বিরোধিতা, বা ফেডারেল কর্মকর্তাদের হস্তক্ষেপ, কেবল অঙ্গরাজ্যের পক্ষে সমস্ত দলের উৎসাহকে প্রজ্জ্বলিত করবে, এবং এমন উপায় প্রয়োগ করা ছাড়া, যার আশ্রয় সর্বদা অনিচ্ছা এবং অসুবিধার সাথেই নিতে হয়, মন্দ প্রতিরোধ বা মেরামত করা যাবে না, যদি আদৌ যায়।''
''অন্যদিকে, ফেডারেল সরকারের একটি অযৌক্তিক পদক্ষেপ যদি নির্দিষ্ট অঙ্গরাজ্যগুলোতে অজনপ্রিয় হয়, যা খুব কমই ব্যর্থ হবে, বা এমনকি একটি যৌক্তিক পদক্ষেপও যদি তাই হয়, যা কখনও কখনও হতে পারে, তবে এর বিরোধিতার উপায়গুলো শক্তিশালী এবং হাতের নাগালেই থাকে। জনগণের অস্বস্তি; ইউনিয়নের কর্মকর্তাদের সাথে সহযোগিতা করতে তাদের অনীহা এবং সম্ভবত, অস্বীকৃতি; অঙ্গরাজ্যের নির্বাহী ম্যাজিস্ট্রেসির ভ্রুকুটি; আইনী উপায় দ্বারা সৃষ্ট বিব্রতকর পরিস্থিতি, যা প্রায়শই এই ধরনের উপলক্ষে যোগ করা হবে, যে কোনো অঙ্গরাজ্যে এমন অসুবিধার বিরোধিতা করবে যা উপেক্ষা করা যায় না; একটি বড় অঙ্গরাজ্যে, অত্যন্ত গুরুতর বাধা তৈরি করবে; এবং যেখানে বেশ কয়েকটি পার্শ্ববর্তী অঙ্গরাজ্যের অনুভূতি মিলে যায়, সেখানে এমন বাধা উপস্থিত করবে যার মুখোমুখি হতে ফেডারেল সরকার খুব কমই ইচ্ছুক হবে। কিন্তু অঙ্গরাজ্য সরকারগুলোর কর্তৃত্বের ওপর ফেডারেল সরকারের উচ্চাকাঙ্ক্ষী জবরদখল কেবল একটি মাত্র অঙ্গরাজ্য বা কয়েকটি অঙ্গরাজ্যের বিরোধিতাকেই উসকে দেবে না। সেগুলো হবে সাধারণ বিপদের সংকেত। প্রতিটি সরকার সাধারণ কারণকে সমর্থন করবে। যোগাযোগ উন্মুক্ত হবে। প্রতিরোধের পরিকল্পনাগুলো সমন্বিত করা হবে। এক অভিন্ন আত্মা সমগ্রকে প্রাণবন্ত এবং পরিচালিত করবে। সংক্ষেপে, বিদেশি জোয়ালের ভয়ে যেমনটি তৈরি হয়েছিল, ফেডারেল সরকারের আশঙ্কায় ঠিক তেমনই সমন্বয়ের সৃষ্টি হবে; এবং যদি প্রস্তাবিত উদ্ভাবনগুলো স্বেচ্ছায় ত্যাগ করা না হয়, তবে একটি ক্ষেত্রে শক্তির পরীক্ষার জন্য ঠিক তেমনই আবেদন করা হবে যেমনটি অন্যটিতে করা হয়েছিল। কিন্তু কী মাত্রার পাগলামি ফেডারেল সরকারকে কখনো এমন চরম পরিণতির দিকে চালিত করতে পারে? গ্রেট ব্রিটেনের সাথে প্রতিযোগিতায়, সাম্রাজ্যের এক অংশকে অন্য অংশের বিরুদ্ধে ব্যবহার করা হয়েছিল।''
''অধিকতর অসংখ্য অংশ কম অসংখ্য অংশের অধিকার আক্রমণ করেছিল। প্রচেষ্টাটি অন্যায় এবং অবিবেচক ছিল; তবে অনুমানের ক্ষেত্রে এটি একেবারেই অবাস্তব ছিল না। কিন্তু আমরা যে ঘটনাটি অনুমান করছি তাতে প্রতিযোগিতাটি কী হবে? পক্ষ কারা হবে? জনগণের কয়েকজন প্রতিনিধি স্বয়ং জনগণের বিরোধিতা করবেন; বা বরং একদল প্রতিনিধি তেরো দলের প্রতিনিধিদের বিরুদ্ধে লড়বেন, যেখানে পরবর্তীটির পক্ষে তাদের সাধারণ নির্বাচকদের সমগ্র অংশ থাকবে। যারা অঙ্গরাজ্য সরকারগুলোর পতনের ভবিষ্যদ্বাণী করেন তাদের জন্য একমাত্র আশ্রয় হলো এই কাল্পনিক অনুমান যে ফেডারেল সরকার আগে থেকেই উচ্চাকাঙ্ক্ষার প্রকল্পগুলোর জন্য একটি সামরিক বাহিনী জমা করতে পারে। এই কাগজপত্রে থাকা যুক্তিগুলো সত্যিই খুব কম উদ্দেশ্যেই ব্যবহৃত হয়েছে বলে মনে হবে, যদি এখন এই বিপদের বাস্তবতা ভুল প্রমাণ করার প্রয়োজন হয়। জনগণ এবং অঙ্গরাজ্যগুলো পর্যাপ্ত সময়ের জন্য এমন পুরুষদের একটি নিরবচ্ছিন্ন উত্তরাধিকার নির্বাচন করবে যারা উভয়কেই বিশ্বাসঘাতকতা করতে প্রস্তুত; যে বিশ্বাসঘাতকরা এই সমগ্র সময়কাল জুড়ে সামরিক প্রতিষ্ঠান সম্প্রসারণের জন্য কোনো নির্দিষ্ট পরিকল্পনা অভিন্ন এবং নিয়মতান্ত্রিকভাবে অনুসরণ করবে; যে অঙ্গরাজ্যগুলোর সরকার এবং জনগণ নীরবে এবং ধৈর্য ধরে ঘনিয়ে আসা ঝড় প্রত্যক্ষ করবে, এবং যতক্ষণ না এটি তাদের নিজেদের মাথার ওপর আছড়ে পড়ার জন্য প্রস্তুত হয় ততক্ষণ পর্যন্ত উপকরণ সরবরাহ করতে থাকবে, এমনটা প্রত্যেকের কাছেই প্রকৃত দেশপ্রেমের শান্ত আশঙ্কার চেয়ে উন্মত্ত ঈর্ষার অসংলগ্ন স্বপ্ন, বা জাল উৎসাহের ভুল বিচারিত অতিরঞ্জনের মতোই বেশি মনে হবে।''
''অনুমানটি যতই অতিরঞ্জিত হোক না কেন, তা করা হোক। দেশের সম্পদের পুরোপুরি সমান একটি নিয়মিত সেনাবাহিনী গঠিত হোক; এবং এটি পুরোপুরি ফেডারেল সরকারের প্রতি নিবেদিত হোক; তবুও এটা বলা খুব বেশি বাড়াবাড়ি হবে না যে, অঙ্গরাজ্য সরকারগুলো, জনগণকে তাদের পাশে নিয়ে, বিপদ প্রতিহত করতে সক্ষম হবে। সেরা হিসাব অনুযায়ী, যেকোনো দেশে একটি স্থায়ী সেনাবাহিনী সর্বোচ্চ যে সংখ্যায় পৌঁছাতে পারে, তা সমগ্র আত্মার একশতাংশ বা অস্ত্র ধারণে সক্ষম সংখ্যার পঁচিশ ভাগের এক ভাগের বেশি নয়। এই অনুপাতটি মার্কিন যুক্তরাষ্ট্রে পঁচিশ বা ত্রিশ হাজার পুরুষের বেশি সেনাবাহিনী দেবে না। এদের বিরুদ্ধে প্রায় পাঁচ লাখ নাগরিকের একটি মিলিশিয়া বাহিনী থাকবে যাদের হাতে অস্ত্র থাকবে, যারা নিজেদের মধ্য থেকে নির্বাচিত পুরুষদের দ্বারা পরিচালিত হবে, তাদের সাধারণ স্বাধীনতার জন্য লড়াই করবে, এবং তাদের স্নেহ ও আস্থা অর্জনকারী সরকারগুলোর দ্বারা ঐক্যবদ্ধ ও পরিচালিত হবে। এই ধরনের একটি মিলিশিয়া কখনো নিয়মিত সৈন্যের এমন অনুপাত দ্বারা জয় করা যেতে পারে কিনা তা নিয়ে যথেষ্ট সন্দেহ থাকতে পারে। যারা ব্রিটিশ অস্ত্রের বিরুদ্ধে এই দেশের সর্বশেষ সফল প্রতিরোধের সাথে সবচেয়ে বেশি পরিচিত, তারাই এর সম্ভাবনাকে অস্বীকার করতে সবচেয়ে বেশি আগ্রহী হবেন। আমেরিকানরা প্রায় অন্য প্রতিটি জাতির মানুষের ওপর যে সশস্ত্র হওয়ার সুবিধা ধারণ করে, তা ছাড়াও, অধস্তন সরকারগুলোর অস্তিত্ব, যার প্রতি জনগণ অনুরক্ত, এবং যার দ্বারা মিলিশিয়া কর্মকর্তারা নিযুক্ত হন, তা উচ্চাকাঙ্ক্ষার উদ্যোগগুলোর বিরুদ্ধে এমন একটি বাধা তৈরি করে, যা যেকোনো রূপের একটি সাধারণ সরকার যা স্বীকার করতে পারে তার চেয়েও বেশি দুর্লঙ্ঘ্য। ইউরোপের বিভিন্ন রাজ্যে সামরিক প্রতিষ্ঠান থাকা সত্ত্বেও, যা জনসাধারণের সম্পদ যতটা বহন করবে ততটা পর্যন্ত নিয়ে যাওয়া হয়, সরকারগুলো জনগণকে অস্ত্র বিশ্বাস করতে ভয় পায়। এবং এটি নিশ্চিত নয় যে, কেবল এই সাহায্য দিয়েই তারা তাদের জোয়াল ঝেড়ে ফেলতে সক্ষম হতো না। কিন্তু জনগণ যদি নিজেদের দ্বারা নির্বাচিত স্থানীয় সরকারগুলোর অতিরিক্ত সুবিধার অধিকারী হয়, যারা জাতীয় ইচ্ছা সংগ্রহ করতে এবং জাতীয় শক্তিকে নির্দেশ করতে পারে, এবং এই সরকারগুলোর দ্বারা মিলিশিয়াদের মধ্য থেকে নিযুক্ত কর্মকর্তাদের, এবং যারা তাদের এবং মিলিশিয়া উভয়ের প্রতিই অনুরক্ত, তবে অত্যন্ত নিশ্চয়তার সাথে বলা যেতে পারে যে, ইউরোপের প্রতিটি স্বৈরাচারের সিংহাসন এটিকে ঘিরে থাকা সৈন্যদল সত্ত্বেও দ্রুত উল্টে যাবে। আসুন আমরা আমেরিকার স্বাধীন এবং সাহসী নাগরিকদের এই সন্দেহের দ্বারা অপমান না করি যে, তারা যে অধিকারগুলোর প্রকৃত অধিকারী হবে তা রক্ষা করতে তারা স্বেচ্ছাচারী ক্ষমতার অধঃপতিত প্রজাদের তাদের নিপীড়কদের হাত থেকে তাদের অধিকার উদ্ধার করার ক্ষমতার চেয়ে কম সক্ষম হবে। আসুন আমরা বরং তাদের আর এই অনুমান দিয়ে অপমান না করি যে, তারা অন্ধ ও বশংবদ হয়ে সেই দীর্ঘ কপট পদক্ষেপগুলোর কাছে আত্মসমর্পণ করে নিজেদেরকে পরীক্ষা-নিরীক্ষা করার প্রয়োজনীয়তার স্তরে নামিয়ে আনতে পারে যা অবশ্যই এর পূর্বে ঘটবে এবং এটি তৈরি করবে। বর্তমান শিরোনামের অধীনে যুক্তিটি খুব সংক্ষিপ্ত আকারে রাখা যেতে পারে, যা পুরোপুরি চূড়ান্ত বলে মনে হয়। হয় ফেডারেল সরকার যে পদ্ধতিতে গঠিত হবে তা এটিকে জনগণের ওপর যথেষ্ট নির্ভরশীল করে তুলবে, অথবা তা করবে না। প্রথম অনুমানে, এটি সেই নির্ভরতার দ্বারা তাদের নির্বাচকদের কাছে আপত্তিকর স্কিম গঠন করা থেকে বিরত থাকবে। অন্য অনুমানে, এটি জনগণের আস্থা অর্জন করবে না, এবং এর জবরদখল করার স্কিমগুলো অঙ্গরাজ্য সরকারগুলো দ্বারা সহজেই পরাজিত হবে, যারা জনগণের দ্বারা সমর্থিত হবে। এই এবং গত পত্রে বলা বিবেচনাগুলো সারসংক্ষেপ করলে, সেগুলো সবচেয়ে বিশ্বাসযোগ্য প্রমাণের সমতুল্য বলে মনে হয় যে, ফেডারেল সরকারে যে ক্ষমতাগুলো রাখার প্রস্তাব করা হয়েছে তা পৃথক অঙ্গরাজ্যগুলোর জন্য সংরক্ষিত ক্ষমতাগুলোর কাছে ততটাই কম ভয়ঙ্কর, যতটা সেগুলো ইউনিয়নের উদ্দেশ্য সাধনের জন্য অপরিহার্যভাবে প্রয়োজনীয়; এবং অঙ্গরাজ্য সরকারগুলোর পরিকল্পিত এবং ফলস্বরূপ ধ্বংসের যে সমস্ত শঙ্কার আওয়াজ তোলা হয়েছে, তা সবচেয়ে অনুকূল ব্যাখ্যায়, তাদের লেখকদের অবাস্তব ভয়ের জন্য দায়ী করা আবশ্যক।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি প্রস্তাবিত মার্কিন যুক্তরাষ্ট্রের সংবিধানের অধীনে অঙ্গরাজ্য এবং ফেডারেল সরকারের আপেক্ষিক শক্তি পরীক্ষা করে।
ম্যাডিসন জোর দিয়ে বলেছেন যে ফেডারেল এবং অঙ্গরাজ্য সরকার দুটি সম্পূর্ণ ভিন্ন সংস্থা। তিনি স্পষ্টভাবে বলেন যে তারা আলাদা তবুও সহযোগিতা করতে পারে এবং ক্ষমতা জনগণের হাতে নিহিত। জনগণের স্বাভাবিক অনুরাগ সর্বদা তাদের নিজ নিজ অঙ্গরাজ্যের সরকারের প্রতি থাকবে, তাই ফেডারেল সরকারকে এক অর্থে জনগণের প্রতি অসাধারণভাবে অনুকূল হতে হবে।
==ফেডারালিস্ট নং ৪৭==
ফেডারালিস্ট নং ৪৭-এর শিরোনাম হলো ''"নতুন সরকারের নির্দিষ্ট কাঠামো এবং এর বিভিন্ন অংশের মধ্যে ক্ষমতার বণ্টন"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''প্রস্তাবিত সরকারের সাধারণ রূপ এবং এর জন্য বরাদ্দকৃত ক্ষমতার সাধারণ পরিমাণ পর্যালোচনা করার পর, আমি এই সরকারের নির্দিষ্ট কাঠামো এবং এর গঠনকারী অংশগুলোর মধ্যে এই ক্ষমতার বণ্টন পরীক্ষা করতে অগ্রসর হচ্ছি। সংবিধানের অধিকতর সম্মানজনক বিরোধীদের দ্বারা বদ্ধমূল করা অন্যতম প্রধান আপত্তি হলো রাজনৈতিক নীতির এর কথিত লঙ্ঘন, যে আইন, নির্বাহী এবং বিচার বিভাগগুলো আলাদা এবং স্বতন্ত্র হওয়া উচিত। ফেডারেল সরকারের কাঠামোতে, বলা হয়, স্বাধীনতার পক্ষে এই অপরিহার্য সতর্কতার প্রতি কোনো মনোযোগ দেওয়া হয়নি বলে মনে হয়। ক্ষমতার বিভিন্ন বিভাগ এমনভাবে বণ্টিত এবং মিশ্রিত করা হয়েছে যা একযোগে ফর্মের সমস্ত প্রতিসাম্য এবং সৌন্দর্যকে ধ্বংস করে, এবং ভবনের কিছু অপরিহার্য অংশকে অন্যান্য অংশের অসামঞ্জস্যপূর্ণ ওজনের দ্বারা চূর্ণ হওয়ার বিপদের মুখে ফেলে দেয়। কোনো রাজনৈতিক সত্য নিশ্চিতভাবেই এর চেয়ে বেশি অন্তর্নিহিত মূল্যের নয়, বা স্বাধীনতার আরও বেশি আলোকিত পৃষ্ঠপোষকদের কর্তৃত্বের দ্বারা অঙ্কিত নয়, যার ওপর আপত্তিটি প্রতিষ্ঠিত।''
''সমস্ত ক্ষমতার একত্রীকরণ, আইন, নির্বাহী এবং বিচার বিভাগীয়, একই হাতে, তা একজনের হোক, কয়েকজনের হোক বা অনেকের হোক, এবং তা বংশানুক্রমিক, স্বনিযুক্ত বা নির্বাচিত যাই হোক না কেন, তাকে যথাযথভাবেই স্বৈরাচারের একেবারে সংজ্ঞা হিসেবে ঘোষণা করা যেতে পারে। তাই ফেডারেল সংবিধান যদি সত্যিই ক্ষমতার একত্রীকরণ, বা ক্ষমতার মিশ্রণের জন্য দায়ী হয়, যার এমন একত্রীকরণের দিকে একটি বিপজ্জনক প্রবণতা রয়েছে, তবে ব্যবস্থার একটি সর্বজনীন নিন্দাকে অনুপ্রাণিত করার জন্য আর কোনো যুক্তির প্রয়োজন হবে না। তবে আমি নিজেকে বোঝাই যে, এটি প্রত্যেকের কাছে স্পষ্ট হয়ে যাবে যে, অভিযোগটি সমর্থন করা যায় না, এবং যে নীতির ওপর এটি নির্ভর করে তা পুরোপুরি ভুল বোঝা হয়েছে এবং ভুলভাবে প্রয়োগ করা হয়েছে। এই গুরুত্বপূর্ণ বিষয়ে সঠিক ধারণা তৈরি করার জন্য, স্বাধীনতার সংরক্ষণের জন্য ক্ষমতার তিনটি মহান বিভাগ আলাদা এবং স্বতন্ত্র হওয়া উচিত—এই অর্থটি অনুসন্ধান করা যথাযথ হবে। এই বিষয়ে সর্বদা যার সাথে পরামর্শ করা হয় এবং যাকে উদ্ধৃত করা হয় তিনি হলেন বিখ্যাত মন্টেস্কিউ। তিনি যদি রাষ্ট্রবিজ্ঞান বিষয়ে এই অমূল্য অনুশাসনের প্রবর্তক নাও হন, তবে অন্তত মানবজাতির দৃষ্টি আকর্ষণ করার জন্য এটিকে সবচেয়ে কার্যকরভাবে প্রদর্শন এবং সুপারিশ করার যোগ্যতা তার রয়েছে। আসুন আমরা প্রথমত এই বিষয়ে তার অর্থ নিশ্চিত করার চেষ্টা করি। ব্রিটিশ সংবিধান মন্টেস্কিউর কাছে তা-ই ছিল যা হোমার মহাকাব্যের শিক্ষামূলক লেখকদের কাছে ছিলেন। পরবর্তী ব্যক্তিরা যেমন অমর কবির কাজকে নিখুঁত মডেল হিসেবে বিবেচনা করেছেন যেখান থেকে মহাকাব্যিক শিল্পের নীতি এবং নিয়মগুলো আঁকতে হবে, এবং যার দ্বারা সমস্ত অনুরূপ কাজগুলো বিচার করতে হবে, ঠিক তেমনি এই মহান রাজনৈতিক সমালোচক ইংল্যান্ডের সংবিধানকে মানদণ্ড হিসেবে, বা তার নিজস্ব অভিব্যক্তি ব্যবহার করতে গেলে, রাজনৈতিক স্বাধীনতার দর্পণ হিসেবে দেখেছেন বলে মনে হয়; এবং মৌলিক সত্যের আকারে সেই নির্দিষ্ট ব্যবস্থার বিভিন্ন বৈশিষ্ট্যগত নীতিগুলো প্রদান করেছেন। আমরা যেন এই ক্ষেত্রে তার অর্থ ভুল না বুঝি তা নিশ্চিত করতে, আসুন আমরা সেই উৎসের দিকে ফিরে যাই যেখান থেকে নীতিটি নেওয়া হয়েছিল। ব্রিটিশ সংবিধানের সামান্য দৃষ্টিতেই আমাদের অবশ্যই বুঝতে হবে যে আইন, নির্বাহী এবং বিচার বিভাগগুলো কোনোভাবেই একে অপরের থেকে সম্পূর্ণ আলাদা এবং স্বতন্ত্র নয়। নির্বাহী ম্যাজিস্ট্রেট আইনসভার কর্তৃত্বের একটি অবিচ্ছেদ্য অংশ গঠন করেন। একমাত্র তার বিদেশি রাজাদের সাথে চুক্তি করার বিশেষাধিকার রয়েছে, যা করা হলে নির্দিষ্ট সীমাবদ্ধতার অধীনে, আইনসভার কাজের শক্তি থাকে। বিচার বিভাগের সমস্ত সদস্য তার দ্বারা নিযুক্ত হন, সংসদের উভয় কক্ষের ঠিকানায় তার দ্বারা অপসারিত হতে পারেন এবং যখন তিনি তাদের সাথে পরামর্শ করতে চান তখন তার সাংবিধানিক পরিষদগুলোর একটি গঠন করেন। আইনসভার একটি শাখাও নির্বাহী প্রধানের জন্য একটি দুর্দান্ত সাংবিধানিক পরিষদ গঠন করে, যেমন, অন্যদিকে, এটি অভিশংসনের ক্ষেত্রে বিচারিক ক্ষমতার একমাত্র আমানতকারী, এবং অন্যান্য সমস্ত ক্ষেত্রে সর্বোচ্চ আপিল এখতিয়ারের সাথে বিনিয়োগ করা হয়। আবার বিচারকরা আইনসভার বিভাগের সাথে এতটা সংযুক্ত থাকেন যে প্রায়শই এর আলোচনায় অংশ নেন এবং অংশগ্রহণ করেন, যদিও আইনসভার ভোটে তাদের ভর্তি করা হয় না। এই ঘটনাগুলো থেকে, যার দ্বারা মন্টেস্কিউ পরিচালিত হয়েছিলেন, এটি স্পষ্টভাবে অনুমান করা যেতে পারে যে, "যেখানে আইন এবং নির্বাহী ক্ষমতা একই ব্যক্তি বা ম্যাজিস্ট্রেটদের সংস্থায় একত্রিত হয় সেখানে কোনো স্বাধীনতা থাকতে পারে না," বা, "যদি বিচারের ক্ষমতা আইন এবং নির্বাহী ক্ষমতা থেকে আলাদা না হয়," বলার অর্থ এই নয় যে এই বিভাগগুলোর একে অপরের কাজের ওপর কোনো আংশিক সংস্থা বা কোনো নিয়ন্ত্রণ থাকা উচিত নয়। তার অর্থ, যেমন তার নিজস্ব শব্দগুলো বোঝায়, এবং তার দৃষ্টিতে উদাহরণ দ্বারা চিত্রিত হওয়ার মতো আরও চূড়ান্তভাবে, এর চেয়ে বেশি কিছু হতে পারে না যে, যেখানে একটি বিভাগের সম্পূর্ণ ক্ষমতা একই হাতে প্রয়োগ করা হয় যার অন্য বিভাগের সম্পূর্ণ ক্ষমতা রয়েছে, সেখানে একটি মুক্ত সংবিধানের মৌলিক নীতিগুলো বিপর্যস্ত হয়। তার দ্বারা পরীক্ষিত সংবিধানে এটিই ঘটত, যদি রাজা, যিনি একমাত্র নির্বাহী ম্যাজিস্ট্রেট, সম্পূর্ণ আইন প্রণয়নের ক্ষমতা বা বিচারের সর্বোচ্চ প্রশাসনেরও অধিকারী হতেন; অথবা যদি সমগ্র আইনসভা সর্বোচ্চ বিচার বিভাগ বা সর্বোচ্চ নির্বাহী কর্তৃত্বের অধিকারী হতো। তবে এটি সেই সংবিধানের ত্রুটিগুলোর মধ্যে পড়ে না। যে ম্যাজিস্ট্রেটের হাতে সমগ্র নির্বাহী ক্ষমতা থাকে তিনি নিজে থেকে কোনো আইন তৈরি করতে পারেন না, যদিও তিনি প্রতিটি আইনের ওপর নেতিবাচক (ভেটো) প্রয়োগ করতে পারেন; অথবা ব্যক্তিগতভাবে বিচার পরিচালনা করতে পারেন না, যদিও যারা এটি পরিচালনা করেন তাদের নিয়োগের ক্ষমতা তার রয়েছে। বিচারকরা কোনো নির্বাহী বিশেষাধিকার প্রয়োগ করতে পারেন না, যদিও তারা নির্বাহী শাখার অঙ্কুর; অথবা কোনো আইনী কাজ করতে পারেন না, যদিও আইনসভা পরিষদগুলো তাদের পরামর্শ নিতে পারে। সমগ্র আইনসভা কোনো বিচারিক কাজ সম্পাদন করতে পারে না, যদিও এর দুটি শাখার যৌথ পদক্ষেপের মাধ্যমে বিচারকদের তাদের পদ থেকে অপসারণ করা যেতে পারে এবং যদিও এর একটি শাখা শেষ অবলম্বন হিসেবে বিচারিক ক্ষমতার অধিকারী। সমগ্র আইনসভা, আবার, কোনো নির্বাহী বিশেষাধিকার প্রয়োগ করতে পারে না, যদিও এর একটি শাখা সর্বোচ্চ নির্বাহী ম্যাজিস্ট্রেসি গঠন করে এবং অন্যটি তৃতীয়টির অভিশংসনে নির্বাহী বিভাগের সমস্ত অধস্তন কর্মকর্তাদের বিচার ও নিন্দা করতে পারে। মন্টেস্কিউ যে কারণগুলোর ওপর ভিত্তি করে তার নীতি প্রতিষ্ঠা করেছেন তা তার অর্থের আরও একটি প্রদর্শন। তিনি বলেন, "যখন আইন এবং নির্বাহী ক্ষমতা একই ব্যক্তি বা সংস্থায় একত্রিত হয়, তখন কোনো স্বাধীনতা থাকতে পারে না, কারণ আশঙ্কা দেখা দিতে পারে পাছে একই রাজা বা সিনেট স্বৈরাচারী আইন প্রণয়ন করে সেগুলোকে স্বৈরাচারী পদ্ধতিতে কার্যকর করে।" আবার: "যদি বিচারের ক্ষমতা আইনসভার সাথে যুক্ত হয়, তবে প্রজার জীবন এবং স্বাধীনতা নির্বিচার নিয়ন্ত্রণের সম্মুখীন হবে, কারণ তখন বিচারকই হবেন আইনপ্রণেতা।''
''যদি এটি নির্বাহী ক্ষমতার সাথে যুক্ত হয়, তবে বিচারক একজন অত্যাচারীর সমস্ত সহিংসতার সাথে আচরণ করতে পারেন।" এই কারণগুলোর কয়েকটি অন্যান্য অনুচ্ছেদে আরও বিশদভাবে ব্যাখ্যা করা হয়েছে; তবে এখানে যেমন সংক্ষেপে বলা হয়েছে, তা এই বিখ্যাত লেখকের এই বিখ্যাত নীতির ওপর আমরা যে অর্থ রেখেছি তা পর্যাপ্তভাবে প্রতিষ্ঠিত করে।''
''যদি আমরা বিভিন্ন অঙ্গরাজ্যের সংবিধানের দিকে তাকাই, তবে আমরা দেখতে পাই যে, যে জোরদার এবং কিছু ক্ষেত্রে শর্তহীন শর্তাবলীতে এই স্বতঃসিদ্ধটি নির্ধারণ করা হয়েছে তা সত্ত্বেও, এমন একটি দৃষ্টান্তও নেই যেখানে ক্ষমতার বিভিন্ন বিভাগকে একেবারে আলাদা এবং স্বতন্ত্র রাখা হয়েছে। নিউ হ্যাম্পশায়ার, যার সংবিধান সর্বশেষ গঠিত হয়েছিল, সে এই বিভাগগুলোর কোনো মিশ্রণ এড়ানোর অসম্ভবতা এবং অযৌক্তিকতা সম্পর্কে পুরোপুরি সচেতন বলে মনে হয়, এবং এই ঘোষণা দিয়ে মতবাদটিকে যোগ্য করে তুলেছে যে "আইন, নির্বাহী এবং বিচার বিভাগীয় ক্ষমতাগুলোকে একে অপরের থেকে আলাদা এবং স্বাধীন রাখা উচিত যতটা একটি মুক্ত সরকারের প্রকৃতি স্বীকার করবে; বা এটি সংযোগের সেই শৃঙ্খলের সাথে সামঞ্জস্যপূর্ণ যা সংবিধানের সমগ্র কাঠামোকে ঐক্য এবং বন্ধুত্বের এক অবিচ্ছেদ্য বন্ধনে আবদ্ধ করে।" তার সংবিধান সেই অনুযায়ী এই বিভাগগুলোকে বিভিন্ন ক্ষেত্রে মিশ্রিত করে। সিনেট, যা আইনসভা বিভাগের একটি শাখা, অভিশংসনের বিচারের জন্য একটি বিচারিক ট্রাইব্যুনালও। রাষ্ট্রপতি, যিনি নির্বাহী বিভাগের প্রধান, তিনিও সিনেটের সভাপতিত্বকারী সদস্য; এবং সমস্ত ক্ষেত্রে সমান ভোটের পাশাপাশি টাই হলে তার একটি নির্ণায়ক ভোট রয়েছে। নির্বাহী প্রধান নিজে শেষ পর্যন্ত আইনসভা বিভাগ দ্বারা প্রতি বছর নির্বাচিত হন এবং তার পরিষদ প্রতি বছর একই বিভাগের সদস্যদের দ্বারা এবং তাদের মধ্য থেকে নির্বাচিত হয়। রাজ্যের বেশ কয়েকজন কর্মকর্তাও আইনসভা দ্বারা নিযুক্ত হন। এবং বিচার বিভাগের সদস্যরা নির্বাহী বিভাগ দ্বারা নিযুক্ত হন। ম্যাসাচুসেটসের সংবিধান স্বাধীনতার এই মৌলিক অনুচ্ছেদটি প্রকাশ করার ক্ষেত্রে পর্যাপ্ত কিন্তু কম তীক্ষ্ণ সতর্কতা অবলম্বন করেছে। এটি ঘোষণা করে যে "আইনসভা বিভাগ কখনোই নির্বাহী এবং বিচারিক ক্ষমতা বা তাদের যেকোনো একটি প্রয়োগ করবে না; নির্বাহী বিভাগ কখনোই আইন এবং বিচারিক ক্ষমতা বা তাদের যেকোনো একটি প্রয়োগ করবে না; বিচার বিভাগ কখনোই আইন এবং নির্বাহী ক্ষমতা বা তাদের যেকোনো একটি প্রয়োগ করবে না।" এই ঘোষণাটি ঠিক মন্টেস্কিউর মতবাদের সাথে মিলে যায়, যেমনটি ব্যাখ্যা করা হয়েছে এবং কনভেনশনের পরিকল্পনার দ্বারা একটি পয়েন্টেও লঙ্ঘিত হয়নি। এটি অন্য বিভাগের ক্ষমতা প্রয়োগ করা থেকে সমগ্র বিভাগের যেকোনো একটিকে নিষিদ্ধ করার চেয়ে বেশি এগিয়ে যায় না। যে সংবিধানে এটি পূর্বে যুক্ত করা হয়েছে, সেখানে ক্ষমতার আংশিক মিশ্রণ স্বীকার করা হয়েছে। আইনসভার ওপর নির্বাহী ম্যাজিস্ট্রেটের একটি শর্তযুক্ত নেতিবাচক (ভেটো) ক্ষমতা রয়েছে এবং সিনেট, যা আইনসভার একটি অংশ, নির্বাহী এবং বিচার বিভাগ উভয়ের সদস্যদের জন্য অভিশংসনের একটি আদালত। বিচার বিভাগের সদস্যরা আবার নির্বাহী বিভাগ দ্বারা নিয়োগযোগ্য এবং দুটি আইনসভা শাখার ঠিকানায় একই কর্তৃপক্ষের দ্বারা অপসারণযোগ্য।''
''পরিশেষে, সরকারের বেশ কয়েকজন কর্মকর্তাকে প্রতি বছর আইনসভা বিভাগ দ্বারা নিয়োগ করা হয়। যেহেতু পদে নিয়োগ, বিশেষ করে নির্বাহী পদে, প্রকৃতিগতভাবেই একটি নির্বাহী কাজ, তাই সংবিধান প্রণেতারা অন্তত এই শেষ পয়েন্টে নিজেদের প্রতিষ্ঠিত নিয়ম লঙ্ঘন করেছেন। আমি রোড আইল্যান্ড এবং কানেকটিকাটের সংবিধান এড়িয়ে যাচ্ছি, কারণ সেগুলো বিপ্লবের আগে গঠিত হয়েছিল, এবং এমনকি যে নীতিটি পরীক্ষা করা হচ্ছে তা রাজনৈতিক মনোযোগের বিষয় হওয়ার আগেই। নিউইয়র্কের সংবিধানে এই বিষয়ে কোনো ঘোষণা নেই; তবে বিভিন্ন বিভাগকে অনুচিতভাবে মিশ্রিত করার বিপদের দিকে নজর রেখেই এটি তৈরি করা হয়েছে বলে মনে হয়। এটি তা সত্ত্বেও, নির্বাহী ম্যাজিস্ট্রেটকে আইনসভা বিভাগের ওপর আংশিক নিয়ন্ত্রণ দেয়; এবং, আরও যা, বিচার বিভাগের ওপর অনুরূপ নিয়ন্ত্রণ দেয়; এবং এমনকি এই নিয়ন্ত্রণ প্রয়োগে নির্বাহী এবং বিচার বিভাগকে মিশ্রিত করে। এর নিয়োগ কাউন্সিলে আইনসভার সদস্যরা নির্বাহী এবং বিচার বিভাগীয় উভয় কর্মকর্তা নিয়োগে নির্বাহী কর্তৃপক্ষের সাথে যুক্ত থাকে। এবং অভিশংসনের বিচার এবং ত্রুটি সংশোধনের জন্য এর আদালত আইনসভার একটি শাখা এবং বিচার বিভাগের প্রধান সদস্যদের নিয়ে গঠিত হবে। নিউ জার্সির সংবিধান পূর্ববর্তী যেকোনোটির চেয়ে সরকারের বিভিন্ন ক্ষমতাকে বেশি মিশ্রিত করেছে। গভর্নর, যিনি নির্বাহী ম্যাজিস্ট্রেট, আইনসভা দ্বারা নিযুক্ত হন; তিনি রাজ্যের চ্যান্সেলর এবং অর্ডিনারি, বা সারোগেট; আপিলের সুপ্রিম কোর্টের সদস্য, এবং নির্ণায়ক ভোট সহ আইনসভা শাখাগুলোর একটির সভাপতি। একই আইনসভা শাখা আবার গভর্নরের নির্বাহী পরিষদ হিসেবে কাজ করে এবং তার সাথে আপিল আদালত গঠন করে। বিচার বিভাগের সদস্যরা আইনসভা বিভাগ দ্বারা নিযুক্ত হন এবং অন্যটির অভিশংসনে এর একটি শাখা দ্বারা অপসারণযোগ্য। পেনসিলভানিয়ার সংবিধান অনুযায়ী, রাষ্ট্রপতি, যিনি নির্বাহী বিভাগের প্রধান, প্রতি বছর এমন একটি ভোটে নির্বাচিত হন যেখানে আইনসভা বিভাগের আধিপত্য থাকে। একটি নির্বাহী পরিষদের সাথে একত্রে, তিনি বিচার বিভাগের সদস্যদের নিয়োগ করেন এবং নির্বাহী এবং বিচার বিভাগীয় সমস্ত কর্মকর্তাদের বিচারের জন্য অভিশংসনের একটি আদালত গঠন করেন। সুপ্রিম কোর্টের বিচারক এবং শান্তিরক্ষক আইনসভা দ্বারা অপসারণযোগ্য বলেও মনে হয়; এবং নির্দিষ্ট ক্ষেত্রে ক্ষমার নির্বাহী ক্ষমতা একই বিভাগে উল্লেখ করা হবে। নির্বাহী পরিষদের সদস্যদের সারা রাজ্যে পদাধিকারবলে শান্তিরক্ষক করা হয়। ডেলাওয়্যারে প্রধান নির্বাহী ম্যাজিস্ট্রেট প্রতি বছর আইনসভা বিভাগ দ্বারা নির্বাচিত হন। দুটি আইনসভা শাখার স্পিকাররা নির্বাহী বিভাগে উপ-রাষ্ট্রপতি। নির্বাহী প্রধান, অন্য ছয়জনের সাথে, প্রতিটি আইনসভা শাখা দ্বারা তিনজন নিযুক্ত হয়ে আপিলের সুপ্রিম কোর্ট গঠন করেন; অন্যান্য বিচারকদের নিয়োগে তিনি আইনসভা বিভাগের সাথে যুক্ত হন। রাজ্যগুলো জুড়ে, এটা দেখা যাচ্ছে যে আইনসভার সদস্যরা একই সাথে শান্তিরক্ষক হতে পারেন; এই রাজ্যে এর একটি শাখার সদস্যরা পদাধিকারবলে শান্তিরক্ষক; নির্বাহী পরিষদের সদস্যরাও তাই। নির্বাহী বিভাগের প্রধান কর্মকর্তারা আইনসভা দ্বারা নিযুক্ত হন; এবং পরবর্তীটির একটি শাখা অভিশংসনের একটি আদালত গঠন করে। আইনসভার ঠিকানায় সমস্ত কর্মকর্তাকে অপসারণ করা যেতে পারে। মেরিল্যান্ড সবচেয়ে শর্তহীন শর্তাবলীতে নীতিটি গ্রহণ করেছে; এটি ঘোষণা করেছে যে সরকারের আইন, নির্বাহী এবং বিচার বিভাগীয় ক্ষমতা চিরতরে একে অপরের থেকে আলাদা এবং স্বতন্ত্র হওয়া উচিত। তার সংবিধান তা সত্ত্বেও, নির্বাহী ম্যাজিস্ট্রেটকে আইনসভা বিভাগ দ্বারা নিয়োগযোগ্য করে তোলে; এবং বিচার বিভাগের সদস্যদের নির্বাহী বিভাগ দ্বারা। ভার্জিনিয়ার ভাষা এই বিষয়ে আরও তীক্ষ্ণ। তার সংবিধান ঘোষণা করে, "যে আইন, নির্বাহী এবং বিচার বিভাগগুলো আলাদা এবং স্বতন্ত্র হবে; যাতে কেউই অন্যটির সঠিকভাবে অন্তর্গত ক্ষমতা প্রয়োগ না করে; বা কোনো ব্যক্তি একই সময়ে তাদের একাধিক ক্ষমতা প্রয়োগ করবে না, তবে কাউন্টি আদালতের বিচারপতিরা অ্যাসেম্বলির যেকোনো হাউসের জন্য যোগ্য হবেন।" তবুও আমরা কেবল নিম্ন আদালতের সদস্যদের ক্ষেত্রে এই স্পষ্ট ব্যতিক্রমই পাই না, বরং প্রধান ম্যাজিস্ট্রেট তার নির্বাহী পরিষদের সাথে আইনসভা দ্বারা নিয়োগযোগ্য; পরবর্তীটির দুজন সদস্য তিন বছর পর পর আইনসভার ইচ্ছায় স্থানচ্যুত হন; এবং সমস্ত প্রধান অফিস, নির্বাহী এবং বিচার বিভাগীয় উভয়ই একই বিভাগ দ্বারা পূরণ করা হয়। ক্ষমার নির্বাহী বিশেষাধিকারও একটি ক্ষেত্রে আইনসভা বিভাগে ন্যস্ত। উত্তর ক্যারোলিনার সংবিধান, যা ঘোষণা করে "যে সরকারের আইন, নির্বাহী এবং সর্বোচ্চ বিচার বিভাগীয় ক্ষমতা চিরতরে একে অপরের থেকে আলাদা এবং স্বতন্ত্র হওয়া উচিত," একই সময়ে আইনসভা বিভাগের কাছে কেবল নির্বাহী প্রধানেরই নয়, বরং সেটি এবং বিচার বিভাগ উভয়ের মধ্যে থাকা সমস্ত প্রধান কর্মকর্তার নিয়োগকে নির্দেশ করে। দক্ষিণ ক্যারোলিনায়, সংবিধান নির্বাহী ম্যাজিস্ট্রেসিকে আইনসভা বিভাগের দ্বারা নির্বাচিত হওয়ার যোগ্য করে তোলে।''
''এটি পরবর্তীটিকে বিচার বিভাগের সদস্যদের নিয়োগও দেয়, যার মধ্যে শান্তিরক্ষক এবং শেরিফরাও অন্তর্ভুক্ত; এবং রাজ্যের সেনাবাহিনী এবং নৌবাহিনীর ক্যাপ্টেন পর্যন্ত নির্বাহী বিভাগে কর্মকর্তাদের নিয়োগ।''
''জর্জিয়ার সংবিধানে, যেখানে ঘোষণা করা হয়েছে "যে আইন, নির্বাহী এবং বিচার বিভাগগুলো আলাদা এবং স্বতন্ত্র হবে, যাতে কেউই অন্যটির সঠিকভাবে অন্তর্গত ক্ষমতা প্রয়োগ না করে," আমরা দেখতে পাই যে আইনসভার নিয়োগ দ্বারা নির্বাহী বিভাগ পূরণ করতে হবে; এবং ক্ষমার নির্বাহী বিশেষাধিকার চূড়ান্তভাবে একই কর্তৃপক্ষের দ্বারা প্রয়োগ করা হবে। এমনকি শান্তিরক্ষকদেরও আইনসভা দ্বারা নিয়োগ করতে হবে। এই ঘটনাগুলো উদ্ধৃত করার ক্ষেত্রে, যেখানে আইন, নির্বাহী এবং বিচার বিভাগগুলোকে সম্পূর্ণ আলাদা এবং স্বতন্ত্র রাখা হয়নি, আমি বিভিন্ন অঙ্গরাজ্য সরকারের নির্দিষ্ট সংগঠনগুলোর একজন উকিল হিসেবে বিবেচিত হতে চাই না। আমি পুরোপুরি সচেতন যে তারা যেসব অনেক চমৎকার নীতির উদাহরণ দেয়, সেগুলোর মধ্যে তাড়াহুড়োর শক্তিশালী চিহ্ন এবং অনভিজ্ঞতার আরও শক্তিশালী চিহ্ন বহন করে, যার অধীনে সেগুলো তৈরি করা হয়েছিল। এটা খুবই স্পষ্ট যে কিছু ক্ষেত্রে বিবেচনাধীন মৌলিক নীতিটি বিভিন্ন ক্ষমতার অত্যধিক মিশ্রণ এবং এমনকি একটি প্রকৃত একত্রীকরণের দ্বারা লঙ্ঘিত হয়েছে; এবং কোনো ক্ষেত্রেই কাগজে বর্ণিত পৃথকীকরণকে বাস্তবে বজায় রাখার জন্য একটি উপযুক্ত বিধান করা হয়নি। আমি যা প্রমাণ করতে চেয়েছি তা হলো, প্রস্তাবিত সংবিধানের বিরুদ্ধে মুক্ত সরকারের পবিত্র নীতি লঙ্ঘনের যে অভিযোগ আনা হয়েছে, তা এর প্রণেতার দ্বারা সেই নীতির সাথে যুক্ত প্রকৃত অর্থ দ্বারা ন্যায়সঙ্গত নয়, বা আমেরিকাতে এযাবৎকাল পর্যন্ত যে অর্থে এটি বোঝা হয়েছে তার দ্বারাও নয়। এই আকর্ষণীয় বিষয়টি আগামী প্রবন্ধে পুনরায় শুরু করা হবে।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি প্রস্তাবিত মার্কিন যুক্তরাষ্ট্রের সংবিধানের অধীনে সরকারের নির্বাহী, আইন এবং বিচার শাখাগুলোর মধ্যে ক্ষমতার পৃথকীকরণ পরীক্ষা করে।
==ফেডারালিস্ট নং ৪৮==
ফেডারালিস্ট নং ৪৮-এর শিরোনাম হলো ''"এই বিভাগগুলোকে এতটা আলাদা করা উচিত নয় যাতে একে অপরের ওপর কোনো সাংবিধানিক নিয়ন্ত্রণ না থাকে"''। এই ফেডারালিস্ট পেপারটি লিখেছেন জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''গত প্রবন্ধে এটি দেখানো হয়েছিল যে সেখানে পরীক্ষিত রাজনৈতিক নীতিটিতে এমন কোনো বাধ্যবাধকতা নেই যে আইন, নির্বাহী এবং বিচার বিভাগগুলোকে একে অপরের সাথে সম্পূর্ণ সম্পর্কহীন হতে হবে। আমি এরপরে এটি দেখানোর দায়িত্ব নেব যে, যদি না এই বিভাগগুলো এমনভাবে সংযুক্ত এবং মিশ্রিত হয় যাতে একে অপরকে অন্যদের ওপর একটি সাংবিধানিক নিয়ন্ত্রণ দিতে পারে, তবে একটি মুক্ত সরকারের জন্য অপরিহার্য হিসেবে এই নীতিটি যে মাত্রার পৃথকীকরণের দাবি করে, তা বাস্তবে কখনোই যথাযথভাবে বজায় রাখা যাবে না। এটি সব পক্ষের দ্বারা সম্মত যে, একটি বিভাগের সঠিকভাবে অন্তর্গত ক্ষমতাগুলো অন্য কোনো বিভাগের দ্বারা প্রত্যক্ষ এবং সম্পূর্ণভাবে পরিচালিত হওয়া উচিত নয়। এটি সমানভাবে স্পষ্ট যে, তাদের নিজ নিজ ক্ষমতার প্রশাসনে অন্যদের ওপর প্রত্যক্ষ বা পরোক্ষভাবে, কারওই কোনো আধিপত্য বিস্তারকারী প্রভাব থাকা উচিত নয়। এটি অস্বীকার করা যাবে না যে, ক্ষমতার একটি জবরদখলকারী প্রকৃতি রয়েছে এবং এটিকে এর জন্য নির্ধারিত সীমা অতিক্রম করা থেকে কার্যকরভাবে সংযত করা উচিত।''
''অতএব, তত্ত্বগতভাবে, ক্ষমতার বিভিন্ন শ্রেণীকে আলাদা করার পর, যেহেতু সেগুলো প্রকৃতিগতভাবে আইনসভা, নির্বাহী বা বিচার বিভাগীয় হতে পারে, পরবর্তী এবং সবচেয়ে কঠিন কাজ হলো অন্যদের আক্রমণের বিরুদ্ধে প্রত্যেকটির জন্য কিছু ব্যবহারিক নিরাপত্তার ব্যবস্থা করা।''
''এই নিরাপত্তা কী হওয়া উচিত, তা হলো সমাধান করার মতো বড় সমস্যা। সরকারের সংবিধানে নির্ভুলতার সাথে এই বিভাগগুলোর সীমানা চিহ্নিত করা এবং ক্ষমতার জবরদখলকারী চেতনার বিরুদ্ধে এই কাগজের (পার্চমেন্ট) বাধাগুলোর ওপর আস্থা রাখাই কি যথেষ্ট হবে? এই নিরাপত্তাই বেশিরভাগ আমেরিকান সংবিধান প্রণেতাদের দ্বারা প্রধানত নির্ভর করা হয়েছে বলে মনে হয়। কিন্তু অভিজ্ঞতা আমাদের আশ্বস্ত করে যে, এই বিধানের কার্যকারিতাকে ব্যাপকভাবে অতিরঞ্জিত করা হয়েছে; এবং সরকারের অধিকতর শক্তিশালী সদস্যদের বিরুদ্ধে অপেক্ষাকৃত দুর্বল সদস্যদের জন্য আরও কিছু পর্যাপ্ত প্রতিরক্ষা অপরিহার্যভাবে প্রয়োজন। আইনসভা বিভাগ সব জায়গাতেই এর কার্যকলাপের পরিধি প্রসারিত করছে এবং সমস্ত ক্ষমতাকে তার প্রবল ঘূর্ণিতে টেনে নিচ্ছে। আমাদের প্রজাতন্ত্রগুলোর প্রতিষ্ঠাতারা যে প্রজ্ঞা প্রদর্শন করেছেন তার জন্য তাদের এত বেশি যোগ্যতা রয়েছে যে, তারা যে ভুলগুলো করেছেন তা নির্দেশ করার চেয়ে কম আনন্দদায়ক কাজ আর হতে পারে না। তবে সত্যের প্রতি শ্রদ্ধা আমাদের এই মন্তব্য করতে বাধ্য করে যে, আইনসভা কর্তৃপক্ষের একটি বংশানুক্রমিক শাখার দ্বারা সমর্থিত এবং সুরক্ষিত, একজন বংশানুক্রমিক ম্যাজিস্ট্রেটের অতিবর্ধিত এবং সর্বগ্রাসী বিশেষাধিকার থেকে স্বাধীনতার প্রতি যে বিপদ, তা থেকে তারা যেন এক মুহূর্তের জন্যও চোখ ফেরাননি। তারা মনে হয় আইনসভার জবরদখল থেকে বিপদের কথা কখনোই স্মরণ করেননি, যা একই হাতে সমস্ত ক্ষমতা একত্রিত করে, ঠিক একই স্বৈরাচারের দিকে নিয়ে যেতে বাধ্য, যেমনটি নির্বাহী জবরদখলের দ্বারা হুমকিস্বরূপ। এমন একটি সরকারে যেখানে অসংখ্য এবং বিস্তৃত বিশেষাধিকার একজন বংশানুক্রমিক রাজার হাতে ন্যস্ত করা হয়, নির্বাহী বিভাগকে অত্যন্ত ন্যায্যভাবেই বিপদের উৎস হিসেবে বিবেচনা করা হয়, এবং স্বাধীনতার প্রতি অনুরাগ যে ধরনের সতর্কতা অনুপ্রাণিত করা উচিত, সেই সমস্ত সতর্কতার সাথে পর্যবেক্ষণ করা হয়। একটি গণতন্ত্রে, যেখানে বিপুল সংখ্যক মানুষ ব্যক্তিগতভাবে আইনসভার কাজগুলো প্রয়োগ করে এবং নিয়মিত আলোচনা ও সম্মিলিত পদক্ষেপের অক্ষমতার কারণে ক্রমাগত তাদের নির্বাহী ম্যাজিস্ট্রেটদের উচ্চাভিলাষী ষড়যন্ত্রের সম্মুখীন হয়, সেখানে স্বৈরাচার খুব সহজেই আশঙ্কা করা যেতে পারে, কোনো অনুকূল জরুরি পরিস্থিতিতে, একই জায়গা থেকে শুরু হওয়ার। কিন্তু একটি প্রতিনিধিত্বমূলক প্রজাতন্ত্রে, যেখানে নির্বাহী ম্যাজিস্ট্রেসি সতর্কতার সাথে সীমিত; এর ক্ষমতার পরিধি এবং সময়কাল উভয় ক্ষেত্রেই; এবং যেখানে আইন প্রণয়নের ক্ষমতা একটি সংসদ দ্বারা প্রয়োগ করা হয়, যা জনগণের ওপর অনুমিত প্রভাবের দ্বারা তার নিজস্ব শক্তিতে একটি নির্ভীক আত্মবিশ্বাসের সাথে অনুপ্রাণিত; যা একটি জনতাকে আলোড়িত করার মতো সমস্ত আবেগ অনুভব করার জন্য যথেষ্ট অসংখ্য, তবুও এতটাই অসংখ্য নয় যে যুক্তির নির্দেশিত উপায়ে তার আবেগের বস্তুগুলো অনুসরণ করতে অক্ষম; জনগণের উচিত এই বিভাগের উদ্যমী উচ্চাকাঙ্ক্ষার বিরুদ্ধেই তাদের সমস্ত সতর্কতা প্রয়োগ করা এবং সমস্ত পূর্বসতর্কতা নিঃশেষ করা। আইনসভা বিভাগ অন্যান্য পরিস্থিতি থেকে আমাদের সরকারগুলোতে একটি শ্রেষ্ঠত্ব অর্জন করে। এর সাংবিধানিক ক্ষমতাগুলো একযোগে আরও ব্যাপক এবং সুনির্দিষ্ট সীমার সাপেক্ষে কম হওয়ায়, এটি আরও বেশি সুবিধার সাথে, জটিল এবং পরোক্ষ ব্যবস্থাগুলোর অধীনে, সমন্বয়কারী বিভাগগুলোর ওপর তার করা জবরদখলগুলোকে মুখোশ পরিয়ে রাখতে পারে। আইনসভা সংস্থাগুলোতে এটি খুব কমই প্রকৃত সূক্ষ্মতার প্রশ্ন নয় যে, কোনো নির্দিষ্ট ব্যবস্থার ক্রিয়াকলাপ আইনসভার পরিধি ছাড়িয়ে প্রসারিত হবে কি হবে না। অন্যদিকে, নির্বাহী ক্ষমতা একটি সংকীর্ণ সীমার মধ্যে সীমাবদ্ধ থাকায় এবং এর প্রকৃতিতে আরও সহজ হওয়ায়, এবং বিচার বিভাগ আরও কম অনিশ্চিত ল্যান্ডমার্ক দ্বারা বর্ণিত হওয়ায়, এই বিভাগগুলোর যেকোনোটির দ্বারা জবরদখলের প্রকল্পগুলো অবিলম্বে নিজেদের বিশ্বাসঘাতকতা করবে এবং পরাজিত করবে। শুধু তাই নয়: যেহেতু শুধুমাত্র আইনসভা বিভাগের জনগণের পকেটে প্রবেশাধিকার রয়েছে, এবং কিছু সংবিধানে সম্পূর্ণ বিচক্ষণতা এবং সবগুলোতে অন্যান্য বিভাগে যারা পদ পূরণ করে তাদের আর্থিক পুরস্কারের ওপর একটি বিরাজমান প্রভাব রয়েছে, তাই পরেরটিতে এমন একটি নির্ভরতা তৈরি হয়, যা পূর্ববর্তীটির জবরদখলকে আরও বেশি সুবিধা দেয়। এই বিষয়ে আমি যা অগ্রসর করেছি তার সত্যতার জন্য আমি আমাদের নিজস্ব অভিজ্ঞতার কাছে আবেদন করেছি। যদি নির্দিষ্ট প্রমাণের দ্বারা এই অভিজ্ঞতা যাচাই করার প্রয়োজন হতো, তবে সেগুলো শেষ না করেই বহুগুণ করা যেতে পারে। জনপ্রশাসনের গতিপথে অংশ নেওয়া বা মনোযোগী হওয়া প্রতিটি নাগরিকের মধ্যে আমি একজন সাক্ষী খুঁজে পেতে পারি। আমি ইউনিয়নের প্রতিটি অঙ্গরাজ্যের রেকর্ড এবং আর্কাইভ থেকে প্রচুর পরিমাণে প্রমাণ সংগ্রহ করতে পারি। তবে আরও সংক্ষিপ্ত এবং একই সাথে সমানভাবে সন্তোষজনক প্রমাণ হিসেবে, আমি দুটি অঙ্গরাজ্যের উদাহরণের কথা উল্লেখ করব, যা দুটি অকাট্য কর্তৃপক্ষের দ্বারা সত্যায়িত। প্রথম উদাহরণটি হলো ভার্জিনিয়ার, এমন একটি অঙ্গরাজ্য যা, যেমনটি আমরা দেখেছি, তার সংবিধানে স্পষ্টভাবে ঘোষণা করেছে যে, তিনটি মহান বিভাগকে মিশ্রিত করা উচিত নয়। এর সমর্থনে কর্তৃপক্ষ হলেন মিস্টার জেফারসন, যিনি সরকারের কার্যক্রম মন্তব্য করার জন্য তার অন্যান্য সুবিধার পাশাপাশি নিজেই এর প্রধান ম্যাজিস্ট্রেট ছিলেন। এই বিষয়ে তার অভিজ্ঞতা তাকে যে ধারণাগুলোর দ্বারা প্রভাবিত করেছিল তা পুরোপুরি বোঝানোর জন্য, তার অত্যন্ত আকর্ষণীয় "নোটস অন দ্য স্টেট অফ ভার্জিনিয়া," পৃষ্ঠা ১৯৫ থেকে কিছুটা দীর্ঘ একটি অনুচ্ছেদ উদ্ধৃত করা প্রয়োজন হবে। "সরকারের সমস্ত ক্ষমতা, আইনসভা, নির্বাহী এবং বিচার বিভাগীয়, আইনসভা সংস্থার পরিণতি হয়। এগুলোকে একই হাতে কেন্দ্রীভূত করাই হলো সঠিকভাবে স্বৈরাচারী সরকারের সংজ্ঞা। এটি কোনো উপশম হবে না যে, এই ক্ষমতাগুলো একাধিক হাতের দ্বারা প্রয়োগ করা হবে, কেবল একজনের দ্বারা নয়। একশ তিহাত্তর জন স্বৈরাচারী নিশ্চিতভাবেই একজনের মতোই নিপীড়ক হবে। যাঁরা এতে সন্দেহ করেন, তাঁদের ভেনিস প্রজাতন্ত্রের দিকে চোখ ফেরাতে দিন। তারা আমাদের দ্বারাই নির্বাচিত, এটি আমাদের খুব কমই কাজে আসবে। একটি নির্বাচিত স্বৈরাচার সেই সরকার ছিল না যার জন্য আমরা লড়াই করেছিলাম; বরং এমন একটি সরকার যা কেবল মুক্ত নীতির ওপর প্রতিষ্ঠিত হওয়া উচিত নয়, বরং যেখানে সরকারের ক্ষমতাগুলো বিভিন্ন ম্যাজিস্ট্রেসি সংস্থার মধ্যে এমনভাবে বিভক্ত এবং ভারসাম্যপূর্ণ হওয়া উচিত, যাতে কেউই অন্যদের দ্বারা কার্যকরভাবে নিয়ন্ত্রিত এবং সংযত না হয়ে তাদের আইনি সীমা অতিক্রম করতে না পারে।''
''এই কারণে, যে কনভেনশন সরকারের অধ্যাদেশ পাস করেছিল, তা এই ভিত্তিতে এর ভিত্তি স্থাপন করেছিল যে আইন, নির্বাহী এবং বিচার বিভাগগুলো আলাদা এবং স্বতন্ত্র হওয়া উচিত, যাতে কোনো ব্যক্তি একই সময়ে তাদের একাধিক ক্ষমতা প্রয়োগ না করে। তবে এই বিভিন্ন ক্ষমতার মধ্যে কোনো বাধা প্রদান করা হয়নি। বিচার বিভাগ এবং নির্বাহী সদস্যদের অফিসে তাদের জীবনধারণের জন্য আইনসভার ওপর নির্ভরশীল রেখে দেওয়া হয়েছিল এবং তাদের মধ্যে কয়েকজনকে এতে তাদের ধারাবাহিকতার জন্য। অতএব, আইনসভা যদি নির্বাহী এবং বিচারিক ক্ষমতা গ্রহণ করে, তবে কোনো বিরোধিতা হওয়ার সম্ভাবনা নেই; অথবা, যদি করাও হয়, তবে তা কার্যকর হতে পারে না; কারণ সেক্ষেত্রে তারা তাদের কার্যধারা অ্যাসেম্বলির আইনের রূপ দিতে পারে, যা সেগুলোকে অন্যান্য শাখার ওপর বাধ্যতামূলক করে তুলবে। তারা তদনুসারে, অনেক ক্ষেত্রে, এমন অধিকারের সিদ্ধান্ত নিয়েছে যা বিচারিক বিতর্কের ওপর ছেড়ে দেওয়া উচিত ছিল, এবং তাদের অধিবেশনের পুরো সময় ধরে নির্বাহীর নির্দেশনা, অভ্যাসগত এবং পরিচিত হয়ে উঠছে। "অন্য যে অঙ্গরাজ্যটিকে আমি উদাহরণ হিসেবে নেব তা হলো পেনসিলভানিয়া; এবং অন্য কর্তৃপক্ষ হলো সেন্সর কাউন্সিল, যা ১৭৮৩ এবং ১৭৮৪ সালে একত্রিত হয়েছিল। সংবিধান দ্বারা চিহ্নিত এই সংস্থার কর্তব্যের একটি অংশ ছিল "সংবিধান প্রতিটি অংশে অলঙ্ঘনীয় সংরক্ষিত হয়েছে কিনা তা অনুসন্ধান করা; এবং সরকারের আইন ও নির্বাহী শাখাগুলো জনগণের অভিভাবক হিসেবে তাদের দায়িত্ব পালন করেছে কিনা, বা সংবিধান দ্বারা তারা যে ক্ষমতার অধিকারী তার চেয়ে অন্য বা বৃহত্তর ক্ষমতা নিজেদের জন্য গ্রহণ করেছে বা প্রয়োগ করেছে কিনা।" এই আস্থা কার্যকর করার ক্ষেত্রে, পরিষদকে অপরিহার্যভাবেই এই বিভাগগুলোর সাংবিধানিক ক্ষমতার সাথে আইনসভা এবং নির্বাহী উভয় কার্যবিধির তুলনার দিকে পরিচালিত করা হয়েছিল; এবং উল্লেখিত তথ্যগুলো থেকে, এবং যার বেশিরভাগের সত্যতা পরিষদের উভয় পক্ষই স্বীকার করেছিল, এটি প্রতীয়মান হয় যে বিভিন্ন গুরুত্বপূর্ণ ক্ষেত্রে আইনসভা দ্বারা সংবিধান ব্যাপকভাবে লঙ্ঘিত হয়েছিল। কোনো সুস্পষ্ট প্রয়োজনীয়তা ছাড়াই, সর্বজনীন প্রকৃতির সমস্ত বিল জনগণের বিবেচনার জন্য আগে থেকে মুদ্রিত করা হবে এমন নিয়মের লঙ্ঘন করে বিপুল সংখ্যক আইন পাস করা হয়েছিল; যদিও আইনসভার অনুপযুক্ত কাজের বিরুদ্ধে সংবিধান দ্বারা প্রধানত নির্ভর করা সতর্কতাগুলোর মধ্যে এটি অন্যতম। জুরি দ্বারা সাংবিধানিক বিচার লঙ্ঘিত হয়েছিল, এবং এমন ক্ষমতা গ্রহণ করা হয়েছিল যা সংবিধান দ্বারা অর্পণ করা হয়নি।''
''নির্বাহী ক্ষমতা জবরদখল করা হয়েছিল। বিচারকদের বেতন, যা সংবিধান স্পষ্টভাবে নির্ধারণ করার নির্দেশ দেয়, তা মাঝে মাঝে পরিবর্তিত হয়েছিল; এবং বিচার বিভাগের অন্তর্গত মামলাগুলো প্রায়শই আইনসভার বিচারবুদ্ধি এবং নির্ধারণের মধ্যে টানা হয়েছিল। যাঁরা এই প্রতিটি শিরোনামের অধীনে থাকা বেশ কয়েকটি বিশদ বিবরণ দেখতে চান, তাঁরা মুদ্রিত অবস্থায় থাকা পরিষদের জার্নালগুলোর সাথে পরামর্শ করতে পারেন। তাদের মধ্যে কিছু, দেখা যাবে, যুদ্ধের সাথে যুক্ত অদ্ভুত পরিস্থিতির জন্য দায়ী হতে পারে; তবে সেগুলোর বৃহত্তর অংশকে একটি অগঠিত সরকারের স্বতঃস্ফূর্ত অঙ্কুর হিসেবে বিবেচনা করা যেতে পারে। এটিও প্রতীয়মান হয় যে, নির্বাহী বিভাগ সংবিধানের ঘন ঘন লঙ্ঘনের ক্ষেত্রে নির্দোষ ছিল না। তবে এই বিষয়ে তিনটি পর্যবেক্ষণ করা উচিত: প্রথমত, দৃষ্টান্তগুলোর একটি বড় অংশ হয় অবিলম্বে যুদ্ধের প্রয়োজনীয়তার দ্বারা উৎপাদিত হয়েছিল, বা কংগ্রেস বা কমান্ডার-ইন-চিফ দ্বারা সুপারিশ করা হয়েছিল; দ্বিতীয়ত, অন্যান্য দৃষ্টান্তের বেশিরভাগ ক্ষেত্রে, তারা আইনসভা বিভাগের ঘোষিত বা পরিচিত অনুভূতিগুলোর সাথে সামঞ্জস্যপূর্ণ ছিল; তৃতীয়ত, পেনসিলভানিয়ার নির্বাহী বিভাগটি এটি গঠনকারী সদস্যের সংখ্যা দ্বারা অন্যান্য অঙ্গরাজ্যগুলোর থেকে আলাদা। এদিক থেকে, একটি নির্বাহী পরিষদের প্রতি এর যতটা সখ্যতা রয়েছে, একটি আইনসভার প্রতিও এর ততটাই সখ্যতা রয়েছে। এবং একযোগে সংস্থার কাজের জন্য ব্যক্তিগত দায়িত্বের সংযম থেকে অব্যাহতি পাওয়ায়, এবং পারস্পরিক উদাহরণ ও যৌথ প্রভাব থেকে আত্মবিশ্বাস অর্জন করায়, অননুমোদিত পদক্ষেপগুলো অবশ্যই আরও স্বাধীনভাবে ঝুঁকিপূর্ণ করা হবে, যেখানে নির্বাহী বিভাগ একটিমাত্র হাতে, বা কয়েকটি হাতে পরিচালিত হয় তার চেয়ে।''
''এই পর্যবেক্ষণগুলো থেকে আমি যে সিদ্ধান্তে উপনীত হওয়ার অধিকার রাখি তা হলো, কেবল পার্চমেন্টে (কাগজে) বিভিন্ন বিভাগের সাংবিধানিক সীমার একটি নিছক চিহ্নিতকরণ, সেই জবরদখলগুলোর বিরুদ্ধে পর্যাপ্ত প্রহরী নয় যা একই হাতে সরকারের সমস্ত ক্ষমতার স্বৈরাচারী কেন্দ্রীকরণের দিকে পরিচালিত করে।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি ক্ষমতার পৃথকীকরণের পক্ষে যুক্তি দিয়েছিল; এই প্রবন্ধটিতে ম্যাডিসন যুক্তি দিয়েছেন যে সরকারের আইন, নির্বাহী এবং বিচার শাখাগুলোকে সম্পূর্ণভাবে বিভক্ত করা উচিত নয়।
ফেডারালিস্ট নং ৪৭ যুক্তি দিয়েছিল যে সরকারের শাখাগুলোকে "আলাদা এবং স্বতন্ত্র" থাকার পাশাপাশি সংযুক্ত করা যেতে পারে। ৪৮ নম্বর প্রবন্ধের যুক্তি হলো, শাখাগুলোকে ব্যবহারিকভাবে "আলাদা এবং স্বতন্ত্র" হিসেবে বজায় রাখার জন্য, একে অপরের ওপর তাদের অবশ্যই "একটি সাংবিধানিক নিয়ন্ত্রণ" থাকতে হবে।
প্রবন্ধটি এই দাবি দিয়ে শুরু হয় যে "ক্ষমতার একটি জবরদখলকারী প্রকৃতি রয়েছে", অর্থাৎ যাদের ক্ষমতা আছে তারা যা কিছু পারে তা নিয়ন্ত্রণ করার চেষ্টা করবে। তারপর এটি জিজ্ঞাসা করে যে সরকারের শাখাগুলোর "আলাদা এবং স্বতন্ত্র" গুণমান সংরক্ষণ করার জন্য এই প্রবণতা কীভাবে বন্ধ করা যেতে পারে। এরপর এটি দাবি করে যে নিছক শাখাগুলোর সীমানা সংজ্ঞায়িত করা একটি অপর্যাপ্ত রক্ষাকবচ। এটি আইনসভা শাখাকে ক্ষমতা গ্রহণের ক্ষেত্রে বিশেষভাবে সফল হিসেবে আলাদা করে।
প্রধান যুক্তির পাশপাশি, প্রবন্ধটি উল্লেখ করে যে আইনসভা শাখার ক্ষমতা গ্রহণের বিপদের কথা "আমাদের প্রজাতন্ত্রগুলোর প্রতিষ্ঠাতারা", অর্থাৎ যারা তেরোটি অঙ্গরাজ্যের সংবিধান লিখেছিলেন, তারা ভাবেননি।
প্রবন্ধটি বেশ কয়েকটি কারণ তুলে ধরে কেন অন্যান্য ধরণের সরকারের থেকে আলাদা হিসেবে একটি "প্রতিনিধিত্বমূলক প্রজাতন্ত্রে" আইনসভার অতিরিক্ত হস্তক্ষেপের সম্ভাবনা বেশি। এই কারণগুলোর মধ্যে এই দাবিটি অন্তর্ভুক্ত যে আইনসভা "একটি জনতাকে আলোড়িত করার মতো সমস্ত আবেগ অনুভব করার জন্য যথেষ্ট অসংখ্য, তবুও এতটাই অসংখ্য নয় যে এর আবেগের বস্তুগুলো অনুসরণ করতে অক্ষম" এবং এর ক্ষমতাগুলো "আরও ব্যাপক এবং সুনির্দিষ্ট সীমার সাপেক্ষে কম"।
এরপর আইনসভার অতিরিক্ত হস্তক্ষেপের দুটি উদাহরণ দেওয়া হয়েছে: ভার্জিনিয়া এবং পেনসিলভানিয়া।
ভার্জিনিয়ার উদাহরণটি মূলত থমাস জেফারসনের ''নোটস অন দ্য স্টেট অফ ভার্জিনিয়া'' থেকে একটি দীর্ঘ উদ্ধৃতি, যেখানে তিনি প্রবন্ধের দাবিগুলোকে সমর্থন করেন।
পেনসিলভানিয়ার ক্ষেত্রে, প্রবন্ধটি পেনসিলভানিয়া সংবিধানের স্পষ্ট লঙ্ঘনের বিষয়ে "সেন্সর কাউন্সিল"-এর একটি প্রতিবেদনের সিদ্ধান্তগুলোকে সারসংক্ষেপ করে; এটি এর অনেকগুলো খুঁজে পেয়েছিল। প্রতিবেদনের এই দাবির একটি ছোট খণ্ডন করা হয়েছে যে কেবল আইনসভা শাখা নয়, নির্বাহী শাখা দ্বারাও অনেক লঙ্ঘন করা হয়েছিল।
==ফেডারালিস্ট নং ৪৯==
ফেডারালিস্ট নং ৪৯-এর শিরোনাম হলো ''"একটি কনভেনশনের মাধ্যমে জনগণের কাছে আবেদন করে সরকারের যেকোনো একটি বিভাগের জবরদখল থেকে রক্ষা করার পদ্ধতি"''। এই ফেডারালিস্ট পেপারটি লিখেছেন আলেকজান্ডার হ্যামিল্টন বা জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''গত প্রবন্ধে উদ্ধৃত "নোটস অন দ্য স্টেট অফ ভার্জিনিয়া"-এর লেখক সেই মূল্যবান কাজের সাথে একটি সংবিধানের খসড়া যুক্ত করেছেন, যা ১৭৮৩ সালে সেই কমনওয়েলথের জন্য একটি সংবিধান প্রতিষ্ঠার উদ্দেশ্যে আইনসভা দ্বারা ডাকা হবে বলে প্রত্যাশিত একটি কনভেনশনের সামনে উপস্থাপনের জন্য প্রস্তুত করা হয়েছিল। পরিকল্পনাটি, একই লেখকের কলম থেকে আসা অন্যান্য সবকিছুর মতোই, চিন্তার একটি মৌলিক, ব্যাপক এবং নির্ভুল মোড় চিহ্নিত করে; এবং এটি আরও বেশি মনোযোগের দাবি রাখে কারণ এটি প্রজাতন্ত্রী সরকারের প্রতি একটি প্রবল অনুরাগ এবং সেই বিপজ্জনক প্রবণতাগুলোর সম্পর্কে একটি আলোকিত দৃষ্টিভঙ্গি সমানভাবে প্রদর্শন করে যার বিরুদ্ধে একে সুরক্ষিত রাখা উচিত।''
''তিনি যে পূর্বসতর্কতাগুলোর প্রস্তাব করেছেন এবং যেটির ওপর তিনি শেষ পর্যন্ত শক্তিশালী বিভাগগুলোর আক্রমণের বিরুদ্ধে ক্ষমতার দুর্বল বিভাগগুলোর জন্য একটি রক্ষাকবচ হিসেবে নির্ভর করছেন বলে মনে হয়, তা সম্ভবত সম্পূর্ণ তার নিজস্ব, এবং যেহেতু এটি অবিলম্বে আমাদের বর্তমান অনুসন্ধানের বিষয়ের সাথে সম্পর্কিত, তাই একে উপেক্ষা করা উচিত নয়। তার প্রস্তাব হলো, "যখনই সরকারের তিনটি শাখার মধ্যে যেকোনো দুটি শাখা তাদের মোট সংখ্যার দুই-তৃতীয়াংশের ভোটে এই মতৈক্যে পৌঁছাবে যে সংবিধান পরিবর্তন করার জন্য, বা এর লঙ্ঘনগুলো সংশোধন করার জন্য একটি কনভেনশন প্রয়োজন, তখন সেই উদ্দেশ্যে একটি কনভেনশন ডাকা হবে।" যেহেতু জনগণই হলো ক্ষমতার একমাত্র বৈধ উৎস, এবং তাদের কাছ থেকেই সাংবিধানিক সনদ উদ্ভূত হয়েছে, যার অধীনে সরকারের বিভিন্ন শাখা তাদের ক্ষমতা ধারণ করে, তাই প্রজাতন্ত্রী তত্ত্বের সাথে এটি কঠোরভাবে সামঞ্জস্যপূর্ণ বলে মনে হয় যে, কেবল সরকারের ক্ষমতাগুলো বাড়ানো, কমানো বা নতুন রূপ দেওয়ার জন্যই নয়, বরং যখনই কোনো একটি বিভাগ অন্যদের সনদপ্রাপ্ত কর্তৃপক্ষের ওপর জবরদখল করতে পারে, তখনই একই মূল কর্তৃপক্ষের শরণাপন্ন হওয়া উচিত। বিভিন্ন বিভাগ তাদের সাধারণ কমিশনের শর্তাবলী দ্বারা নিখুঁতভাবে সমন্বিত হওয়ায়, এটি স্পষ্ট যে, তাদের কেউই তাদের নিজ নিজ ক্ষমতার মধ্যে সীমানা নির্ধারণের একচেটিয়া বা উচ্চতর অধিকারের ভান করতে পারে না; এবং জনগণের কাছে আবেদন করা ছাড়া কীভাবে শক্তিশালীদের জবরদখল প্রতিরোধ করা হবে, বা দুর্বলদের প্রতি অন্যায়ের প্রতিকার করা হবে, যারা কমিশনের দাতা হিসেবে একমাত্র এর প্রকৃত অর্থ ঘোষণা করতে এবং এর পালন কার্যকর করতে পারে? এই যুক্তিতে অবশ্যই দুর্দান্ত জোর রয়েছে, এবং এটি স্বীকার করতে হবে যে, নির্দিষ্ট বড় এবং অসাধারণ উপলক্ষে জনগণের সিদ্ধান্তের জন্য একটি সাংবিধানিক পথ চিহ্নিত করা এবং খোলা রাখা উচিত। কিন্তু ক্ষমতার বিভিন্ন বিভাগকে তাদের সাংবিধানিক সীমার মধ্যে রাখার জন্য সব ক্ষেত্রে একটি বিধান হিসেবে জনগণের কাছে প্রস্তাবিত প্রত্যাবর্তনের বিরুদ্ধে অনতিক্রম্য আপত্তি রয়েছে বলে মনে হয়। প্রথমত, বিধানটি তৃতীয় বিভাগের বিরুদ্ধে দুটি বিভাগের সংমিশ্রণের ক্ষেত্রে পৌঁছায় না। যদি আইনসভা কর্তৃপক্ষ, যার অন্যান্য বিভাগের উদ্দেশ্যগুলোর ওপর কাজ করার অনেক উপায় রয়েছে, অন্য কোনোটিকে বা এমনকি এর সদস্যদের এক-তৃতীয়াংশকে তার স্বার্থে নিয়ে আসতে সক্ষম হয়, তবে অবশিষ্ট বিভাগটি তার প্রতিকারমূলক বিধান থেকে কোনো সুবিধা নিতে পারবে না। তবে আমি এই আপত্তির ওপর জোর দিচ্ছি না, কারণ এটিকে মূল নীতির বিরুদ্ধে না বলে বরং নীতির পরিবর্তনের বিরুদ্ধে বলে মনে করা যেতে পারে। দ্বিতীয়ত, এটিকে নীতিটির অন্তর্নিহিত একটি আপত্তি হিসেবে বিবেচনা করা যেতে পারে যে, জনগণের কাছে প্রতিটি আবেদন সরকারে কোনো ত্রুটির অন্তর্নিহিত অর্থ বহন করবে, ঘন ঘন আবেদনগুলো অনেকাংশে সরকারকে সেই শ্রদ্ধা থেকে বঞ্চিত করবে যা সময় সবকিছুকে প্রদান করে, এবং যা ছাড়া সম্ভবত সবচেয়ে জ্ঞানী এবং স্বাধীন সরকারগুলোও প্রয়োজনীয় স্থিতিশীলতার অধিকারী হবে না। যদি এটি সত্য হয় যে সমস্ত সরকার মতামতের ওপর নির্ভর করে, তবে এটিও কম সত্য নয় যে প্রতিটি ব্যক্তির মধ্যে মতামতের শক্তি এবং তার আচরণের ওপর এর ব্যবহারিক প্রভাব, সে কতজনের একই মতামত রয়েছে বলে মনে করে তার ওপর অনেকাংশে নির্ভর করে। মানুষের যুক্তি, মানুষের মতোই, একাকী ছেড়ে দেওয়া হলে ভীতু এবং সতর্ক হয়, এবং এটি যে সংখ্যার সাথে যুক্ত থাকে তার অনুপাতে দৃঢ়তা এবং আত্মবিশ্বাস অর্জন করে। যখন মতামতকে শক্তিশালীকারী উদাহরণগুলো প্রাচীন এবং সেইসাথে অসংখ্য হয়, তখন সেগুলো দ্বিগুণ প্রভাব ফেলে বলে জানা যায়। দার্শনিকদের একটি জাতিতে, এই বিবেচনাটি উপেক্ষা করা উচিত। আলোকিত যুক্তির কণ্ঠস্বর দ্বারা আইনগুলোর প্রতি শ্রদ্ধা যথেষ্টভাবে প্ররোচিত হবে। কিন্তু প্লেটোর কাম্য দার্শনিক রাজাদের মতো দার্শনিকদের একটি জাতিও সমানভাবে অপ্রত্যাশিত। এবং অন্যান্য প্রতিটি জাতিতে, সবচেয়ে যুক্তিবাদী সরকার তার পক্ষে সম্প্রদায়ের সংস্কার থাকাটাকে অপ্রয়োজনীয় সুবিধা হিসেবে দেখবে না। জনগণের আবেগকে খুব বেশি আগ্রহী করে তুলে জনশান্তি বিঘ্নিত করার বিপদটি সমগ্র সমাজের সিদ্ধান্তের কাছে সাংবিধানিক প্রশ্নগুলোর ঘন ঘন উল্লেখের বিরুদ্ধে আরও একটি গুরুতর আপত্তি। আমাদের প্রতিষ্ঠিত সরকারগুলোর সংশোধনে যে সাফল্য এসেছে, এবং যা আমেরিকার জনগণের পুণ্য এবং বুদ্ধিমত্তাকে এত বেশি সম্মানিত করে, তা সত্ত্বেও এটি স্বীকার করতেই হবে যে পরীক্ষাগুলো এত বেশি সূক্ষ্ম প্রকৃতির যে সেগুলোকে অপ্রয়োজনে বহুগুণ করা যায় না। আমাদের মনে রাখতে হবে যে বিদ্যমান সমস্ত সংবিধান এমন একটি বিপদের মধ্যে গঠিত হয়েছিল যা শৃঙ্খলা এবং সম্প্রীতির জন্য সবচেয়ে অবন্ধনসুলভ আবেগগুলোকে দমন করেছিল; তাদের দেশপ্রেমিক নেতাদের প্রতি জনগণের একটি উৎসাহী আত্মবিশ্বাসের মধ্যে, যা মহান জাতীয় প্রশ্নগুলোতে মতামতের সাধারণ বৈচিত্র্যকে অবরুদ্ধ করেছিল; প্রাচীন সরকারের বিরুদ্ধে একটি সার্বজনীন ক্ষোভ এবং ক্রোধের দ্বারা উৎপাদিত নতুন এবং বিপরীত রূপগুলোর জন্য একটি সার্বজনীন আবেগের মধ্যে; এবং যেখানে করা পরিবর্তনের সাথে বা সংস্কার করা অপব্যবহারের সাথে যুক্ত কোনো দলীয় চেতনা কার্যক্রমে তার প্রভাব মেলাতে পারেনি। ভবিষ্যতের যে পরিস্থিতিগুলোতে আমাদের সাধারণত থাকতে হবে বলে আশা করতে হবে, সেগুলো আশঙ্কিত বিপদের বিরুদ্ধে কোনো সমতুল্য নিরাপত্তা উপস্থাপন করে না। তবে সবচেয়ে বড় আপত্তি হলো এই যে, এই ধরনের আবেদনগুলোর ফলে সম্ভবত যে সিদ্ধান্তগুলো আসবে তা সরকারের সাংবিধানিক ভারসাম্য বজায় রাখার উদ্দেশ্য পূরণ করবে না। আমরা দেখেছি যে প্রজাতন্ত্রী সরকারগুলোর প্রবণতা হলো অন্যান্য বিভাগের ব্যয়ে আইনসভার একটি বর্ধিতকরণ। তাই জনগণের কাছে আবেদনগুলো সাধারণত নির্বাহী এবং বিচার বিভাগগুলো দ্বারাই করা হবে। কিন্তু একপক্ষ বা অন্যপক্ষ যার দ্বারাই করা হোক না কেন, প্রতিটি পক্ষ কি বিচারে সমান সুবিধা ভোগ করবে? আসুন আমরা তাদের বিভিন্ন পরিস্থিতি দেখি। নির্বাহী এবং বিচার বিভাগের সদস্যরা সংখ্যায় কম, এবং জনগণের একটি ছোট অংশের কাছে ব্যক্তিগতভাবে পরিচিত হতে পারেন। বিচার বিভাগ, তাদের নিয়োগের পদ্ধতির পাশাপাশি এর প্রকৃতি এবং স্থায়িত্বের কারণে, তাদের পূর্বানুমানের অংশীদার হওয়ার জন্য জনগণের থেকে অনেক দূরে সরে গেছে। নির্বাহী বিভাগ সাধারণত ঈর্ষার বস্তু হয় এবং তাদের প্রশাসন সর্বদা কলঙ্কিত এবং অজনপ্রিয় হওয়ার ঝুঁকিতে থাকে। অন্যদিকে, আইনসভা বিভাগের সদস্যরা অসংখ্য। তারা ছড়িয়ে ছিটিয়ে আছেন এবং জনগণের মাঝে বসবাস করেন। রক্ত, বন্ধুত্ব এবং পরিচিতির তাদের সংযোগগুলো সমাজের সবচেয়ে প্রভাবশালী অংশের একটি বিশাল অনুপাতকে আলিঙ্গন করে। তাদের জনসাধারণের আস্থার প্রকৃতি জনগণের মধ্যে একটি ব্যক্তিগত প্রভাবকে বোঝায়, এবং তারা আরও অবিলম্বে জনগণের অধিকার এবং স্বাধীনতার গোপনীয় অভিভাবক। এই সুবিধাগুলোর সাথে, এটি খুব কমই ধরে নেওয়া যেতে পারে যে প্রতিকূল পক্ষের অনুকূল ফলাফলের জন্য সমান সুযোগ থাকবে। তবে আইনসভা দল কেবল জনগণের কাছে তাদের কারণটি সবচেয়ে সফলভাবে উপস্থাপন করতেই সক্ষম হবে না। তারা সম্ভবত নিজেরাই বিচারক হিসেবে গঠিত হবেন।''
''যে একই প্রভাব তাদের আইনসভায় একটি নির্বাচন জিতিয়েছিল, তা তাদের কনভেনশনেও একটি আসন জিতিয়ে দেবে। যদি এটি সবার ক্ষেত্রে না-ও হয়, তবে এটি সম্ভবত অনেকের ক্ষেত্রে হবে, এবং বেশ নিশ্চিতভাবেই সেই প্রধান চরিত্রগুলোর ক্ষেত্রে হবে, যাদের ওপর এই ধরনের সংস্থাগুলোতে সবকিছু নির্ভর করে। সংক্ষেপে বলতে গেলে, কনভেনশনটি মূলত এমন লোকদের নিয়ে গঠিত হবে যারা সেই বিভাগের সদস্য ছিলেন, যারা বাস্তবে আছেন বা যারা হওয়ার প্রত্যাশা করছেন যার আচরণের বিচার করা হচ্ছিল। ফলস্বরূপ তারা তাদের দ্বারাই সিদ্ধান্ত নেওয়া প্রশ্নের পক্ষ হবেন। তবে কখনো কখনো এমনটি ঘটতে পারে যে, নির্বাহী এবং বিচার বিভাগগুলোর জন্য কম প্রতিকূল পরিস্থিতিতে আবেদন করা হবে। আইনসভার জবরদখল এতটাই স্পষ্ট এবং এত আকস্মিক হতে পারে যে কোনো বাহ্যিক আবরণ স্বীকার করবে না। তাদের নিজেদের মধ্যে একটি শক্তিশালী দল অন্যান্য শাখাগুলোর পক্ষ নিতে পারে। নির্বাহী ক্ষমতা জনগণের একজন নির্দিষ্ট পছন্দের ব্যক্তির হাতে থাকতে পারে। জিনিসগুলোর এমন একটি অবস্থানে, জনগণের সিদ্ধান্ত আইনসভা দলের অনুকূলে পূর্বানুমান দ্বারা কম প্রভাবিত হতে পারে। কিন্তু তবুও এটি কখনোই প্রশ্নের প্রকৃত যোগ্যতার ওপর নির্ভর করবে বলে আশা করা যায় না। এটি অনিবার্যভাবেই পূর্ব-বিদ্যমান দলগুলোর চেতনার সাথে, বা প্রশ্নটি থেকেই উদ্ভূত দলগুলোর সাথে যুক্ত হবে। এটি সম্প্রদায়ের বিশিষ্ট চরিত্র এবং বিস্তৃত প্রভাবের ব্যক্তিদের সাথে সংযুক্ত হবে। এটি ঠিক সেই লোকদের দ্বারাই উচ্চারিত হবে যারা যে পদক্ষেপের সাথে সিদ্ধান্তটি সম্পর্কিত হবে তার পক্ষে বা বিপক্ষে ছিলেন। অতএব, জনগণের আবেগ, যুক্তি নয়, বিচারে বসবে। কিন্তু একমাত্র জনগণের যুক্তিই সরকারকে নিয়ন্ত্রণ ও নিয়ন্ত্রিত করা উচিত। আবেগগুলোকে সরকারের দ্বারা নিয়ন্ত্রিত এবং বিধিবদ্ধ করা উচিত।''
''আমরা গত প্রবন্ধে দেখেছি যে লিখিত সংবিধানে নিছক ঘোষণাগুলো বিভিন্ন বিভাগকে তাদের আইনি অধিকারের মধ্যে সীমাবদ্ধ রাখার জন্য যথেষ্ট নয়। এটিতে দেখা যাচ্ছে যে, জনগণের কাছে মাঝে মাঝে আবেদন করা সেই উদ্দেশ্যে সঠিক বা কার্যকর বিধান হবে না। উপরে উদ্ধৃত পরিকল্পনায় থাকা ভিন্ন প্রকৃতির বিধানগুলো কতটা পর্যাপ্ত হতে পারে, তা আমি পরীক্ষা করছি না। তাদের মধ্যে কয়েকটি নিঃসন্দেহে সঠিক রাজনৈতিক নীতির ওপর প্রতিষ্ঠিত, এবং তাদের সবকটিই অদ্ভুত চতুরতা এবং নির্ভুলতার সাথে প্রণয়ন করা হয়েছে।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি ব্যাখ্যা করে যে কীভাবে প্রস্তাবিত মার্কিন যুক্তরাষ্ট্রের সংবিধান সরকারের যেকোনো একটি শাখাকে স্বৈরাচারী হওয়া থেকে বাধা দেবে।
==ফেডারালিস্ট নং ৫০==
ফেডারালিস্ট নং ৫০-এর শিরোনাম হলো ''"জনগণের কাছে পর্যায়ক্রমিক আপিল বিবেচনা"''। এই ফেডারালিস্ট পেপারটি লিখেছেন আলেকজান্ডার হ্যামিল্টন বা জেমস ম্যাডিসন।
===পাঠ্য===
''নিউইয়র্ক অঙ্গরাজ্যের জনগণের প্রতি:''
''সম্ভবত এটি যুক্তি দেওয়া যেতে পারে যে, জনগণের কাছে মাঝেমধ্যে আপিলের পরিবর্তে, যা তাদের বিরুদ্ধে আনীত আপত্তিগুলোর সাপেক্ষে, পর্যায়ক্রমিক আপিলই হলো সংবিধানের লঙ্ঘন রোধ ও সংশোধনের উপযুক্ত ও পর্যাপ্ত উপায়। এটি লক্ষ করা হবে যে, এই কৌশলগুলোর পরীক্ষায়, আমি সংবিধানের স্বয়ং সংশোধনের বিধান হিসেবে বিবেচনা না করে, ক্ষমতার বিভিন্ন বিভাগকে তাদের যথোপযুক্ত সীমার মধ্যে রেখে সংবিধান কার্যকর করার জন্য তাদের উপযোগিতার মধ্যে নিজেকে সীমাবদ্ধ রাখছি। প্রথম দৃষ্টিভঙ্গিতে, নির্দিষ্ট সময়ে জনগণের কাছে আপিলগুলো মাঝেমধ্যে আপিলের মতোই অকার্যকর বলে মনে হয়।''
''যদি সময়কালগুলো স্বল্প ব্যবধানে বিভক্ত হয়, তবে পর্যালোচনা এবং সংশোধন করার জন্য পদক্ষেপগুলো সাম্প্রতিক হবে এবং সেগুলো সেই পরিস্থিতির সাথে সংযুক্ত থাকবে যা অনিয়মিত সংশোধনের ফলাফলকে কলুষিত ও বিকৃত করে। যদি সময়কালগুলো একে অপরের থেকে অনেক দূরে থাকে, তবে একই মন্তব্য সাম্প্রতিক সমস্ত পদক্ষেপের ক্ষেত্রে প্রযোজ্য হবে; এবং অন্যদের দূরবর্তীতা যেমন তাদের একটি শান্ত পর্যালোচনার পক্ষে কাজ করতে পারে, এই সুবিধাটি সেই অসুবিধার সাথে অবিচ্ছেদ্য যা তাদের ভারসাম্যহীন করে বলে মনে হয়। প্রথমত, জনসাধারণের নিন্দার একটি দূরবর্তী সম্ভাবনা ক্ষমতার সেই বাড়াবাড়ির বিরুদ্ধে খুব দুর্বল সংযম হবে, যার জন্য বর্তমান উদ্দেশ্যগুলোর জোর তাকে উদ্বুদ্ধ করতে পারে। এটা কি কল্পনা করা যায় যে, একশ বা দুইশ সদস্যের একটি আইনসভা, কিছু প্রিয় লক্ষ্যের দিকে অধীরভাবে ঝুঁকে আছে এবং তা অর্জনের জন্য সংবিধানের সীমাবদ্ধতা ভেঙে ফেলছে, দশ, পনেরো বা বিশ বছর পরের দূর ভবিষ্যতে তাদের আচরণের নিন্দনীয় পর্যালোচনার বিবেচনার দ্বারা তাদের কর্মধারা থেকে বিরত থাকবে? দ্বিতীয়ত, প্রতিকারমূলক বিধান প্রয়োগের আগেই অপব্যবহারগুলো প্রায়শই তাদের ক্ষতিকারক প্রভাব সম্পন্ন করে ফেলত। এবং পরিশেষে, যেখানে এটি না-ও হতে পারে, সেগুলো দীর্ঘস্থায়ী হতো, গভীর শিকড় গেড়ে বসত এবং সহজে নির্মূল করা যেত না। সংবিধানের সাম্প্রতিক লঙ্ঘন সংশোধন করার জন্য, সেইসাথে অন্যান্য উদ্দেশ্যে সংবিধান সংশোধনের পরিকল্পনাটি প্রকৃতপক্ষে একটি অঙ্গরাজ্যে পরীক্ষা করা হয়েছে। ১৭৮৩ এবং ১৭৮৪ সালে পেনসিলভানিয়ায় যে সেন্সর কাউন্সিল মিলিত হয়েছিল, তার উদ্দেশ্যগুলোর মধ্যে একটি ছিল, যেমনটি আমরা দেখেছি, অনুসন্ধান করা যে "সংবিধান লঙ্ঘিত হয়েছে কিনা এবং আইন ও নির্বাহী বিভাগগুলো একে অপরের ওপর জবরদখল করেছে কিনা।" রাজনীতিতে এই গুরুত্বপূর্ণ এবং অভিনব পরীক্ষাটি বিভিন্ন দিক থেকে অত্যন্ত বিশেষ মনোযোগের দাবি রাখে। তাদের মধ্যে কিছু ক্ষেত্রে, সম্ভবত, কিছুটা অদ্ভুত পরিস্থিতিতে তৈরি একটি একক পরীক্ষা হিসেবে, এটিকে সম্পূর্ণ অকাট্য বলে মনে করা নাও হতে পারে। কিন্তু বিবেচনাধীন ক্ষেত্রে প্রয়োগ করা হলে, এটি কিছু তথ্য জড়িত করে, যা আমি আমার ব্যবহৃত যুক্তির একটি সম্পূর্ণ এবং সন্তোষজনক চিত্র হিসেবে উল্লেখ করার সাহস রাখি। প্রথমত, কাউন্সিল গঠনকারী ভদ্রলোকদের নাম থেকে বোঝা যায় যে, এর সবচেয়ে সক্রিয় সদস্যদের অন্তত কয়েকজন অঙ্গরাজ্যে বিদ্যমান দলগুলোতেও সক্রিয় এবং নেতৃস্থানীয় চরিত্র ছিলেন।''
''দ্বিতীয়ত, এটি দেখা যায় যে কাউন্সিলের একই সক্রিয় এবং নেতৃস্থানীয় সদস্যরা পর্যালোচনা করার সময়কালের মধ্যে আইনসভা ও নির্বাহী শাখার সক্রিয় এবং প্রভাবশালী সদস্য ছিলেন; এমনকি সংবিধানের পরীক্ষার মুখে আনা পদক্ষেপগুলোর পৃষ্ঠপোষক বা বিরোধীও ছিলেন। সাত বছরের পূর্ববর্তী সময়ের মধ্যে দুজন সদস্য রাজ্যের উপ-রাষ্ট্রপতি এবং নির্বাহী কাউন্সিলের অন্যান্য সদস্য ছিলেন। তাদের মধ্যে একজন স্পিকার ছিলেন এবং অন্যরা একই সময়ের মধ্যে আইনসভার বিশিষ্ট সদস্য ছিলেন।''
''তৃতীয়ত, তাদের কার্যধারার প্রতিটি পৃষ্ঠা তাদের আলোচনার মেজাজের ওপর এই সমস্ত পরিস্থিতির প্রভাবের সাক্ষ্য দেয়। কাউন্সিলের স্থায়িত্ব জুড়ে, এটি দুটি নির্দিষ্ট এবং হিংস্র দলে বিভক্ত ছিল। এই সত্যটি তারা নিজেরাই স্বীকার করেছে এবং শোক প্রকাশ করেছে। যদি এটি না হতো, তবে তাদের কার্যধারার চিত্র সমানভাবে সন্তোষজনক প্রমাণ প্রদর্শন করে। সমস্ত প্রশ্নে, সেগুলো যতই গুরুত্বহীন হোক বা একে অপরের সাথে সম্পর্কহীন হোক না কেন, একই নামগুলো বিপরীত কলামে সর্বদা বিপরীত হিসেবে দাঁড়িয়ে আছে। প্রতিটি নিরপেক্ষ পর্যবেক্ষক কোনো ভুল হওয়ার আশঙ্কা ছাড়াই, এবং একই সাথে কোনো পক্ষ বা কোনো পক্ষের কোনো ব্যক্তিকে প্রতিফলিত করার অর্থ ছাড়াই অনুমান করতে পারেন যে, দুর্ভাগ্যবশত, যুক্তি নয়, আবেগই তাদের সিদ্ধান্তের ওপর সভাপতিত্ব করেছে। যখন মানুষ বিভিন্ন স্বতন্ত্র প্রশ্নে তাদের যুক্তি শীতলভাবে এবং অবাধে প্রয়োগ করে, তখন তারা অনিবার্যভাবে তাদের কিছু বিষয়ে ভিন্ন মতামতে পতিত হয়। যখন তারা একটি সাধারণ আবেগ দ্বারা শাসিত হয়, তখন তাদের মতামতগুলো, যদি সেগুলোকে সেভাবে অভিহিত করা হয়, তবে একই হবে।''
''চতুর্থত, এটি অন্তত সমস্যাজনক যে, এই সংস্থার সিদ্ধান্তগুলো আইনসভা ও নির্বাহী বিভাগের জন্য নির্ধারিত সীমাগুলোকে তাদের সাংবিধানিক স্থানে হ্রাস ও সীমাবদ্ধ করার পরিবর্তে বেশ কয়েকটি ক্ষেত্রে ভুলভাবে ব্যাখ্যা করে কিনা।''
''পঞ্চমত, আমি কখনোই বুঝিনি যে সাংবিধানিক প্রশ্নে কাউন্সিলের সিদ্ধান্তগুলো, তা সঠিকভাবে বা ভুলভাবে গঠিত হোক, আইনসভার ব্যাখ্যার ওপর ভিত্তি করে অনুশীলনে কোনো পরিবর্তন এনেছে। এমনকি যদি আমি ভুল না করি, তবে দেখা যায় যে, একটি ক্ষেত্রে সমসাময়িক আইনসভা কাউন্সিলের ব্যাখ্যাগুলোকে অস্বীকার করেছিল এবং প্রকৃতপক্ষে প্রতিযোগিতায় জয়ী হয়েছিল। অতএব, এই সেন্সরকারী সংস্থাটি তার গবেষণার মাধ্যমে রোগের অস্তিত্ব এবং তার উদাহরণের মাধ্যমে প্রতিকারের অকার্যকারিতা একই সময়ে প্রমাণ করে। যে অঙ্গরাজ্যে পরীক্ষাটি করা হয়েছিল তা সেই সংকটের মুহূর্তে ছিল এবং তার অনেক আগে থেকেই হিংস্রভাবে উত্তপ্ত ছিল এবং দলের ক্ষোভ দ্বারা বিভ্রান্ত ছিল—এই অভিযোগ এনে এই সিদ্ধান্তটি বাতিল করা যায় না। এটা কি অনুমান করা যায় যে, কোনো ভবিষ্যতের সপ্তম বার্ষিক যুগে একই অঙ্গরাজ্য দলমুক্ত হবে? এটা কি অনুমান করা যায় যে অন্য কোনো অঙ্গরাজ্য, একই বা অন্য কোনো নির্দিষ্ট সময়ে, তাদের থেকে মুক্ত হবে? এই ধরনের ঘটনা অনুমান বা আকাঙ্ক্ষা করা উচিত নয়; কারণ দলগুলোর বিলুপ্তি অনিবার্যভাবে জনসাধারণের নিরাপত্তার জন্য একটি সর্বজনীন সতর্কতা বা স্বাধীনতার সম্পূর্ণ বিলুপ্তি বোঝায়। সরকারের পূর্ববর্তী প্রশাসন পর্যালোচনা করার জন্য জনগণের দ্বারা নির্বাচিত সমাবেশগুলো থেকে এমন সমস্ত ব্যক্তিকে বাদ দেওয়ার সতর্কতা অবলম্বন করা হতো, যারা নির্দিষ্ট সময়ের মধ্যে সরকারের সাথে সংশ্লিষ্ট ছিল, তবে অসুবিধাগুলো দূর হতো না। গুরুত্বপূর্ণ কাজটি সম্ভবত এমন পুরুষদের ওপর বর্তাত, যারা নিম্নতর ক্ষমতার অধিকারী হওয়ার কারণে অন্যান্য ক্ষেত্রে খুব একটা যোগ্য হতেন না। যদিও তারা ব্যক্তিগতভাবে প্রশাসনে জড়িত নাও থাকতে পারেন এবং তাই পরীক্ষা করার পদক্ষেপগুলোর তাৎক্ষণিক প্রতিনিধি না হতে পারেন, তবুও তারা সম্ভবত এই পদক্ষেপগুলোর সাথে সংযুক্ত দলগুলোতে জড়িত থাকতেন এবং তাদের পৃষ্ঠপোষকতায় নির্বাচিত হতেন।''
''পাবলিয়াস।''
===বিশ্লেষণ===
এই ফেডারালিস্ট পেপারটি এমন একটি সম্ভাবনা প্রস্তাব করে যে, মাঝেমধ্যে আপিলের পরিবর্তে জনগণের কাছে পর্যায়ক্রমিক আপিল সংবিধানের লঙ্ঘন রোধ এবং সংশোধন করতে সাহায্য করবে।
c8tviwwtsgnthnmcejo1l1sm3tsje5q
ব্যবহারকারী:Belayet73
2
33477
106480
2026-06-04T16:56:29Z
Belayet73
9547
"আমার সম্পাদিত পাতা সমুহের তালিকা ===২০২৬=== ==অন্যন্য পাতা== #[[আরিমা/শব্দকোষ]] #[[আরিমা/আক্রমণ/কৌশলসমূহ]] #[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]] #[[আরিমা/আক্রমণ/সারসংক্ষেপ]] #আরিমা/আক্রমণ/..." দিয়ে পাতা তৈরি
106480
wikitext
text/x-wiki
আমার সম্পাদিত পাতা সমুহের তালিকা
===২০২৬===
==অন্যন্য পাতা==
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
==রন্ধনপ্রণালী==
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
3rrftzooxx8793yt5potcmbtasbin0t
106481
106480
2026-06-04T17:02:51Z
Belayet73
9547
106481
wikitext
text/x-wiki
আমার সম্পাদিত পাতা সমুহের তালিকা
==অন্যন্য পাতা==
===২০২৬===
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
===২০২৪===
#[[পরিবহনে বিজ্ঞান/উল্লম্ব বক্ররেখা]]
#[[পরিবহনে বিজ্ঞান/পরিকল্পনা]]
#[[উইকিশৈশব:ভাষা/কিনারায়া]]
#[[উইকিশৈশব:ভাষা/ইনুকটিটুট]]
#[[উইকিশৈশব:ভাষা/ডাগবানি]]
#[[উইকিশৈশব:ভাষা/ইলোকানো]]
#[[ডিজিটাল সার্কিট/আই-ও ইন্টারফেসিং]]
#[[ডিজিটাল সার্কিট/কার্নো ম্যাপ]]
#[[পরিবহনে বিজ্ঞান/মডেলিং]]
==রন্ধনপ্রণালী==
===২০২৬===
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
===২০২৪===
#[[রন্ধনপ্রণালী:আলু গাজর]]
#[[রন্ধনপ্রণালী:বাঁধাকপির রোল]]
#[[রন্ধনপ্রণালী:পটলের চচ্চড়ি]]
#[[রন্ধনপ্রণালী:বাঁধাকপি ভর্তা]]
#[[রন্ধনপ্রণালী:পটল ভর্তা]]
#[[রন্ধনপ্রণালী:আলু ভাজা]]
#[[রন্ধনপ্রণালী:ডিম কষা]]
#[[রন্ধনপ্রণালী:লাউ চিংড়ি]]
#[[রন্ধনপ্রণালী:আলু বেগুন]]
#[[রন্ধনপ্রণালী:সবজি পোলাও]]
#[[রন্ধনপ্রণালী:খিচুড়ি]]
9y2t6rtzer8bpxffzoawaqw4tu6ni0u
106485
106481
2026-06-04T17:48:41Z
Belayet73
9547
106485
wikitext
text/x-wiki
ব্যবহারকারী একজন
#[[উইকিপিডিয়া:অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
আমার সম্পাদিত পাতা সমুহের তালিকা
==অন্যন্য পাতা==
===২০২৬===
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
===২০২৪===
#[[পরিবহনে বিজ্ঞান/উল্লম্ব বক্ররেখা]]
#[[পরিবহনে বিজ্ঞান/পরিকল্পনা]]
#[[উইকিশৈশব:ভাষা/কিনারায়া]]
#[[উইকিশৈশব:ভাষা/ইনুকটিটুট]]
#[[উইকিশৈশব:ভাষা/ডাগবানি]]
#[[উইকিশৈশব:ভাষা/ইলোকানো]]
#[[ডিজিটাল সার্কিট/আই-ও ইন্টারফেসিং]]
#[[ডিজিটাল সার্কিট/কার্নো ম্যাপ]]
#[[পরিবহনে বিজ্ঞান/মডেলিং]]
===অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪===
#[https://bn.wikipedia.org/wiki/বোরা_বোরা_রাজ্য|বোরা বোরা রাজ্য]
#[[তাহিতির রাজ্য]]
#[[আলোকদিকমুখিতা]]
==রন্ধনপ্রণালী==
===২০২৬===
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
===২০২৪===
#[[রন্ধনপ্রণালী:আলু গাজর]]
#[[রন্ধনপ্রণালী:বাঁধাকপির রোল]]
#[[রন্ধনপ্রণালী:পটলের চচ্চড়ি]]
#[[রন্ধনপ্রণালী:বাঁধাকপি ভর্তা]]
#[[রন্ধনপ্রণালী:পটল ভর্তা]]
#[[রন্ধনপ্রণালী:আলু ভাজা]]
#[[রন্ধনপ্রণালী:ডিম কষা]]
#[[রন্ধনপ্রণালী:লাউ চিংড়ি]]
#[[রন্ধনপ্রণালী:আলু বেগুন]]
#[[রন্ধনপ্রণালী:সবজি পোলাও]]
#[[রন্ধনপ্রণালী:খিচুড়ি]]
kxkki06exct8bh1lmsozwetmtssae8a
106486
106485
2026-06-04T17:54:12Z
Belayet73
9547
/* অন্যন্য পাতা */
106486
wikitext
text/x-wiki
ব্যবহারকারী একজন
#[[উইকিপিডিয়া:অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
আমার সম্পাদিত পাতা সমুহের তালিকা
==অন্যন্য পাতা==
===২০২৬===
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
===২০২৪===
#[[পরিবহনে বিজ্ঞান/উল্লম্ব বক্ররেখা]]
#[[পরিবহনে বিজ্ঞান/পরিকল্পনা]]
#[[উইকিশৈশব:ভাষা/কিনারায়া]]
#[[উইকিশৈশব:ভাষা/ইনুকটিটুট]]
#[[উইকিশৈশব:ভাষা/ডাগবানি]]
#[[উইকিশৈশব:ভাষা/ইলোকানো]]
#[[ডিজিটাল সার্কিট/আই-ও ইন্টারফেসিং]]
#[[ডিজিটাল সার্কিট/কার্নো ম্যাপ]]
#[[পরিবহনে বিজ্ঞান/মডেলিং]]
===অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪===
#[https://bn.wikipedia.org/wiki/বোরা_বোরা_রাজ্য|বোরা বোরা রাজ্য]
#[[তাহিতির রাজ্য|তাহিতি রাজ্য]]
#[[আলোকদিকমুখিতা]]
#[[নৌচালনবিদ্যার_ইতিহাস]]
==রন্ধনপ্রণালী==
===২০২৬===
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
===২০২৪===
#[[রন্ধনপ্রণালী:আলু গাজর]]
#[[রন্ধনপ্রণালী:বাঁধাকপির রোল]]
#[[রন্ধনপ্রণালী:পটলের চচ্চড়ি]]
#[[রন্ধনপ্রণালী:বাঁধাকপি ভর্তা]]
#[[রন্ধনপ্রণালী:পটল ভর্তা]]
#[[রন্ধনপ্রণালী:আলু ভাজা]]
#[[রন্ধনপ্রণালী:ডিম কষা]]
#[[রন্ধনপ্রণালী:লাউ চিংড়ি]]
#[[রন্ধনপ্রণালী:আলু বেগুন]]
#[[রন্ধনপ্রণালী:সবজি পোলাও]]
#[[রন্ধনপ্রণালী:খিচুড়ি]]
4b8licnt3mgnmcedwnwltcu9fa60ymk
106487
106486
2026-06-04T18:06:49Z
Belayet73
9547
/* অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪ */
106487
wikitext
text/x-wiki
ব্যবহারকারী একজন
#[[উইকিপিডিয়া:অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
আমার সম্পাদিত পাতা সমুহের তালিকা
==অন্যন্য পাতা==
===২০২৬===
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
===২০২৪===
#[[পরিবহনে বিজ্ঞান/উল্লম্ব বক্ররেখা]]
#[[পরিবহনে বিজ্ঞান/পরিকল্পনা]]
#[[উইকিশৈশব:ভাষা/কিনারায়া]]
#[[উইকিশৈশব:ভাষা/ইনুকটিটুট]]
#[[উইকিশৈশব:ভাষা/ডাগবানি]]
#[[উইকিশৈশব:ভাষা/ইলোকানো]]
#[[ডিজিটাল সার্কিট/আই-ও ইন্টারফেসিং]]
#[[ডিজিটাল সার্কিট/কার্নো ম্যাপ]]
#[[পরিবহনে বিজ্ঞান/মডেলিং]]
===অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪===
#[https://bn.wikipedia.org/wiki/বোরা_বোরা_রাজ্য]
#[https://bn.wikipedia.org/wiki/তাহিতি_রাজ্য]
#[https://bn.wikipedia.org/wiki/আলোকদিকমুখিতা]
#[https://bn.wikipedia.org/wiki/নৌচালনবিদ্যার_ইতিহাস]
#[https://bn.wikipedia.org/wiki/ইয়াপেস_সাম্রাজ্য]
#[https://bn.wikipedia.org/wiki/হাওয়াইয়ান কিংডম]
#[https://bn.wikipedia.org/wiki/সুইস অ্যাসোসিয়েটস]
==রন্ধনপ্রণালী==
===২০২৬===
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
===২০২৪===
#[[রন্ধনপ্রণালী:আলু গাজর]]
#[[রন্ধনপ্রণালী:বাঁধাকপির রোল]]
#[[রন্ধনপ্রণালী:পটলের চচ্চড়ি]]
#[[রন্ধনপ্রণালী:বাঁধাকপি ভর্তা]]
#[[রন্ধনপ্রণালী:পটল ভর্তা]]
#[[রন্ধনপ্রণালী:আলু ভাজা]]
#[[রন্ধনপ্রণালী:ডিম কষা]]
#[[রন্ধনপ্রণালী:লাউ চিংড়ি]]
#[[রন্ধনপ্রণালী:আলু বেগুন]]
#[[রন্ধনপ্রণালী:সবজি পোলাও]]
#[[রন্ধনপ্রণালী:খিচুড়ি]]
rz9i2ztlktf6kf9he8funyncip7xonl
106489
106487
2026-06-04T18:27:19Z
Belayet73
9547
106489
wikitext
text/x-wiki
ব্যবহারকারী একজন
#[[উইকিপিডিয়া:অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৬/অংশগ্রহণকারী]]
#[[উইকিবই:উইকিবই লিখন প্রতিযোগিতা ২০২৪/অংশগ্রহণকারী]]
আমার সম্পাদিত পাতা সমুহের তালিকাঃ
==অন্যন্য পাতা==
===২০২৬===
#[[আরিমা/শব্দকোষ]]
#[[আরিমা/আক্রমণ/কৌশলসমূহ]]
#[[আরিমা/আক্রমণ/অবস্থান নির্ধারণ]]
#[[আরিমা/আক্রমণ/সারসংক্ষেপ]]
#[[আরিমা/আক্রমণ/উদাহরণ: হাতি-কুকুর আক্রমণ]]
#[[আরিমা/আক্রমণ/উট ট্র্যাপের বিরুদ্ধে আক্রমণ]]
#[[মাগলস গাইড টু হ্যারি পটার/চরিত্র/বগরোড]]
===২০২৪===
#[[পরিবহনে বিজ্ঞান/উল্লম্ব বক্ররেখা]]
#[[পরিবহনে বিজ্ঞান/পরিকল্পনা]]
#[[উইকিশৈশব:ভাষা/কিনারায়া]]
#[[উইকিশৈশব:ভাষা/ইনুকটিটুট]]
#[[উইকিশৈশব:ভাষা/ডাগবানি]]
#[[উইকিশৈশব:ভাষা/ইলোকানো]]
#[[ডিজিটাল সার্কিট/আই-ও ইন্টারফেসিং]]
#[[ডিজিটাল সার্কিট/কার্নো ম্যাপ]]
#[[পরিবহনে বিজ্ঞান/মডেলিং]]
===অমর একুশে নিবন্ধ প্রতিযোগিতা ২০২৪===
#[https://bn.wikipedia.org/wiki/বোরা_বোরা_রাজ্য]
#[https://bn.wikipedia.org/wiki/তাহিতি_রাজ্য]
#[https://bn.wikipedia.org/wiki/আলোকদিকমুখিতা]
#[https://bn.wikipedia.org/wiki/নৌচালনবিদ্যার_ইতিহাস]
#[https://bn.wikipedia.org/wiki/ইয়াপেস_সাম্রাজ্য]
#[https://bn.wikipedia.org/wiki/হাওয়াইয়ান কিংডম]
#[https://bn.wikipedia.org/wiki/সুইস অ্যাসোসিয়েটস]
==রন্ধনপ্রণালী==
===২০২৬===
#[[রন্ধনপ্রণালী:হেলেঞ্চা শাকের সর্ষে বাটা]]
#[[রন্ধনপ্রণালী:বড়ি দিয়ে পালং শাকের ঘণ্ট]]
#[[রন্ধনপ্রণালী:মুগ ডাল দিয়ে চালকুমড়ো ঘণ্ট]]
#[[রন্ধনপ্রণালী:সবজি খিচুড়ি ডালিম পাতা দিয়ে]]
#[[রন্ধনপ্রণালী:করলা আলু দিয়ে তিতোর ডাল]]
#[[রন্ধনপ্রণালী:কাতলা মাছের তেল ঝাল]]
#[[রন্ধনপ্রণালী:বেলে মাছের ঝাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:জিরা রাইস]]
#[[রন্ধনপ্রণালী:জিরা আলু]]
#[[রন্ধনপ্রণালী:লেমন রাইস]]
#[[রন্ধনপ্রণালী:পাট শাক ভাজা মুচমুচে]]
#[[রন্ধনপ্রণালী:বোয়াল মাছের ঝাল ভুনা]]
#[[রন্ধনপ্রণালী:বুটের ডালের হালুয়া]]
#[[রন্ধনপ্রণালী:পাটিসাপটা পিঠা]]
#[[রন্ধনপ্রণালী:ডাল চচ্চড়ি]]
#[[রন্ধনপ্রণালী:পাঁচমিশালি সবজি]]
#[[রন্ধনপ্রণালী:ইলিশ খিচুড়ি]]
===২০২৪===
#[[রন্ধনপ্রণালী:আলু গাজর]]
#[[রন্ধনপ্রণালী:বাঁধাকপির রোল]]
#[[রন্ধনপ্রণালী:পটলের চচ্চড়ি]]
#[[রন্ধনপ্রণালী:বাঁধাকপি ভর্তা]]
#[[রন্ধনপ্রণালী:পটল ভর্তা]]
#[[রন্ধনপ্রণালী:আলু ভাজা]]
#[[রন্ধনপ্রণালী:ডিম কষা]]
#[[রন্ধনপ্রণালী:লাউ চিংড়ি]]
#[[রন্ধনপ্রণালী:আলু বেগুন]]
#[[রন্ধনপ্রণালী:সবজি পোলাও]]
#[[রন্ধনপ্রণালী:খিচুড়ি]]
bz3mucf5cp37gqdvn19bipnsq35bcip
ব্যবহারকারী আলাপ:JackyM59
3
33478
106484
2026-06-04T17:40:11Z
KanikBot
8129
স্বাগতম!
106484
wikitext
text/x-wiki
== বাংলা উইকিবইয়ে স্বাগত ==
{{স্বাগত/২য় সংস্করণ}} ১৭:৪০, ৪ জুন ২০২৬ (ইউটিসি)
9scq45itawlyy7p32oukuhhq3ynm2mo