34 / 37 · अवधारणा
क्लॉक डोमेन सीमा और metastability
दो-चरण synchronizer की सीमा समझें और एकल बिट, छोटे पल्स तथा बहु-बिट हस्तांतरण अलग करें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
दूसरे क्लॉक के इनपुट का किनारे से अंतर सुनिश्चित नहीं होता
Setupsetup कैप्चर एज से पहले इनपुट डेटा के स्थिर रहने का न्यूनतम समय। उल्लंघन होने पर संग्रहित परिणाम की गारंटी नहीं रहती। और पढ़ें और holdhold समय कैप्चर एज के बाद भी इनपुट डेटा के स्थिर रहने का न्यूनतम समय। इसे सामान्य मान बनाए रखने की क्रिया से अलग समझें। और पढ़ें माँगते हैं कि डेटा ग्रहणकर्ता क्लॉक किनारे के आसपास पर्याप्त समय स्थिर हो। बटन या स्वतंत्र क्लॉक डोमेन का आउटपुट ग्रहण किनारे से मनमाने समय-संबंध में बदलता है, इसलिए यह शर्त हमेशा सुनिश्चित करना कठिन है।
इससे metastability हो सकती है: फ्लिप-फ्लॉपफ्लिप-फ्लॉप निर्दिष्ट क्लॉक एज पर इनपुट संग्रहित करके अगली एज तक बनाए रखता है। इनपुट को setup और hold शर्तें पूरी करनी होती हैं। और पढ़ें की आंतरिक अवस्था कुछ समय तक जल्दी 0 या 1 नहीं तय कर पाती। सामान्य 0/1 RTL simulation इस analog घटना को उसी रूप में नहीं दर्शाता। साफ़ परीक्षण तरंगरूप CDC के सुरक्षित होने का प्रमाण नहीं है।
दो-चरण synchronizer पर्याप्त देर स्थिर रहने वाले एकल बिट के लिए है
module level_synchronizer (
input logic clk_dst,
input logic rst_dst,
input logic async_level,
output logic synced_level
);
logic first_stage;
always_ff @(posedge clk_dst) begin
if (rst_dst) begin
first_stage <= 1'b0;
synced_level <= 1'b0;
end else begin
first_stage <= async_level;
synced_level <= first_stage;
end
end
endmoduleपहला फ्लिप-फ्लॉप अस्थिर हो जाए तो यह संरचना अगले फ्लिप-फ्लॉप के पढ़ने से पहले स्थिर होने का समय देती है। कार्यात्मक परिपथ के लिए पहले चरण का आउटपुट सीधे अलग शाखा में न लें; अंतिम चरण उपयोग करें। ऊपर का reset destination क्लॉक के साथ तुल्यकालिक माना गया है।
वास्तविक implementation में synchronizerसिंक्रोनाइज़र दूसरे टाइमिंग क्षेत्र से आए सिग्नल को ग्रहण क्लॉक में संसाधित करने वाला परिपथ। एकल बिट के लिए बने बहुचरण फ्लिप-फ्लॉप को बहु-बिट डेटा पर सीधे लागू नहीं करना चाहिए। attributes, चरणों के बीच छोटी wiring तथा STA/CDC जाँच जैसे tool और device अनुरूप उपाय चाहिए। केवल दो रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें लिखने से placement और पथ शर्तों की गारंटी नहीं होती।
अतुल्यकालिक इनपुट पहले चरण में जाता है और कार्यात्मक परिपथ केवल अंतिम चरण उपयोग करता है। चरणों के बीच का समय स्थिर होने का अवसर देता है; analog metastabilityअर्धस्थिरता (metastability) वह analog अवस्था जिसमें संग्रहण घटक कुछ समय तक 0 या 1 पर स्थिर नहीं हो पाता। Synchronization परिपथ इसके आगे फैलने की संभावना घटाता है, लेकिन घटना की संभावना शून्य नहीं करता। निश्चित रूप से मिट जाएगी, इसकी गारंटी नहीं।
- अतुल्यकालिक level: Destination क्लॉक से phase स्वतंत्र
- meta FF: अस्थिरता संभव
- समकालित FF: अगले destination किनारे पर capture
- कार्यात्मक परिपथ: केवल अंतिम चरण उपयोग करें
विफलता की संभावना घटती है, शून्य नहीं होती
एक सरल मॉडल में विफलताओं के बीच औसत समय MTBF का रुझान है:
स्थिर होने के लिए उपलब्ध समय, device का गुण, ग्रहण क्लॉक आवृत्ति और अतुल्यकालिक इनपुट की परिवर्तन आवृत्ति है। वास्तविक गणना में device-विशिष्ट constants चाहिए। केवल इस समीकरण से किसी भी परिपथ को “इतने वर्ष सुरक्षित” घोषित नहीं कर सकते।
अलग समस्याओं पर एक ही परिपथ न लगाएँ
| भेजी जाने वाली जानकारी | क्या केवल दो-चरण एकल-बिट synchronization पर्याप्त है? | देखने वाली संरचना |
|---|---|---|
| पर्याप्त देर स्थिर रहने वाला level | संभावना और विलंब आवश्यकताएँ पूरी हों तो संभव | Destination synchronizer |
| Destination अवधि से छोटा pulse | पूरा pulse छूट सकता है | Pulse विस्तार, toggle, handshake |
| साथ में अर्थ रखने वाले कई बिट | अलग बिट अलग समय के मान दिखा सकते हैं | स्थिर bus और handshake, async FIFO |
| यांत्रिक बटन | संपर्क का बार-बार उछलना अलग समस्या है | Synchronization के बाद debounce |
उदाहरण के लिए 4-बिट मान 0111 से 1000 हो, तो हर बिट को स्वतंत्र synchronize करने से ऐसा क्षणिक संयोजन दिख सकता है जो कभी मूल डेटा था ही नहीं। Bus की सुसंगतता के लिए पूरे डेटा और हस्तांतरण-पूर्णता का संबंध डिज़ाइन करें।
आगे पढ़ें: MIT OpenCourseWare — Synchronization, Metastability and Arbitration
खुद आज़माएँ
ग्रहण क्लॉक 50MHz और इनपुट pulse चौड़ाई 5ns है। दो-चरण synchronizer लगाने से क्या सभी pulse पकड़े जाने का दावा कर सकते हैं? क्या बटन का bounce भी हट जाता है?
व्याख्या पढ़ें
50MHz की अवधि 20ns है। 5ns pulse दो ग्रहण किनारों के बीच आकर खत्म हो सकता है और पहले चरण में ही छूट सकता है। केवल synchronizer के चरण बढ़ाने से pulse संरक्षण हल नहीं होता। Pulse विस्तार या handshake जैसा अनुबंध चाहिए; बटन bounce के लिए अलग debounce भी चाहिए।