অনুমিত ল্যাচগুলি খারাপ কেন?


22

আমার সংকলক আমার সংযোজক লুপগুলিতে ( always @(*), ভেরিলোগে) ইনফেরার্ড ল্যাচগুলির বিষয়ে অভিযোগ করে । আমাকে আরও বলা হয়েছিল যে অনুমিত ল্যাচগুলি পছন্দ করা উচিত।

অনুমিত ল্যাচগুলির সাথে ঠিক কী ভুল? তারা অবশ্যই কম্বিনেটর লুপগুলি সহজভাবে লেখার পক্ষে তৈরি করে।


আপনি যা করছেন তার একটি এইচডিএল উদাহরণ অন্তর্ভুক্ত করা ভাল হবে
শুক্র

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

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

উত্তর:


20

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

একটি এফপিজিএতে, আপনি চান আপনার যুক্তি পুরোপুরি সুসংগত হোক। এর অর্থ হ'ল সমস্ত স্টোরেজ উপাদান (যেমন এফএফ এর) সমস্তগুলি একক ঘড়ির উত্স থেকে আটকানো। সেই ঘড়ির জন্য অবিচ্ছিন্ন যে কোনও কিছু খুব সতর্কতার সাথে চিকিত্সা করা দরকার অন্যথায় সময় ত্রুটি ঘটবে।

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

ল্যাচগুলি যে সময়সীমার কারণ হতে পারে তার সবগুলিতে প্রবেশ করা এখানে ingেকে দেওয়া যায় না তার চেয়ে বেশি উপায়, তবে আমি আপনাকে একটি উদাহরণ দিই:

ধরা যাক যে আপনার কাছে একটি এসআর-লিচ রয়েছে এবং আপনি প্রতিবার একটি 8-বিট কাউন্টার একটি নির্দিষ্ট মান পৌঁছানোর জন্য সেট করে রাখতে চান। আমি ভেরিলোগ কোডটি কী হবে তা নিশ্চিত নই, তবে ভিএইচডিএলে কোডটি রয়েছে: <= '1' সেট করুন যখন গণনা = "11010010" অন্য '0'; সেট সেট সিগন্যালটি আমাদের এসআর-ল্যাচের সেট ইনপুটটিতে যায়।

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

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

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

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

অবশ্যই, কখনও কখনও ল্যাচগুলির প্রয়োজন হয়। এগুলি আপনাকে খুব কমই ব্যবহার করতে হবে, কেবল যখন একেবারে প্রয়োজন হয়, এবং তারপরে আপনাকে অবশ্যই লজিকটি ডিজাইন করতে হবে যাতে কোনও সমস্যা নেই।


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

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

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

13

একটি অনুমানক ল্যাচ কি করে?
সংযুক্তিযুক্ত যুক্তির জন্য, সার্কিটের আউটপুট কেবল ইনপুট একটি ফাংশন এবং কোনও স্মৃতি বা অভ্যন্তরীণ অবস্থা (ল্যাচ) থাকা উচিত নয়।

ভেরিলোগে, কোনও ভেরিয়েবল তার পূর্বের মানটি রাখে যদি এটি সর্বদা ব্লকে কোনও মান নির্ধারিত না হয় । এই বর্তমান মানটি সংরক্ষণ করতে একটি ল্যাচ তৈরি করতে হবে।

একটি অসম্পূর্ণ যদি-অন্য বিবৃতিটি ল্যাচগুলি তৈরি করে। একটি যদি 'অন্য বিবৃতি বিবেচনা করা হয় "অসম্পূর্ণ" যদি আউটপুট রাষ্ট্র সব সম্ভব ইনপুট অবস্থার জন্য সংজ্ঞায়িত করা হয় না। একই রকম একটি অসম্পূর্ণ কেস স্টেটমেন্ট বা কেস স্টেটমেন্টের ক্ষেত্রে যা ডিফল্ট নয়: আইটেম।

অনুমিত ল্যাচগুলি খারাপ কেন?
অনুমিত লেচগুলি একটি 'সতর্কতা চিহ্ন' হিসাবে পরিবেশন করতে পারে যে লজিক নকশাটি যেমন ইচ্ছা তেমন কার্যকর করা যায় নি। একটি গুরুত্বপূর্ণ যদি-অন্যথায় বা কেস স্টেটমেন্টটি ডিজাইনটি থেকে হারিয়ে যেতে পারে।

লেচগুলি সময় সংক্রান্ত সমস্যা এবং রেসের অবস্থার দিকে নিয়ে যেতে পারে। তারা সম্মিলিত প্রতিক্রিয়া হতে পারে - আউটপুটটিকে ইনপুটটিতে ফিরে যেতে - যা অবিশ্বাস্য হতে পারে।

অনুমানযুক্ত ল্যাচগুলি তৈরি এড়াতে:

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

পি। চু দ্বারা "ভেরিলোগ উদাহরণ দ্বারা এফপিজিএ প্রোটোটাইপিং" থেকে কিছু অংশ প্যারাফ্রেস করা হয়েছে


2
"এফপিজিএ প্রোটোটাইপিং বাই ভেরিলোগ উদাহরণগুলি" সংশ্লেষণের জন্য ব্যবহারিক ভারিলোগ শেখার জন্য একটি ভাল বই। এটিতে বেসিক কম্বিনেটরিয়াল স্টাফ থেকে বেসিক সিক্যুয়াল পর্যন্ত কয়েকটি ভাল উদাহরণ ডিজাইন রয়েছে যা ইউআআরটি, ভিজিএ, সফট কোর প্রসেসর (পিকোব্লেজ) এমনকি পং গেমের মতো দরকারী ডিজাইনের দিকে নিয়ে যায়। এটি বেসিক টেস্টবেঞ্চ এবং সিমুলেশনকেও অন্তর্ভুক্ত করে। @ র‌্যান্ডম্বলিউ, যদি আপনি ইতিমধ্যে এটি না পেয়ে থাকেন তবে আপনার একটি অনুলিপি গ্রহণ করা উচিত। আমি বিশ্বাস করি তিনি একটি ভিএইচডিএল সংস্করণও করেছিলেন।
অলি গ্লেজার

8

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

আমি ল্যাচগুলি ব্যবহার করার বিরুদ্ধে পরামর্শ দেব যদি না আপনি তাদের ব্যতীত একেবারে না করতে পারেন (উদাহরণস্বরূপ প্রয়োজনীয় সর্বাধিক ঘড়ির ফ্রিকোয়েন্সি পূরণের জন্য সময় নেওয়া) এবং দুর্ঘটনাক্রমে ল্যাচিংয়ের সম্ভাবনা কম হওয়ার জন্য কোডিং কৌশল ব্যবহার করুন।


6

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

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

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


0

ডিজাইনে ল্যাচ কীভাবে ধরবেন সে সম্পর্কে বিশদ সংক্ষেপে এই লিঙ্কে ব্যাখ্যা করা হয়েছে।

https://www.doulos.com/knowhow/fpga/latches/


1
EE.SE এ স্বাগতম! লিঙ্ক থেকে কিছু প্রাসঙ্গিক বিবরণ অন্তর্ভুক্ত করে আপনি নিজের উত্তরটি উন্নত করতে পারেন। এটি নিশ্চিত করে যে মূল পৃষ্ঠাটি অদৃশ্য হয়ে গেলেও আপনার উত্তরটি উচ্চমানের।
ডেভিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.