एक "कुंडी" एक "फ्लिप-फ्लॉप" से अलग है जिसमें एक एफएफ केवल एक घड़ी की धार के जवाब में अपना आउटपुट बदलता है। एक कुंडी एक घड़ी के अलावा कुछ के जवाब में अपना आउटपुट बदल सकती है। उदाहरण के लिए, SR-Latch में एक सेट और एक रीसेट इनपुट है और यदि उनमें से कोई भी सक्रिय है तो आउटपुट बदल सकता है। जहाँ SR-FF केवल एक सेट पर रीसेट करता है या एक घड़ी के किनारे पर भी रीसेट होता है।
एक FPGA में, आप चाहते हैं कि आपका तर्क पूरी तरह से समकालिक हो। मतलब कि सभी भंडारण तत्व (जैसे एफएफ) सभी एक ही घड़ी स्रोत से देखे जाते हैं। उस घड़ी के लिए जो कुछ भी अतुल्यकालिक है उसे बहुत सावधानी से व्यवहार करने की आवश्यकता है अन्यथा समय की त्रुटियां उत्पन्न होंगी।
एक कुंडी मूल रूप से एक अतुल्यकालिक भंडारण तत्व है। इसका कोई क्लॉक इनपुट नहीं है, और इस प्रकार इसे किसी भी घड़ी के साथ सिंक्रनाइज़ नहीं किया जा सकता है। मुझे ध्यान देना चाहिए कि एसिंक्रोनस रीसेट और रीसेट इनपुट के साथ एफएफ हैं, और इन्हें सामान्य बैचों के समान देखभाल के साथ इलाज किया जाना चाहिए।
सभी समय के मुद्दों पर जा रहे हैं कि latches का कारण हो सकता है कि यहाँ क्या कवर किया जा सकता है, लेकिन मैं आपको एक उदाहरण देता हूं:
मान लें कि आपके पास एक SR-Latch है, और आप चाहते हैं कि यह हर बार सेट हो जाए जब 8-बिट काउंटर एक निश्चित मूल्य तक पहुंचता है। मुझे यकीन नहीं है कि वेरिलॉग कोड क्या होगा, लेकिन वीएचडीएल में कोड है: सेट <= '1' जब गिनती = "11010010" बाकी '0'; वह सेट सिग्नल हमारे SR-Latch पर सेट इनपुट पर जाता है।
जो तर्क उत्पन्न होता है वह विशुद्ध रूप से दहनशील है; गेट्स, या गेट्स और इनवर्टर (या LUT) का मिश्रण। लेकिन उस दहनशील तर्क के माध्यम से संकेत पथ हमेशा सही नहीं होता है और "सेट" संकेत उस पर glitches हो सकता है। गेट्स के एक विशेष समूह के माध्यम से संकेत पथ दूसरे समूह की तुलना में अधिक समय ले सकता है, जिससे आउटपुट अंतिम स्थिति में बसने से पहले एक संक्षिप्त क्षण के लिए सक्रिय हो जाता है।
यह आउटपुट गड़बड़ हमारे SR-Latch को सेट कर सकता है, भले ही यह माना नहीं गया था। यदि हम SR-Latch से SR-FF पर स्विच करते हैं, तो उसी घड़ी को बंद किया जाता है जो काउंटर है, तो SR-FF राज्य बदलने से पहले एक पूरे घड़ी चक्र की प्रतीक्षा करेगा। संक्षेप में, यह देखने से पहले सेट सिग्नल के व्यवस्थित होने की प्रतीक्षा करेगा।
यदि सेट सिग्नल के लिए कॉम्बिनेटरियल लॉजिक के माध्यम से पथों को बस अलग-अलग तरीके से (अलग देरी के कारण) रूट किया जाता है, तो गड़बड़ व्यवहार भी बदल जाएगा। तर्क ठीक काम कर सकता है, लेकिन तब क्योंकि आपने कुछ पूरी तरह से असंबंधित इस तर्क को अलग तरीके से बदल दिया है और इसलिए बग पॉप हो जाता है। तापमान और वोल्टेज सिग्नल टाइमिंग को भी बदल देगा, और इस प्रकार गड़बड़ व्यवहार को बदल सकता है।
इस अनिश्चितता के समय में यही कारण है कि आप अपने तर्क में कुंडी से बचना चाहिए। FF उपयोग करने के लिए अधिक सुरक्षित हैं। यही कारण है कि आपका संकलक आपको कुंडी के बारे में चेतावनी दे रहा है, क्योंकि यह गलती से कुंडी बनाना आसान है और आप इसे वैसे भी नहीं चाहते हैं।
बेशक, कभी-कभी कुंडी की आवश्यकता होती है। आपको बस उन्हें बहुत कम ही उपयोग करना होगा, केवल जब पूरी तरह से आवश्यक हो, और तब आपको तर्क को सही ढंग से डिजाइन करना होगा ताकि कोई गड़बड़ न हो।