ডিজিটাল যুক্তিতে সেট বিটের সংখ্যা পান


9

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

8 টি ইনপুট দেওয়া হয়েছে, কতগুলি সেট করা আছে তা নির্ধারণের সহজতম উপায় কী? বিশেষত আমার এমন একটি আউটপুট প্রয়োজন যা 2 টি সেট হয়ে যাওয়ার সময় উচ্চ হয় এবং 3 সেট হয়ে গেলে একটি আউটপুট উচ্চ হয়।

আমার মূল ধারণাটিতে এখন একটি পিআইএসও শিফট রেজিস্টার, একটি কাউন্টার এবং একটি 3: 8 ডিকোডার রয়েছে তবে এগুলি চালনা করার জন্য আমার বেশিরভাগই একটি মাইক্রোকন্ট্রোলারের প্রয়োজন। এটি কোনও ফাংশনের জটিল বলে মনে হচ্ছে না। হতে পারে একটি 256x2 রম পাশাপাশি কাজ করবে, তবে আমার অনুসন্ধানগুলি সেই ধরণের কোনও অংশই সরিয়ে দেয়নি।

আমি জানি যে 10 আইও সহ যে কোনও ছবি এই তুচ্ছভাবে করতে পারে, তবে আমি এটিকে যথাসম্ভবভাবে ন্যূনতমভাবে প্রয়োগ করতে চাই।

উত্তর:


13

আপনি দ্রুত বিট কাউন্টিং আলোকিতকরণের বিভিন্ন অ্যালগরিদমগুলি পেতে পারেন । শেষ দুটি: নিফ্টি সমান্তরাল গণনা এবং এমআইটি হ্যাকম গণনাটি গেটে রূপান্তর করা সহজ হতে পারে। এটি কীভাবে কাজ করে তার একটি ভাল ব্যাখ্যার জন্য এই পৃষ্ঠাটি দেখুন ।

আপনি গেটস হার্ডওয়্যার ব্যবহার করে এটি করতে পারেন। একসাথে জোড়া বিট যুক্ত করতে চারটি 1-বিট অ্যাডারের ব্যবহার করুন। এটি আপনাকে চারটি 3-বিট নম্বর দেয়। এগুলিকে দুটি 3-বিট সংযোজক ব্যবহার করে জোড়ায় যুক্ত করুন। এটি আপনাকে একক 4-বিট সংযোজনকারী ব্যবহার করে দুটি 4-বিট নম্বর দেয়। এটি আপনাকে 5-বিট মান সহ ফেলে দেয় তবে আপনি শীর্ষ বিটটি উপেক্ষা করতে পারেন। তারপরে 2 এবং 3 এর মান পরীক্ষার জন্য দুটি 4-বিট তুলক ব্যবহার করুন।

ন্যূনতম অংশ গণনার জন্য, কেন এটি অ্যানালগ নয়?

উপরে একটি প্রতিরোধক সহ একটি ভোল্টেজ বিভাজক তৈরি করুন এবং আপনার 8 টি ইনপুট সমান্তরালভাবে 8 প্রতিরোধকের দ্বারা নীচে সংযুক্ত। তারপরে 2 বা 3 বিট উত্পাদিত ভোল্টেজের স্তর সনাক্ত করতে কেবল দুটি তুলনামূলক সেট ব্যবহার করুন। এটি কেবল 6 টি অংশ:

বিট কাউন্ট ডিটেক্টর

8-রোধকারী নেটওয়ার্ক 0v (0-বিট সেট জন্য) থেকে 5v (8 বিটের সেটগুলির জন্য) এর মধ্যে একটি ভোল্টেজ তৈরি করবে। 2 বিট 0.5v উত্পাদন করবে। 3 বিট 1.56v উত্পাদন করবে।

  • 0 বা 1 বিটের সাহায্যে আউটপুট 00 হবে।
  • 2 বা 3 বিট সহ, আউটপুট 01 হবে।
  • 4 বা ততোধিক বিট সহ, আউটপুট 11 হবে।

যোগ করা হয়েছে:

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

কনওয়ের গেম লাইফ সার্কিট 2

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


4
আপনার উত্তরটি "একটি মাইক্রোকন্ট্রোলার ব্যবহার করুন" না বলেই +1 । এটি প্রায় কাছাকাছি ডিফল্ট মোড বলে মনে হচ্ছে।
কনার ওল্ফ

@ ফেকনাম: প্রথম উল্লেখটি হল সফ্টওয়্যার সমাধানগুলি solutions অবশ্যই আপনাকে তাদের একটি মাইক্রোকন্ট্রোলারে প্রয়োগ করতে হবে না, আপনি একটি সুপার কম্পিউটারও ব্যবহার করতে পারেন :)
ফেডেরিকো রুসো

@ ফেডেরিকো রুশো - আমি সফ্টওয়্যার সমাধানগুলিতে সেগুলি উল্লেখ করেছি যা সেগুলি হার্ডওয়ারে কীভাবে এটি প্রয়োগ করতে পারে সে সম্পর্কে কিছুটা অন্তর্দৃষ্টি দেয়।
রকেটম্যাগনেট

3
সম্ভবত: রকেটম্যাগনেটের সার্কিটের কেন্দ্রীয় কোষের বর্তমান অবস্থা থেকে ওপ-অ্যাম্প "+" সামিঙ্ক বিন্দুতে 20 কোহিমের 9 তম "সামিং প্রতিরোধক" যুক্ত করুন - যেমন, কেন্দ্রীয় কোষকে 1 ও 8 প্রতিবেশী কোষকে একটি ওজন দিন তার ওজন ২. তারপরে ভোল্টেজ বিভাজকটিকে এতক্ষণে চিহ্নিত করুন "জন্ম" (3 জীবিত প্রতিবেশী সহ কেন্দ্রীয় মৃত কোষ; যোগফল = 6) এবং "বেঁচে থাকুন" (2 বা 3 লাইভ প্রতিবেশীর সাথে কেন্দ্রীয় মৃত কোষ বেঁচে থাকবে = যোগফল = 5 বা 7) "01" এর আউটপুট দেয়; এবং অন্যান্য সমস্ত ক্ষেত্রে (যেখানে কেন্দ্রীয় ঘরটি মারা যায় বা মৃত থাকে) "00" বা "11" এর আউটপুট দেয়। তারপরে একটি এক্সওআর গেট কেন্দ্রীয় কক্ষের পরবর্তী অবস্থা দেয়।
ডেভিড্যাকারি

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

6

ন্যূনতম কী? মাইক্রোকন্ট্রোলার মাত্র 1 অংশ, এবং একটি সর্বনিম্ন বিলম্ব ফলাফলের (<1 তৈরী করতে পারেμগুলি)। ডিজিটিকে ৪৫ সেন্টে এটিটিইন ২০ হ'ল সস্তার মাইক্রোকন্ট্রোলার I

দেখার টেবিলটিও মাত্র 1 অংশ এবং মাইক্রোকন্ট্রোলারের চেয়ে দ্রুত। সমান্তরাল EEPROM সম্পর্কে ভুলে যান, তারা ব্যয়বহুল। বাইট-ওয়াইড সমান্তরাল ফ্ল্যাশ ব্যবহার করুন । এটি একটি 512 কেবাইট, এটি আপনার প্রয়োজনের চেয়ে 2000 গুণ বেশি তবে এটি সস্তার সমাধান (1 ডলার)। এবং আপনি একই দামের জন্য আরও 6 টি 1-বিট ফাংশন যুক্ত করতে পারেন।

আপনি একটি সিপিএলডিও ব্যবহার করতে পারেন । এক দীর্ঘ এসওপি (যোগফলের পণ্য) বিবৃতি হিসাবে ভিএইচডিএল বা ভেরিলোগে ফাংশনটি লিখুন এবং সংশ্লেষকে যুক্তি তৈরি করতে দিন।

শিফট রেজিস্টার ঠিক আছে যদি আপনি ফলাফলের জন্য অপেক্ষা করতে পারেন হয়; এটি সবচেয়ে ধীর সমাধান।

অবশেষে, আপনি এটি লজিক গেটস দিয়ে করতে পারেন , তবে আপনি সমস্ত বেসিক যেতে চাইলে আপনি এসওপিকে তার ন্যূনতম ফর্মটি হ্রাস করতে প্রচুর সময় ব্যয় করবেন। রকেটমেগনেট অ্যাডার্স ব্যবহার করে সঠিক ধারণা রাখে, তবে তার সংখ্যাগুলি বন্ধ রয়েছে: 1 বিট অর্ধ সংযোজক 3 টি নয়, 2 বিট আউট দেয় So বিট ফলাফল। 4-বিট ফলাফল পেতে একটি 3-বিট অর্ধযোজক ব্যবহার করুন। 1-বিট পূর্ণ সংযোজনকারী ব্যবহার করে আপনাকে কেবল একটি 2-বিট অ্যাডারের প্রয়োজন।


1

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

টেম্পল [x, y] = উত্স [x-1, y] + উত্স [x, y] + উত্স [x + 1, y] 'তিন বিট সংখ্যার দুই-বিট যোগফল
উত্স [x, y] = LiveDeadFunc (উত্স [x, y], টেম্পল [x, y-1] + টেম্পাল [x, y] + টেম্পাল [x, y + 1])

অ্যারেতে tempVal[x,y]প্রতি ঘরে দুটি বিট থাকে; পরের ক্রিয়াকলাপে এই জাতীয় তিনটি সংখ্যার যোগফল মিলে 0-9 মান নির্ধারণ করে (যদিও চারটি অতিক্রম করে সমস্ত মান সমান হয়), যা পরবর্তী প্রজন্মের জন্য একক-বিট লাইভ / ডেড স্থিতি গণনা করতে ব্যবহার করা যেতে পারে।

বিটিডাব্লু, দ্বিতীয় পর্যায়ে পাটিগণিত যোগফলের মূল্য এবং মান পরীক্ষা করার বিকল্পটি হ'ল টেম্পাল [x, y] কে এক-গরম প্রতিনিধিত্বতে রূপান্তরিত করা, এবং তারপরে স্পষ্টভাবে নয়টি মানের সংমিশ্রণের মধ্যে একটি যা তিনটি ফল দেয় ঘর বা বারোজনের মধ্যে একটি যা চারটি উত্পন্ন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.