FPGA में फ्लिप-फ्लॉप से ​​बेहतर लैच का उपयोग कब किया जाता है जो दोनों का समर्थन करता है?


20

प्रश्न:

FPGA में फ्लिप-फ्लॉप से ​​बेहतर लैच का उपयोग कब किया जाता है जो दोनों का समर्थन करता है?

पृष्ठभूमि:

यह एक प्रसिद्ध सिद्धांत है कि FPGAs में स्तर-संवेदनशील पारदर्शी कुंडी से बचा जाना चाहिए, और किनारे-संवेदनशील फ्लिप-फ्लॉप का विशेष रूप से उपयोग किया जाना चाहिए। अधिकांश FPGA आर्किटेक्चर देशी रूप से लैच और फ्लिप-फ्लॉप दोनों का समर्थन करते हैं।

सामान्य सलाह - यहां तक ​​कि FPGA विक्रेताओं से - कुंडी के लिए बाहर देखना है, या कभी भी कुंडी का उपयोग नहीं करना है, आदि इस सलाह के बहुत अच्छे कारण हैं, जिनका विवरण सभी अच्छी तरह से जानते हैं। हालांकि, अधिकांश सलाह को कहा जाता है, "जब तक आपको पता न हो कि आपको उनकी आवश्यकता है, तब तक कुंडी का उपयोग न करें "।

मैं एक अनुभवी FPGA डिजाइनर हूं, और हर बार जब मुझे लगा कि मुझे पता है कि मुझे एक कुंडी की आवश्यकता है, तो जल्दी से एहसास हुआ कि फ्लिप-फ्लॉप के साथ इसे करने का एक बेहतर तरीका था। मैं उदाहरणों को सुनने में दिलचस्पी रखता हूं जब कुंडी का उपयोग करना असमान रूप से बेहतर होता है।

महत्वपूर्ण लेख:

Latches बनाम फ्लिप-फ्लॉप अक्सर लोगों को ऊपर उठ जाता है। मुझे केवल सवाल के जवाब में दिलचस्पी है। Latches और फ्लिप-फ्लॉप के बीच के अंतर को समझाते हुए जवाब, latches का उपयोग न करने के कारणों का विस्तार करते हुए, यह देखते हुए कि फ्लिप-फ्लॉप, latches से बेहतर क्यों होते हैं, गैर-FPGA लक्ष्य, आदि में कैसे latches बेहतर होते हैं, इस बारे में बात करना पूरी तरह से विषय होगा।


जब आप FPGA का उपयोग कर रहे हैं तो एक मौजूदा सर्किट की नक़ल करता है जो लैच का उपयोग करता है?
मैजेंको

जवाबों:


11

आपका प्रश्न मूल रूप से है, "जब आप जानते हैं कि आपको कुंडी की आवश्यकता है?" जो, जैसा कि आपने निहित किया है, एक व्यक्तिपरक प्रश्न है। उत्तर के रूप में तथ्य से अधिक राय की अपेक्षा करें। कहा जा रहा है, यहाँ मेरी राय है:

मैं, आप की तरह, अक्सर फ्लिप-फ्लॉप का उपयोग करने के लिए बेहतर तरीके ढूंढता हूं ताकि इस प्रकार कुंडी से बचा जा सके। परिणामस्वरूप तर्क अक्सर अधिक सुरुचिपूर्ण और मजबूत होता है। लेकिन कई बार ऐसा भी होता है कि कुंडी से बचने के लिए तर्क पर मेरा पर्याप्त नियंत्रण नहीं होता है। उदाहरण के लिए, मैं एक प्रोसेसर बस में हस्तक्षेप कर सकता हूं जिसे वांछित विनिर्देशों को पूरा करने के लिए लैच की आवश्यकता होती है। चूंकि मैं सीपीयू या बस को फिर से डिज़ाइन नहीं कर सकता, इसलिए मैं कुंडी के साथ फंस गया हूं।

पिछले 13+ वर्षों में, केवल वही समय है जब मुझे कुंडी की आवश्यकता है।


2
जवाब के लिए धन्यवाद। मैं मानसिक रूप से आपकी प्रतिक्रिया को "अनिवार्य बैकवर्ड संगतता" के तहत दर्ज कर रहा हूं, जो पूरी तरह से उचित है। =)
wjl

8

फ्लिप फ्लॉप अक्सर कुंडी के लिए बेहतर होते हैं क्योंकि उनमें केवल चार दौड़ स्थितियाँ / बाधाएँ होती हैं:

  1. डेटा इनपुट में परिवर्तन और निम्नलिखित सक्रिय घड़ी बढ़त के बीच सेटअप समय, और
  2. क्लॉक एज और डेटा इनपुट में अगले परिवर्तन के बीच का समय;
  3. न्यूनतम सक्रिय घड़ी पल्स अवधि;
  4. न्यूनतम निष्क्रिय घड़ी पल्स अवधि।

यदि उन बाधाओं को पूरा किया जाता है, तो एक फ्लिप फ्लॉप का उत्पादन पूरी तरह से "साफ" होगा और जीत से मुक्त होगा। इसके अलावा, एक फ्लिप फ्लॉप का समय एक अर्थ में "डिजिटल" है: बशर्ते समय की कमी पूरी हो, आउटपुट केवल एक सक्रिय घड़ी बढ़त के बाद एक पूर्वानुमान खिड़की के भीतर बदल जाएगा, इनपुट समय की परवाह किए बिना। फ्लिप फ्लॉप के कैस्केडिंग का प्रभाव इस प्रकार अनुमानित है, गहराई की परवाह किए बिना। इसके विपरीत, एक कुंडी उत्पादन का समय बहुत अधिक "एनालॉग" है। सिग्नल को एक कुंडी में ले जाने से सिग्नल बाहर आने में देरी हो सकती है। यहां तक ​​कि अगर कुंडी की अपनी बाधाओं को पूरा किया जाता है, तो यह देरी समस्याओं का कारण बन सकती है।

मैं उन मामलों में लैच का उपयोग करने की सलाह दूंगा जहां एक चिप के आउटपुट के लिए आवश्यक व्यवहार सबसे उचित रूप से एक द्वारा मॉडलिंग किया जा सकता है। उदाहरण के लिए, किसी के हार्डवेयर को सीरियल-टू-पैरेलल कन्वर्टर के रूप में व्यवहार करना चाहिए, जहां फ्रेम सिंक के बाद पहली घड़ी के बढ़ते और गिरते किनारों के बीच, पहला आउटपुट इनपुट को ट्रैक करता है; दूसरी घड़ी के बढ़ते और गिरते किनारों के बीच, दूसरा आउटपुट इनपुट को ट्रैक करता है, आदि एक फ्लिप फ्लॉप और विशुद्ध रूप से कॉम्बीनेटरियल लॉजिक का उपयोग करके एक सर्किट को डिजाइन कर सकता है, जो इस तरह के व्यवहार को प्रदान करेगा, बशर्ते समय की कमी पूरी हुई, लेकिन ऐसा सर्किट अधिक होगा एक का उपयोग कर से अधिक जटिल, और अगर समय की कमी को पूरा नहीं किया गया, तो अजीब व्यवहार करने के लिए अधिक प्रवण होगा।


3
"Latches और फ्लिप-फ्लॉप के बीच अंतर को समझाते हुए जवाब, latches का उपयोग न करने के कारणों का खुलासा करते हुए, यह देखते हुए कि फ्लिप-फ्लॉप, latches से बेहतर क्यों हैं, इस बारे में बात करते हुए कि गैर-FPGO लक्ष्य, आदि में कैसे latches बेहतर हैं, पूरी तरह से बंद विषय होगा । "
माजेंको

@ Supercat आपके प्रश्न के कम से कम दूसरे भाग में प्रश्न का प्रासंगिक उत्तर है। =) धन्यवाद।
wjl

1
@ माजेंको: शायद मुझे "बेहतर" के बजाय "उपयोग करने में आसान" कहना चाहिए था; मेरा तर्क यह नहीं था कि जब भी संभव हो, किसी को भी कुंडी से बचना चाहिए, बल्कि यह सुझाव देना चाहिए कि कुंडी का उपयोग करने वाले को जटिलताओं के बारे में पता होना चाहिए।
सुपरकैट

@ सुपरकैट, क्या आप एक छोटी लहर के साथ अपने उदाहरण को स्पष्ट कर सकते हैं?
फिलिप

1

अपने काम में कभी-कभी मुझे FPGA में कुंडी लगाना पड़ता था, लेकिन यह हमेशा एक "अंतिम उपाय" उपाय था। विशिष्ट अनुप्रयोगों में अतुल्यकालिक इंटरफेस या बसों के साथ कनेक्शन शामिल थे, अगर मैं उचित नमूनाकरण और बस और नियंत्रण संकेतों के सिंक्रनाइज़ेशन को सुनिश्चित करने के लिए पर्याप्त गति के साथ एक घड़ी का आश्वासन नहीं दे सकता था।

मुख्य समस्या यह है कि कुंडी एक अतुल्यकालिक ब्लॉक है। इसलिए आपको यह सुनिश्चित करना चाहिए, कि कुंडी के लिए इनपुट सिग्नल उत्पन्न करने वाले कॉम्बिनेशन फ़ंक्शंस रेस- फ़्री हैं। अन्यथा वे ग्लिच उत्पन्न कर सकते हैं , जो आपके सिस्टम में खतरों का कारण बन सकता है।

दौड़ से बचने के लिए, आपको इन संयोजन कार्यों को एक विशेष निरर्थक तरीके से लागू करना होगा। दुर्भाग्य से (इस विशेष मामले में ;-), अन्यथा यह एक बहुत अच्छी संपत्ति है) FPGA संश्लेषण उपकरण आपके डिजाइन को सभी अतिरेक को दूर करने का अनुकूलन करते हैं। इसलिए यदि आप FPGA में एक कुंडी को लागू करना चाहते हैं, तो आपको इसे "हाथ से" लागू करना होगा, और अनुकूलन से बचाव करना होगा (जैसे VHDL में आपको अपनी कुंडी में आंतरिक रूप से उपयोग किए जाने वाले संकेतों के लिए "सही" रखने के लिए विशेषता सेट करने की आवश्यकता हो सकती है) ।


-1 ओपी ने विशेष रूप से इस बारे में पूछा कि आपको लैच का उपयोग कब करना चाहिए , और विशेष रूप से पाठकों से अधिक कारण बताने के लिए कहा कि लैच का उपयोग नहीं किया जाना चाहिए
जो हस

-1

समय के संदर्भ में:

यदि हम एक डिजाइन में फ्लिप फ्लॉप का उपयोग कर रहे हैं तो प्रदर्शन सबसे लंबे समय तक चलने वाले मार्ग देरी पर निर्भर करता है।

अगर हम फ्लिप फ्लॉप के स्थान पर लैच का उपयोग करते हैं तो हम अगले चरणों में छोटे पथ देरी से उधार लेकर सबसे लंबे कॉम्बो पथ देरी की भरपाई कर सकते हैं। इससे हम देरी को कम कर सकते हैं और डिजाइन के प्रदर्शन को बढ़ा सकते हैं।


3
-1। बेहतर है कि इसे एक मल्टीस्टोरी अवरोध के साथ ठीक से विश्लेषण करें और "एसिंक्स" हिस्से को दो चक्रों पर चलाने की अनुमति दें। उदाहरण के लिए देखें पेज 7-30 ऑफ ट्रांसफॉर्मिंग.हॉक
लिटरेचर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.