লজিক গেট/রেজিস্টার

testwiki থেকে
পরিভ্রমণে চলুন অনুসন্ধানে চলুন

রেজিস্টার শব্দটা শুনলেই মাথায় আসে স্কুলের খাতা, ক্লাসের উপস্থিতির রেজিস্টার। সেই রেজিস্টারে শিক্ষক প্রতিদিন প্রতিটি ছাত্রের উপস্থিতি লিখে রাখেন। ডিজিটাল ইলেকট্রনিক্সের রেজিস্টারও ঠিক এইভাবে তথ্য লিখে রাখে তবে পার্থক্য হলো এখানে তথ্য থাকে বাইনারি সংখ্যায়, আর লেখার কাজটা করে ফ্লিপ-ফ্লপ।

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

রেজিস্টার কী

রেজিস্টার হলো একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি একটি সার্কিট যা একসাথে একাধিক বিট তথ্য সংরক্ষণ করতে পারে। যেখানে একটি ফ্লিপ-ফ্লপ কেবল একটি বিট (০ বা ১) ধরে রাখে, সেখানে একটি রেজিস্টার একসাথে nটি বিট ধরে রাখতে পারে।

সহজ কথায়:

ফ্লিপ-ফ্লপ ও রেজিস্টারের তুলনা
বিষয় ফ্লিপ-ফ্লপ রেজিস্টার
সংরক্ষিত বিটের সংখ্যা ১টি nটি
উদাহরণ একটি লকার একটি লকার সারি
ব্যবহার একটি অবস্থা মনে রাখা একটি সংখ্যা বা শব্দ মনে রাখা
প্রধান উপাদান একটি ডি বা জেকে ফ্লিপ-ফ্লপ একাধিক ডি ফ্লিপ-ফ্লপ

উপমা: লকারের সারি

বাস স্টেশনে বা রেলওয়ে স্টেশনে যে লকারগুলো থাকে, সেগুলো কল্পনা করো। একটিমাত্র লকার একটি ব্যাগ রাখতে পারে। কিন্তু যদি পাশাপাশি ৮টি লকার একটি সারিতে সাজানো থাকে এবং সবগুলো একই মাস্টার চাবিতে খোলে-বন্ধ হয়, তাহলে সেটাই হলো রেজিস্টার।

এখানে:

  • প্রতিটি লকার = একটি ফ্লিপ-ফ্লপ (একটি বিট সংরক্ষণ করে)
  • সারির সব লকার = রেজিস্টার (একসাথে ৮টি বিট সংরক্ষণ করে)
  • মাস্টার চাবি = ঘড়ি সংকেত (একসাথে সব ফ্লিপ-ফ্লপ নিয়ন্ত্রণ করে)

রেজিস্টারের গুরুত্ব

রেজিস্টার কেন এত গুরুত্বপূর্ণ তা একটু ভেবে দেখি। ধরো তুমি ১৩+২৭ যোগ করছ। মাথায় প্রথমে আনতে হয় ১৩ কে, তারপর ২৭ কে, মধ্যবর্তী ধাপ মনে রাখতে হয়, তারপর উত্তর দিতে হয়। কম্পিউটারও এইভাবেই কাজ করে প্রতিটি সংখ্যা রেজিস্টারে রাখা হয়, গণনার মধ্যবর্তী ফলাফলও রেজিস্টারে যায়।

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

রেজিস্টারের প্রকারভেদ

রেজিস্টার অনেক ধরনের হয়। তথ্য কীভাবে ঢোকানো হয় এবং কীভাবে বের করা হয় তার উপর ভিত্তি করে রেজিস্টারের চারটি মূল প্রকার:

রেজিস্টারের প্রকারভেদ
ধরন তথ্য ঢোকে তথ্য বের হয় ব্যবহার
সমান্তরাল-ইন, সমান্তরাল-আউট সব বিট একসাথে সব বিট একসাথে সাধারণ সংরক্ষণ
ধারাবাহিক-ইন, ধারাবাহিক-আউট একটি একটি করে একটি একটি করে বিলম্ব সার্কিট
ধারাবাহিক-ইন, সমান্তরাল-আউট একটি একটি করে সব বিট একসাথে রিসিভার সার্কিট
সমান্তরাল-ইন, ধারাবাহিক-আউট সব বিট একসাথে একটি একটি করে ট্রান্সমিটার সার্কিট

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

সবচেয়ে সরল রেজিস্টার: ৪-বিট সমান্তরাল রেজিস্টার

সবচেয়ে সহজ রেজিস্টার হলো সমান্তরাল লোড রেজিস্টার। এতে চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো থাকে এবং সবগুলো একই ঘড়ি সংকেত ব্যবহার করে।

গঠন

একটি ৪-বিট রেজিস্টারে:

  • ৪টি ইনপুট: D3, D2, D1, D0 (উঁচু বিট থেকে নিচু বিট)
  • ৪টি আউটপুট: Q3, Q2, Q1, Q0
  • একটি ঘড়ি ইনপুট: CLK

কার্যক্রম

ঘড়ির প্রতিটি উর্ধ্বগামী প্রান্তে (↑) চারটি ইনপুটের মান একসাথে চারটি ফ্লিপ-ফ্লপে সংরক্ষিত হয়।

Q3+=D3,Q2+=D2,Q1+=D1,Q0+=D0

এটা বোঝার সহজ উপায়: ঘড়ির প্রান্তে একটি ছবি তোলা হয় সেই মুহূর্তে ইনপুটে যা আছে তার হুবহু ছাপ রেজিস্টারে পড়ে।

সত্যক সারণী

৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
CLK D3D2D1D0 Q3Q2Q1Q0 ব্যাখ্যা
↑ ১০১১ ১০১১ ইনপুট হুবহু সংরক্ষিত
↑ ০১১০ ০১১০ পুরনো মান মুছে নতুন মান এলো
↑ ১১১১ ১১১১ সব বিট ১
↑ ০০০০ ০০০০ সব বিট মুছে গেল
০ বা ১ যেকোনো Q অপরিবর্তিত ঘড়ির প্রান্ত নেই → পরিবর্তন নেই

ধাপে ধাপে উদাহরণ

ধরো প্রাথমিক অবস্থা Q3Q2Q1Q0=০০০০। এখন পরপর তিনটি ঘড়ির প্রান্তে ইনপুট দেওয়া হলো:

প্রান্ত ১: ইনপুট D3D2D1D0=১০১১

রেজিস্টারে সংরক্ষিত হলো: Q3Q2Q1Q0=১০১১

দশমিকে: ১১

প্রান্ত ২: ইনপুট পরিবর্তন হলো D3D2D1D0=০১০১

রেজিস্টারে এখন: Q3Q2Q1Q0=০১০১

দশমিকে: ৫ (আগের ১১ মুছে গেল)

প্রান্ত ৩: ইনপুট দেওয়া হলো না (D অপরিবর্তিত)

রেজিস্টারে: Q3Q2Q1Q0=০১০১ (অপরিবর্তিত)

লক্ষ করো ঘড়ির প্রান্ত না পেলে রেজিস্টার তার তথ্য ধরে রাখে।

রেজিস্টারের আকার

রেজিস্টার কত বিটের হবে তা নির্ভর করে কী ধরনের তথ্য সংরক্ষণ করতে হবে তার উপর।

রেজিস্টারের আকার ও প্রয়োজনীয় ফ্লিপ-ফ্লপ
রেজিস্টারের আকার ফ্লিপ-ফ্লপের সংখ্যা সর্বোচ্চ মান সাধারণ ব্যবহার
৪-বিট ৪ BCD সংখ্যা, ছোট গণনা
৮-বিট ৮ ২৫৫ একটি অক্ষর (ASCII), রঙের মান
১৬-বিট ১৬ ৬৫৫৩৫ ছোট পূর্ণসংখ্যা
৩২-বিট ৩২ ≈৪.৩ বিলিয়ন সাধারণ কম্পিউটার রেজিস্টার
৬৪-বিট ৬৪ ≈১৮.৪ কুইন্টিলিয়ন আধুনিক ৬৪-বিট প্রসেসর

n-বিট রেজিস্টারে সংরক্ষণযোগ্য সর্বোচ্চ মান: ২n−১

মৌলিক রেজিস্টার অপারেশন

প্রতিটি রেজিস্টার মূলত তিনটি কাজ করতে পারে:

১. লোড করা

নতুন তথ্য রেজিস্টারে লেখা। ঘড়ির প্রান্তে ইনপুটের মান আউটপুটে চলে আসে।

২. ধারণ করা

বর্তমান তথ্য অপরিবর্তিত রাখা। ঘড়ির প্রান্ত না পেলে বা লোড নিষ্ক্রিয় থাকলে রেজিস্টার তার মান ধরে রাখে।

৩. পরিষ্কার করা

সব বিট ০ করে দেওয়া। এটি সাধারণত একটি বিশেষ ক্লিয়ার (CLR‾) ইনপুট দিয়ে করা হয়।

রেজিস্টারের মৌলিক অপারেশন
অপারেশন শর্ত আউটপুট Q+ উপমা
লোড CLK↑ সক্রিয় D (নতুন মান) নতুন ছবি তোলা
ধারণ CLK↑ নেই Q (আগের মান) পুরনো ছবি রাখা
পরিষ্কার CLR‾=০ ০০...০ ছবি মুছে ফেলা

রেজিস্টারে ব্যবহৃত ফ্লিপ-ফ্লপের পছন্দ

রেজিস্টার তৈরিতে ডি ফ্লিপ-ফ্লপ কেন সবচেয়ে বেশি ব্যবহৃত হয় তা বোঝা দরকার।

রেজিস্টারে ডি ফ্লিপ-ফ্লপ পছন্দের কারণ
কারণ বিবরণ
সহজ বৈশিষ্ট্য সমীকরণ Q+=D যা ইনপুট দেবে তাই সংরক্ষিত হবে
কোনো নিষিদ্ধ অবস্থা নেই এসআর ফ্লিপ-ফ্লপের মতো ভুল অবস্থার ঝুঁকি নেই
একটিমাত্র ইনপুট সরল সার্কিট, কম গেট, কম জায়গা
সরল সক্রিয়করণ কাঙ্ক্ষিত আউটপুটই সরাসরি ইনপুট দাও
শিফট রেজিস্টারে আদর্শ আগের ফ্লিপ-ফ্লপের আউটপুট সরাসরি পরেরটির ইনপুটে দেওয়া যায়

একটি রেজিস্টারের ভেতরে কী ঘটে

ধরো একটি ৪-বিট ডি ফ্লিপ-ফ্লপ রেজিস্টার। প্রতিটি ফ্লিপ-ফ্লপ স্বাধীনভাবে কাজ করে কিন্তু সবাই একই ঘড়ির প্রান্তে একসাথে কাজ শুরু করে।

ধাপে ধাপে ঘটনার ক্রম:

ঘড়ির প্রান্ত আসার আগে:

  • ইনপুট লাইন D3,D2,D1,D0 তে মান প্রস্তুত
  • রেজিস্টার আগের মান ধরে রেখেছে

ঘড়ির উর্ধ্বগামী প্রান্তে (মুহূর্তিকভাবে):

  • চারটি ফ্লিপ-ফ্লপ একসাথে ইনপুটের মান গ্রহণ করে
  • পুরনো মান মুছে নতুন মান সংরক্ষিত হয়

ঘড়ির প্রান্তের পরে (বিস্তার বিলম্বের পরে):

  • আউটপুট Q3,Q2,Q1,Q0 তে নতুন মান প্রকাশ পায়
  • পরবর্তী প্রান্ত না আসা পর্যন্ত এই মান স্থির থাকে
রেজিস্টারের সময়-সংক্রান্ত বৈশিষ্ট্য
সময়-বৈশিষ্ট্য চিহ্ন অর্থ
স্থাপন সময় tsu প্রান্তের আগে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
ধারণ সময় th প্রান্তের পরে ইনপুট কতক্ষণ স্থিতিশীল থাকতে হবে
বিস্তার বিলম্ব tpd প্রান্ত থেকে আউটপুট পরিবর্তনের সময়
সর্বোচ্চ কম্পাঙ্ক fmax রেজিস্টার কত দ্রুত কাজ করতে পারে

বিট-ক্রম নিয়ে সতর্কতা

রেজিস্টারে বিট কোন ক্রমে থাকে তা জানা গুরুত্বপূর্ণ। দুটি প্রচলিত পদ্ধতি আছে:

মোস্ট সিগনিফিক্যান্ট বিট প্রথমে

সর্বোচ্চ মানের বিট (Q3) বাম দিকে থাকে। এটি স্বাভাবিক বাইনারি লেখার মতো।

উদাহরণ: Q3Q2Q1Q0=১০১১ মানে দশমিকে ৮+০+২+১=১১

লিস্ট সিগনিফিক্যান্ট বিট প্রথমে

সর্বনিম্ন মানের বিট (Q0) প্রথমে প্রেরণ করা হয়। ধারাবাহিক যোগাযোগে এই পদ্ধতি সাধারণ।

উদাহরণ

উদাহরণ ১: বাইনারি সংখ্যা সংরক্ষণ

১৩ দশমিক সংখ্যাটি একটি ৪-বিট রেজিস্টারে সংরক্ষণ করো।

প্রথমে দশমিক থেকে বাইনারি:

১৩=৮+৪+১=১১০১

তাহলে ইনপুট: D3D2D1D0=১১০১

ঘড়ির প্রান্তে রেজিস্টারে সংরক্ষিত হবে:

Q3Q2Q1Q0=১১০১

যাচাই: ১×৮+১×৪+০×২+১×১=১৩

উদাহরণ ২: ধারণ অপারেশন

একটি রেজিস্টারে Q3Q2Q1Q0=১০১০ সংরক্ষিত আছে। পরবর্তী দুটি ঘড়ির প্রান্তের মধ্যে কোনো ইনপুট পরিবর্তন হলো না। রেজিস্টারের মান কী থাকবে?

উত্তর: Q3Q2Q1Q0=১০১০ (অপরিবর্তিত)

ফ্লিপ-ফ্লপ তার তথ্য ধরে রাখে নতুন ঘড়ির প্রান্ত না আসলে পরিবর্তন হয় না।

উদাহরণ ৩: ক্রমানুসারে লোড করা

প্রাথমিক অবস্থা Q3Q2Q1Q0=০০০০। পরপর চারটি ঘড়ির প্রান্তে নিচের ইনপুট দেওয়া হলো। প্রতিটি প্রান্তের পরে রেজিস্টারের মান কী?

উদাহরণ ৩ ক্রমানুসারে লোড
প্রান্ত ইনপুট D3D2D1D0 আউটপুট Q3Q2Q1Q0 দশমিক মান
শুরু ০০০০ ০
১ম ০১০১ ০১০১ ৫
২য় ১০০০ ১০০০ ৮
৩য় ১১১১ ১১১১ ১৫
৪র্থ ০০১১ ০০১১ ৩

প্রতিটি প্রান্তে রেজিস্টার নতুন মান গ্রহণ করেছে এবং পুরনো মান সম্পূর্ণ মুছে গেছে।

উদাহরণ ৪: রেজিস্টারের সীমা পরীক্ষা

একটি ৩-বিট রেজিস্টারে ৯ সংরক্ষণ করা সম্ভব কিনা?

৩-বিট রেজিস্টারের সর্বোচ্চ মান: ২৩−১=৭

৯>৭, তাই ৩-বিট রেজিস্টারে ৯ সংরক্ষণ করা সম্ভব নয়। কমপক্ষে ৪-বিট রেজিস্টার দরকার (সর্বোচ্চ মান ১৫)।

অনুশীলনী

  1. একটি ৫-বিট রেজিস্টার সর্বোচ্চ কত মান সংরক্ষণ করতে পারে?
  2. দশমিক ২৫ সংরক্ষণ করতে কমপক্ষে কত বিটের রেজিস্টার প্রয়োজন?
  3. একটি ৪-বিট রেজিস্টারে Q3Q2Q1Q0=১১০১ আছে। এটি দশমিকে কত?
  4. রেজিস্টার ও ফ্লিপ-ফ্লপের মধ্যে মূল পার্থক্য কী?
  5. একটি ৪-বিট রেজিস্টারে ক্রমানুসারে নিচের মানগুলো লোড করা হলো: ০৭, ১২, ০৩, ০৯ (দশমিক)। প্রতিটি লোডের পরে রেজিস্টারে বাইনারিতে কী থাকবে?
  6. কোন ধরনের ফ্লিপ-ফ্লপ রেজিস্টার তৈরিতে সবচেয়ে বেশি ব্যবহৃত হয় এবং কেন?
  7. একটি ৮-বিট রেজিস্টারে দশমিক ১৭৮ সংরক্ষণ করো। বাইনারিতে ইনপুট কী হবে?
  8. ঘড়ির প্রান্ত না থাকলে রেজিস্টার কীভাবে আচরণ করে?

উত্তর:

  1. ২৫−১=৩১
  2. ২৪=১৬<২৫≤৩২=২৫ → কমপক্ষে ৫-বিট রেজিস্টার
  3. ১×৮+১×৪+০×২+১×১=১৩
  4. ফ্লিপ-ফ্লপ একটিমাত্র বিট সংরক্ষণ করে; রেজিস্টার একাধিক ফ্লিপ-ফ্লপ একত্রিত করে বহু বিট সংরক্ষণ করে
  5. ৭=০১১১, ১২=১১০০, ৩=০০১১, ৯=১০০১
  6. ডি ফ্লিপ-ফ্লপ সরল বৈশিষ্ট্য সমীকরণ (Q+=D), নিষিদ্ধ অবস্থা নেই, একটিমাত্র ইনপুট
  7. ১৭৮=১0১১০০১০ → D7D6D5D4D3D2D1D0=১০১১০০১০
  8. ঘড়ির প্রান্ত না থাকলে রেজিস্টার তার বর্তমান মান অপরিবর্তিত ধরে রাখে ইনপুটে যাই থাকুক প্রভাব পড়ে না।

সমান্তরাল লোড রেজিস্টার

আগের ভাগে আমরা দেখেছিলাম ডি ফ্লিপ-ফ্লপ কীভাবে একটি বিট মনে রাখতে পারে। এবার সেই ধারণার উপর দাঁড়িয়ে আমরা দেখব কীভাবে একসাথে অনেকগুলো বিট মনে রাখা যায়।

সমান্তরাল লোড কী?

একটি ড্রয়ারের কথা ভাবো। ধরো তোমার কাছে একটি ড্রয়ার আছে যেখানে চারটি ছোট খোপ আছে। তুমি যখন চাইলে চারটি খোপে একসাথে চারটি জিনিস রাখতে পারো। পরে যখন দরকার, চারটি জিনিস একসাথে বের করতে পারো। ড্রয়ার বন্ধ থাকলে ভেতরের জিনিস কেউ বদলাতে পারে না, কিন্তু খুললেই সব জিনিস দেখা যায় ও বদলানো যায়।

সমান্তরাল লোড রেজিস্টার ঠিক এই ড্রয়ারের মতো কাজ করে। চারটি বিট একসাথে ভেতরে ঢোকে এবং একসাথে বাইরে আসে। "একসাথে" মানে একই ঘড়ির পালসে, পরপর নয়।

এর বিপরীতে ধারাবাহিক রেজিস্টারে বিট একটা একটা করে ঢোকে এবং একটা একটা করে বের হয়, অনেকটা একটা নলের মধ্যে দিয়ে পাথর একটার পর একটা যাওয়ার মতো। সমান্তরাল রেজিস্টারে সব বিট একসাথে যায়, যেন চারটি নল দিয়ে চারটি পাথর একসাথে যাচ্ছে।

কেন সমান্তরাল লোড দরকার?

ধরো তুমি একটি বাসে উঠতে চাও। একজন একজন করে উঠলে সময় লাগে। কিন্তু যদি চারটি দরজা দিয়ে একসাথে চারজন উঠতে পারে, সময় চারভাগের একভাগ লাগে।

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

লোড সক্রিয়করণ ছাড়া সরল ৪-বিট সমান্তরাল রেজিস্টার

সবচেয়ে সহজ সমান্তরাল রেজিস্টারে কোনো নিয়ন্ত্রণ নেই। প্রতিটি ঘড়ির পালসে যা ইনপুটে থাকে তাই রেজিস্টারে ঢুকে যায়।

সার্কিটের গঠন

চারটি ডি ফ্লিপ-ফ্লপ পাশাপাশি সাজানো। প্রতিটি ফ্লিপ-ফ্লপ একটি করে বিট সংরক্ষণ করে।

  • চারটি ফ্লিপ-ফ্লপ: FF3, FF2, FF1, FF0
  • চারটি ডেটা ইনপুট: D3, D2, D1, D0
  • চারটি আউটপুট: Q3, Q2, Q1, Q0
  • একটি মাত্র ঘড়ি সংকেত সবগুলো ফ্লিপ-ফ্লপে একসাথে সংযুক্ত

এখানে গুরুত্বপূর্ণ বিষয় হলো সব ফ্লিপ-ফ্লপ একই ঘড়ির পালসে সাড়া দেয়। তাই ঘড়ির উর্ধ্বমুখী প্রান্তে চারটি বিট একসাথে লোড হয়।

প্রতিটি ফ্লিপ-ফ্লপের বৈশিষ্ট্য সমীকরণ:

Q3(t+১)=D3(t)
Q2(t+১)=D2(t)
Q1(t+১)=D1(t)
Q0(t+১)=D0(t)

সত্যক সারণী

সরল ৪-বিট সমান্তরাল রেজিস্টারের সত্যক সারণী
ঘড়ি D3 D2 D1 D0 Q3 Q2 Q1 Q0 ব্যাখ্যা
↑ ০ ০ ০ ০ ০ ০ ০ ০ শূন্য লোড হয়েছে
↑ ১ ০ ১ ১ ১ ০ ১ ১ ১০১১ লোড হয়েছে
↑ ১ ১ ১ ১ ১ ১ ১ ১ ১১১১ লোড হয়েছে
স্তর X X X X Q3 Q2 Q1 Q0 আগের মান ধরে রাখে

↑ মানে উর্ধ্বমুখী প্রান্ত, X মানে যেকোনো মান।

ধাপে ধাপে উদাহরণ: ১০১১ লোড করা

ধরো রেজিস্টারে এখন ০০০০ আছে। আমরা ১০১১ লোড করতে চাই।

প্রস্তুতি:

ইনপুটে বসাই: D3=১, D2=০, D1=১, D0=১।

ঘড়ির উর্ধ্বমুখী প্রান্তে কী হয়:

লোড করার ধাপ
ফ্লিপ-ফ্লপ ডি ইনপুট আগের কিউ নতুন কিউ কী হলো
FF3 ১ ০ ১ ০ থেকে ১ হলো
FF2 ০ ০ ০ অপরিবর্তিত রইল
FF1 ১ ০ ১ ০ থেকে ১ হলো
FF0 ১ ০ ১ ০ থেকে ১ হলো

ফলাফল: Q3Q2Q1Q0=১০১১। রেজিস্টার সফলভাবে ১০১১ সংরক্ষণ করেছে।

এখন ঘড়ির পালস না দিলে রেজিস্টারে ১০১১ থেকেই যাবে, ইনপুট যতই বদলাক না কেন।

লোড সক্রিয়করণ সহ রেজিস্টার

কেন লোড সক্রিয়করণ দরকার?

একটি ব্যাংক লকারের কথা ভাবো। লকারে টাকা রাখতে হলে চাবি লাগে। চাবি না থাকলে কেউ ভেতরে কিছু রাখতে বা বের করতে পারে না। ভেতরের টাকা নিরাপদে থাকে।

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

এই সমস্যার সমাধান হলো লোড সক্রিয়করণ সংকেত। এটি ব্যাংক লকারের চাবির মতো। লোড = ১ হলে নতুন ডেটা ঢোকে, লোড = ০ হলে আগের মান অপরিবর্তিত থাকে।

বুলিয়ান রাশি

লোড সক্রিয়করণ সহ প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটে যা যাবে:

Di=Load⋅Datai+Load‾⋅Qi

এই রাশিটি একটু ভেঙে বোঝা যাক।

যখন Load=১:

Di=১⋅Datai+০⋅Qi=Datai+০=Datai

তাই ফ্লিপ-ফ্লপে নতুন ডেটা লোড হবে।

যখন Load=০:

Di=০⋅Datai+১⋅Qi=০+Qi=Qi

তাই ফ্লিপ-ফ্লপ আগের মান ধরে রাখবে কারণ ডি ইনপুটে কিউ-এর মানই যাচ্ছে। পরের কিউ = বর্তমান কিউ।

এই রাশিটি একটি মাল্টিপ্লেক্সারের মতো কাজ করে। লোড সংকেত ঠিক করে কোন পথে ডেটা ফ্লিপ-ফ্লপে যাবে।

লোড সক্রিয়করণ সহ সত্যক সারণী

লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = ০)
লোড ঘড়ি ডেটা ইনপুট কিউ আউটপুট ব্যাখ্যা
০ ↑ যেকোনো আগের কিউ অপরিবর্তিত ধারণ অবস্থা: কিছু বদলায় না
০ ↑ ১১১১ আগের কিউ অপরিবর্তিত লোড নিষ্ক্রিয়, ইনপুট উপেক্ষিত
০ স্তর যেকোনো আগের কিউ অপরিবর্তিত ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না
লোড সক্রিয়করণ সহ ৪-বিট রেজিস্টার (লোড = ১)
লোড ঘড়ি ডেটা ইনপুট কিউ আউটপুট ব্যাখ্যা
১ ↑ ০০০০ ০০০০ শূন্য লোড হয়েছে
১ ↑ ১০১১ ১০১১ ১০১১ লোড হয়েছে
১ ↑ ১১১১ ১১১১ ১১১১ লোড হয়েছে
১ স্তর যেকোনো আগের কিউ অপরিবর্তিত ঘড়ি প্রান্ত ছাড়া কিছুই বদলায় না

লজিক সার্কিটে ব্যবহৃত গেট

লোড সক্রিয়করণ সহ রেজিস্টারের গেট সারণি
গেটের ধরন সংখ্যা প্রতিটির ইনপুট কাজ
অ্যান্ড গেট (প্রথম দল) ৪টি Load, Datai Load⋅Datai তৈরি করে
নট গেট ১টি Load Load‾ তৈরি করে
অ্যান্ড গেট (দ্বিতীয় দল) ৪টি Load‾, Qi Load‾⋅Qi তৈরি করে
অর গেট ৪টি দুটি অ্যান্ড গেটের আউটপুট Di তৈরি করে
ডি ফ্লিপ-ফ্লপ ৪টি Di, ঘড়ি বিট সংরক্ষণ করে

মোট গেট: ১টি নট গেট, ৮টি অ্যান্ড গেট, ৪টি অর গেট এবং ৪টি ডি ফ্লিপ-ফ্লপ।

লক্ষ করো নট গেট মাত্র একটি। কারণ Load‾ একবার তৈরি হলে চারটি ফ্লিপ-ফ্লপে একই সংকেত দেওয়া যায়। এটি সার্কিট সহজ রাখে।

মাল্টিপ্লেক্সার দিয়ে বিকল্প বাস্তবায়ন

লোড সক্রিয়করণ সহ রেজিস্টার আসলে প্রতিটি বিটে একটি ২-থেকে-১ মাল্টিপ্লেক্সার ব্যবহার করে। এই মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়।

  • পথ ১ (লোড = ১): নতুন ডেটা ফ্লিপ-ফ্লপে যায়
  • পথ ২ (লোড = ০): ফ্লিপ-ফ্লপের আউটপুট আবার ফ্লিপ-ফ্লপের ইনপুটে ফেরত যায়

এই ফেরত যাওয়ার পথকে প্রতিক্রিয়া পথ বলে। এই পথের কারণে ফ্লিপ-ফ্লপ তার নিজের মান বারবার নিজেকেই ফিরিয়ে দেয়, ফলে মান অপরিবর্তিত থাকে।

ক্লিয়ার অপারেশন

রেজিস্টারের সব বিট শূন্য করার প্রয়োজন হয় অনেক ক্ষেত্রে। কম্পিউটার চালু হওয়ার সময়, নতুন হিসাব শুরু করার আগে বা কোনো ত্রুটি পুনরুদ্ধারের সময় রেজিস্টার পরিষ্কার করতে হয়।

তুলনা

পরিষ্কার অপারেশন দুটি পদ্ধতিতে করা যায়।

ঘড়ি-নির্ভর পরিষ্কার: একটি নিয়ন্ত্রণ সংকেত দিয়ে ফ্লিপ-ফ্লপের ডি ইনপুটকে শূন্য করা হয় এবং পরের ঘড়ির পালসে শূন্য লোড হয়। এই পদ্ধতি নিরাপদ কারণ ঘড়ির সাথে তাল মিলিয়ে কাজ হয়।

এই পদ্ধতিতে:

Di=Load⋅Datai+Load‾⋅Qi⋅Clear‾

যখন Clear=১ এবং Load=০:

Di=০+Qi⋅০=০

তাই পরের ঘড়ির পালসে সব ফ্লিপ-ফ্লপ শূন্য হয়।

ঘড়ি-স্বাধীন পরিষ্কার: ফ্লিপ-ফ্লপের ক্লিয়ার পিন সরাসরি ব্যবহার করা হয়। ঘড়ির পালসের জন্য অপেক্ষা করতে হয় না। এটি দ্রুত কিন্তু ঘড়ির সাথে তাল মেলায় না।

আধুনিক ডিজিটাল সিস্টেমে ঘড়ি-নির্ভর পরিষ্কার পছন্দ করা হয় কারণ এতে সার্কিটের আচরণ আরও অনুমানযোগ্য থাকে।

দুটি পরিষ্কার পদ্ধতির তুলনা
বৈশিষ্ট্য ঘড়ি-নির্ভর পরিষ্কার ঘড়ি-স্বাধীন পরিষ্কার
কখন কার্যকর হয় পরের ঘড়ির পালসে তাৎক্ষণিক
ঘড়ির সাথে তাল হ্যাঁ না
ব্যবহারের সুবিধা নিরাপদ, অনুমানযোগ্য দ্রুত
পিন নিয়ন্ত্রণ ইনপুট ফ্লিপ-ফ্লপের ক্লিয়ার পিন
আধুনিক সিস্টেমে পছন্দ বেশি পছন্দনীয় কম পছন্দনীয়

৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি

একটি পূর্ণাঙ্গ ৪-বিট রেজিস্টারে তিনটি অপারেশন হতে পারে: লোড, ধারণ এবং পরিষ্কার।

৪-বিট রেজিস্টারের সম্পূর্ণ অপারেশন সারণি
পরিষ্কার লোড ঘড়ি ডেটা ইনপুট কিউ আউটপুট অপারেশন ব্যাখ্যা
১ X ↑ X ০০০০ পরিষ্কার সব বিট শূন্য হয়
০ ০ ↑ X আগের কিউ ধারণ মান অপরিবর্তিত
০ ১ ↑ ১০১১ ১০১১ লোড নতুন মান লোড হয়
০ ১ ↑ ০০০০ ০০০০ লোড শূন্য লোড হয়
০ ০ স্তর X আগের কিউ ধারণ ঘড়ি প্রান্ত নেই
০ ১ স্তর X আগের কিউ ধারণ ঘড়ি প্রান্ত নেই

এই সারণি থেকে গুরুত্বপূর্ণ বিষয়:

  • পরিষ্কার সংকেত সবচেয়ে বেশি অগ্রাধিকার পায়
  • ঘড়ির প্রান্ত ছাড়া কিছুই বদলায় না (ঘড়ি-স্বাধীন পরিষ্কার ছাড়া)
  • লোড = ০ হলে ঘড়ির পালস আসলেও মান বদলায় না

বিস্তারিত উদাহরণ

উদাহরণ ১: পরপর তিনটি অপারেশন

একটি ৪-বিট রেজিস্টার শুরুতে অজানা অবস্থায় আছে। নিচের ক্রমে অপারেশন করা হলো।

উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
ধাপ পরিষ্কার লোড ডেটা কিউ (পরে) কী হলো
শুরু - - - অজানা প্রাথমিক অবস্থা
১ ১ X X ০০০০ পরিষ্কার হলো
২ ০ ১ ১১০১ ১১০১ ১১০১ লোড হলো
৩ ০ ০ ০০০০ ১১০১ মান ধরে রইল, ইনপুট উপেক্ষিত
৪ ০ ০ ১১১১ ১১০১ এখনও ধরে রইল
৫ ০ ১ ০১১০ ০১১০ ০১১০ লোড হলো

ধাপ ৩ ও ৪-এ লক্ষ করো, ইনপুটে যাই থাকুক লোড = ০ থাকায় রেজিস্টারের মান বদলায়নি। এটাই ধারণ অপারেশন।

উদাহরণ ২: লোড সক্রিয়করণ রাশি যাচাই

রেজিস্টারে Q=১১০০ আছে। লোড = ০ এবং ডেটা = ১০১০ দিলে প্রতিটি বিটের ডি ইনপুট হিসাব করো।

বিট ৩-এর জন্য:

D3=Load⋅Data3+Load‾⋅Q3=০⋅১+১⋅১=০+১=১

বিট ২-এর জন্য:

D2=০⋅০+১⋅১=০+১=১

বিট ১-এর জন্য:

D1=০⋅১+১⋅০=০+০=০

বিট ০-এর জন্য:

D0=০⋅০+১⋅০=০+০=০

তাই পরের ঘড়ির পালসে: Q=D3D2D1D0=১১০০।

রেজিস্টারের মান অপরিবর্তিত রইল কারণ ডি ইনপুটে আগের কিউ-এর মানই গেল।

উদাহরণ ৩: লোড সংকেত = ১ দিয়ে মান পরিবর্তন

একই রেজিস্টারে Q=১১০০। এবার লোড = ১ এবং ডেটা = ১০১০।

বিট ৩-এর জন্য:

D3=১⋅১+০⋅১=১+০=১

বিট ২-এর জন্য:

D2=১⋅০+০⋅১=০+০=০

বিট ১-এর জন্য:

D1=১⋅১+০⋅০=১+০=১

বিট ০-এর জন্য:

D0=১⋅০+০⋅০=০+০=০

তাই পরের ঘড়ির পালসে: Q=১০১০।

নতুন ডেটা ১০১০ লোড হয়েছে।

উদাহরণ ২ ও ৩-এর পাশাপাশি তুলনা
বিট আগের কিউ ডেটা ইনপুট লোড=০, নতুন কিউ লোড=১, নতুন কিউ
৩ ১ ১ ১ ১
২ ১ ০ ১ ০
১ ০ ১ ০ ১
০ ০ ০ ০ ০
ফলাফল ১১০০ (অপরিবর্তিত) ১০১০ (নতুন)

বাস্তব প্রয়োগ

প্রসেসর রেজিস্টার

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

বাস ব্যবস্থা

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

ডেটা ধারণ

ডিজিটাল নিয়ন্ত্রণ ব্যবস্থায় একটি পরিমাপ নিয়ে কিছুক্ষণ ধরে রাখার দরকার হয়। যেমন তাপমাত্রা পরিমাপ করে রেখে পরে তুলনা করা। সমান্তরাল লোড রেজিস্টারের ধারণ অপারেশন এই কাজ করে।

অনুশীলনী

  1. একটি ৪-বিট সমান্তরাল রেজিস্টারে Q=১০১০ আছে। লোড = ০ দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
  1. লোড সক্রিয়করণ সহ রেজিস্টারে প্রতিটি বিটের ডি ইনপুটের বুলিয়ান রাশি লেখো।
  1. একটি ৪-বিট রেজিস্টারে Q=০১১১ আছে। লোড = ১, ডেটা = ১০০১ দিয়ে ঘড়ির পালস দিলে কিউ কী হবে?
  1. নিচের ধাপগুলোর পর রেজিস্টারের মান কী হবে?
    • শুরু: Q=১১১১
    • ধাপ ১: পরিষ্কার সক্রিয়, ঘড়ির পালস
    • ধাপ ২: লোড = ১, ডেটা = ০১০১, ঘড়ির পালস
    • ধাপ ৩: লোড = ০, ডেটা = ১১১১, ঘড়ির পালস
  1. লোড সক্রিয়করণ সহ রেজিস্টারে Q=১১০০ এবং লোড = ১, ডেটা = ১১০০ দিলে বিট ২-এর ডি ইনপুট হিসাব করো।
  1. ঘড়ি-নির্ভর এবং ঘড়ি-স্বাধীন পরিষ্কারের মধ্যে দুটি পার্থক্য লেখো।
  1. লোড সক্রিয়করণ ছাড়া সরল রেজিস্টারে সমস্যা কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
  1. একটি ৪-বিট রেজিস্টারে প্রাথমিকভাবে Q=০০০০। নিচের ক্রমে অপারেশন করলে প্রতিটি ধাপে কিউ কী হবে?
    • ধাপ ১: লোড = ১, ডেটা = ১০১০, ঘড়ির পালস
    • ধাপ ২: লোড = ০, ডেটা = ০১০১, ঘড়ির পালস
    • ধাপ ৩: পরিষ্কার, ঘড়ির পালস
    • ধাপ ৪: লোড = ১, ডেটা = ১১১১, ঘড়ির পালস

উত্তর:

  1. Q=১০১০ অপরিবর্তিত থাকবে কারণ লোড = ০ মানে ধারণ অপারেশন
  1. Di=Load⋅Datai+Load‾⋅Qi
  1. Q=১০০১; লোড = ১ হওয়ায় নতুন ডেটা সরাসরি লোড হয়েছে
  1. ধাপ ১ পরে: ০০০০; ধাপ ২ পরে: ০১০১; ধাপ ৩ পরে: ০১০১ (লোড = ০ তাই মান ধরে রেখেছে)
  1. বিট ২ এর জন্য: D2=১⋅১+০⋅১=১+০=১; তাই Q2 পালসের পরে ১ হবে
  1. পার্থক্য ১: ঘড়ি-নির্ভর পরিষ্কার পরের ঘড়ির পালসে কার্যকর হয়, ঘড়ি-স্বাধীন পরিষ্কার তাৎক্ষণিক কার্যকর হয়। পার্থক্য ২: ঘড়ি-নির্ভর পরিষ্কার ঘড়ির সাথে তাল মেলায় তাই আধুনিক সিস্টেমে বেশি পছন্দনীয়, ঘড়ি-স্বাধীন পরিষ্কার ঘড়ির সাথে তাল মেলায় না তাই কম ব্যবহৃত হয়
  1. সমস্যা হলো প্রতিটি ঘড়ির পালসে ইনপুটের মান রেজিস্টারে ঢুকে যায়, চাই বা না চাই। বাস্তব উদাহরণ: কম্পিউটারে যদি রেজিস্টারের লোড সক্রিয়করণ না থাকে, তাহলে বাসে অন্য ডিভাইসের ডেটা থাকলেও সেই ডেটা রেজিস্টারে ঢুকে আগের মান নষ্ট হয়ে যাবে
  1. ধাপ ১ পরে: Q=১০১০; ধাপ ২ পরে: Q=১০১০ (লোড = ০ তাই মান ধরে রেখেছে); ধাপ ৩ পরে: Q=০০০০; ধাপ ৪ পরে: Q=১১১১

দ্বিমুখী শিফট রেজিস্টার ও সার্বজনীন রেজিস্টার

আগের ভাগে আমরা দেখেছিলাম শিফট রেজিস্টার কীভাবে বিট একদিকে সরায়। কিন্তু শুধু একদিকে সরাতে পারলে কাজের অনেক সীমাবদ্ধতা থাকে। এই ভাগে আমরা দেখব কীভাবে দুই দিকেই শিফট করা যায় এবং কীভাবে একটিমাত্র রেজিস্টার দিয়ে চারটি আলাদা কাজ করা যায়।

দ্বিমুখী শিফট: দুই দিকের এস্কালেটর

বিমানবন্দরে এমন এস্কালেটর থাকে যা দুই দিকেই চলতে পারে। সকালে যাত্রীরা আসে তখন এস্কালেটর একদিকে চলে, বিকেলে সবাই ফেরে তখন অন্যদিকে চলে। একটি বোতাম টিপলেই দিক বদলে যায়।

দ্বিমুখী শিফট রেজিস্টার ঠিক এই এস্কালেটরের মতো। একটি নিয়ন্ত্রণ সংকেত দিয়ে বিটগুলো ডানে বা বামে সরানো যায়। নিয়ন্ত্রণ সংকেত S=১ হলে ডানে, S=০ হলে বামে।

কেন দুই দিকে শিফট দরকার? ভাবো একটি সংখ্যাকে দুই দিয়ে গুণ করতে বাইনারিতে বামে এক শিফট করলেই হয়। দুই দিয়ে ভাগ করতে ডানে এক শিফট করলেই হয়। তাই দ্বিমুখী শিফট রেজিস্টার দিয়ে দ্রুত গুণ ও ভাগ করা যায়।

শিফটের গাণিতিক অর্থ
অপারেশন শিফটের দিক উদাহরণ ব্যাখ্যা
দুই দিয়ে গুণ বামে এক শিফট ০০১১ → ০১১০ ৩ × ২ = ৬
দুই দিয়ে ভাগ ডানে এক শিফট ১১০০ → ০১১০ ১২ ÷ ২ = ৬
চার দিয়ে গুণ বামে দুই শিফট ০০০১ → ০১০০ ১ × ৪ = ৪
চার দিয়ে ভাগ ডানে দুই শিফট ১০০০ → ০০১০ ৮ ÷ ৪ = ২

দ্বিমুখী শিফট রেজিস্টারের গঠন

একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে চারটি ডি ফ্লিপ-ফ্লপ থাকে। পার্থক্য হলো প্রতিটি ফ্লিপ-ফ্লপের আগে একটি মাল্টিপ্লেক্সার থাকে।

মাল্টিপ্লেক্সার দুটি পথের একটি বেছে নেয়:

  • ডানে শিফটের পথ: বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
  • বামে শিফটের পথ: ডান পাশের ফ্লিপ-ফ্লপের আউটপুট

নিয়ন্ত্রণ সংকেত S মাল্টিপ্লেক্সারকে বলে কোন পথ বেছে নিতে।

বুলিয়ান রাশি

প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুটের রাশি:

Di=S⋅Qi−1+S¯⋅Qi+1

এখানে:

  • Qi−1 মানে বাম পাশের ফ্লিপ-ফ্লপের আউটপুট
  • Qi+1 মানে ডান পাশের ফ্লিপ-ফ্লপের আউটপুট

যখন S=১ (ডানে শিফট):

Di=১⋅Qi−1+০⋅Qi+1=Qi−1

প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়, ফলে সব বিট ডানে সরে।

যখন S=০ (বামে শিফট):

Di=০⋅Qi−1+১⋅Qi+1=Qi+1

প্রতিটি ফ্লিপ-ফ্লপ ডান পাশের মান নেয়, ফলে সব বিট বামে সরে।

প্রান্তের ফ্লিপ-ফ্লপের বিশেষ ব্যবস্থা

সবচেয়ে বাম ফ্লিপ-ফ্লপ (FF3) এর বাম পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই ডানে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে ডানমুখী ধারাবাহিক ইনপুট বলে।

সবচেয়ে ডান ফ্লিপ-ফ্লপ (FF0) এর ডান পাশে কোনো ফ্লিপ-ফ্লপ নেই। তাই বামে শিফটের সময় এখানে বাইরে থেকে ডেটা ঢোকানো হয়। একে বামমুখী ধারাবাহিক ইনপুট বলে।

দ্বিমুখী শিফট রেজিস্টারের ইনপুট-আউটপুট
সংযোগ ধরন ব্যাখ্যা
S নিয়ন্ত্রণ ইনপুট ১ = ডানে, ০ = বামে
ডানমুখী ধারাবাহিক ইনপুট (SIR) ইনপুট ডানে শিফটের সময় বাম প্রান্তে যে বিট ঢোকে
বামমুখী ধারাবাহিক ইনপুট (SIL) ইনপুট বামে শিফটের সময় ডান প্রান্তে যে বিট ঢোকে
Q3,Q2,Q1,Q0 আউটপুট চারটি ফ্লিপ-ফ্লপের আউটপুট
ঘড়ি ইনপুট সব ফ্লিপ-ফ্লপে একই ঘড়ি

সত্যক সারণী

দ্বিমুখী শিফট রেজিস্টারের সত্যক সারণী
S ঘড়ি আগের অবস্থা পরের অবস্থা অপারেশন
১ ↑ Q3Q2Q1Q0 SIR⋅Q3Q2Q1 ডানে শিফট, SIR বাম প্রান্তে ঢোকে
০ ↑ Q3Q2Q1Q0 Q2Q1Q0⋅SIL বামে শিফট, SIL ডান প্রান্তে ঢোকে
X স্তর Q3Q2Q1Q0 Q3Q2Q1Q0 ধারণ, কিছু বদলায় না

উদাহরণ: ডানে ও বামে শিফট

ধরো রেজিস্টারে ১০১০ আছে। SIR=০ এবং SIL=১।

ডানে শিফট (S=১), তিনটি পালস:

ডানে শিফটের ক্রম
পালস Q3 Q2 Q1 Q0 SIR
শুরু ১ ০ ১ ০ ০
১ ০ ১ ০ ১ ০
২ ০ ০ ১ ০ ০
৩ ০ ০ ০ ১ ০

এখন বামে শিফট (S=০), শুরু থেকে তিনটি পালস:

বামে শিফটের ক্রম
পালস Q3 Q2 Q1 Q0 SIL
শুরু ১ ০ ১ ০ ১
১ ০ ১ ০ ১ ১
২ ১ ০ ১ ১ ১
৩ ০ ১ ১ ১ ১

লক্ষ করো বামে শিফটে ডান প্রান্ত থেকে SIL=১ ঢুকছে, তাই ডান দিকের বিটগুলো একে একে ১ হয়ে যাচ্ছে।

সার্বজনীন রেজিস্টার

সার্বজনীন মানে কী?

একটি সুইস আর্মি ছুরির কথা ভাবো। এতে একসাথে ছুরি, কাঁচি, স্ক্রু ড্রাইভার, করাত সব আছে। একটি যন্ত্র দিয়ে অনেক কাজ হয়। একটি বোতাম বা লিভার দিয়ে সঠিক যন্ত্র বের করা যায়।

সার্বজনীন রেজিস্টার ঠিক এই সুইস আর্মি ছুরির মতো। দুটি মোড নির্বাচন বিট S1 ও S0 দিয়ে চারটি আলাদা অপারেশন করা যায়।

মোড নির্বাচন সারণি

সার্বজনীন রেজিস্টারের মোড সারণি
S1 S0 অপারেশন বিস্তারিত
০ ০ ধারণ রেজিস্টারের মান অপরিবর্তিত থাকে
০ ১ ডানে শিফট বিট ডানে সরে, বাম প্রান্তে ধারাবাহিক ইনপুট ঢোকে
১ ০ বামে শিফট বিট বামে সরে, ডান প্রান্তে ধারাবাহিক ইনপুট ঢোকে
১ ১ সমান্তরাল লোড চার বিট একসাথে লোড হয়

চারটি মোডের বুলিয়ান রাশি

সার্বজনীন রেজিস্টারে প্রতিটি ফ্লিপ-ফ্লপের আগে একটি ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে। মাল্টিপ্লেক্সার S1 ও S0 দিয়ে চারটি পথের একটি বেছে নেয়।

প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট:

Di=S1¯S0¯⋅Qi+S1¯S0⋅Qi−1+S1S0¯⋅Qi+1+S1S0⋅Datai

এই রাশিটি ভেঙে বোঝা যাক:

  • S1S0=০০: Di=Qi, নিজের মান নিজেই ফেরত পায়, ধারণ
  • S1S0=০১: Di=Qi−1, বাম পাশের মান নেয়, ডানে শিফট
  • S1S0=১০: Di=Qi+1, ডান পাশের মান নেয়, বামে শিফট
  • S1S0=১১: Di=Datai, নতুন ডেটা লোড হয়

মোড ০০: ধারণ

এই মোডে রেজিস্টার একটি তথ্য আঁকড়ে ধরে রাখে। বাইরে যাই হোক না কেন, ভেতরের মান নিরাপদ।

প্রতিটি ফ্লিপ-ফ্লপের ডি ইনপুট সেই ফ্লিপ-ফ্লপের আউটপুটই পায়। তাই পরের ঘড়ির পালসেও মান বদলায় না।

মোড ০১: ডানে শিফট

ট্রেনের কামরার মতো ভাবো। একটি কামরা সরে গেলে পরের কামরা সেই জায়গায় আসে। ডানে শিফটে প্রতিটি বিট ডান পাশের ফ্লিপ-ফ্লপে চলে যায়। বাম প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।

মোড ১০: বামে শিফট

বিপরীতভাবে প্রতিটি বিট বাম পাশের ফ্লিপ-ফ্লপে চলে যায়। ডান প্রান্তে ধারাবাহিক ইনপুট থেকে নতুন বিট ঢোকে।

মোড ১১: সমান্তরাল লোড

এই মোড আগের ভাগে দেখা সমান্তরাল লোড রেজিস্টারের মতো। চারটি বিট একসাথে রেজিস্টারে ঢোকে।

সম্পূর্ণ সত্যক সারণী

সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
S1 S0 ঘড়ি ইনপুট Q3 (পরে) Q2 (পরে) Q1 (পরে) Q0 (পরে) মোড
০ ০ ↑ যেকোনো Q3 Q2 Q1 Q0 ধারণ
০ ১ ↑ SIR SIR Q3 Q2 Q1 ডানে শিফট
১ ০ ↑ SIL Q2 Q1 Q0 SIL বামে শিফট
১ ১ ↑ D3D2D1D0 D3 D2 D1 D0 সমান্তরাল লোড
X X স্তর যেকোনো Q3 Q2 Q1 Q0 ধারণ (ঘড়ি প্রান্ত নেই)

সার্বজনীন রেজিস্টারের উপমা

একটি চার লেনের রাস্তার কথা ভাবো। রাস্তার একটি কেন্দ্রীয় নিয়ন্ত্রণ কক্ষ আছে। সেখান থেকে দুটি সুইচ দিয়ে রাস্তার আচরণ বদলানো যায়।

  • সুইচ ০০: সব গাড়ি থামো, যে যেখানে আছ
  • সুইচ ০১: সব গাড়ি এক লেন ডানে সরো
  • সুইচ ১০: সব গাড়ি এক লেন বামে সরো
  • সুইচ ১১: নতুন গাড়ি সব লেনে একসাথে প্রবেশ করো

সার্বজনীন রেজিস্টারের S1 ও S0 সেই দুটি সুইচের মতো।

৭৪১৯৪ চিপের পরিচয়

বাস্তব জীবনে সার্বজনীন রেজিস্টার হিসেবে ৭৪১৯৪ চিপ সবচেয়ে পরিচিত। এটি একটি ৪-বিট দ্বিমুখী সার্বজনীন শিফট রেজিস্টার।

পিন বিন্যাস

৭৪১৯৪ চিপের পিন বিবরণ
পিনের নাম ধরন বিবরণ
A,B,C,D সমান্তরাল ডেটা ইনপুট চারটি বিট একসাথে লোড করার ইনপুট
QA,QB,QC,QD আউটপুট চারটি ফ্লিপ-ফ্লপের আউটপুট
S0,S1 মোড নির্বাচন দুটি নিয়ন্ত্রণ বিট
SR (ডানমুখী ধারাবাহিক ইনপুট) ধারাবাহিক ইনপুট ডানে শিফটের সময় বাম প্রান্তে ঢোকে
SL (বামমুখী ধারাবাহিক ইনপুট) ধারাবাহিক ইনপুট বামে শিফটের সময় ডান প্রান্তে ঢোকে
CLK ঘড়ি উর্ধ্বমুখী প্রান্ত-ট্রিগার
CLR‾ ক্লিয়ার সক্রিয়-নিম্ন, তাৎক্ষণিক পরিষ্কার
VCC বিদ্যুৎ +৫V
GND ভূমি ০V

৭৪১৯৪ চিপের কার্যক্রম

৭৪১৯৪ এর কার্যক্রম সারণি
CLR‾ S1 S0 ঘড়ি অপারেশন
০ X X X তাৎক্ষণিক পরিষ্কার, সব আউটপুট ০
১ ০ ০ ↑ ধারণ
১ ০ ১ ↑ ডানে শিফট, SR থেকে ইনপুট
১ ১ ০ ↑ বামে শিফট, SL থেকে ইনপুট
১ ১ ১ ↑ সমান্তরাল লোড

লক্ষ করো ৭৪১৯৪-তে S0 ও S1-এর সংজ্ঞা আগের সারণির বিপরীত দিক থেকে আসা। চিপের ডেটাশিট দেখে নিশ্চিত হওয়া ভালো।

বাস্তব প্রয়োগে ৭৪১৯৪

ধারাবাহিক থেকে সমান্তরাল রূপান্তর: ধারাবাহিকভাবে আসা ডেটা শিফট করে রেজিস্টারে জমা হয়, তারপর সমান্তরালভাবে বের হয়। যোগাযোগ ব্যবস্থায় এই প্রক্রিয়া সাধারণ।

সমান্তরাল থেকে ধারাবাহিক রূপান্তর: সমান্তরালভাবে ডেটা লোড করে শিফট করে ধারাবাহিকভাবে বের করা হয়।

বৃত্তাকার রেজিস্টার: আউটপুটকে আবার ইনপুটে দিলে বিট বৃত্তাকারে ঘোরে। কখনো একই প্যাটার্ন বারবার তৈরি করতে এটি ব্যবহার হয়।

ক্রমিক গণনাকারী: বিশেষভাবে সংযুক্ত করলে ৭৪১৯৪ একটি জনসন গণনাকারী বা রিপল গণনাকারী তৈরি করতে পারে।

বিস্তারিত উদাহরণ

উদাহরণ ১: ধারণ মোড (মোড ০০)

রেজিস্টারে ১০১১ আছে। S1S0=০০ দিয়ে তিনটি ঘড়ির পালস দেওয়া হলো।

ধারণ মোডের ক্রম
পালস S1S0 Q3Q2Q1Q0 মন্তব্য
শুরু - ১০১১ প্রাথমিক অবস্থা
১ ০০ ১০১১ অপরিবর্তিত
২ ০০ ১০১১ অপরিবর্তিত
৩ ০০ ১০১১ অপরিবর্তিত

ঘড়ি পালস দেওয়া হচ্ছে কিন্তু মোড ০০ থাকায় রেজিস্টারের মান বদলাচ্ছে না। এটাই ধারণ মোডের কাজ।

উদাহরণ ২: ডানে শিফট মোড (মোড ০১)

রেজিস্টারে ১১০০ আছে। S1S0=০১, ধারাবাহিক ইনপুট SIR=১।

ডানে শিফটের ক্রম
পালস SIR Q3 Q2 Q1 Q0 মন্তব্য
শুরু - ১ ১ ০ ০ প্রাথমিক
১ ১ ১ ১ ১ ০ SIR বামে ঢুকল
২ ১ ১ ১ ১ ১ আবার ঢুকল
৩ ০ ০ ১ ১ ১ এবার ০ ঢুকল
৪ ০ ০ ০ ১ ১ আবার ০

প্রতিটি পালসে বিট ডানে এক ঘর সরছে। বাম প্রান্ত থেকে SIR-এর মান ঢুকছে। ডান প্রান্তের বিট বেরিয়ে যাচ্ছে।

উদাহরণ ৩: বামে শিফট মোড (মোড ১০)

রেজিস্টারে ০০১১ আছে। S1S0=১০, ধারাবাহিক ইনপুট SIL=০।

বামে শিফটের ক্রম
পালস SIL Q3 Q2 Q1 Q0 মন্তব্য
শুরু - ০ ০ ১ ১ প্রাথমিক
১ ০ ০ ১ ১ ০ বামে গেল, ডানে ০
২ ০ ১ ১ ০ ০ আবার বামে
৩ ০ ১ ০ ০ ০ আবার বামে
৪ ০ ০ ০ ০ ০ সব বিট বেরিয়ে গেল

০০১১ কে বামে চার বার শিফট করলে সব বিট বেরিয়ে যায় এবং SIL=০ থেকে শূন্য ঢোকায় রেজিস্টার শূন্য হয়ে যায়। এটি দুই দিয়ে বারবার গুণ করার মতো।

উদাহরণ ৪: সমান্তরাল লোড (মোড ১১)

রেজিস্টারে ০০০০ আছে। S1S0=১১, ডেটা ইনপুট = ১০১০।

একটি ঘড়ির পালসে:

Q3=D3=১
Q2=D2=০
Q1=D1=১
Q0=D0=০

রেজিস্টারে এখন ১০১০। মাত্র একটি পালসে চারটি বিট একসাথে লোড হয়েছে।

উদাহরণ ৫: মোড পরিবর্তন করে ধারাবাহিক থেকে সমান্তরাল

ধরো ধারাবাহিকভাবে ১, ১, ০, ১ বিট আসছে। আমরা এগুলো শিফট রেজিস্টারে জমিয়ে সমান্তরালভাবে পড়তে চাই।

প্রথমে মোড ০১ (ডানে শিফট) দিয়ে চারটি পালস:

ধারাবাহিক থেকে সমান্তরাল রূপান্তর
পালস মোড SIR Q3Q2Q1Q0 মন্তব্য
শুরু - - ০০০০ খালি রেজিস্টার
১ ০১ ১ ১০০০ প্রথম বিট ঢুকল
২ ০১ ১ ১১০০ দ্বিতীয় বিট ঢুকল
৩ ০১ ০ ০১১০ তৃতীয় বিট ঢুকল
৪ ০১ ১ ১০১১ চতুর্থ বিট ঢুকল
৫ ০০ - ১০১১ মোড ০০, সমান্তরাল পড়া

চার পালস পর রেজিস্টারে ১০১১ আছে। এখন মোড ০০-এ গিয়ে সমান্তরালভাবে চারটি বিট একসাথে পড়া যাবে।

সার্বজনীন রেজিস্টারের সুবিধা ও সীমাবদ্ধতা

সার্বজনীন রেজিস্টারের তুলনামূলক বিশ্লেষণ
দিক সুবিধা সীমাবদ্ধতা
কার্যকারিতা চারটি মোড, একটি চিপে সব সরল রেজিস্টারের চেয়ে জটিল
নমনীয়তা প্রয়োজনমতো মোড বদলানো যায় দুটি অতিরিক্ত নিয়ন্ত্রণ সংকেত দরকার
খরচ একটি চিপে সব কাজ, খরচ কম অতিরিক্ত মাল্টিপ্লেক্সার গেট লাগে
গতি ঘড়ির একটি পালসে মোড বদলানো যায় সমান্তরাল লোড একটি পালস নেয়
জায়গা একটি চিপ, কম জায়গা সরল রেজিস্টারের চেয়ে বেশি ট্রানজিস্টর

অনুশীলনী

  1. একটি ৪-বিট দ্বিমুখী শিফট রেজিস্টারে ১০১০ আছে। S=১ এবং SIR=০ দিয়ে দুটি পালস দিলে রেজিস্টারে কী থাকবে?
  1. একই রেজিস্টারে ১০১০ আছে। এবার S=০ এবং SIL=১ দিয়ে দুটি পালস দিলে কী হবে?
  1. দ্বিমুখী শিফট রেজিস্টারে বিট ডানে শিফট হলে কোন পাশ থেকে নতুন বিট ঢোকে?
  1. সার্বজনীন রেজিস্টারে S1S0=০১ মানে কোন মোড? এই মোডে Di-এর রাশি কী?
  1. একটি সার্বজনীন রেজিস্টারে ০০০০ আছে। নিচের ধাপে কী হবে?
    • ধাপ ১: মোড ১১, ডেটা = ১১০১, একটি পালস
    • ধাপ ২: মোড ০১, SIR=০, দুটি পালস
    • ধাপ ৩: মোড ০০, একটি পালস
  1. ৭৪১৯৪ চিপে CLR‾=০ দিলে কী হয় এবং এটি কোন ধরনের পরিষ্কার?
  1. বামে এক শিফট করলে একটি বাইনারি সংখ্যার কী গাণিতিক পরিবর্তন হয়? ০০১১ (দশমিকে ৩) এর উদাহরণ দিয়ে দেখাও।
  1. সার্বজনীন রেজিস্টারের প্রতিটি ফ্লিপ-ফ্লপের আগে কত ইনপুটের মাল্টিপ্লেক্সার থাকে এবং কেন?
  1. ধারাবাহিক থেকে সমান্তরাল রূপান্তরে কোন দুটি মোড ব্যবহার হয় এবং কেন?
  1. একটি সার্বজনীন রেজিস্টারে ১১১১ আছে। মোড ১০ (SIL=০) দিয়ে চারটি পালস দিলে কী হবে এবং দশমিক মানের কী পরিবর্তন হলো?

উত্তর:

  1. প্রথম পালসে: ০১০১; দ্বিতীয় পালসে: ০০১০; ডানে দুই শিফট, বাম প্রান্তে ০ ঢুকেছে
  1. প্রথম পালসে: ০১০১; দ্বিতীয় পালসে: ১০১১; বামে দুই শিফট, ডান প্রান্তে ১ ঢুকেছে
  1. বাম পাশ থেকে ধারাবাহিক ইনপুট SIR ঢোকে
  1. মোড ০১ মানে ডানে শিফট; Di=Qi−1 অর্থাৎ প্রতিটি ফ্লিপ-ফ্লপ বাম পাশের মান নেয়
  1. ধাপ ১ পরে: ১১০১; ধাপ ২ এর প্রথম পালসে: ০১১০; ধাপ ২ এর দ্বিতীয় পালসে: ০০১১; ধাপ ৩ পরে: ০০১১ (অপরিবর্তিত)
  1. CLR‾=০ দিলে তাৎক্ষণিক সব আউটপুট ০ হয়ে যায়; এটি ঘড়ি-স্বাধীন পরিষ্কার
  1. বামে এক শিফট মানে সংখ্যা দুই দিয়ে গুণ হওয়া; ০০১১ (দশমিকে ৩) বামে এক শিফটে ০১১০ (দশমিকে ৬) হয়, যা ৩ × ২ = ৬
  1. ৪-থেকে-১ মাল্টিপ্লেক্সার থাকে কারণ চারটি মোডে চারটি আলাদা পথ থেকে একটি বেছে নিতে হয়
  1. প্রথমে মোড ০১ (ডানে শিফট) দিয়ে ধারাবাহিক বিট ঢোকানো হয়; চারটি পালস পর সব বিট রেজিস্টারে জমা হলে মোড ০০ (ধারণ) এ গিয়ে সমান্তরালভাবে পড়া হয়
  1. পালস ১: ০১১১; পালস ২: ০০১১; পালস ৩: ০০০১; পালস ৪: ০০০০; দশমিক মান: ১৫ থেকে ৭ থেকে ৩ থেকে ১ থেকে ০, প্রতিটি পালসে দুই দিয়ে ভাগ হচ্ছে

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

দুই-দিকে চলা এস্কালেটরের উপমা

বিমানবন্দরে গিয়েছ কখনো? সেখানে এমন চলমান বেল্ট থাকে যেটা কখনো এক দিকে যাত্রীদের নিয়ে যায়, আবার নিয়ন্ত্রণকক্ষ থেকে নির্দেশ দিলে বিপরীত দিকেও চালানো যায়। একটি বোতাম টিপলে ডানে, আরেকটি বোতাম টিপলে বামে।

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

এবার ধরো, তোমার কাছে চারটি বিট আছে: Q3Q2Q1Q0=1011।

  • S=১ হলে (ডানে শিফট): 0101 হয়ে যাবে।
  • S=০ হলে (বামে শিফট): 0110 হয়ে যাবে।

একই হার্ডওয়্যার, শুধু একটি সংকেতের পরিবর্তনে দুই ধরনের কাজ!

দ্বিমুখী শিফট রেজিস্টারের গঠন

নিয়ন্ত্রণ সংকেত S

দ্বিমুখী শিফট রেজিস্টারে একটি বিশেষ নিয়ন্ত্রণ সংকেত S থাকে যা সিদ্ধান্ত নেয় ডেটা কোন দিকে যাবে।

নিয়ন্ত্রণ সংকেত S এর ভূমিকা
S এর মান কাজ উপমা
১ ডানে শিফট বেল্ট ডানে চলছে
০ বামে শিফট বেল্ট বামে চলছে

মনে রাখার সহজ উপায়: S=১ মানে "সরাসরি ডানে", S=০ মানে "উলটো দিকে মানে বামে"।

বুলিয়ান রাশি

প্রতিটি ফ্লিপ-ফ্লপের ইনপুট Di নির্ধারিত হয় এই রাশি দিয়ে:

Di=S⋅Qi−1+S¯⋅Qi+1

এই রাশিটা একটু বিশ্লেষণ করি:

  • S⋅Qi−1: যদি S=১ হয়, তাহলে বামের প্রতিবেশী Qi−1 এর মান নিজের মধ্যে আসে, মানে ডানে শিফট।
  • S¯⋅Qi+1: যদি S=০ হয়, তাহলে ডানের প্রতিবেশী Qi+1 এর মান নিজের মধ্যে আসে, মানে বামে শিফট।

এই দুই অংশ একটি মাক্সটিপ্লেক্সারের মতো কাজ করে: S এর মান দেখে সিদ্ধান্ত নেয় কোন প্রতিবেশীর মান নেবে।

প্রতিটি বিটের ইনপুট কীভাবে নির্ধারিত হয়
বিট Di এর রাশি S=১ (ডানে) S=০ (বামে)
D3 (MSB) S⋅SIR+S¯⋅Q2 ডান সিরিয়াল ইনপুট Q2 থেকে আসে
D2 S⋅Q3+S¯⋅Q1 Q3 থেকে আসে Q1 থেকে আসে
D1 S⋅Q2+S¯⋅Q0 Q2 থেকে আসে Q0 থেকে আসে
D0 (LSB) S⋅Q1+S¯⋅SIL Q1 থেকে আসে বাম সিরিয়াল ইনপুট

এখানে SIR হলো ডানে শিফটের সময় সবচেয়ে বাম বিটে ঢোকানো নতুন বিট, আর SIL হলো বামে শিফটের সময় সবচেয়ে ডান বিটে ঢোকানো নতুন বিট।

সার্কিট গঠন

চার-বিটের দ্বিমুখী শিফট রেজিস্টারে থাকে:

  • চারটি ডি ফ্লিপ-ফ্লপ (FF3,FF2,FF1,FF0)
  • প্রতিটি ফ্লিপ-ফ্লপের আগে একটি করে ২-থেকে-১ মাক্সটিপ্লেক্সার
  • মাক্সটিপ্লেক্সারের নির্বাচন সংকেত হিসেবে S

প্রতিটি মাক্সটিপ্লেক্সার দুটি ইনপুট পায়: বাম প্রতিবেশীর আউটপুট ও ডান প্রতিবেশীর আউটপুট। S এর মান দেখে সে সিদ্ধান্ত নেয় কোনটা ফ্লিপ-ফ্লপে পাঠাবে।

সত্যক সারণী ও উদাহরণ

ধরো চার-বিট রেজিস্টারের বর্তমান অবস্থা Q3Q2Q1Q0=1101 এবং সিরিয়াল ইনপুট উভয় দিকেই ০।

দ্বিমুখী শিফটের উদাহরণ
ক্লক চক্র S Q3 Q2 Q1 Q0 কাজ
শুরু ১ ১ ০ ১ প্রাথমিক অবস্থা
১ ১ ০ ১ ১ ০ ডানে শিফট (MSB তে ০ ঢুকেছে)
২ ১ ০ ০ ১ ১ আবার ডানে শিফট
৩ ০ ০ ১ ০ ১ বামে শিফট (LSB তে ০ ঢুকেছে)
৪ ০ ১ ০ ১ ০ আবার বামে শিফট

দেখো, S পরিবর্তন করে দিকও পরিবর্তন হয়ে যাচ্ছে।

হাতে-কলমে হিসাব

চক্র ১ যাচাই করা যাক: Q3Q2Q1Q0=1101, S=১, SIR=০।

D3=S⋅SIR+S¯⋅Q2=১⋅০+০⋅১=০
D2=S⋅Q3+S¯⋅Q1=১⋅১+০⋅০=১
D1=S⋅Q2+S¯⋅Q0=১⋅১+০⋅১=১
D0=S⋅Q1+S¯⋅SIL=১⋅০+০⋅০=০

পরের অবস্থা: Q3Q2Q1Q0=0110 ✓

সার্বজনীন রেজিস্টার

মাক্সওয়েল রেজিস্টারের উপমা

কল্পনা করো একজন দক্ষ অফিস সহকারী যে চারটি কাজ করতে পারে: যখন তাকে বলো "স্থির থাকো" সে কিছু পরিবর্তন করে না। যখন বলো "ডানে সরো" সে ডানে যায়। যখন বলো "বামে সরো" সে বামে যায়। আর যখন বলো "সব একসাথে বদলাও" সে পুরো বিষয়টা নতুন করে সাজিয়ে নেয়।

সার্বজনীন রেজিস্টার ঠিক এই সহকারীর মতো। দুটি নিয়ন্ত্রণ সংকেত S1 এবং S0 মিলে চারটি আলাদা আলাদা নির্দেশ দিতে পারে। এই চারটি নির্দেশ হলো সার্বজনীন রেজিস্টারের চারটি মোড।

ঠিক যেমন একটি সুইস আর্মি ছুরিতে চারটি হাতিয়ার থাকে কিন্তু একটিই বস্তু, সার্বজনীন রেজিস্টার একটিই চিপ কিন্তু চারটি কাজ করতে পারে।

মোড নির্বাচন সারণি

দুটি নিয়ন্ত্রণ সংকেত S1S0 মিলে চারটি সমন্বয় সম্ভব:

সার্বজনীন রেজিস্টারের চারটি মোড
S1 S0 মোড কাজ বাস্তব উপমা
০ ০ ধারণ মোড বর্তমান অবস্থা অপরিবর্তিত থাকে স্থির দাঁড়িয়ে থাকা
০ ১ ডানে শিফট মোড সব বিট একটু ডানে সরে সারি ডানে এগিয়ে যাওয়া
১ ০ বামে শিফট মোড সব বিট একটু বামে সরে সারি বামে এগিয়ে যাওয়া
১ ১ সমান্তরাল লোড মোড বাইরে থেকে নতুন ডেটা একসাথে ঢোকে সবাই একসাথে বদলে যাওয়া

মনে রাখার কৌশল: S1S0 কে বাইনারি সংখ্যা হিসেবে দেখো: ০০ = স্থির, ০১ = ডানে, ১০ = বামে, ১১ = লোড।

প্রতিটি মোডের বিস্তারিত বুলিয়ান রাশি

প্রতিটি বিট Qi এর পরবর্তী অবস্থা নির্ধারণ করে এই রাশি:

Di=S1¯S0¯⋅Qi+S1¯S0⋅Qi−1+S1S0¯⋅Qi+1+S1S0⋅Pi

এখানে Pi হলো সমান্তরাল ইনপুটের i নম্বর বিট।

রাশিটার চারটি অংশ চারটি মোডের জন্য:

রাশির প্রতিটি অংশের ব্যাখ্যা
অংশ মোড সক্রিয় হয় কখন কী করে
S1¯S0¯⋅Qi ধারণ S1=০,S0=০ নিজের মান নিজে রাখে
S1¯S0⋅Qi−1 ডানে শিফট S1=০,S0=১ বাম প্রতিবেশীর মান নেয়
S1S0¯⋅Qi+1 বামে শিফট S1=১,S0=০ ডান প্রতিবেশীর মান নেয়
S1S0⋅Pi সমান্তরাল লোড S1=১,S0=১ বাইরের ইনপুট নেয়

মোড ০০: ধারণ মোড

এই মোডে রেজিস্টার কিছুই করে না, বর্তমান অবস্থা ধরে রাখে।

উপমা: ক্লাসরুমে শিক্ষক বলেছেন "এখন চুপ করে বসো।" কেউ নড়াচড়া করছে না, সবাই যেখানে ছিল সেখানেই আছে।

রাশি: Di=Qi

যাচাই: S1=০,S0=০ রাখলে মূল রাশিতে শুধু প্রথম অংশ সক্রিয়:

Di=১⋅Qi+০⋅Qi−1+০⋅Qi+1+০⋅Pi=Qi

মোড ০১: ডানে শিফট মোড

এই মোডে প্রতিটি বিট তার ডানের প্রতিবেশীর জায়গায় যায়।

উপমা: সারিতে দাঁড়ানো মানুষদের শিক্ষক বললেন "সবাই এক ধাপ ডানে সরো।" Q3 এর জায়গায় যাবে বাইরের সিরিয়াল ইনপুট, আর Q0 থেকে বিটটা বেরিয়ে যাবে।

রাশি: Di=Qi−1 (সর্বোচ্চ বিটের জন্য: Dn−1=SIR)

মোড ১০: বামে শিফট মোড

এই মোডে প্রতিটি বিট তার বামের প্রতিবেশীর জায়গায় যায়।

উপমা: একই সারিতে এবার শিক্ষক বললেন "সবাই এক ধাপ বামে সরো।" এবার Q0 এর জায়গায় আসবে সিরিয়াল ইনপুট, আর Q3 থেকে বিট বেরিয়ে যাবে।

রাশি: Di=Qi+1 (সর্বনিম্ন বিটের জন্য: D0=SIL)

মোড ১১: সমান্তরাল লোড মোড

এই মোডে বাইরের চারটি ইনপুট P3P2P1P0 একসাথে রেজিস্টারে ঢোকে।

উপমা: ক্লাস শুরুতে শিক্ষক বললেন "সবাই নিজের নতুন বই তুলে নাও।" একসাথে সবাই নতুন বই নিল, আগের সব তথ্য বাতিল।

রাশি: Di=Pi

সম্পূর্ণ সত্যক সারণী

ধরো বর্তমান অবস্থা Q3Q2Q1Q0=1010, সমান্তরাল ইনপুট P3P2P1P0=0110, ডানে শিফটের সিরিয়াল ইনপুট SIR=১, বামে শিফটের সিরিয়াল ইনপুট SIL=০।

সার্বজনীন রেজিস্টারের সম্পূর্ণ সত্যক সারণী
S1 S0 মোড Q3+ Q2+ Q1+ Q0+ ব্যাখ্যা
০ ০ ধারণ ১ ০ ১ ০ অপরিবর্তিত থাকে
০ ১ ডানে শিফট ১ ১ ০ ১ SIR=১ ঢুকেছে বাম থেকে
১ ০ বামে শিফট ০ ১ ০ ০ SIL=০ ঢুকেছে ডান থেকে
১ ১ সমান্তরাল লোড ০ ১ ১ ০ P=0110 লোড হয়েছে

সমান্তরাল লোড মোডের বিস্তারিত যাচাই

মোড S1S0=১১, সমান্তরাল ইনপুট P=0110:

D3=০¯⋅১¯⋅Q3+০¯⋅১⋅Q2+০⋅১¯⋅Q1+১⋅১⋅P3

শুধুমাত্র চতুর্থ অংশ সক্রিয় (কারণ S1S0=১১):

D3=১⋅১⋅P3=P3=০
D2=P2=১
D1=P1=১
D0=P0=০

পরের অবস্থা: 0110 ✓

৭৪১৯৪ চিপের পরিচয়

চিপটি কী?

৭৪১৯৪ হলো একটি বাস্তব সমন্বিত সার্কিট যা সার্বজনীন রেজিস্টার হিসেবে কাজ করে। এটির পুরো নাম "৭৪ সিরিজের ১৯৪ নম্বর চিপ" এবং এটি ৪-বিট সার্বজনীন দ্বিমুখী শিফট রেজিস্টার।

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

পিন বিন্যাস

৭৪১৯৪ চিপের পিন বর্ণনা
পিন নম্বর নাম ধরন কাজ
১ CLR‾ ইনপুট সক্রিয়-নিম্ন ক্লিয়ার: ০ দিলে সব বিট শূন্য হয়
২ SR ইনপুট ডানে শিফটের সিরিয়াল ইনপুট (SIR)
৩, ৪, ৫, ৬ A,B,C,D ইনপুট সমান্তরাল ইনপুট (P0 থেকে P3)
৭ S0 ইনপুট মোড নির্বাচন বিট ০
৮ GND বিদ্যুৎ ভূমি সংযোগ (০ ভোল্ট)
৯ S1 ইনপুট মোড নির্বাচন বিট ১
১০ CLK ইনপুট ক্লক সংকেত
১১ SL ইনপুট বামে শিফটের সিরিয়াল ইনপুট (SIL)
১২, ১৩, ১৪, ১৫ QA,QB,QC,QD আউটপুট রেজিস্টারের চারটি বিট আউটপুট
১৬ VCC বিদ্যুৎ সরবরাহ বিদ্যুৎ (+5 ভোল্ট)

চিপের কার্যক্রম সারণি

৭৪১৯৪ চিপের সম্পূর্ণ কার্যক্রম
CLR‾ CLK S1 S0 কার্যক্রম
০ যাই হোক যাই হোক যাই হোক তাৎক্ষণিক ক্লিয়ার: সব আউটপুট শূন্য
১ উর্ধ্বপ্রান্ত ০ ০ ধারণ: অপরিবর্তিত
১ উর্ধ্বপ্রান্ত ০ ১ ডানে শিফট: SR→QA→QB→QC→QD
১ উর্ধ্বপ্রান্ত ১ ০ বামে শিফট: SL→QD→QC→QB→QA
১ উর্ধ্বপ্রান্ত ১ ১ সমান্তরাল লোড: A→QA,B→QB,C→QC,D→QD

মনে রাখো: ৭৪১৯৪ শুধুমাত্র ক্লকের উর্ধ্বপ্রান্তে (০ থেকে ১ পরিবর্তনে) কাজ করে। ক্লিয়ার পিন অবশ্য যেকোনো সময় কাজ করে।

চিপের বিশেষ বৈশিষ্ট্য

৭৪১৯৪ চিপের প্রযুক্তিগত বিবরণ
বৈশিষ্ট্য বিবরণ
ফ্লিপ-ফ্লপের ধরন উর্ধ্বপ্রান্ত-ট্রিগারড ডি ফ্লিপ-ফ্লপ
ক্লিয়ারের ধরন তাৎক্ষণিক (ক্লকের জন্য অপেক্ষা করে না)
সর্বোচ্চ ক্লক কম্পাঙ্ক প্রায় ৩৬ মেগাহার্টজ
বিদ্যুৎ সরবরাহ ৫ ভোল্ট ডিসি
সম্প্রসারণযোগ্যতা দুটি চিপ সংযুক্ত করে ৮-বিট রেজিস্টার সম্ভব
একই পরিবারের বিকল্প ৭৪এলএস১৯৪ (কম বিদ্যুৎ খরচ), ৭৪এইচসি১৯৪ (দ্রুতগতি)

বাস্তব প্রয়োগে ব্যবহার

৭৪১৯৪ চিপের বাস্তব ব্যবহার
প্রয়োগক্ষেত্র কীভাবে ব্যবহার হয়
সিরিয়াল-সমান্তরাল রূপান্তর সমান্তরাল লোড করে একটি একটি করে বিট বের করা হয়
সমান্তরাল-সিরিয়াল রূপান্তর একটি একটি করে বিট ঢুকিয়ে শেষে সমান্তরাল আউটপুট নেওয়া হয়
বৃত্তাকার বাফার আউটপুটকে ইনপুটে সংযুক্ত করে ঘূর্ণায়মান প্যাটার্ন তৈরি হয়
ক্রম নিয়ন্ত্রক নির্দিষ্ট বিট প্যাটার্ন তৈরি করে ডিজিটাল সিস্টেমের ধাপ নিয়ন্ত্রণ করা হয়
LED ডিসপ্লে নিয়ন্ত্রণ LED আলোর নির্দিষ্ট ক্রম তৈরিতে, বিজ্ঞাপনের চলমান আলোয়
যোগাযোগ প্রোটোকল SPI ও UART ধারাবাহিক যোগাযোগ প্রক্রিয়ায়
গণনা সার্কিট শিফট দিয়ে গুণ ও ভাগের কাজ প্রসেসরে দ্রুত করতে

বিস্তারিত উদাহরণ

উদাহরণ ১: ধারণ মোডের হাতে-কলমে হিসাব

একটি ৪-বিট সার্বজনীন রেজিস্টারের বর্তমান অবস্থা Q3Q2Q1Q0=1001। মোড সংকেত S1S0=০০। পরের ক্লক চক্রে কী হবে?

মোড ০০ মানে ধারণ। রাশিতে শুধু প্রথম অংশ সক্রিয়:

D3=০¯⋅০¯⋅Q3=১⋅১⋅১=১
D2=০¯⋅০¯⋅Q2=১⋅১⋅০=০
D1=০¯⋅০¯⋅Q1=১⋅১⋅০=০
D0=০¯⋅০¯⋅Q0=১⋅১⋅১=১

পরের অবস্থা: Q=1001 অপরিবর্তিত! ✓

অর্থাৎ ক্লক দিলেও কিছু বদলায় না। কম্পিউটারে যখন কোনো তথ্য সাময়িকভাবে ধরে রাখতে হয়, তখন এই মোড কাজে লাগে। ডেটা বাস ব্যবহারের মধ্যবর্তী সময়ে প্রসেসর এই মোড ব্যবহার করে।

উদাহরণ ২: ডানে শিফট মোডের ধাপে ধাপে বিশ্লেষণ

বর্তমান অবস্থা Q3Q2Q1Q0=1100। মোড S1S0=০১ (ডানে শিফট)। সিরিয়াল ইনপুট SR=১।

রাশিতে দ্বিতীয় অংশ সক্রিয় (S1¯S0=১):

D3=০¯⋅১⋅SR=১⋅১⋅১=১ (সিরিয়াল ইনপুট ঢুকেছে)
D2=০¯⋅১⋅Q3=১⋅১⋅১=১
D1=০¯⋅১⋅Q2=১⋅১⋅১=১
D0=০¯⋅১⋅Q1=১⋅১⋅০=০

পরের অবস্থা: 1110।

এভাবে তিনটি ক্লক চক্রে কী হয় দেখি (SR প্রতিবার ভিন্ন):

তিন চক্রে ডানে শিফটের ধাপ
চক্র Q3 Q2 Q1 Q0 SR (নতুন) বের হওয়া বিট
শুরু ১ ১ ০ ০
১ ১ ১ ১ ০ ১ ০
২ ০ ১ ১ ১ ০ ০
৩ ১ ০ ১ ১ ১ ১

প্রতিটি চক্রে ডান থেকে এক বিট বেরিয়ে যাচ্ছে এবং বাম থেকে SR ঢুকছে। এটিই সমান্তরাল-সিরিয়াল রূপান্তরের ভিত্তি।

উদাহরণ ৩: বামে শিফট মোডে বাইনারি গুণ

বামে শিফটের একটি চমৎকার প্রয়োগ হলো ২ দিয়ে গুণ! বাইনারি সংখ্যাকে একবার বামে শিফট করলে সেটা ২ দিয়ে গুণ হয়ে যায়, ঠিক যেমন দশমিকে ১০ দিয়ে গুণ করলে শেষে একটি শূন্য বসে।

প্রমাণ:

  • প্রাথমিক অবস্থা: Q3Q2Q1Q0=0011=3 দশমিকে
  • মোড S1S0=১০, SL=০:

রাশিতে তৃতীয় অংশ সক্রিয় (S1S0¯=১):

D3=Q2=০
D2=Q1=১
D1=Q0=১
D0=SL=০
  • পরের অবস্থা: 0110=6 দশমিকে। 3×2=6 ✓

আরও একবার শিফট করলে:

0110→1100=12=3×4 ✓
বামে শিফট দিয়ে ২ এর ঘাতে গুণ
চক্র বাইনারি দশমিক কার্যকর গুণ
০ 0011 3 শুরু
১ 0110 6 3×2
২ 1100 12 3×4
৩ 1000 8 উপচে পড়েছে! আসল: 3×8=24

সাবধান: তৃতীয় চক্রে উপচে পড়েছে কারণ ৪ বিটে ২৪ ধরে না (সর্বোচ্চ ১৫)। এই কৌশলটি কম্পিউটার প্রসেসরে গুণের গতি বাড়াতে ব্যবহার করা হয়!

উদাহরণ ৪: সমান্তরাল লোড ও তারপর সিরিয়াল পাঠানো

এটি একটি বাস্তব প্রয়োগের উদাহরণ: সমান্তরাল ডেটা লোড করে তারপর সিরিয়ালভাবে পাঠানো। যেমন প্রিন্টারে ডেটা পাঠানোর সময় এই পদ্ধতি ব্যবহার হয়।

ধাপ ১: সমান্তরাল লোড করো।

  • মোড S1S0=১১
  • সমান্তরাল ইনপুট P3P2P1P0=1010
  • এক ক্লক চক্রে: Q=1010

ধাপ ২: এক এক করে বিট বের করো (মোড S1S0=০১, ডানে শিফট, SR=০)।

সমান্তরাল থেকে সিরিয়াল রূপান্তর
চক্র Q3 Q2 Q1 Q0 Q0 এ বের হওয়া বিট
লোড ১ ০ ১ ০
১ ০ ১ ০ ১ ০
২ ০ ০ ১ ০ ১
৩ ০ ০ ০ ১ ০
৪ ০ ০ ০ ০ ১

চার চক্রে সিরিয়াল আউটপুটে পাওয়া গেল: ০,১,০,১ অর্থাৎ উলটো ক্রমে 1010! গ্রাহক প্রান্তে উলটো করে পড়লে আসল ডেটা পাওয়া যাবে।

উদাহরণ ৫: ৭৪১৯৪ দিয়ে বৃত্তাকার বাফার

সবচেয়ে মজার প্রয়োগ: QD আউটপুটকে SR ইনপুটে সংযুক্ত করো এবং মোড S1S0=০১ রাখো। তাহলে বিটগুলো ঘুরতে থাকবে!

প্রাথমিক অবস্থা (সমান্তরাল লোড দিয়ে): QAQBQCQD=1000।

বৃত্তাকার ডান শিফটের প্যাটার্ন
চক্র QA QB QC QD আলো জ্বলে কোথায়?
০ ১ ০ ০ ০ প্রথম LED
১ ০ ১ ০ ০ দ্বিতীয় LED
২ ০ ০ ১ ০ তৃতীয় LED
৩ ০ ০ ০ ১ চতুর্থ LED
৪ ১ ০ ০ ০ আবার প্রথম (শুরুতে ফিরে)

এই প্যাটার্নটি LED ডিসপ্লেতে ঘূর্ণায়মান আলো তৈরি করে! বিজ্ঞাপনের সাইনবোর্ডে যে আলো ঘোরে, তার পেছনে এই নীতিই কাজ করে। চক্রকাল হলো ৪, অর্থাৎ ৪ ক্লকে একটি পূর্ণ ঘূর্ণন।

অনুশীলনী

সহজ স্তর:

১. একটি দ্বিমুখী শিফট রেজিস্টারে বর্তমান অবস্থা Q3Q2Q1Q0=0110। S=১ এবং SIR=০ হলে এক ক্লক চক্র পরে রেজিস্টারের অবস্থা কী হবে?

২. সার্বজনীন রেজিস্টারে S1S0=০০ মোডে বর্তমান অবস্থা Q=1011 থাকলে পাঁচটি ক্লক চক্র পরে অবস্থা কী হবে?

৩. ৭৪১৯৪ চিপে CLR‾=০ দিলে কী ঘটে? ক্লকের অবস্থা কি তখন গুরুত্বপূর্ণ?

৪. সার্বজনীন রেজিস্টারের রাশি থেকে মোড S1S0=০১ তে Di=Qi−1 সত্য কিনা যাচাই করো।

মধ্যম স্তর:

৫. সার্বজনীন রেজিস্টারে প্রাথমিক অবস্থা Q=0000। মোড S1S0=১১ এ সমান্তরাল ইনপুট P=1101 লোড করার পর, মোড S1S0=০১ এ তিনটি ক্লক চক্র চালাও (SR=০)। প্রতিটি চক্রের পরে অবস্থা লেখো।

৬. Q=0101 বাইনারি সংখ্যাটিকে বামে শিফটের মাধ্যমে ২ দিয়ে গুণ করো। ধাপগুলো দেখাও। ফলাফল কি ৪ বিটে ধরবে?

৭. দ্বিমুখী শিফট রেজিস্টারে Q=0001 থেকে শুরু করে শুধু বামে শিফট (S=০, SIL=০) করলে কত চক্রের পরে সব বিট শূন্য হবে? প্রতিটি চক্র দেখাও।

৮. ৭৪১৯৪ চিপে সমান্তরাল লোড করার পরে ডানে শিফট ও বামে শিফটের মধ্যে পার্থক্য একটি উদাহরণ দিয়ে দেখাও। প্রাথমিক অবস্থা Q=1010 নাও।

কঠিন স্তর:

৯. দুটি ৭৪১৯৪ চিপ সংযুক্ত করে ৮-বিট সার্বজনীন রেজিস্টার তৈরি করতে হবে। প্রথম চিপের QD আউটপুটকে দ্বিতীয় চিপের SR ইনপুটে সংযুক্ত করো। উভয় চিপে S1S0=০১ দিলে ডানে শিফট মোডে Q=11000000 থেকে শুরু করলে তিন চক্র পরে অবস্থা কী হবে (SR=০)?

১০. বৃত্তাকার বাফারে QD→SR সংযোগ ব্যবহার করা হয়। Q=1100 থেকে শুরু করে আট চক্র পরের অবস্থা কী হবে? এই প্যাটার্নের পুনরাবৃত্তির চক্রকাল কত?


উত্তর:

১. S=১ মানে ডানে শিফট, তাই প্রতিটি বিট এক ধাপ ডানে সরে এবং SIR=০ বামে ঢোকে:

Q3+=SIR=০
Q2+=Q3=০
Q1+=Q2=১
Q0+=Q1=১

পরের অবস্থা: Q=0011।

২. মোড ০০ মানে ধারণ, কিছুই পরিবর্তন হয় না। পাঁচ চক্র পরেও অবস্থা Q=1011 অপরিবর্তিত থাকবে।

৩. CLR‾=০ দিলে সব আউটপুট তাৎক্ষণিকভাবে শূন্য হয়ে যায়, অর্থাৎ Q=0000। এটি তাৎক্ষণিক বা অ্যাসিঙ্ক্রোনাস, তাই ক্লকের অবস্থা একেবারেই গুরুত্বপূর্ণ নয়।

৪. মোড S1S0=০১ অর্থাৎ S1=০,S0=১:

Di=০¯⋅১¯⏟=0⋅Qi+০¯⋅১⏟=1⋅Qi−1+০⋅১¯⏟=0⋅Qi+1+০⋅১⏟=0⋅Pi
Di=০+১⋅Qi−1+০+০=Qi−1 ✓

৫. প্রথমে সমান্তরাল লোড: Q=1101।

এরপর তিনটি ডানে শিফট (SR=০):

  • চক্র ১: Q3+=০,Q2+=Q3=১,Q1+=Q2=১,Q0+=Q1=০, তাই Q=0110
  • চক্র ২: Q=0011
  • চক্র ৩: Q=0001

৬. Q=0101=5 দশমিকে।

বামে শিফট (SL=০): D3=Q2=১,D2=Q1=০,D1=Q0=১,D0=০। পরের অবস্থা: Q=1010=10।

5×2=10 ✓ এবং 10<15, তাই ৪ বিটে ধরবে।

৭. প্রতিটি চক্র:

  • শুরু: 0001
  • চক্র ১: D3=Q2=০,D2=Q1=০,D1=Q0=১,D0=SL=০; Q=0010
  • চক্র ২: Q=0100
  • চক্র ৩: Q=1000
  • চক্র ৪: D3=Q2=০,D2=Q1=০,D1=Q0=০,D0=০; Q=0000

৪ চক্রের পরে সব বিট শূন্য হয়।

৮. প্রাথমিক অবস্থা লোডের পরে: Q=1010।

ডানে শিফট (S1S0=০১, SR=০): Q=0101

বামে শিফট (S1S0=১০, SL=০): Q=0100

দুই মোডে ফলাফল আলাদা। ডানে শিফটে সর্বোচ্চ বিট থেকে ০ ঢোকে, বামে শিফটে সর্বনিম্ন বিট থেকে ০ ঢোকে।

৯. ৮-বিট রেজিস্টার, প্রাথমিক অবস্থা Q=11000000।

ডানে শিফট (SR=০), প্রতি চক্রে সর্বোচ্চ বিটে ০ ঢোকে:

  • চক্র ১: Q=01100000
  • চক্র ২: Q=00110000
  • চক্র ৩: Q=00011000

দুটি ১ বিট একসাথে ডানে সরে যাচ্ছে, মাঝের দূরত্ব অপরিবর্তিত।

১০. QD→SR সংযোগ সহ ডানে বৃত্তাকার শিফট। প্রাথমিক অবস্থা: Q=1100।

বৃত্তাকার শিফটের ৮ চক্র
চক্র Q3Q2Q1Q0
০ 1100
১ 0110
২ 0011
৩ 1001
৪ 1100 (শুরুতে ফিরে এসেছে)
৫ 0110
৬ 0011
৭ 1001

পুনরাবৃত্তির চক্রকাল ৪। প্রতি ৪ ক্লকে প্যাটার্ন একই অবস্থায় ফিরে আসে। এই প্যাটার্নটি চারটি LED কে ঘুরিয়ে ঘুরিয়ে জ্বালাতে ব্যবহার করা যায়, যেখানে প্রতিবার দুটি LED জ্বলে।

রিং কাউন্টার ও জনসন কাউন্টার

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

রিং কাউন্টার কী

একটি গোল টেবিল কল্পনা করো। টেবিলে চারজন মানুষ বসে আছে। তাদের মধ্যে কেবল একজনের হাতে একটি লাল বল আছে। এখন নিয়ম হলো প্রতি মিনিটে বলটি পাশের জনের হাতে যাবে। বলটি ঘুরতে ঘুরতে আবার প্রথম জনের হাতে ফিরে আসবে, তারপর আবার সেই একই চক্র।

এটাই হলো রিং কাউন্টারের ধারণা। এখানে সেই লাল বলটি হলো ১, আর বাকি সবার হাত হলো ০। প্রতিটি ক্লকে ১টি এক ঘর এগিয়ে যায় এবং শেষে আবার প্রথমে ফিরে আসে।

রিং কাউন্টার হলো এমন একটি শিফট রেজিস্টার যেখানে শেষ ফ্লিপ-ফ্লপের আউটপুট প্রথম ফ্লিপ-ফ্লপের ইনপুটে ফিরে সংযুক্ত থাকে।

রিং কাউন্টারের গঠন

nটি ডি ফ্লিপ-ফ্লপ পর পর সাজিয়ে রিং কাউন্টার তৈরি হয়। প্রতিটি ফ্লিপ-ফ্লপের আউটপুট Q পরের ফ্লিপ-ফ্লপের D ইনপুটে যায়। শেষটির আউটপুট ফিরে প্রথমটির ইনপুটে আসে।

রিং কাউন্টারের সংযোগ বিবরণ
ফ্লিপ-ফ্লপ D ইনপুট কোথা থেকে আসে Q আউটপুট কোথায় যায়
FF0 FFn−1 এর Q থেকে (ফিডব্যাক) FF1 এর D তে
FF1 FF0 এর Q থেকে FF2 এর D তে
FF2 FF1 এর Q থেকে FF3 এর D তে
FF3 FF2 এর Q থেকে FF0 এর D তে (ফিডব্যাক)

প্রাথমিক অবস্থা লোড করা

রিং কাউন্টার চালু করতে হলে প্রথমে একটি নির্দিষ্ট প্রাথমিক অবস্থা লোড করতে হয়। সবচেয়ে স্বাভাবিক প্রাথমিক অবস্থা হলো Q3Q2Q1Q0=০০০১ অর্থাৎ কেবল প্রথম ফ্লিপ-ফ্লপে ১, বাকি সব ০।

এই কাজটি করা হয় প্রিসেট এবং ক্লিয়ার পিন ব্যবহার করে:

  • FF0 এর প্রিসেট সক্রিয় করে Q0=১ করা হয়
  • FF1, FF2, FF3 এর ক্লিয়ার সক্রিয় করে ০ করা হয়

যদি রিং কাউন্টার ভুল অবস্থায় চলে যায় যেমন সব ০ হয়ে যায়, তাহলে এটি সেখানেই আটকে থাকবে কারণ ০ই ঘুরতে থাকবে। তাই প্রাথমিক অবস্থা সঠিকভাবে লোড করা জরুরি।

৪-বিট রিং কাউন্টারের সম্পূর্ণ টাইমিং বিশ্লেষণ

প্রাথমিক অবস্থা: Q3Q2Q1Q0=০০০১

৪-বিট রিং কাউন্টারের অবস্থা ক্রম
ক্লক Q3 Q2 Q1 Q0 বিবরণ
প্রাথমিক ০ ০ ০ ১ ১ শুরুতে Q0 তে
১ ০ ০ ১ ০ ১ এগিয়ে Q1 তে
২ ০ ১ ০ ০ ১ এগিয়ে Q2 তে
৩ ১ ০ ০ ০ ১ এগিয়ে Q3 তে
৪ ০ ০ ০ ১ ১ ফিরে Q0 তে (চক্র পূর্ণ)
৫ ০ ০ ১ ০ আবার একই চক্র শুরু

লক্ষ করো, ৪-বিট রিং কাউন্টারে মোট ৪টি ভিন্ন অবস্থা আছে এবং প্রতি ৪টি ক্লকে চক্র সম্পন্ন হয়। যেকোনো মুহূর্তে কেবল একটি মাত্র ফ্লিপ-ফ্লপে ১ থাকে।

n-বিট রিং কাউন্টারের বৈশিষ্ট্য

রিং কাউন্টারের সাধারণ বৈশিষ্ট্য
বৈশিষ্ট্য মান
ফ্লিপ-ফ্লপ সংখ্যা n
মোট অবস্থা সংখ্যা n
চক্র দৈর্ঘ্য n ক্লক
প্রতি মুহূর্তে সক্রিয় ফ্লিপ-ফ্লপ কেবল ১টি
ডিকোডার প্রয়োজন না
প্রাথমিক অবস্থা লোড প্রয়োজন

জনসন কাউন্টার: বাঁকানো রিং

এবার কল্পনা করো সেই গোল টেবিলের খেলাটাই, কিন্তু এবার নিয়মটা একটু অদ্ভুত। যে ব্যক্তির হাতে বল আছে সে পরের জনকে বল দেওয়ার সময় বলটা উল্টে দেয়: লাল বল দিলে নীল বল পায়, নীল বল দিলে লাল বল পায়।

এটাই হলো জনসন কাউন্টারের মূল ধারণা। রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের Q সরাসরি প্রথমটির ইনপুটে যায়। কিন্তু জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের Q¯ (পরিপূরক আউটপুট) প্রথমটির ইনপুটে যায়।

এই একটি পরিবর্তনের কারণে অবস্থার সংখ্যা দ্বিগুণ হয়ে যায়। n-বিট জনসন কাউন্টারে 2nটি অবস্থা থাকে।

জনসন কাউন্টারের গঠন

জনসন কাউন্টারের সংযোগ বিবরণ
ফ্লিপ-ফ্লপ D ইনপুট কোথা থেকে আসে Q আউটপুট কোথায় যায়
FF0 FFn−1 এর Q¯ থেকে (উল্টানো ফিডব্যাক) FF1 এর D তে
FF1 FF0 এর Q থেকে FF2 এর D তে
FF2 FF1 এর Q থেকে FF3 এর D তে
FF3 FF2 এর Q থেকে FF0 এর D তে Q¯ হিসেবে

রিং ও জনসনের পার্থক্য কেবল একটি জায়গায়: শেষ ফ্লিপ-ফ্লপ থেকে প্রথমটিতে কী যাচ্ছে। রিংয়ে যাচ্ছে Q, জনসনে যাচ্ছে Q¯।

৪-বিট জনসন কাউন্টারের সম্পূর্ণ উদাহরণ

প্রাথমিক অবস্থা: Q3Q2Q1Q0=০০০০

জনসন কাউন্টারে প্রাথমিক অবস্থা হিসেবে সব ০ ব্যবহার করা যায়, কারণ FF3 এর Q¯3=১, তাই প্রথম ক্লকেই Q0=১ হয়ে যায়।

৪-বিট জনসন কাউন্টারের অবস্থা ক্রম
ক্লক Q3 Q2 Q1 Q0 Q¯3 (পরের D0) বিবরণ
প্রাথমিক ০ ০ ০ ০ ১ সব শূন্য, পরে ১ ঢুকবে
১ ০ ০ ০ ১ ১ ১ বাম থেকে ঢুকছে
২ ০ ০ ১ ১ ১ ১ এগিয়ে চলছে
৩ ০ ১ ১ ১ ১ আরও এগিয়ে
৪ ১ ১ ১ ১ ০ সব ১, এবার ০ ঢুকবে
৫ ১ ১ ১ ০ ০ ০ বাম থেকে ঢুকছে
৬ ১ ১ ০ ০ ০ ০ এগিয়ে চলছে
৭ ১ ০ ০ ০ ০ আরও এগিয়ে
৮ ০ ০ ০ ০ ১ প্রাথমিক অবস্থায় ফিরে এলো

মোট ৮টি ভিন্ন অবস্থা, প্রতি ৮ ক্লকে চক্র সম্পন্ন। ৪টি ফ্লিপ-ফ্লপে 2×৪=৮টি অবস্থা।

প্যাটার্নটা লক্ষ করো: প্রথমে ডান থেকে বামে ১ ভরতে থাকে, তারপর ডান থেকে বামে ০ ভরতে থাকে। এই ঢেউ-খেলানো প্যাটার্নই জনসন কাউন্টারের বিশেষত্ব।

রিং ও জনসন কাউন্টারের তুলনা

রিং বনাম জনসন কাউন্টার
বৈশিষ্ট্য রিং কাউন্টার জনসন কাউন্টার
ফিডব্যাক Qn−1 সরাসরি Q¯n−1 উল্টানো
n ফ্লিপ-ফ্লপে অবস্থা nটি 2nটি
প্রাথমিক অবস্থা লোড প্রয়োজন (১ দিয়ে শুরু) সহজ (সব ০ থেকে স্বয়ংক্রিয়)
ডিকোডার প্রয়োজন না না (তবে আউটপুট রাশি লাগতে পারে)
প্যাটার্ন একটি ১ ঘুরতে থাকে ১ ভরে তারপর ০ ভরে
অবৈধ অবস্থা আছে (সব ০) তুলনামূলক কম
ফ্লিপ-ফ্লপের দক্ষতা কম বেশি (nটিতে 2n অবস্থা)
প্রয়োগ ডিকোডার বিকল্প, সিকোয়েন্সার ফেজ জেনারেটর, ডিসপ্লে নিয়ন্ত্রণ

রিং বনাম বাইনারি কাউন্টার

বাইনারি কাউন্টারও গণনা করে, কিন্তু পদ্ধতি সম্পূর্ণ আলাদা। কোনটা কখন ব্যবহার করবে সেটা বোঝার জন্য তুলনাটা জানা দরকার।

রিং কাউন্টার বনাম বাইনারি কাউন্টার
বৈশিষ্ট্য রিং কাউন্টার বাইনারি কাউন্টার
n ফ্লিপ-ফ্লপে অবস্থা nটি 2nটি
৪ ফ্লিপ-ফ্লপে অবস্থা ৪টি ১৬টি
নির্দিষ্ট অবস্থা চিনতে ডিকোডার লাগে না লাগে
সার্কিট জটিলতা কম বেশি
আউটপুট পড়া সহজ (এক ফ্লিপ-ফ্লপ = এক অবস্থা) জটিল (ডিকোডার লাগে)
ফ্লিপ-ফ্লপের দক্ষতা কম বেশি
গতি বেশি (গেট দেরি কম) কম (রিপল ক্যারির কারণে)
উপযুক্ত প্রয়োগ স্টেট মেশিন, সিকোয়েন্সার বড় পরিসরের গণনা

সহজ কথায়: কম অবস্থা কিন্তু সহজ ডিজাইন চাইলে রিং, বেশি অবস্থা চাইলে বাইনারি।

বাস্তব প্রয়োগ

ডিকোডার ছাড়া স্টেট মেশিন

একটি ট্রাফিক লাইট নিয়ন্ত্রক কল্পনা করো যার তিনটি অবস্থা: লাল, হলুদ, সবুজ। বাইনারি কাউন্টার ব্যবহার করলে তিনটি অবস্থা চেনাতে একটি ডিকোডার লাগবে। কিন্তু ৩-বিট রিং কাউন্টার ব্যবহার করলে তিনটি ফ্লিপ-ফ্লপের Q আউটপুট সরাসরি লাল, হলুদ ও সবুজ আলোর সাথে সংযুক্ত করা যায়।

রিং কাউন্টার দিয়ে ট্রাফিক লাইট
Q2 (লাল) Q1 (হলুদ) Q0 (সবুজ) সক্রিয় আলো
০ ০ ১ সবুজ জ্বলছে
০ ১ ০ হলুদ জ্বলছে
১ ০ ০ লাল জ্বলছে

ফেজ জেনারেটর

জনসন কাউন্টার ফেজ জেনারেটর হিসেবে ব্যাপকভাবে ব্যবহৃত হয়। n-বিট জনসন কাউন্টার 2nটি সমান ফেজে বিভক্ত সংকেত তৈরি করতে পারে।

তিন-ফেজ মোটর নিয়ন্ত্রণে ৩-বিট জনসন কাউন্টার ব্যবহার করা হয়। এটি ৬টি অবস্থায় ঘুরে মোটরের তিনটি তারে সঠিক সময়ে সংকেত পাঠায়।

ডিসপ্লে স্ক্যানিং

বড় এলইডি ডিসপ্লেতে একসাথে সব সারি জ্বালানো সম্ভব নয়, তাই রিং কাউন্টার দিয়ে একের পর এক সারি সক্রিয় করা হয়। এত দ্রুত ঘটে যে চোখে সব সারি একসাথে জ্বলছে মনে হয়।

স্টেপার মোটর নিয়ন্ত্রণ

স্টেপার মোটরে চারটি কয়েল আছে। প্রতিটি ক্লকে একটি করে কয়েল চালু হলে মোটর ঘোরে। ৪-বিট রিং কাউন্টারের চারটি আউটপুট সরাসরি চারটি কয়েলের সাথে সংযুক্ত করলেই কাজ হয়।

রিং ও জনসন কাউন্টারের ব্যবহারিক প্রয়োগ
প্রয়োগক্ষেত্র কোন কাউন্টার বিস্তারিত
ট্রাফিক লাইট সিকোয়েন্সার রিং প্রতিটি অবস্থা সরাসরি একটি আলোকে নিয়ন্ত্রণ করে, ডিকোডার লাগে না
এলইডি ম্যাট্রিক্স স্ক্যানিং রিং সারি ক্রমান্বয়ে সক্রিয় করে দ্রুতগতিতে
মোটর ড্রাইভ ফেজ নিয়ন্ত্রণ জনসন ৩-ফেজ বা ৬-ফেজ সংকেত তৈরি করে
স্টেপার মোটর নিয়ন্ত্রণ রিং মোটরের কয়েলগুলো ক্রমান্বয়ে চালু করে
সিউডো-র‍্যান্ডম প্যাটার্ন জনসন পরীক্ষামূলক সংকেত তৈরিতে
মেমোরি রিফ্রেশ নিয়ন্ত্রক রিং ডায়নামিক র‍্যামের সারি ক্রমান্বয়ে রিফ্রেশ করে
ডিজিটাল ঘড়ির নির্দেশক রিং এলইডি বৃত্তে সেকেন্ড দেখানোর জন্য

উদাহরণ

উদাহরণ ১: ৩-বিট রিং কাউন্টারের সম্পূর্ণ বিশ্লেষণ

একটি ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা Q2Q1Q0=০০১। প্রতিটি ক্লকের পর অবস্থা নির্ণয় করো এবং চক্রের দৈর্ঘ্য বলো।

ডি ফ্লিপ-ফ্লপের নিয়ম: Qn+1=D=আগের (রিং সংযোগে)

৩-বিট রিং কাউন্টারের ক্রম
ক্লক Q2 Q1 Q0 ব্যাখ্যা
০ ০ ০ ১ প্রাথমিক অবস্থা
১ ০ ১ ০ ১ একধাপ এগিয়েছে
২ ১ ০ ০ ১ আরও এগিয়েছে
৩ ০ ০ ১ প্রাথমিক অবস্থায় ফিরেছে

চক্রের দৈর্ঘ্য = ৩ ক্লক। মোট অবস্থা = ৩টি ✓

উদাহরণ ২: ৩-বিট জনসন কাউন্টারের বিশ্লেষণ

একটি ৩-বিট জনসন কাউন্টারের প্রাথমিক অবস্থা Q2Q1Q0=০০০। সম্পূর্ণ চক্র বের করো।

জনসন নিয়ম: D0=Q¯2, D1=Q0, D2=Q1

ধাপে ধাপে হিসাব:

ক্লক ০ থেকে ১: Q¯2=০‾=১, D1=Q0=০, D2=Q1=০। নতুন অবস্থা: ০০১

ক্লক ১ থেকে ২: Q¯2=১, D1=Q0=১, D2=Q1=০। নতুন অবস্থা: ০১১

ক্লক ২ থেকে ৩: Q¯2=১, D1=১, D2=১। নতুন অবস্থা: ১১১

ক্লক ৩ থেকে ৪: Q¯2=১‾=০, D1=১, D2=১। নতুন অবস্থা: ১১০

ক্লক ৪ থেকে ৫: Q¯2=০, D1=০, D2=১। নতুন অবস্থা: ১০০

ক্লক ৫ থেকে ৬: Q¯2=০, D1=০, D2=০। নতুন অবস্থা: ০০০ (প্রাথমিক অবস্থায় ফিরেছে)

৩-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র
ক্লক Q2 Q1 Q0
০ ০ ০ ০
১ ০ ০ ১
২ ০ ১ ১
৩ ১ ১ ১
৪ ১ ১ ০
৫ ১ ০ ০
৬ ০ ০ ০

মোট অবস্থা = ৬টি = ২×৩ ✓

উদাহরণ ৩: রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার

একটি সার্কিটে চারটি কাজ ক্রমান্বয়ে করতে হবে: মোটর চালু, ভাল্ব খোলা, সেন্সর পড়া, ভাল্ব বন্ধ। বাইনারি কাউন্টার ব্যবহার করলে চারটি আউটপুটের জন্য ২-তে-৪ ডিকোডার লাগত। রিং কাউন্টারে ৪টি ফ্লিপ-ফ্লপের Q0,Q1,Q2,Q3 সরাসরি চারটি কাজের সাথে সংযুক্ত করা যায়।

রিং কাউন্টার দিয়ে শিল্প সিকোয়েন্সার
ক্লক Q0 (মোটর) Q1 (ভাল্ব খোলা) Q2 (সেন্সর) Q3 (ভাল্ব বন্ধ) সক্রিয় কাজ
১ ১ ০ ০ ০ মোটর চালু
২ ০ ১ ০ ০ ভাল্ব খোলা
৩ ০ ০ ১ ০ সেন্সর পড়া
৪ ০ ০ ০ ১ ভাল্ব বন্ধ

কোনো ডিকোডার ছাড়াই চারটি ধাপ সম্পন্ন হচ্ছে।

উদাহরণ ৪: জনসন কাউন্টার থেকে ফেজ সংকেত

একটি ২-বিট জনসন কাউন্টারের সম্পূর্ণ চক্র বের করো এবং দেখাও এটি কীভাবে ৪টি ফেজ সংকেত তৈরি করে।

প্রাথমিক অবস্থা: Q1Q0=০০, ফিডব্যাক: D0=Q¯1, D1=Q0

২-বিট জনসন কাউন্টারের চক্র
ক্লক Q1 Q0 Q¯1 (পরের D0) ফেজ
০ ০ ০ ১ ফেজ ক
১ ০ ১ ১ ফেজ খ
২ ১ ১ ০ ফেজ গ
৩ ১ ০ ০ ফেজ ঘ
৪ ০ ০ ১ ফেজ ক (পুনরায়)

মোট ২×২=৪টি ভিন্ন ফেজ সংকেত ✓

উদাহরণ ৫: অবৈধ অবস্থা থেকে পুনরুদ্ধার বিশ্লেষণ

একটি ৪-বিট রিং কাউন্টার ভুলক্রমে Q3Q2Q1Q0=০০০০ অবস্থায় চলে গেছে (সব ০)। পরের কয়েকটি ক্লকে কী হবে?

ধাপে ধাপে: প্রতিটি ক্লকে FF3 এর Q3=০ ফিরে D0 তে যায়। তাই Q0 সবসময় ০ হয়। সব ফ্লিপ-ফ্লপই ০ পাচ্ছে, ফলে সব ০ই থাকবে।

অবৈধ অবস্থা থেকে পুনরুদ্ধার হয় না
ক্লক Q3Q2Q1Q0 মন্তব্য
০ ০০০০ অবৈধ অবস্থা
১ ০০০০ আটকে আছে
২ ০০০০ আটকে আছে

এই কারণে রিং কাউন্টারে স্ব-সংশোধন সার্কিট যোগ করা হয়। যখন সব আউটপুট ০ হয়, একটি নর গেট দিয়ে সেটি শনাক্ত করে FF0 এর ইনপুটে জোর করে ১ পাঠানো হয়:

D0=Q3+Q0+Q1+Q2+Q3‾

যখন সব শূন্য: Q0+Q1+Q2+Q3‾=০‾=১, তাই D0=১ এবং কাউন্টার স্বয়ংক্রিয়ভাবে সচল হয়ে যায়।

অনুশীলনী

  1. একটি ৫-বিট রিং কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
  2. একটি ৫-বিট জনসন কাউন্টারে মোট কতটি ভিন্ন অবস্থা থাকবে?
  3. ৩-বিট রিং কাউন্টারে প্রাথমিক অবস্থা Q2Q1Q0=১০০ হলে পরের দুটি অবস্থা কী কী?
  4. জনসন কাউন্টারে ফিডব্যাক সংযোগ রিং কাউন্টার থেকে কীভাবে আলাদা?
  5. ৪-বিট জনসন কাউন্টারে ক্লক ৩-এর পর অবস্থা Q3Q2Q1Q0=০১১১ হলে ক্লক ৪-এর পর অবস্থা কী হবে?
  6. কোন পরিস্থিতিতে বাইনারি কাউন্টারের চেয়ে রিং কাউন্টার বেশি সুবিধাজনক?
  7. একটি রিং কাউন্টার সব শূন্য অবস্থায় আটকে গেলে স্ব-সংশোধনের জন্য কোন গেট ব্যবহার করা যায়?
  8. ৪-বিট রিং কাউন্টারে কতটি ক্লকে চক্র সম্পন্ন হয় এবং ৪-বিট জনসন কাউন্টারে কতটি ক্লকে?
  9. একটি স্টেপার মোটরে ৪টি কয়েল ক্রমান্বয়ে চালু করতে কোন কাউন্টার ব্যবহার করবে এবং কেন?
  10. ৩-বিট রিং কাউন্টারের প্রাথমিক অবস্থা Q2Q1Q0=০১০ হলে সম্পূর্ণ চক্রের অবস্থাগুলো টেবিল আকারে লেখো।

উত্তর:

  1. ৫-বিট রিং কাউন্টারে ৫টি ভিন্ন অবস্থা।
  2. ৫-বিট জনসন কাউন্টারে ২×৫=১০টি ভিন্ন অবস্থা।
  3. ক্লক ১-এর পর: ০১০। ক্লক ২-এর পর: ০০১।
  4. রিং কাউন্টারে শেষ ফ্লিপ-ফ্লপের Q সরাসরি প্রথমটিতে যায়। জনসন কাউন্টারে শেষ ফ্লিপ-ফ্লপের Q¯ (পরিপূরক) যায়।
  5. D0=Q¯3=০‾=১, D1=Q0=১, D2=Q1=১, D3=Q2=১। নতুন অবস্থা: ১১১১।
  6. যখন অবস্থা সংখ্যা কম কিন্তু প্রতিটি অবস্থা সরাসরি একটি আউটপুট নিয়ন্ত্রণ করে এবং ডিকোডার ছাড়া কাজ করতে হয়।
  7. নর গেট দিয়ে সব আউটপুট শূন্য শনাক্ত করে D0 তে ১ পাঠানো যায়।
  8. ৪-বিট রিং কাউন্টারে ৪ ক্লকে এবং ৪-বিট জনসন কাউন্টারে ৮ ক্লকে চক্র সম্পন্ন হয়।
  9. রিং কাউন্টার। কারণ ৪টি ফ্লিপ-ফ্লপের প্রতিটি আউটপুট সরাসরি একটি কয়েলের সাথে সংযুক্ত করা যায়, কোনো ডিকোডার লাগে না।
  10. ক্লক ০: ০১০; ক্লক ১: ১০০; ক্লক ২: ০০১; ক্লক ৩: ০১০ (পুনরাবৃত্তি)।

রেজিস্টারের ব্যবহারিক প্রয়োগ

আগের ভাগগুলোতে আমরা শিফট রেজিস্টার, রিং কাউন্টার এবং জনসন কাউন্টার দেখেছিলাম। সেগুলো ছিল রেজিস্টারের ভেতরের গল্প। এই ভাগে আমরা দেখব রেজিস্টার বাস্তব পৃথিবীতে কীভাবে কাজ করে। কম্পিউটার, মোবাইল ফোন, ইন্টারনেট সংযোগ, এমনকি তোমার মাউসের ক্লিক পর্যন্ত পৌঁছানোর পেছনে রেজিস্টার কাজ করছে।

ধারাবাহিক-সমান্তরাল ও সমান্তরাল-ধারাবাহিক রূপান্তর

একটু কল্পনা করো। তুমি ঢাকা থেকে চট্টগ্রামে আটটি বাক্স পাঠাবে। দুটো উপায় আছে। প্রথম উপায়: আটটি বাক্স একসাথে আটটি ট্রাকে তুলে একই সময়ে পাঠাও। দ্বিতীয় উপায়: একটি মাত্র ট্রাকে একটি একটি করে বাক্স আলাদা সময়ে পাঠাও।

প্রথম পদ্ধতিটা দ্রুত কিন্তু খরচ বেশি (আটটি ট্রাক লাগে)। দ্বিতীয় পদ্ধতিটা ধীর কিন্তু খরচ কম (একটি ট্রাকই যথেষ্ট)।

ডিজিটাল ইলেকট্রনিক্সেও ঠিক এই দুটো পদ্ধতি আছে। আটটি বিট একসাথে পাঠানো হলো সমান্তরাল পদ্ধতি, আর একটি একটি করে পাঠানো হলো ধারাবাহিক পদ্ধতি। ট্রাকের জায়গায় এখানে তার।

সমান্তরাল থেকে ধারাবাহিক রূপান্তর

প্রসেসরের ভেতরে সব বিট একসাথে চলাচল করে (সমান্তরাল)। কিন্তু যখন এই তথ্য বাইরে পাঠাতে হয়, যেমন ইন্টারনেট কেবলে বা ইউএসবিতে, তখন একটি মাত্র তারে একটি একটি করে পাঠানো হয় (ধারাবাহিক)। এই রূপান্তরের কাজটি করে সমান্তরাল থেকে ধারাবাহিক শিফট রেজিস্টার।

কীভাবে কাজ করে:

  1. প্রথমে সব বিট একসাথে রেজিস্টারে লোড হয় (সমান্তরাল লোড)
  2. তারপর প্রতিটি ক্লকে একটি করে বিট বাইরে বেরিয়ে যায়
  3. ৮ ক্লকে একটি বাইট (৮ বিট) সম্পূর্ণ বেরিয়ে যায়
৪-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরের উদাহরণ
ক্লক Q3 Q2 Q1 Q0 ধারাবাহিক আউটপুট বিবরণ
লোড ১ ০ ১ ১ সব বিট একসাথে লোড
১ ০ ১ ০ ১ ১ Q0 বেরিয়ে গেল
২ ০ ০ ১ ০ ১ Q1 বেরিয়ে গেল
৩ ০ ০ ০ ১ ০ Q2 বেরিয়ে গেল
৪ ০ ০ ০ ০ ১ Q3 বেরিয়ে গেল

ধারাবাহিক আউটপুট ক্রম: ১১০১ (সর্বনিম্ন বিট আগে)

ধারাবাহিক থেকে সমান্তরাল রূপান্তর

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

৪-বিট ধারাবাহিক থেকে সমান্তরাল রূপান্তরের উদাহরণ
ক্লক ধারাবাহিক ইনপুট Q3 Q2 Q1 Q0 বিবরণ
শুরু ০ ০ ০ ০ রেজিস্টার ফাঁকা
১ ১ ০ ০ ০ ১ প্রথম বিট ঢুকল
২ ১ ০ ০ ১ ১ দ্বিতীয় বিট ঢুকল
৩ ০ ০ ১ ১ ০ তৃতীয় বিট ঢুকল
৪ ১ ১ ০ ১ ১ চতুর্থ বিট ঢুকল, সম্পূর্ণ

চার ক্লক পরে সমান্তরাল আউটপুট একসাথে পড়া যায়: Q3Q2Q1Q0=১০১১

যোগাযোগ ব্যবস্থায় প্রয়োগ

দৈনন্দিন জীবনে এই রূপান্তর কোথায় কোথায় দেখা যায় সেটা একটু বোঝা দরকার।

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

ইউএসবিতেও একই কাজ হয়, তবে আরও দ্রুত এবং জটিল নিয়মে। কম্পিউটারের ভেতরে তথ্য ৩২ বা ৬৪ বিট সমান্তরালে চলে, কিন্তু ইউএসবি কেবলে মাত্র দুটো তারে ধারাবাহিকভাবে যায়।

যোগাযোগ মানের তুলনা
মান পদ্ধতি সর্বোচ্চ গতি তারের সংখ্যা প্রয়োগ
ইউএআরটি ধারাবাহিক কয়েক মেগাবিট/সেকেন্ড ২ (পাঠানো ও গ্রহণ) মাইক্রোকন্ট্রোলার, জিপিএস
ইউএসবি ২.০ ধারাবাহিক ৪৮০ মেগাবিট/সেকেন্ড ৪ মাউস, কীবোর্ড, পেনড্রাইভ
ইউএসবি ৩.০ ধারাবাহিক ৫ গিগাবিট/সেকেন্ড ৯ বাহ্যিক হার্ড ড্রাইভ
এসপিআই ধারাবাহিক কয়েকশো মেগাবিট/সেকেন্ড ৪ মেমোরি কার্ড, সেন্সর
সমান্তরাল বাস সমান্তরাল কম (তারের মধ্যে হস্তক্ষেপ) ৩২ বা ৬৪ পুরোনো কম্পিউটারের ভেতরে

সম্পূর্ণ উদাহরণ: একটি বাইট পাঠানো ও গ্রহণ করা

ধরো, একটি কম্পিউটার থেকে আরেকটিতে 'A' অক্ষরটি পাঠাতে হবে। 'A' অক্ষরের বাইনারি কোড হলো ০১০০০০০১।

পাঠানোর পদ্ধতি:

ধাপ ১: ৮ বিট একসাথে রেজিস্টারে লোড হয়: Q7Q6Q5Q4Q3Q2Q1Q0=০১০০০০০১

ধাপ ২: প্রতিটি ক্লকে একটি বিট বেরিয়ে যায়, সর্বনিম্ন বিট আগে:

'A' অক্ষর পাঠানোর ধাপ
ক্লক পাঠানো বিট অবশিষ্ট রেজিস্টার
১ ১ (Q0) ০০১০০০০০
২ ০ (Q1) ০০০১০০০০
৩ ০ (Q2) ০০০০১০০০
৪ ০ (Q3) ০০০০০১০০
৫ ০ (Q4) ০০০০০০১০
৬ ০ (Q5) ০০০০০০০১
৭ ১ (Q6) ০০০০০০০০
৮ ০ (Q7) ০০০০০০০০

ধাপ ৩: গ্রহণকারী প্রান্তে আরেকটি শিফট রেজিস্টার এই বিটগুলো একটি একটি করে গ্রহণ করে। ৮ ক্লক পরে রেজিস্টারে জমা হয় ০১০০০০০১, যা আবার 'A' অক্ষর।

এভাবে মাত্র দুটি তারে একটি সম্পূর্ণ অক্ষর পাঠানো হয়।

সময় বিলম্ব সার্কিট

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

ডিজিটাল সার্কিটেও এই "ইচ্ছাকৃত দেরি" দরকার হয়। শিফট রেজিস্টার দিয়ে ঠিক এই কাজটি করা হয়।

কীভাবে বিলম্ব তৈরি হয়

ডি ফ্লিপ-ফ্লপে ইনপুট এক ক্লক পরে আউটপুটে আসে। তাই nটি ফ্লিপ-ফ্লপ শ্রেণিবদ্ধ করলে ইনপুট n ক্লক পরে আউটপুটে আসে।

বিলম্ব=n×ক্লক

যেখানে ক্লক হলো এক ক্লকের সময়কাল।

উদাহরণ: ক্লক কম্পাঙ্ক ১ মেগাহার্টজ হলে ক্লক=১ মাইক্রোসেকেন্ড। ৮টি ফ্লিপ-ফ্লপ দিলে বিলম্ব হবে ৮ মাইক্রোসেকেন্ড।

বিলম্বের উদাহরণ (ক্লক = ১ মেগাহার্টজ)
ফ্লিপ-ফ্লপ সংখ্যা বিলম্ব ব্যবহার
৪ ৪ মাইক্রোসেকেন্ড স্বল্প বিলম্ব সার্কিট
৮ ৮ মাইক্রোসেকেন্ড বাইট সংরক্ষণ ও বিলম্ব
১৬ ১৬ মাইক্রোসেকেন্ড পাইপলাইন সার্কিট
১০০০ ১ মিলিসেকেন্ড শব্দ প্রক্রিয়াকরণ বিলম্ব

টাইমিং বিশ্লেষণ

একটি ৪-বিট বিলম্ব রেজিস্টারে যদি ইনপুট প্যাটার্ন ১০১১ দেওয়া হয় (একটি বিট প্রতি ক্লকে), তাহলে আউটপুটে ঠিক ৪ ক্লক পরে একই প্যাটার্ন পাওয়া যাবে:

৪-বিট বিলম্ব রেজিস্টারের টাইমিং
ক্লক ইনপুট D Q0 Q1 Q2 আউটপুট Q3
০ ১ ০ ০ ০ ০
১ ১ ১ ০ ০ ০
২ ০ ১ ১ ০ ০
৩ ১ ০ ১ ১ ০
৪ ০ ১ ০ ১ ১
৫ ০ ১ ০ ১
৬ ০ ১ ০
৭ ০ ১

আউটপুটে ঠিক ৪ ক্লক পরে ইনপুটের প্যাটার্ন দেখা যাচ্ছে ✓

সংকেত প্রক্রিয়াকরণে প্রয়োগ

শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার অত্যন্ত গুরুত্বপূর্ণ। যখন দুটো মাইক্রোফোন থেকে শব্দ ধরা হয়, তখন একটি মাইক্রোফোনের শব্দ কিছুটা আগে আসে (সূত্রটি কাছে থাকায়)। বিলম্ব রেজিস্টার দিয়ে সেই পার্থক্য সমান করা হয়।

ডিজিটাল ইকো তৈরিতেও বিলম্ব রেজিস্টার ব্যবহার হয়। মূল শব্দ রেজিস্টারে ঢুকিয়ে নির্দিষ্ট বিলম্বের পর বের করলে সেটা ইকোর মতো শোনায়।

ক্রমানুসারী সংকেত তৈরি

কখনো কখনো একটি নির্দিষ্ট বিট প্যাটার্ন বারবার তৈরি করা দরকার হয়। যেমন রেডিও যোগাযোগে একটি পরিচিত প্যাটার্ন বারবার পাঠানো হয় যাতে গ্রহণকারী বুঝতে পারে সংকেত সঠিকভাবে আসছে।

রৈখিক প্রতিক্রিয়া শিফট রেজিস্টার

একটি শিফট রেজিস্টারের কয়েকটি নির্দিষ্ট আউটপুটকে এক্স-অর গেট দিয়ে যোগ করে প্রথম ফ্লিপ-ফ্লপের ইনপুটে দিলে একটি বিশেষ ধরনের সার্কিট তৈরি হয় যা দীর্ঘ কিন্তু নির্দিষ্ট প্যাটার্ন তৈরি করে।

এই সার্কিটে nটি ফ্লিপ-ফ্লপ থাকলে সর্বোচ্চ 2n−১টি ভিন্ন অবস্থা তৈরি হতে পারে (সব শূন্য ছাড়া)। এই দীর্ঘ প্যাটার্নকে দেখতে এলোমেলো মনে হয় কিন্তু আসলে নির্দিষ্ট নিয়মে তৈরি।

৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারের উদাহরণ
অবস্থা Q2 Q1 Q0 পরের ইনপুট (Q2⊕Q1)
১ ০ ০ ১ ০⊕০=০
২ ০ ১ ০ ০⊕১=১
৩ ১ ০ ০ ১⊕০=১
৪ ০ ০ ১ চক্র পূর্ণ

মোট 23−১=৭টি ভিন্ন অবস্থা তৈরি হতে পারে (সঠিক ট্যাপ বিন্দু বেছে নিলে)।

পিআরবিএস সংকেতের প্রয়োগ

এই দীর্ঘ সিউডো-র‍্যান্ডম প্যাটার্ন কোথায় কাজে লাগে?

যোগাযোগ ব্যবস্থায় পরীক্ষার জন্য: একটি নির্দিষ্ট প্যাটার্ন পাঠিয়ে গ্রহণকারী প্রান্তে মিলিয়ে দেখা হয় কোনো বিট ভুল হয়েছে কিনা।

এনক্রিপশনে: এলোমেলো দেখতে বিটের সাথে মূল তথ্যের এক্স-অর করলে তথ্য লুকিয়ে ফেলা যায়।

ওয়াইফাই ও মোবাইল নেটওয়ার্কে: বিভিন্ন ব্যবহারকারীকে আলাদা করতে বিভিন্ন প্যাটার্ন ব্যবহার করা হয়।

কম্পিউটারের রেজিস্টার

এখন পর্যন্ত আমরা ট্রানজিস্টর ও গেটের স্তরে রেজিস্টার দেখেছি। এবার একটু উপরে উঠে দেখব কম্পিউটারের মাথার ভেতরে কীভাবে রেজিস্টার কাজ করে।

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

সঞ্চয়ক রেজিস্টার

সঞ্চয়ক হলো প্রসেসরের সবচেয়ে গুরুত্বপূর্ণ রেজিস্টার। গণনার মাঝামাঝি ফলাফল এখানে রাখা হয়।

মনে করো, তুমি মাথায় হিসাব করছ: ৫+৩+২। প্রথমে ৫+৩=৮ মনে রাখো, তারপর সেই ৮-এর সাথে ২ যোগ করো। এই মনে রাখার জায়গাটাই সঞ্চয়ক।

একটি যোগ অপারেশন কীভাবে হয়:

ধাপ ১: সঞ্চয়কে প্রথম সংখ্যা লোড করো: A←৫

ধাপ ২: সঞ্চয়কের সাথে দ্বিতীয় সংখ্যা যোগ করো: A←A+৩=৮

ধাপ ৩: ফলাফল মেমোরিতে লেখো: মেমোরি[ঠিকানা]←A

প্রোগ্রাম কাউন্টার

একটি বইতে তুমি যে পৃষ্ঠা পড়ছ তার নম্বর মনে রাখো। পরের বার পড়তে বসলে ওই পৃষ্ঠা থেকে শুরু করো। প্রোগ্রাম কাউন্টার ঠিক এই কাজটি করে।

প্রোগ্রাম কাউন্টারে থাকে পরবর্তী যে নির্দেশনাটি চালাতে হবে তার মেমোরি ঠিকানা।

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

নির্দেশনা রেজিস্টার

প্রোগ্রাম কাউন্টারে যে ঠিকানা থাকে, সেই ঠিকানা থেকে নির্দেশনাটি মেমোরি থেকে নিয়ে আসা হয় এবং নির্দেশনা রেজিস্টারে রাখা হয়। তারপর প্রসেসর ওই নির্দেশনাটি পড়ে বুঝে কী করতে হবে।

মনে করো একটি ক্লাসে শিক্ষক প্রতিবার বোর্ড থেকে একটি অংক পড়েন এবং সেটা মাথায় রেখে সমাধান করেন। বোর্ড হলো মেমোরি, শিক্ষকের মাথায় রাখা অংকটি হলো নির্দেশনা রেজিস্টার।

সাধারণ উদ্দেশ্য রেজিস্টার

আধুনিক প্রসেসরে অনেকগুলো রেজিস্টার থাকে যেগুলো প্রোগ্রামার ইচ্ছামতো ব্যবহার করতে পারে।

প্রসেসরের রেজিস্টার ধরন
রেজিস্টারের নাম সংক্ষেপ প্রধান কাজ আকার (সাধারণত)
সঞ্চয়ক A গণনার মধ্যবর্তী ফলাফল রাখে ৮, ১৬, ৩২ বা ৬৪ বিট
প্রোগ্রাম কাউন্টার PC পরবর্তী নির্দেশনার ঠিকানা ৩২ বা ৬৪ বিট
নির্দেশনা রেজিস্টার IR বর্তমান নির্দেশনা ১৬ বা ৩২ বিট
স্ট্যাক পয়েন্টার SP স্ট্যাকের শীর্ষের ঠিকানা ৩২ বা ৬৪ বিট
অবস্থা রেজিস্টার SR শূন্য, ঋণাত্মক, ক্যারি পতাকা ৮ বা ১৬ বিট
সাধারণ উদ্দেশ্য R0-R15 যেকোনো ডেটা সংরক্ষণ ৩২ বা ৬৪ বিট

রেজিস্টার ফাইল

আধুনিক প্রসেসরে ১৬ থেকে ৩২টি সাধারণ উদ্দেশ্য রেজিস্টার একসাথে থাকে। এই সংগ্রহটিকে রেজিস্টার ফাইল বলা হয়।

রেজিস্টার ফাইল কীভাবে কাজ করে: দুটো রেজিস্টারের নম্বর দিলে সেই দুটো রেজিস্টারের মান একসাথে পড়া যায় (দুটো পাঠ পোর্ট), এবং একটি রেজিস্টারে ফলাফল লেখা যায় (একটি লেখ পোর্ট)।

রেজিস্টার ফাইলের পাঠ পোর্ট ও লেখ পোর্ট
পোর্ট ধরন কাজ
পাঠ পোর্ট ১ পাঠ প্রথম অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
পাঠ পোর্ট ২ পাঠ দ্বিতীয় অপারেন্ড রেজিস্টার নম্বর দিলে মান দেয়
লেখ পোর্ট লেখ ফলাফল রেজিস্টার নম্বর ও মান দিলে সেখানে লেখে

উদাহরণ: R3←R1+R2 নির্দেশনায়:

ধাপ ১: পাঠ পোর্ট ১ দিয়ে R1 এর মান পড়া হয় ধাপ ২: পাঠ পোর্ট ২ দিয়ে R2 এর মান পড়া হয় ধাপ ৩: যোগ ফল হিসাব করা হয় ধাপ ৪: লেখ পোর্ট দিয়ে R3-এ ফল লেখা হয়

এই পুরো কাজটা এক ক্লকেই হতে পারে।

মেমোরি বাস ও রেজিস্টারের মিথস্ক্রিয়া

এখন একটি বড় প্রশ্ন: রেজিস্টার ও মেমোরির মধ্যে তথ্য কীভাবে যাওয়া-আসা করে?

বাস হলো তারের সেই মহাসড়ক যার উপর দিয়ে প্রসেসর, মেমোরি ও অন্যান্য যন্ত্রাংশের মধ্যে তথ্য চলাচল করে। তিন ধরনের বাস থাকে:

তিন ধরনের বাস
বাসের ধরন কাজ তারের সংখ্যা (৩২-বিট প্রসেসরে)
ঠিকানা বাস কোন মেমোরি ঘরে যেতে হবে তা জানায় ৩২ (বা ৬৪)
ডেটা বাস আসল তথ্য বহন করে ৩২ (বা ৬৪)
নিয়ন্ত্রণ বাস পড়া না লেখা, কখন সক্রিয় ইত্যাদি নির্ধারণ করে কয়েকটি

মেমোরি পড়া

প্রসেসর যখন মেমোরি থেকে কিছু পড়তে চায়:

ধাপ ১: প্রোগ্রাম কাউন্টার থেকে ঠিকানা ঠিকানা বাসে দেওয়া হয়

ধাপ ২: নিয়ন্ত্রণ বাসে "পড়া" সংকেত দেওয়া হয়

ধাপ ৩: মেমোরি সেই ঠিকানার তথ্য ডেটা বাসে রাখে

ধাপ ৪: প্রসেসর ডেটা বাস থেকে নির্দেশনা রেজিস্টারে তথ্য নেয়

মেমোরি লেখা

প্রসেসর যখন মেমোরিতে কিছু লিখতে চায়:

ধাপ ১: ঠিকানা বাসে গন্তব্য ঠিকানা দেওয়া হয়

ধাপ ২: ডেটা বাসে রেজিস্টার থেকে লেখার তথ্য দেওয়া হয়

ধাপ ৩: নিয়ন্ত্রণ বাসে "লেখা" সংকেত দেওয়া হয়

ধাপ ৪: মেমোরি সেই ঠিকানায় তথ্য সংরক্ষণ করে

ক্যাশ মেমোরি

মেমোরি ধীর, রেজিস্টার দ্রুত। এই পার্থক্য কমাতে মাঝখানে ক্যাশ মেমোরি ব্যবহার করা হয়, যা প্রায়শই ব্যবহৃত তথ্য প্রসেসরের কাছাকাছি রেখে দেয়। ক্যাশও আসলে রেজিস্টারের মতো ফ্লিপ-ফ্লপ দিয়ে তৈরি, তবে সংখ্যায় অনেক বেশি।

মেমোরি স্তরের তুলনা
স্তর আকার গতি মূল উপাদান
রেজিস্টার কয়েক শত বাইট ১ ক্লক ফ্লিপ-ফ্লপ
L1 ক্যাশ কয়েক কিলোবাইট ৩-৫ ক্লক ফ্লিপ-ফ্লপ (SRAM)
L2 ক্যাশ কয়েক মেগাবাইট ১০-৩০ ক্লক ফ্লিপ-ফ্লপ (SRAM)
প্রধান মেমোরি গিগাবাইট ১০০-২০০ ক্লক ধারক (DRAM)
সংগ্রহণ স্তর টেরাবাইট লক্ষ ক্লক চৌম্বক বা ফ্ল্যাশ

বাস্তব প্রয়োগের বিস্তারিত উদাহরণ

উদাহরণ ১: ইউএআরটি দিয়ে তথ্য পাঠানো

একটি মাইক্রোকন্ট্রোলার থেকে 'B' অক্ষর (০১০০০০১০) একটি কম্পিউটারে পাঠাতে হবে। ইউএআরটি কীভাবে কাজ করে দেখাও।

পাঠানোর আগে: একটি শুরু বিট (০) যোগ করা হয়, তারপর ৮ বিট ডেটা, তারপর একটি শেষ বিট (১)।

'B' অক্ষর পাঠানোর পূর্ণ ক্রম
ক্লক পাঠানো বিট বিটের ধরন বিবরণ
১ ০ শুরু বিট গ্রহণকারীকে সতর্ক করে
২ ০ ডেটা বিট ০ (Q0) সর্বনিম্ন বিট
৩ ১ ডেটা বিট ১ (Q1)
৪ ০ ডেটা বিট ২ (Q2)
৫ ০ ডেটা বিট ৩ (Q3)
৬ ০ ডেটা বিট ৪ (Q4)
৭ ০ ডেটা বিট ৫ (Q5)
৮ ১ ডেটা বিট ৬ (Q6)
৯ ০ ডেটা বিট ৭ (Q7) সর্বোচ্চ বিট
১০ ১ শেষ বিট প্রেরণ সম্পন্ন

গ্রহণকারী প্রান্তে: শুরু বিট দেখে রেজিস্টার প্রস্তুত হয়, তারপর ৮টি বিট একে একে রেজিস্টারে ঢোকে। শেষ বিট দেখে বোঝে প্রেরণ শেষ। তারপর রেজিস্টারের সমান্তরাল আউটপুট থেকে 'B' অক্ষর পাওয়া যায়।

উদাহরণ ২: ৪-ধাপের পাইপলাইন

পাইপলাইন হলো বিলম্ব রেজিস্টারের একটি চমৎকার প্রয়োগ। একটি কাপড় কারখানা কল্পনা করো: একজন কাটে, আরেকজন সেলাই করে, আরেকজন বোতাম লাগায়, আরেকজন প্যাক করে। প্রত্যেকে আলাদা কাজে ব্যস্ত, কেউ বসে নেই।

প্রসেসরে একটি নির্দেশনা চালাতে চারটি ধাপ লাগে: আনো, পড়ো, চালাও, লেখো। পাইপলাইনে প্রতিটি ধাপে একটি আলাদা নির্দেশনা থাকে।

৪-ধাপ পাইপলাইনের সময় বিশ্লেষণ
ক্লক আনো পড়ো চালাও লেখো
১ নির্দেশনা ১
২ নির্দেশনা ২ নির্দেশনা ১
৩ নির্দেশনা ৩ নির্দেশনা ২ নির্দেশনা ১
৪ নির্দেশনা ৪ নির্দেশনা ৩ নির্দেশনা ২ নির্দেশনা ১
৫ নির্দেশনা ৫ নির্দেশনা ৪ নির্দেশনা ৩ নির্দেশনা ২
৬ নির্দেশনা ৬ নির্দেশনা ৫ নির্দেশনা ৪ নির্দেশনা ৩

৪ ক্লকের বিলম্বের পর প্রতি ক্লকে একটি নির্দেশনা সম্পন্ন হচ্ছে। পাইপলাইন না থাকলে প্রতিটি নির্দেশনায় ৪ ক্লক লাগত।

প্রতিটি ধাপের মধ্যে পাইপলাইন রেজিস্টার থাকে। এই রেজিস্টারগুলোই এক ধাপের ফলাফল পরের ধাপে পৌঁছে দেয়।

উদাহরণ ৩: একটি সরল প্রোগ্রামের রেজিস্টার ব্যবহার

নিচের সরল হিসাব: ৫+৩−২ কম্পিউটার কীভাবে রেজিস্টার ব্যবহার করে করে?

রেজিস্টার ব্যবহারের ধাপ
ধাপ নির্দেশনা রেজিস্টার অবস্থা বিবরণ
১ মেমোরি থেকে R1 তে ৫ লোড করো R1=৫ মেমোরি পড়া
২ মেমোরি থেকে R2 তে ৩ লোড করো R2=৩ মেমোরি পড়া
৩ R1 এবং R2 যোগ করে R3 তে রাখো R3=৮ যোগ অপারেশন
৪ মেমোরি থেকে R4 তে ২ লোড করো R4=২ মেমোরি পড়া
৫ R3 থেকে R4 বিয়োগ করে R5 তে রাখো R5=৬ বিয়োগ অপারেশন
৬ R5 থেকে মেমোরিতে ফল লেখো মেমোরি = ৬ মেমোরি লেখা

প্রতিটি ধাপেই রেজিস্টার সাময়িক স্থান হিসেবে কাজ করছে।

উদাহরণ ৪: শব্দ প্রক্রিয়াকরণে বিলম্ব রেজিস্টার

একটি ডিজিটাল ইকো যন্ত্র তৈরি করতে হবে। মূল শব্দ শোনার পরে ঠিক ০.৫ সেকেন্ড বিলম্বে একই শব্দ আবার শোনাবে।

ধরো, শব্দ নমুনার হার ৮০০০ হার্টজ অর্থাৎ প্রতি সেকেন্ডে ৮০০০টি নমুনা নেওয়া হয়।

বিলম্ব=০.৫×৮০০০=৪০০০ নমুনা

তাই ৪০০০টি নমুনার একটি শিফট রেজিস্টার দরকার। প্রতিটি নমুনা ৮ বিটের হলে মোট ৩২০০০টি ফ্লিপ-ফ্লপ লাগবে।

ইকো যন্ত্রের রেজিস্টার বিন্যাস
উপাদান বিবরণ
নমুনার হার ৮০০০ হার্টজ
বিলম্ব ০.৫ সেকেন্ড
বিলম্বের নমুনা সংখ্যা ৪০০০
প্রতি নমুনার বিট ৮
মোট ফ্লিপ-ফ্লপ ৩২০০০
বাস্তবে ব্যবহার র‍্যাম বা বিশেষ ডিজিটাল বিলম্ব রেখা

আধুনিক যন্ত্রে এতগুলো ফ্লিপ-ফ্লপের বদলে র‍্যাম ব্যবহার হয়, কিন্তু ধারণাটা একই।

উদাহরণ ৫: প্রোগ্রাম কাউন্টারের ধাপ বিশ্লেষণ

একটি সরল প্রসেসরে নির্দেশনাগুলো মেমোরিতে ঠিকানা ১০০, ১০২, ১০৪, ১০৬ তে আছে (প্রতিটি নির্দেশনা ২ বাইট)। ঠিকানা ১০৪ তে একটি লাফানো নির্দেশনা আছে যা ঠিকানা ১০০ তে ফিরে যাবে।

প্রোগ্রাম কাউন্টারের পরিবর্তন
ক্লক প্রোগ্রাম কাউন্টার চলমান নির্দেশনা প্রোগ্রাম কাউন্টার পরিবর্তন
১ ১০০ নির্দেশনা পড়ো ১০০→১০২
২ ১০২ নির্দেশনা পড়ো ১০২→১০৪
৩ ১০৪ লাফানো নির্দেশনা পড়ো ১০৪→১০০ (লাফ)
৪ ১০০ আবার প্রথম নির্দেশনা ১০০→১০২
৫ ১০২ দ্বিতীয় নির্দেশনা ১০২→১০৪

লাফানো নির্দেশনায় প্রোগ্রাম কাউন্টার স্বাভাবিকভাবে এগোনোর বদলে ১০০-তে সরাসরি যাচ্ছে। এভাবে লুপ তৈরি হয়।

অনুশীলনী

  1. একটি ৮-বিট সমান্তরাল থেকে ধারাবাহিক রূপান্তরকারী রেজিস্টারে Q7…Q0=১১০১০১১০ লোড করা আছে। সর্বনিম্ন বিট আগে পাঠানো হলে প্রথম তিনটি ক্লকে কোন বিটগুলো বেরোবে?
  2. ক্লক কম্পাঙ্ক ৫ মেগাহার্টজ হলে ১০ মাইক্রোসেকেন্ড বিলম্ব পেতে কতটি ফ্লিপ-ফ্লপের শিফট রেজিস্টার দরকার?
  3. ইউএআরটিতে শুরু বিট কেন পাঠানো হয়?
  4. একটি ৪-বিট ধারাবাহিক থেকে সমান্তরাল রেজিস্টারে একে একে ১, ০, ১, ১ ঢোকানো হলে (সর্বনিম্ন বিট আগে) চার ক্লক পরে Q3Q2Q1Q0 কত হবে?
  5. পাইপলাইন প্রসেসরে ৪-ধাপের পাইপলাইনে ১০০টি নির্দেশনা সম্পন্ন করতে কত ক্লক লাগবে?
  6. রেজিস্টার ফাইলে দুটি পাঠ পোর্ট থাকার কারণ কী?
  7. প্রোগ্রাম কাউন্টার সাধারণত প্রতিটি নির্দেশনার পর কতটুকু বাড়ে এবং কেন?
  8. একটি ৩-বিট রৈখিক প্রতিক্রিয়া শিফট রেজিস্টারে ফিডব্যাক রাশি D=Q2⊕Q0 এবং প্রাথমিক অবস্থা Q2Q1Q0=০০১ হলে পরের তিনটি অবস্থা কী কী?
  9. ক্যাশ মেমোরি কেন রেজিস্টার দিয়ে তৈরি হয়, সাধারণ মেমোরি দিয়ে নয়?
  10. 'Z' অক্ষরের বাইনারি কোড ০১০১১০১০। ইউএআরটিতে সর্বনিম্ন বিট আগে পাঠানো হলে বিটগুলোর ক্রম কী হবে (শুরু ও শেষ বিটসহ)?

উত্তর:

  1. প্রথম ক্লক: Q0=০; দ্বিতীয় ক্লক: Q1=১; তৃতীয় ক্লক: Q2=১।
  1. বিলম্ব = পার্স করতে ব্যর্থ (সিনট্যাক্স ত্রুটি): {\displaystyle n \times T_{ক্লক}} । পার্স করতে ব্যর্থ (সিনট্যাক্স ত্রুটি): {\displaystyle T_{ক্লক} = \frac{\text{১}}{\text{৫} \times \text{১০}^6} = \text{০.২}} মাইক্রোসেকেন্ড। তাই n=১০০.২=৫০টি ফ্লিপ-ফ্লপ।
  1. শুরু বিট গ্রহণকারীকে জানায় যে ডেটা আসা শুরু হচ্ছে। এটি ছাড়া গ্রহণকারী বুঝতে পারবে না কখন থেকে বিট গণনা শুরু করবে।
  1. সর্বনিম্ন বিট আগে ঢোকায় বলে চার ক্লক পরে: Q3Q2Q1Q0=১১০১। (বিটগুলো ডানে থেকে বামে সরে গেছে: প্রথম বিট ১ হলো Q0, দ্বিতীয় ০ হলো Q1, তৃতীয় ১ হলো Q2, চতুর্থ ১ হলো Q3।)
  1. পাইপলাইন ভরতে ৩ অতিরিক্ত ক্লক লাগে। তারপর প্রতি ক্লকে একটি নির্দেশনা শেষ হয়। মোট = ১০০+(৪−১)=১০৩ ক্লক।
  1. একটি যোগ নির্দেশনায় দুটো রেজিস্টারের মান একই সময়ে পড়া দরকার। দুটো পাঠ পোর্ট থাকলে এই কাজ একক ক্লকেই সম্পন্ন হয়, আলাদা দুটো ক্লক লাগে না।
  1. প্রতিটি নির্দেশনা সাধারণত ২ বা ৪ বাইট হয় বলে প্রোগ্রাম কাউন্টার ২ বা ৪ করে বাড়ে। (৩২-বিট প্রসেসরে সাধারণত ৪ করে বাড়ে কারণ প্রতিটি নির্দেশনা ৪ বাইট।)
  1. ক্লক ১: D=Q2⊕Q0=০⊕১=১। নতুন অবস্থা: ০০০→Q0=১, অবস্থা=০০১ না, সঠিকভাবে: প্রাথমিক ০০১; ক্লক ১: D=০⊕১=১, নতুন: ০১০→Q0=১ না। ধাপে ধাপে: Q2Q1Q0=০০১; D=০⊕১=১; পরের অবস্থা ১০০→ না, শিফট বাম: Q2←Q1=০, Q1←Q0=০, Q0←D=১। তাই: ক্লক ১: ০০১; ক্লক ২: D=০⊕১=১, অবস্থা ০১১; ক্লক ৩: D=০⊕১=১, অবস্থা ১১১।
  1. রেজিস্টার (ফ্লিপ-ফ্লপ) ক্লক-সিঙ্ক্রোনাস এবং প্রসেসরের মতোই দ্রুত কারণ একই চিপে তৈরি। সাধারণ মেমোরি (ডিআরএম) অনেক ধীর এবং আলাদা ঘড়ি দরকার।
  1. পাঠানোর ক্রম: ০ (শুরু), ০, ১, ০, ১, ১, ০, ১, ০, ১ (শেষ)। (০১০১১০১০ এর সর্বনিম্ন বিট থেকে: Q0=০,Q1=১,Q2=০,Q3=১,Q4=১,Q5=০,Q6=১,Q7=০।)

উন্নত রেজিস্টার ও আধুনিক প্রয়োগ

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

ফিফো রেজিস্টার

সুপারশপের লাইনের উপমা

একটি সুপারশপে ক্যাশ কাউন্টারে লাইন ভাবো। যে প্রথমে লাইনে দাঁড়ায়, সে প্রথমে সেবা পায় এবং প্রথমে বেরিয়ে যায়। শেষে যে আসে, সে সবার পরে বেরোয়। কেউ লাইন টপকে আগে যেতে পারে না।

এটাই ফিফো-এর মূল নীতি। বাংলায় বলা যায় প্রথম-ঢোকা-প্রথম-বেরোনো। ডিজিটাল সার্কিটে এই ধারণা দিয়ে এমন একটি সংরক্ষণ ব্যবস্থা তৈরি হয় যেখানে ডেটা যে ক্রমে ঢোকে সেই ক্রমেই বেরোয়।

প্রিন্টারের উদাহরণ আরও পরিচিত। তুমি যখন একসাথে তিনটি ডকুমেন্ট প্রিন্ট করতে পাঠাও, প্রিন্টার সেগুলো যে ক্রমে পেয়েছে সেই ক্রমেই ছাপে। প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হয়।

ফিফো রেজিস্টারের গঠন

ফিফো রেজিস্টার মূলত একটি শিফট রেজিস্টার যেখানে ডেটা এক প্রান্ত থেকে ঢোকে এবং অন্য প্রান্ত থেকে বেরোয়।

একটি চার-ঘর ফিফো-তে চারটি সংরক্ষণ ঘর আছে। নতুন ডেটা সর্বদা লেখার প্রান্তে ঢোকে এবং পুরনো ডেটা পড়ার প্রান্ত থেকে বেরোয়। প্রতিটি ঘড়ির পালসে ডেটা এক ঘর এগিয়ে যায়।

ফিফো রেজিস্টারের অংশ
অংশ ধরন কাজ
লেখার প্রান্ত ইনপুট নতুন ডেটা এখানে ঢোকে
পড়ার প্রান্ত আউটপুট পুরনো ডেটা এখান থেকে বেরোয়
লেখার সক্রিয়করণ নিয়ন্ত্রণ এটি সক্রিয় হলে নতুন ডেটা ঢোকে
পড়ার সক্রিয়করণ নিয়ন্ত্রণ এটি সক্রিয় হলে ডেটা বেরোয়
পূর্ণ সংকেত আউটপুট সব ঘর ভরা থাকলে এটি সক্রিয় হয়
খালি সংকেত আউটপুট সব ঘর খালি থাকলে এটি সক্রিয় হয়

পূর্ণ ও খালি সংকেত

ফিফো-র দুটি বিশেষ সংকেত আছে যা ব্যবস্থাপনায় সাহায্য করে।

পূর্ণ সংকেত: যখন ফিফো-র সব ঘর ভরা থাকে, তখন পূর্ণ সংকেত সক্রিয় হয়। এই সময় নতুন ডেটা ঢোকানো যাবে না। যদি ঢোকানো হয়, পুরনো ডেটা হারিয়ে যাবে। এটি সুপারশপের লাইন পূর্ণ হয়ে যাওয়ার মতো, নতুন কেউ লাইনে দাঁড়াতে পারছে না।

খালি সংকেত: যখন ফিফো-র সব ঘর খালি থাকে, তখন খালি সংকেত সক্রিয় হয়। এই সময় পড়ার চেষ্টা করলে অর্থহীন ডেটা আসবে। এটি খালি লাইন থেকে ক্যাশিয়ার কাউকে ডাকার চেষ্টার মতো।

ফিফো-র অবস্থা ও সংকেত
অবস্থা পূর্ণ সংকেত খালি সংকেত অনুমোদিত কাজ
সব ঘর খালি ০ ১ শুধু লেখা
কিছু ঘর ভরা ০ ০ লেখা ও পড়া উভয়ই
সব ঘর ভরা ১ ০ শুধু পড়া

ধাপে ধাপে ফিফো কাজের উদাহরণ

ধরো একটি চার-ঘর ফিফো খালি আছে। একে একে ১০১১, ০১১০, ১১০০, ০০০১ ডেটা ঢোকানো হলো।

ফিফো-তে ডেটা ঢোকানো
পদক্ষেপ কাজ ঘর ১ (পুরনো) ঘর ২ ঘর ৩ ঘর ৪ (নতুন) অবস্থা
শুরু খালি - - - - খালি সংকেত সক্রিয়
১ লেখা ১০১১ ১০১১ - - - আংশিক ভরা
২ লেখা ০১১০ ১০১১ ০১১০ - - আংশিক ভরা
৩ লেখা ১১০০ ১০১১ ০১১০ ১১০০ - আংশিক ভরা
৪ লেখা ০০০১ ১০১১ ০১১০ ১১০০ ০০০১ পূর্ণ সংকেত সক্রিয়

এখন একে একে পড়া হলো:

ফিফো থেকে ডেটা পড়া
পদক্ষেপ কাজ পড়া ডেটা ঘর ১ ঘর ২ ঘর ৩ মন্তব্য
১ পড়া ১০১১ ০১১০ ১১০০ ০০০১ প্রথম ঢোকা প্রথম বেরোল
২ পড়া ০১১০ ১১০০ ০০০১ - দ্বিতীয়টি বেরোল
৩ পড়া ১১০০ ০০০১ - - তৃতীয়টি বেরোল
৪ পড়া ০০০১ - - - শেষেরটি বেরোল, এখন খালি

ক্রম একদম ঠিক রইল। প্রথমে যা ঢুকেছিল, প্রথমে বেরিয়েছে।

বাস্তব প্রয়োগ

নেটওয়ার্ক বাফারিং: ইন্টারনেটে ডেটা প্যাকেট আসে ঝাঁকে ঝাঁকে। কখনো অনেক প্যাকেট একসাথে আসে, কখনো কম আসে। নেটওয়ার্ক কার্ডে ফিফো বাফার থাকে যা প্যাকেটগুলো সাময়িকভাবে ধরে রাখে এবং কম্পিউটারকে যখন সুবিধা হয় তখন প্রক্রিয়া করতে দেয়। এতে প্যাকেট হারিয়ে যাওয়ার ঝুঁকি কমে।

প্রিন্টার স্পুলিং: তুমি যখন অনেকগুলো ডকুমেন্ট প্রিন্ট করতে পাঠাও, অপারেটিং সিস্টেম সেগুলো একটি ফিফো সারিতে রাখে। প্রিন্টার একটি শেষ করলে পরেরটি নেয়। তুমি এর মধ্যে অন্য কাজ করতে পারো।

অডিও ও ভিডিও বাফারিং: ইউটিউবে ভিডিও দেখার সময় নেটওয়ার্ক থেকে আসা ডেটা একটি ফিফো বাফারে জমে। খেলার গতি সমান রাখতে এই বাফার সাহায্য করে।

কীবোর্ড বাফার: তুমি দ্রুত টাইপ করলে কম্পিউটার সঙ্গে সঙ্গে প্রক্রিয়া করতে নাও পারে। কীবোর্ড বাফারে চাপা বোতামের ক্রম ফিফো হিসেবে জমে থাকে।

লাইফো রেজিস্টার বা স্ট্যাক

থালার স্তূপের উপমা

রান্নাঘরে ধোয়া থালার স্তূপ ভাবো। নতুন ধোয়া থালা সবসময় উপরে রাখা হয়। থালা নেওয়ার সময়ও সবসময় উপর থেকে নেওয়া হয়। সবশেষে রাখা থালাটি সবার আগে নেওয়া হয়।

এটাই লাইফো-এর মূল নীতি। বাংলায় বলা যায় শেষ-ঢোকা-প্রথম-বেরোনো।

আরেকটি উদাহরণ: বইয়ের স্তূপ। তুমি একটার উপর একটা বই রাখলে। পরে বই নিতে গেলে সবার উপরের বই, অর্থাৎ সবার শেষে রাখা বই, আগে হাতে আসে।

পুশ ও পপ অপারেশন

স্ট্যাকে দুটি মূল অপারেশন হয়।

পুশ: স্ট্যাকের উপরে নতুন ডেটা রাখা। থালার স্তূপে নতুন থালা উপরে দেওয়ার মতো। প্রতিটি পুশে একটি বিশেষ নির্দেশক এক ঘর উপরে ওঠে যা বলে স্ট্যাকের উপর কোথায়।

পপ: স্ট্যাকের উপর থেকে ডেটা তোলা। থালার স্তূপ থেকে উপরের থালা সরানোর মতো। প্রতিটি পপে নির্দেশক এক ঘর নিচে নামে।

স্ট্যাক অপারেশনের উদাহরণ
পদক্ষেপ অপারেশন ডেটা স্ট্যাকের অবস্থা (উপর থেকে নিচে) নির্দেশক অবস্থান
শুরু খালি - খালি ০
১ পুশ ১০১১ ১০১১ ১
২ পুশ ০১১০ ০১১০, ১০১১ ২
৩ পুশ ১১০০ ১১০০, ০১১০, ১০১১ ৩
৪ পপ ১১০০ বেরোল ০১১০, ১০১১ ২
৫ পপ ০১১০ বেরোল ১০১১ ১
৬ পপ ১০১১ বেরোল খালি ০

লক্ষ করো ঢোকার ক্রম ছিল: ১০১১, ০১১০, ১১০০। বেরোনোর ক্রম হলো: ১১০০, ০১১০, ১০১১। একদম উল্টো!

স্ট্যাক উপচানো ও খালি থেকে পপ

স্ট্যাকে দুটি বিপদ আছে।

স্ট্যাক উপচানো: স্ট্যাক পূর্ণ থাকলে আরও পুশ করলে পুরনো ডেটা হারিয়ে যায়। কম্পিউটারে এটি একটি মারাত্মক ত্রুটি। অনেক নিরাপত্তা সমস্যার মূলে এই ত্রুটি আছে।

খালি স্ট্যাক থেকে পপ: স্ট্যাক খালি থাকলে পপ করলে অর্থহীন মান আসে। এটিও একটি গুরুতর ত্রুটি।

কম্পিউটারের ফাংশন কল স্ট্যাক

কম্পিউটার প্রোগ্রামে স্ট্যাকের সবচেয়ে গুরুত্বপূর্ণ প্রয়োগ হলো ফাংশন কল পরিচালনা।

ধরো তুমি একটি প্রোগ্রাম লিখেছ। মূল অংশ থেকে প্রথম ফাংশন ডাকা হলো। সেই ফাংশন থেকে দ্বিতীয় ফাংশন ডাকা হলো। দ্বিতীয় ফাংশন থেকে তৃতীয় ফাংশন ডাকা হলো।

তৃতীয় ফাংশন শেষ হলে কোথায় ফিরবে? দ্বিতীয় ফাংশনে। দ্বিতীয় ফাংশন শেষ হলে কোথায় ফিরবে? প্রথম ফাংশনে। প্রথম ফাংশন শেষ হলে কোথায় ফিরবে? মূল অংশে।

এই ফেরার ঠিকানাগুলো একটি স্ট্যাকে জমা থাকে। প্রতিটি ফাংশন ডাকার সময় ফেরার ঠিকানা স্ট্যাকে পুশ হয়। ফাংশন শেষ হলে স্ট্যাক থেকে পপ করে ফেরার ঠিকানা পাওয়া যায়।

ফাংশন কলের স্ট্যাক ব্যবহার
পদক্ষেপ ঘটনা স্ট্যাকের অবস্থা
১ মূল অংশ থেকে ফাংশন ক ডাকা হলো ফেরার ঠিকানা ক পুশ
২ ফাংশন ক থেকে ফাংশন খ ডাকা হলো ফেরার ঠিকানা খ পুশ
৩ ফাংশন খ থেকে ফাংশন গ ডাকা হলো ফেরার ঠিকানা গ পুশ
৪ ফাংশন গ শেষ, ফিরল ঠিকানা গ পপ, ফাংশন খ-তে ফিরল
৫ ফাংশন খ শেষ, ফিরল ঠিকানা খ পপ, ফাংশন ক-তে ফিরল
৬ ফাংশন ক শেষ, ফিরল ঠিকানা ক পপ, মূল অংশে ফিরল

ফিফো ও লাইফো-র তুলনা

ফিফো ও লাইফো-র তুলনামূলক সারণি
বৈশিষ্ট্য ফিফো লাইফো
বাংলা নাম প্রথম-ঢোকা-প্রথম-বেরোনো শেষ-ঢোকা-প্রথম-বেরোনো
উপমা সুপারশপের লাইন থালার স্তূপ
ঢোকার প্রান্ত এক প্রান্ত উপর
বেরোনোর প্রান্ত অন্য প্রান্ত উপর (একই)
মূল অপারেশন লেখা ও পড়া পুশ ও পপ
বেরোনোর ক্রম ঢোকার একই ক্রম ঢোকার উল্টো ক্রম
প্রধান ব্যবহার বাফারিং, সারি ফাংশন কল, পূর্বাবস্থায় ফেরা
বিপদ পূর্ণ বা খালি থেকে পড়া উপচানো বা খালি থেকে পপ

রেজিস্টার ফাইল

কেন একাধিক রেজিস্টার দরকার?

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

কম্পিউটারের প্রসেসরেও তাই। একটিমাত্র রেজিস্টার থাকলে হিসাব করার সময় বারবার মেমোরিতে যেতে হতো। কিন্তু একাধিক রেজিস্টার থাকলে মাঝখানের ফলাফল দ্রুত কাছাকাছি রাখা যায়।

আধুনিক প্রসেসরে ৮ থেকে ৩২টি সাধারণ-উদ্দেশ্য রেজিস্টার থাকে। এই রেজিস্টারগুলো একসাথে মিলে রেজিস্টার ফাইল তৈরি করে।

ঠিকানা দিয়ে রেজিস্টার নির্বাচন

রেজিস্টার ফাইলকে একটি ছোট ডাকঘরের মতো ভাবো যেখানে প্রতিটি খোপের একটি নম্বর আছে। তুমি নম্বর বললেই সঠিক খোপ খুলে যায়।

রেজিস্টার ফাইলে প্রতিটি রেজিস্টারের একটি ঠিকানা থাকে। ঠিকানা দিলে সেই রেজিস্টারে লেখা বা পড়া যায়।

৮টি রেজিস্টার থাকলে ৩ বিটের ঠিকানা দরকার (কারণ ২৩=৮)। ১৬টি থাকলে ৪ বিটের ঠিকানা দরকার।

রেজিস্টার ফাইলের গঠন

একটি সহজ ৪-রেজিস্টার ফাইলের গঠন:

  • ৪টি রেজিস্টার: R0,R1,R2,R3
  • প্রতিটি ৪ বিট প্রশস্ত
  • পড়ার ঠিকানা: ২ বিট (RA1,RA0)
  • লেখার ঠিকানা: ২ বিট (WA1,WA0)
  • লেখার সক্রিয়করণ: ১ বিট
  • ডেটা ইনপুট: ৪ বিট
  • ডেটা আউটপুট: ৪ বিট
৪-রেজিস্টার ফাইলের ঠিকানা সারণি
ঠিকানা A1A0 নির্বাচিত রেজিস্টার মন্তব্য
০০ R0 প্রথম রেজিস্টার
০১ R1 দ্বিতীয় রেজিস্টার
১০ R2 তৃতীয় রেজিস্টার
১১ R3 চতুর্থ রেজিস্টার

দ্বি-পোর্ট রেজিস্টার ফাইল

সাধারণ রেজিস্টার ফাইলে একবারে একটি রেজিস্টার পড়া বা লেখা যায়। কিন্তু আধুনিক প্রসেসরে যোগকারী সার্কিটকে একই সময়ে দুটি রেজিস্টার পড়তে হয় এবং ফলাফল একটিতে লিখতে হয়।

এই কারণে দ্বি-পোর্ট রেজিস্টার ফাইল তৈরি হয়েছে। এতে দুটি পড়ার পোর্ট এবং একটি লেখার পোর্ট থাকে। একসাথে দুটি রেজিস্টার পড়া এবং একটিতে লেখা সম্ভব।

দ্বি-পোর্ট রেজিস্টার ফাইলের সংযোগ
সংযোগ বিট সংখ্যা কাজ
পড়ার ঠিকানা ১ (RS1) ঠিকানা বিট প্রথম উৎস রেজিস্টার নির্বাচন
পড়ার ঠিকানা ২ (RS2) ঠিকানা বিট দ্বিতীয় উৎস রেজিস্টার নির্বাচন
লেখার ঠিকানা (RD) ঠিকানা বিট গন্তব্য রেজিস্টার নির্বাচন
পড়ার ডেটা ১ (RD1) ডেটা বিট প্রথম রেজিস্টারের মান
পড়ার ডেটা ২ (RD2) ডেটা বিট দ্বিতীয় রেজিস্টারের মান
লেখার ডেটা (WD) ডেটা বিট রেজিস্টারে যা লেখা হবে
লেখার সক্রিয়করণ ১ বিট সক্রিয় হলে লেখা হয়

আধুনিক প্রসেসরে রেজিস্টার ফাইল

আধুনিক প্রসেসরে রেজিস্টার ফাইল অত্যন্ত গুরুত্বপূর্ণ।

এআরএম প্রসেসর: স্মার্টফোনে ব্যাপকভাবে ব্যবহৃত এআরএম প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে। প্রতিটি ৩২ বিট প্রশস্ত।

ইন্টেল প্রসেসর: আধুনিক ইন্টেল প্রসেসরে ১৬টি সাধারণ-উদ্দেশ্য রেজিস্টার আছে যার প্রতিটি ৬৪ বিট প্রশস্ত।

সুপারস্কেলার প্রসেসর: আধুনিক প্রসেসরে একই সময়ে একাধিক নির্দেশ চালানো যায়। এর জন্য রেজিস্টার ফাইলে বহু পোর্ট থাকে।

রেজিস্টার পুনর্নামকরণ: উচ্চ কর্মক্ষমতার প্রসেসরে বাস্তব রেজিস্টারের চেয়ে অনেক বেশি ভৌত রেজিস্টার থাকে। যখন একটি নির্দেশ একটি রেজিস্টারে লিখতে চায়, তখন একটি অব্যবহৃত ভৌত রেজিস্টার দিয়ে দেওয়া হয়। এটি রেজিস্টার পুনর্নামকরণ। এতে একই রেজিস্টারে লেখার জন্য অপেক্ষা করতে হয় না।

রেজিস্টার সংক্রান্ত গুরুত্বপূর্ণ পরিভাষার তালিকা

রেজিস্টার পরিভাষার তালিকা
পরিভাষা সংজ্ঞা উদাহরণ বা মন্তব্য
রেজিস্টার একটি বা একাধিক ফ্লিপ-ফ্লপ দিয়ে তৈরি দ্রুত সংরক্ষণ ব্যবস্থা ৮-বিট রেজিস্টার = ৮টি ডি ফ্লিপ-ফ্লপ
ডি ফ্লিপ-ফ্লপ এক বিট সংরক্ষণকারী প্রাথমিক উপাদান Q(t+১)=D(t)
ঘড়ি নিয়মিত পর্যায়ক্রমিক বর্গ তরঙ্গ যা ফ্লিপ-ফ্লপের কাজ নিয়ন্ত্রণ করে উর্ধ্বমুখী প্রান্তে কাজ হয়
লোড রেজিস্টারে নতুন মান ঢোকানো লোড = ১ হলে ঘড়ির পালসে মান ঢোকে
ধারণ রেজিস্টারের মান অপরিবর্তিত রাখা লোড = ০ হলে মান ধরে থাকে
পরিষ্কার রেজিস্টারের সব বিট শূন্য করা প্রাথমিক অবস্থায় আনতে ব্যবহার হয়
শিফট বিট এক ঘর বামে বা ডানে সরানো বাইনারি গুণ ও ভাগে ব্যবহার হয়
ধারাবাহিক ইনপুট শিফটের সময় প্রান্তে যে বিট ঢোকে ডানে শিফটে বামে নতুন বিট ঢোকে
সমান্তরাল একসাথে সব বিট সমান্তরাল লোডে চার বিট একসাথে ঢোকে
ফিফো প্রথম-ঢোকা-প্রথম-বেরোনো প্রিন্টার সারি, নেটওয়ার্ক বাফার
লাইফো শেষ-ঢোকা-প্রথম-বেরোনো ফাংশন কল স্ট্যাক
পুশ স্ট্যাকে উপরে যোগ করা স্ট্যাক নির্দেশক এক বাড়ে
পপ স্ট্যাকের উপর থেকে তোলা স্ট্যাক নির্দেশক এক কমে
রেজিস্টার ফাইল একাধিক রেজিস্টারের সমষ্টি যেখানে ঠিকানা দিয়ে প্রবেশ করা যায় প্রসেসরে ৮ থেকে ৩২টি রেজিস্টার
সেটআপ সময় ঘড়ির প্রান্তের আগে ডি স্থির থাকার ন্যূনতম সময় না মানলে ভুল মান সংরক্ষণ হয়
হোল্ড সময় ঘড়ির প্রান্তের পরে ডি স্থির থাকার ন্যূনতম সময় না মানলে ভুল মান সংরক্ষণ হয়
প্রসারণ বিলম্ব ঘড়ির প্রান্ত থেকে আউটপুট স্থির হওয়ার সময় সার্কিটের সর্বোচ্চ গতি নির্ধারণ করে
কম্পাঙ্ক বিভাজক Q¯ কে D-তে দিলে আউটপুট কম্পাঙ্ক অর্ধেক হয় এক বিটের গণনাকারীও বলা যায়
পূর্ণ সংকেত ফিফো পূর্ণ হলে সক্রিয় হয় নতুন ডেটা ঢোকানো বন্ধ করতে সংকেত
খালি সংকেত ফিফো খালি হলে সক্রিয় হয় পড়া বন্ধ করতে সংকেত
স্ট্যাক নির্দেশক স্ট্যাকের বর্তমান শীর্ষ ঘরের ঠিকানা ধরে রাখে পুশে বাড়ে, পপে কমে

সমগ্র রেজিস্টার অধ্যায়ের সারসংক্ষেপ সারণি

রেজিস্টারের প্রকারভেদ ও তুলনা
রেজিস্টারের ধরন মূল বৈশিষ্ট্য ইনপুট পদ্ধতি আউটপুট পদ্ধতি নিয়ন্ত্রণ সংকেত প্রধান ব্যবহার
সরল সমান্তরাল রেজিস্টার প্রতি পালসে লোড হয় সমান্তরাল সমান্তরাল ঘড়ি সাধারণ ডেটা সংরক্ষণ
লোড সক্রিয়করণ সহ রেজিস্টার লোড সংকেত দিয়ে নিয়ন্ত্রিত সমান্তরাল সমান্তরাল ঘড়ি, লোড বাস ব্যবস্থা, রেজিস্টার ফাইল
ডানমুখী শিফট রেজিস্টার বিট ডানে সরে ধারাবাহিক (বামে) ধারাবাহিক (ডানে) বা সমান্তরাল ঘড়ি ধারাবাহিক যোগাযোগ
বামমুখী শিফট রেজিস্টার বিট বামে সরে ধারাবাহিক (ডানে) ধারাবাহিক (বামে) বা সমান্তরাল ঘড়ি ধারাবাহিক যোগাযোগ
দ্বিমুখী শিফট রেজিস্টার দুই দিকেই শিফট দুই প্রান্তে ধারাবাহিক দুই প্রান্তে ধারাবাহিক বা সমান্তরাল ঘড়ি, দিক (S) গুণ ও ভাগ, ডেটা রূপান্তর
সার্বজনীন রেজিস্টার চারটি মোড সমান্তরাল ও ধারাবাহিক সমান্তরাল ও ধারাবাহিক ঘড়ি, S1, S0 বহুমুখী ব্যবহার
ফিফো প্রথম-ঢোকা-প্রথম-বেরোনো এক প্রান্তে অন্য প্রান্তে লেখা ও পড়া সক্রিয়করণ বাফারিং, সারি
লাইফো/স্ট্যাক শেষ-ঢোকা-প্রথম-বেরোনো উপরে (পুশ) উপর থেকে (পপ) পুশ, পপ ফাংশন কল, পূর্বাবস্থায় ফেরা
রেজিস্টার ফাইল ঠিকানা দিয়ে প্রবেশ লেখার ঠিকানায় পড়ার ঠিকানায় ঠিকানা, লেখার সক্রিয়করণ প্রসেসর রেজিস্টার

বিস্তারিত উদাহরণ

উদাহরণ ১: ফিফো-তে লেখা ও পড়া মিশিয়ে

একটি চার-ঘর ফিফো নিয়ে কাজ করা হচ্ছে। নিচের ধারাবাহিক ক্রিয়ার পর ফিফো-র অবস্থা কী হবে?

ক্রিয়ার তালিকা: ১. লেখো ১১০০ ২. লেখো ০০১১ ৩. লেখো ১০১০ ৪. পড়ো ৫. লেখো ০১১০ ৬. লেখো ১১১১ ৭. পড়ো ৮. পড়ো

উদাহরণ ১-এর ধাপে ধাপে বিশ্লেষণ
ধাপ ক্রিয়া ফিফো (পুরনো থেকে নতুন) পড়া মান অবস্থা
শুরু - খালি - খালি সংকেত সক্রিয়
১ লেখা ১১০০ ১১০০ - আংশিক ভরা
২ লেখা ০০১১ ১১০০,০০১১ - আংশিক ভরা
৩ লেখা ১০১০ ১১০০,০০১১,১০১০ - আংশিক ভরা
৪ পড়া ০০১১,১০১০ ১১০০ আংশিক ভরা
৫ লেখা ০১১০ ০০১১,১০১০,০১১০ - আংশিক ভরা
৬ লেখা ১১১১ ০০১১,১০১০,০১১০,১১১১ - পূর্ণ সংকেত সক্রিয়
৭ পড়া ১০১০,০১১০,১১১১ ০০১১ আংশিক ভরা
৮ পড়া ০১১০,১১১১ ১০১০ আংশিক ভরা

শেষ অবস্থায় ফিফো-তে আছে ০১১০ ও ১১১১।

উদাহরণ ২: স্ট্যাকে পুশ ও পপ

একটি স্ট্যাকে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে স্ট্যাকের অবস্থা দেখাও।

ক্রিয়ার তালিকা: ১. পুশ ১০১০ ২. পুশ ১১০০ ৩. পুশ ০১১১ ৪. পপ ৫. পুশ ০০০১ ৬. পপ ৭. পপ ৮. পপ

উদাহরণ ২-এর স্ট্যাক অপারেশন
ধাপ ক্রিয়া স্ট্যাক (উপর থেকে নিচে) পপ করা মান
শুরু - খালি -
১ পুশ ১০১০ ১০১০ -
২ পুশ ১১০০ ১১০০,১০১০ -
৩ পুশ ০১১১ ০১১১,১১০০,১০১০ -
৪ পপ ১১০০,১০১০ ০১১১
৫ পুশ ০০০১ ০০০১,১১০০,১০১০ -
৬ পপ ১১০০,১০১০ ০০০১
৭ পপ ১০১০ ১১০০
৮ পপ খালি ১০১০

উদাহরণ ৩: রেজিস্টার ফাইলে লেখা ও পড়া

একটি ৪-রেজিস্টার ফাইলে নিচের ক্রিয়াগুলো করা হলো। প্রতিটি ধাপে রেজিস্টার ফাইলের অবস্থা কী?

ক্রিয়ার তালিকা: ১. ঠিকানা ০০-তে লেখো ১০১০ ২. ঠিকানা ০১-তে লেখো ০১১০ ৩. ঠিকানা ১০-তে লেখো ১১০০ ৪. ঠিকানা ০০ পড়ো ৫. ঠিকানা ০১ ও ১০ একসাথে পড়ো (দ্বি-পোর্ট) ৬. ঠিকানা ১১-তে লেখো ০০০১

উদাহরণ ৩-এর রেজিস্টার ফাইল
ধাপ ক্রিয়া R0 (০০) R1 (০১) R2 (১০) R3 (১১) পড়া মান
শুরু - অজানা অজানা অজানা অজানা -
১ লেখা ০০ ১০১০ অজানা অজানা অজানা -
২ লেখা ০১ ১০১০ ০১১০ অজানা অজানা -
৩ লেখা ১০ ১০১০ ০১১০ ১১০০ অজানা -
৪ পড়া ০০ ১০১০ ০১১০ ১১০০ অজানা ১০১০
৫ পড়া ০১ ও ১০ ১০১০ ০১১০ ১১০০ অজানা ০১১০ ও ১১০০
৬ লেখা ১১ ১০১০ ০১১০ ১১০০ ০০০১ -

উদাহরণ ৪: শিফট রেজিস্টার দিয়ে বাইনারি গুণ

০০১১ (দশমিকে ৩) কে ৪ দিয়ে গুণ করো বামে শিফট রেজিস্টার ব্যবহার করে।

৪ দিয়ে গুণ মানে বামে দুই শিফট। SIL=০।

বাইনারি গুণের ধাপ
ধাপ অপারেশন রেজিস্টার দশমিক মান
শুরু - ০০১১ ৩
১ বামে এক শিফট ০১১০ ৬ (৩ × ২)
২ বামে এক শিফট ১১০০ ১২ (৩ × ৪)

ফলাফল: ১১০০ যা দশমিকে ১২। ৩ × ৪ = ১২ ✓

কিন্তু লক্ষ করো: যদি সংখ্যা বড় হতো যেমন ১০১১ (দশমিকে ১১), বামে দুই শিফটে উচ্চ বিট বেরিয়ে যেত। ৪ বিটের রেজিস্টারে ফলাফল ধরবে না। এটি উপচানোর সমস্যা।

উদাহরণ ৫: সার্বজনীন রেজিস্টার দিয়ে সম্পূর্ণ প্রক্রিয়া

একটি সার্বজনীন রেজিস্টার দিয়ে ১০১১ লোড করে, তা দুই বার ডানে শিফট করো, তারপর ধরে রাখো।

উদাহরণ ৫-এর সম্পূর্ণ প্রক্রিয়া
পালস S1S0 মোড ইনপুট Q3Q2Q1Q0 মন্তব্য
শুরু - - - ০০০০ প্রাথমিক অবস্থা
১ ১১ সমান্তরাল লোড ১০১১ ১০১১ লোড সম্পন্ন
২ ০১ ডানে শিফট SIR=০ ০১০১ ডানে এক শিফট
৩ ০১ ডানে শিফট SIR=০ ০০১০ আবার ডানে এক শিফট
৪ ০০ ধারণ - ০০১০ মান ধরে রাখা হলো
৫ ০০ ধারণ - ০০১০ এখনও অপরিবর্তিত

১০১১ (দশমিকে ১১) কে ডানে দুই শিফট করে ০০১০ (দশমিকে ২) পাওয়া গেল। ১১ ÷ ৪ = ২ (ভাগশেষ ৩)। ✓

অনুশীলনী

  1. একটি চার-ঘর ফিফো-তে ১০১০, ০১০১, ১১০০ ঢোকানো হলো। এরপর দুটি পড়া হলো। তারপর ০০১১ ঢোকানো হলো। এখন ফিফো-তে কী আছে?
  1. একটি স্ট্যাকে পুশ ক, পুশ খ, পুশ গ, পপ, পপ, পুশ ঘ, পপ করা হলো। পপ করা তিনটি মান কী ছিল?
  1. ফিফো-র খালি সংকেত কখন সক্রিয় হয় এবং এই অবস্থায় পড়ার চেষ্টা করলে কী সমস্যা হয়?
  1. লাইফো ও ফিফো-র মধ্যে মূল পার্থক্য কী? একটি বাস্তব উদাহরণ দিয়ে বোঝাও।
  1. একটি ৪-রেজিস্টার ফাইলে ২ বিটের ঠিকানা ব্যবহার হয়। ৮-রেজিস্টার ফাইলে কত বিটের ঠিকানা দরকার?
  1. ০১০১ (দশমিকে ৫) কে বামে দুই শিফট করলে কী হবে? ফলাফলের দশমিক মান কত? এটি কোন গাণিতিক অপারেশনের সমতুল?
  1. ১০০০ (দশমিকে ৮) কে ডানে তিন শিফট করলে কী হবে? দশমিক মান কত? (SIR=০)
  1. রেজিস্টার ফাইলে দ্বি-পোর্ট থাকার কী সুবিধা? প্রসেসরের কোন কাজে এটি দরকার?
  1. একটি চার-ঘর ফিফো-তে নিচের ক্রিয়াগুলো করো এবং প্রতিটি পালসের পর অবস্থা দেখাও:
    • পালস ১: লেখা ১১১১
    • পালস ২: লেখা ০০০০
    • পালস ৩: পড়া
    • পালস ৪: লেখা ১০১০
    • পালস ৫: পড়া
    • পালস ৬: পড়া
  1. ফিফো পূর্ণ থাকলে আরও লেখার চেষ্টা করলে কী হতে পারে? কীভাবে এই সমস্যা এড়ানো যায়?
  1. স্ট্যাকে নিচের ক্রিয়াগুলো করো এবং প্রতিটি ধাপে স্ট্যাক নির্দেশকের মান দেখাও (শুরুতে নির্দেশক = ০):
    • পুশ ১০১০
    • পুশ ০১১০
    • পপ
    • পুশ ১১০০
    • পুশ ০০০১
    • পপ
    • পপ
  1. সার্বজনীন রেজিস্টারে S1S0=০১ এবং SIR=১ দিয়ে চারটি পালস দিলে যেকোনো প্রাথমিক অবস্থা থেকে রেজিস্টার কী হবে?
  1. বামে শিফট করার সময় SIL=১ রাখলে কী ঘটে? একটি উদাহরণ দিয়ে দেখাও।
  1. রেজিস্টার ফাইলে একটি রেজিস্টার থেকে পড়ে অন্য রেজিস্টারে লেখার অপারেশন (R2←R0+R1) করতে কতটি পোর্ট দরকার এবং কেন?
  1. নিচের ফিফো ও স্ট্যাক ব্যবহারের পরিস্থিতিগুলোতে কোনটি বেশি উপযুক্ত এবং কেন:
    • ক. অপারেটিং সিস্টেমে প্রিন্ট সারি
    • খ. প্রোগ্রামের ফাংশন কল
    • গ. নেটওয়ার্ক প্যাকেট বাফার
    • ঘ. পূর্বের অবস্থায় ফেরার সুবিধা

উত্তর:

  1. পড়া হলো ১০১০ ও ০১০১; তারপর ০০১১ ঢুকল; এখন ফিফো-তে আছে ১১০০ ও ০০১১
  1. প্রথম পপে গ, দ্বিতীয় পপে খ, তৃতীয় পপে ঘ (পুশ ঘ-র পরে করা হয়েছিল)
  1. খালি সংকেত সক্রিয় হয় যখন ফিফো-র সব ঘর খালি থাকে; পড়ার চেষ্টা করলে অর্থহীন বা ভুল মান আসে যা সিস্টেমে ত্রুটি তৈরি করতে পারে
  1. ফিফো-তে ঢোকার ক্রমেই বেরোয় (সুপারশপের লাইনের মতো, যেমন প্রিন্ট সারি); লাইফো-তে শেষে ঢোকাটা আগে বেরোয় (থালার স্তূপের মতো, যেমন ব্রাউজারের পেছনে যাওয়ার বোতাম)
  1. ৩ বিটের ঠিকানা দরকার কারণ ২৩=৮
  1. ০১০১ বামে দুই শিফটে ০১০১ প্রথম শিফটে ১০১০ (১০), দ্বিতীয় শিফটে ০১০০ (২০); ৫ × ৪ = ২০ ✓; এটি ৪ দিয়ে গুণের সমতুল
  1. ১০০০ ডানে তিন শিফটে (SIR=০): প্রথমে ০১০০ (৪), দ্বিতীয়ে ০০১০ (২), তৃতীয়ে ০০০১ (১); ৮ ÷ ৮ = ১ ✓
  1. দ্বি-পোর্টে একই সময়ে দুটি রেজিস্টার পড়া যায়; গাণিতিক লজিক ইউনিটে A+B করতে A ও B একসাথে পড়তে হয়, তাই দুটি পড়ার পোর্ট দরকার
  1. পালস ১ পরে: ১১১১; পালস ২ পরে: ১১১১,০০০০; পালস ৩ পরে পড়া ১১১১, ফিফো: ০০০০; পালস ৪ পরে: ০০০০,১০১০; পালস ৫ পরে পড়া ০০০০, ফিফো: ১০১০; পালস ৬ পরে পড়া ১০১০, ফিফো: খালি
  1. পূর্ণ থাকলে সবচেয়ে পুরনো ডেটা হারিয়ে যায়; এড়াতে লেখার আগে পূর্ণ সংকেত পরীক্ষা করতে হবে এবং পূর্ণ হলে না লেখা বা বাফার বড় করতে হবে
  1. নির্দেশক ০; পুশ ১০১০ পরে নির্দেশক ১; পুশ ০১১০ পরে নির্দেশক ২; পপ পরে নির্দেশক ১ (০১১০ বেরোল); পুশ ১১০০ পরে নির্দেশক ২; পুশ ০০০১ পরে নির্দেশক ৩; পপ পরে নির্দেশক ২ (০০০১ বেরোল); পপ পরে নির্দেশক ১ (১১০০ বেরোল)
  1. যেকোনো প্রাথমিক অবস্থা থেকে চার পালস পর রেজিস্টার হবে ১১১১, কারণ প্রতিটি পালসে বামে SIR=১ ঢুকছে এবং চার পালস পর সব ঘর ১ হয়ে যায়
  1. SIL=১ রেখে বামে শিফট করলে ডান প্রান্তে ১ ঢোকে; যেমন ১০১০ এক বামে শিফট করলে ০১০১ হয় (০ বেরোয়, ১ ঢোকে)
  1. তিনটি পোর্ট দরকার: দুটি পড়ার পোর্ট R0 ও R1-এর মান একসাথে পেতে এবং একটি লেখার পোর্ট ফলাফল R2-তে রাখতে
  1. ক. প্রিন্ট সারি: ফিফো উপযুক্ত কারণ প্রথমে পাঠানো ডকুমেন্ট প্রথমে ছাপা হওয়া উচিত; খ. ফাংশন কল: লাইফো উপযুক্ত কারণ সর্বশেষ ডাকা ফাংশন থেকে প্রথমে ফিরতে হয়; গ. নেটওয়ার্ক প্যাকেট: ফিফো উপযুক্ত কারণ প্যাকেটের ক্রম বজায় রাখা দরকার; ঘ. পূর্বাবস্থায় ফেরা: লাইফো উপযুক্ত কারণ সর্বশেষ কাজটি প্রথমে পূর্বাবস্থায় ফেরানো হয়

[[টেমপ্লেট:BOOKCATEGORY]]