रीसेट: सिंक्रोनस बनाम एसिंक्रोनस


15

मैं सालों से fpgas के साथ काम कर रहा हूं, और हमेशा अपने सर्किट के हर हिस्से (जो इसकी ज़रूरत है) के लिए सिंक्रोनस रिसेट्स का इस्तेमाल करता हूं। यह दी गई घड़ी के चक्र में सर्किट को विश्व स्तर पर रीसेट करने में मदद करता है।

हालाँकि, मुझे बताया गया था कि ASIC सर्किट में, लोग हर जगह अतुल्यकालिक रीसेट का उपयोग करते हैं। मैं सोच रहा हूँ क्यों, और अगर यह कुछ fpga डिजाइनों में भी मामला है। मुझे पेशेवर राय सुनना अच्छा लगेगा।

धन्यवाद

जवाबों:


11

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

आप एक रीसेट सिंक्रोनाइज़र (दो FFs) का उपयोग बाकी डिज़ाइनों के लिए तैयार आउटपुट के साथ करेंगे:

रीसेट

कुछ चर्चाएँ:
Async और Sync रीसेट
पत्र सिंक बनाम Async रीसेट पर


लैच के रिसेट सिग्नल को रिलीज करने और उसकी घड़ी की तुलना डेटा सेटअप के लिए करने वालों के बीच सेटअप / होल्ड समय की आवश्यकताएं कैसे होती हैं? मुझे और अधिक आरामदायक महसूस होगा यदि सिस्टम में लाचेस ने निष्क्रिय घड़ी के किनारे पर रीसेट सिग्नल के अंत को देखा। एक सक्रिय घड़ी के किनारे पर एक async रीसेट की रिहाई उस चक्र को प्रभावित नहीं करने की गारंटी होगी जहां यह होता है?
सुपरकैट

नहीं, रिसेट रिकवरी समय की आवश्यकता (जैसे सेटअप / होल्ड) के कारण एसिंक्रोनसली रीसेट की रिहाई को साफ होने की गारंटी नहीं है। यही कारण है कि आप रीसेट को सिंक्रोनाइज़ करेंगे।
ओली ग्लेसर

मेरा सवाल यह है कि क्या latch1 ने उसी घड़ी के किनारे पर रीसेट सिग्नल फीडिंग latch2 जारी किया है, जैसा कि latch2 उपयोग कर रहा है, पूरी तरह से कोषेर है, अर्थात क्या latch1 की घड़ी से इसके आउटपुट तक का न्यूनतम प्रसार समय latch2 के रीसेट इनपुट की आवश्यकता को पूरा करेगा। BTW, क्या आप ऊपर मेरे जवाब के बारे में सोचते हैं? आपके द्वारा खींचा गया सर्किट रीसेट लाइन पर दालों को चलाने के लिए थोड़ी प्रतिरक्षा प्रदान करता है, जब लगभग कुल प्रतिरक्षा संभव होना चाहिए।
सुपरकैट

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

क्षमा करें, मुझे लगता है कि मैं देख रहा हूं कि अब आपका क्या मतलब है। यदि आप सिंक्रोनाइजर से सिस्टम एफएफ रीसेट में दूसरी कुंडी से आउटपुट का मतलब है, तो मेरी समझ यह है कि रीसेट पुनर्प्राप्ति समय आमतौर पर समान एफएफ के लिए डेटा सेटअप समय से कम है, इसलिए यह ठीक होना चाहिए। मैं रन की गई दालों के बारे में सहमत हूं, यह उन लोगों के लिए कोई प्रतिरक्षा नहीं प्रदान करता है जैसे आप सुझाव देते हैं कि आप इसे लागू कर रहे हैं।
ओली ग्लेसर

7

मैं कुछ कारणों (किसी विशेष क्रम में) के लिए एक तुल्यकालिक रीसेट पर एक अतुल्यकालिक रीसेट का पक्ष लूंगा:

  • फ्लिप-फ्लॉप के लिए एक अतुल्यकालिक सेट या रीसेट फ़ंक्शन को जोड़ने से संभवतः एकल कक्ष में तर्क के एकीकरण के कारण एक छोटे से डिज़ाइन का परिणाम होगा (बनाम इनपुट पर AND गेट के साथ एक गैर-पुन: प्रयोज्य फ्लिप-फ्लॉप)
  • कम फाटकों पर कम भीड़भाड़ वाली तारों / जगह और मार्ग में परिणाम होता है
  • यह चिप को रीसेट करने के लिए एक सरल / आसान प्रक्रिया है (अधिक उपयोगकर्ता / परीक्षण के अनुकूल)
  • रीसेट पथ को अतुल्यकालिक बनाना रीसेट सिग्नल के स्थैतिक समय विश्लेषण विभाजन को सरल करता है
  • एक तुल्यकालिक रीसेट डेटा प्रवाह महत्वपूर्ण पथ में अतिरिक्त तर्क जोड़ देगा, और सेटअप को पूरा करने और आवश्यकताओं को पूरा करने के लिए इसे और अधिक कठिन बना देगा
  • जबकि FPGA में इनपुट पर 4-6 इनपुट मनमाना लॉजिक फ़ंक्शन होता है, आप प्रत्येक इनपुट के लिए ASIC (गेट पर अधिक इनपुट = बड़ा गेट; जटिल कार्य = कई गेट) में प्रत्येक इनपुट के लिए "भुगतान" करते हैं;

अंततः मुझे नहीं लगता कि इनमें से कोई भी मुद्दा शो-स्टॉपर्स है, लेकिन वे निश्चित रूप से ASICs पर अतुल्यकालिक रीसेट की मजबूत प्राथमिकता में योगदान करेंगे।


2
अतुल्यकालिक रीसेट को किसी के आंतरिक तर्क में लाने के साथ एक खतरा यह है कि रीसेट इनपुट पर एक रन पल्स किसी भी और सभी तरह के कहर को मिटा सकता है। यदि कोई किसी की सर्किटरी को अतुल्यकालिक रूप से रीसेट करने की अनुमति देने जा रहा है, तो किसी को इनपुट सर्किटरी को इस तरह से डिजाइन करना चाहिए ताकि यह सुनिश्चित हो सके कि किसी भी प्रकार की रीसेट पल्स संभवतः किसी भी प्रकार के अतुल्यकालिक रीसेट को आंतरिक सर्किटरी तक पहुंचने का कारण बनने की गारंटी होगी। एक तुल्यकालिक रीसेट होने के लिए।
सुपरकैट

4

अतुल्यकालिक रीसेट के साथ सिंक्रोनस डी-अभिकथन बहुत अच्छी तरह से काम करता है। जैसा कि ऊपर उल्लेख किया गया है, async रीसेट फ़्लॉप छोटे होते हैं और रीसेट सुनिश्चित करने के लिए एक घड़ी सक्रिय की आवश्यकता नहीं होती है, इसलिए आप केवल पावर और एकल हार्ड वायर्ड पिन या पावर के साथ एक हिस्से को रीसेट (आमतौर पर ज्ञात, कम बिजली की स्थिति) में बाध्य कर सकते हैं- रीसेट पर।

यदि आप वास्तव में इसे खोदना चाहते हैं, तो आप इस पर कमिंग के कागजात पढ़ सकते हैं, विशेष रूप से:

http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf

चीयर्स।


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

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

कमिंग्स का कहना है कि गड़बड़ फिल्टर "बदसूरत हैं।" मैंने जिस IC पर काम किया है, उसमें मैंने कभी नहीं देखा। हम इन समस्याओं से बचने के लिए सभी इनपुट पैड कोशिकाओं में श्मिट-ट्रिगर्स का उपयोग करते हैं, और मेरे द्वारा उपयोग किए जाने वाले पावर-ऑन रीसेट इसी तरह साफ किए जाते हैं। वैसे, रीसेट लाइन में किन मामलों में आपकी दाल कम होगी? मैंने इसे कुछ स्कैन परीक्षण परिदृश्यों में देखा है, लेकिन वे अभी भी घड़ी के चक्र के क्रम पर हैं, न कि उद्देश्यपूर्ण लघु दालों के। आपकी अंतिम टिप्पणी पर, रीसेट पर डी / उल्लंघन से बचने के लिए रीसेट के डेज़ारेशन को घड़ी से सिंक्रनाइज़ किया जाना चाहिए, और एक ही किनारे पर सभी फ्लॉप निकास रीसेट सुनिश्चित करें।
मिश्रित_सिग्नल_ल्ड

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

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

2

एक अन्य दृष्टिकोण, जो 'async assert / सिंक रिलीज' दृष्टिकोण से भी अधिक सुरक्षित प्रतीत होगा, एक अतुल्यकालिक रीसेट डिटेक्टर होगा (जितना कि कहीं और वर्णित किया गया है, अतुल्यकालिक 'assert' और सिंक्रोनस 'रिलीज़'), लेकिन से आउटपुट है उस गेट पर कोई भी बाहरी रूप से सामना करने वाला I / O डिवाइस बिना किसी भी तरह के अतुल्यकालिक रूप से रीसेट किए बिना (डिटेक्टर में कुंडी के अलावा)। यदि कोई दो अतुल्यकालिक रीसेट डिटेक्टरों का उपयोग करता है, एक I / O लाइनों के लिए और एक सिंक्रोनस रीसेट डिटेक्टर को खिलाने के लिए, और यदि कोई I / O लाइनों के लिए डिज़ाइन करता है, तो यह केवल रीसेट दालों द्वारा ट्रिप किया जाएगा जो मज़बूती से ध्वनि के लिए पर्याप्त हैं मुख्य डिटेक्टर यात्रा, एक भी मामलों में आउटपुट को गड़बड़ करने से बच सकता है जो सीपीयू को रीसेट नहीं करने जा रहे हैं। ध्यान दें कि यदि कोई ऐसा करता है, तो एक वैध-लंबाई रीसेट पल्स आउटपुट को असिंक्रोनस रूप से रीसेट करेगा,

एक और बात पर विचार करना है कि सिस्टम में अक्सर कुछ रजिस्टर होते हैं जिन्हें रीसेट से प्रभावित नहीं होना चाहिए। यदि एक एसिंक्रोनस रिसेट सर्किटरी को हिट कर सकता है जो उन रजिस्टरों को लिखता है, तो रिसेट पल्स के लिए यह संभव होगा जो उन रजिस्टरों को क्लोब करने के लिए गलत समय पर आता है, भले ही वह एक साफ (नॉन-रनट) पल्स हो। उदाहरण के लिए, यदि कोड 1111 को संबोधित करने के लिए लिखने की कोशिश कर रहा है और एक घड़ी के पल्स के ठीक पहले आने वाला एक एसिंक्स रीसेट पता के एक पते को लचकता है जैसे ही घड़ी की नब्ज आ रही है, तो यह एक गलत लिखने का कारण बन सकता है 1110 पता। पता लगाने से पहले कि रजिस्टर लिखी गई थी, यह सुनिश्चित करने के लिए कोई भी व्यक्ति कई आंतरिक रीसेट लाइनों का उपयोग कर सकता है।

BTW, यहाँ एक सर्किट अवधारणा को दर्शाता है। निचले-बाएँ कोने के पास रीसेट के लिए दो तर्क इनपुट हैं। एक "क्लीन" रीसेट पल्स उत्पन्न करेगा, और दूसरा वास्तव में एक icky उत्पन्न करेगा। पीला एलईडी मुख्य सिस्टम रीसेट को इंगित करता है; सियान एलईडी I / O सक्षम को इंगित करता है। एक साफ रीसेट को हिट करने से आउटपुट का तत्काल "रीसेट" होगा; एक icky रीसेट मारना या तो आउटपुट के विलंबित रीसेट का कारण होगा, या उन्हें अप्रभावित छोड़ देगा (सिम्युलेटर में, 'उन्हें अप्रभावित छोड़ दें' मामले का कारण नहीं है)।


मुझे लगता है कि यह एक अच्छा विचार है। रीसेट की तरह प्रतीत होता है सरल चीजों के साथ ग्रे के इतने सारे रंगों।
ओली ग्लेसर

0

एक अनुभवी इंजीनियर के रूप में ( FPGA डिजाइन और एम्बेडेड सिस्टम के साथ 3 साल ), मैं आपको बता रहा हूं कि आपको FPGA की डेटशीट और उपयोगकर्ता गाइड की जांच करने की आवश्यकता है। इसका आसान जवाब नहीं है।

आपको अपना डिजाइन FITs FPGA टाइप करना होगा जिसे आपने चुना है। कुछ FPGAs में FlipFlops हैं जो Async रीसेट के लिए डिज़ाइन किए गए थे, कुछ सिंक रीसेट के लिए डिज़ाइन किए गए हैं।

आपको किस प्रकार के FlipFlops के लिए FPGA उपयोगकर्ता गाइड की जांच करनी है।

यदि आप अपने कोड को FPGA प्राइमेटीस प्रकार के साथ मेल खाते हैं, तो इंप्लॉई / मैपर आपके रिसेट के लिए डेडिकेटेड रूट ( कोड ज्यादा फ्रीक में चला सकता है और कम जगह लेता है ) को चुन सकता है।

आपका डिज़ाइन किसी भी स्थिति में काम करेगा , लेकिन कभी-कभी FPGA इंप्लॉयर आपके तर्क कार्य ( अधिक तर्क जोड़ता है ) को बनाने के लिए अपने रास्ते से बाहर चला जाएगा , लेकिन यह कम अधिकतम आवृत्ति और / या अधिक FPGA रेज़ोर्स का कारण बनेगा।

उदाहरण: Xilinx के ZYNQ ( FPGA को सिंक किए गए रीसेट के लिए डिज़ाइन किया गया है - प्राइमेटीज़ उपयोगकर्ता गाइड देखें ) के साथ परीक्षण किया गयाएसिंक्रोनस से सिंक में रीसेट बदलकर , अधिकतम स्थिर आवृत्ति 220MHz से 258MHz हो गई और इसलिए मैंने अपनी आवृत्ति मार्जिन को पार कर लिया।

इसके अलावा, मैं यह भी जोड़ सकता हूं कि कार्यान्वयनकर्ता को यह पता नहीं है कि एक घड़ी और रीसेट सिग्नल क्या है। यह ORDER द्वारा सिग्नल को फ्लिपफ्लॉप पिन प्रदान करता है, नाम से नहीं। इसलिए कुछ FPGAs में, कार्यान्वयनकर्ता घड़ी के रूप में VHDL में "प्रक्रिया () शुरू होने" के बाद पहला संकेत चुनता है, कुछ में रीसेट के रूप में, जो FPGA को लागू करने वाले के लिए निर्धारित होता है।


मैं आपके कथन से असहमत हूं कि "कार्यान्वयनकर्ता को यह नहीं पता है कि एक घड़ी और रीसेट सिग्नल क्या है"। संश्लेषण उपकरण अनुमान लगाते हैं कि कौन सी घड़ी है और जो कैसे उपयोग किया जाता है, उसके द्वारा रीसेट होती है। क्लॉक सिग्नल का उपयोग एज स्पेसिफिकेशन के साथ किया जाता है, रीसेट नहीं है। इसके अलावा, किसी भी फ्लिप-फ्लॉप का उपयोग एक सिंक्रोनस रीसेट स्पेसिफिकेशन के साथ किया जा सकता है और, जैसा कि आपने देखा, यह अक्सर महत्वपूर्ण क्रिटिकल रास्तों की ओर जाता है।
जो हस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.