30 / 63 · अवधारणा
काउंटर की अगली अवस्था और reset की प्राथमिकता
वृद्धि, धारण, reset और वापस घूमने को एक विनिर्देश में रखें तथा हर किनारे का परिणाम निकालें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
पहले अगली अवस्था के समीकरण से व्यवहार तय करें
-बिट स्वतंत्र रूप से बढ़ने वाले काउंटर में तुल्यकालिक reset और enable जोड़ने पर यह मिलता है:
Resetरीसेट अवस्था को विनिर्दिष्ट प्रारंभिक मान पर लौटाने वाला नियंत्रण। उसका तुल्यकालिक या अतुल्यकालिक होना और अन्य नियंत्रणों पर प्राथमिकता साथ तय करें। की प्राथमिकता सबसे अधिक है और enable=0 होने पर मान बना रहता है। नीचे के दृश्य मॉडल में enable बदलकर वृद्धि और hold की तुलना कर सकते हैं।
प्रारंभिक q=11 पर reset=1 चुनने से केवल अगली अवस्था 00 होती है। संग्रहित मान कब बदलता है, यह देखने के लिए अगला क्लॉक दबाएँ। Reset हटाकर 00→01→10→11→00 चलाएँ और तुलना करें कि enable=0 होने पर केवल किनारों की संख्या बढ़ती है, जबकि q वही रहता है।
तुल्यकालिक reset को enable पर प्राथमिकता है। enable=0 पर संग्रहित मान बनाए रखें। q=11; q_next = (q + 1) mod 4
हर किनारे के लिए पूर्वानुमान तालिका बनाएँ
यदि 2-बिट काउंटर की प्रारंभिक अवस्था 3 है, पहले किनारे पर reset=1 और उसके बाद reset=0 है, तो किनारों के बाद मान 0, 1, 2, 3, 0 होंगे। क्लॉक किनारों के बीच reset को 1 करने पर भी उदयी किनारेउदयी किनारा (rising edge) क्लॉक के 0 से 1 होने का क्षण। यह CLK=1 के पूरे स्तर-अंतराल से अलग है। और पढ़ें से पहले तुल्यकालिक रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें तुरंत 0 नहीं होता।
| किनारा | किनारे से ठीक पहले reset | पुराना C | नया C |
|---|---|---|---|
| 1 | 1 | 3 | 0 |
| 2 | 0 | 0 | 1 |
| 3 | 0 | 1 | 2 |
| 4 | 0 | 2 | 3 |
| 5 | 0 | 3 | 0 |
हर स्तंभ एक उदयी किनारे का अवलोकन है। इनपुट किनारे से ठीक पहले के हैं; नाम में after वाली अवस्थाएँ अद्यतन के तुरंत बाद की हैं। स्तंभों का क्रम नमूनों का क्रम दिखाता है, भौतिक प्रसार विलंबप्रसार विलंब इनपुट बदलने के बाद आउटपुट सही मान पर स्थिर होने तक का समय। तार्किक समतुल्यता और समय-संबंधी गुण अलग हैं। और पढ़ें नहीं। प्रारंभिक अवस्था 3 है और पहले किनारे का reset वृद्धि पर प्राथमिकता रखता है। अंतिम किनारे पर मान 3 से 0 पर लौटता है।
तरंगरूप डेटा देखें
| संकेत | तरंगरूप | बस मान |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| count पहले | 23452 | 11 → 00 → 01 → 10 → 11 |
| count बाद में | 23452 | 00 → 01 → 10 → 11 → 00 |
Reset के अलग अर्थों को न मिलाएँ
always_ff @(posedge clk) के अंदर if(rst) तुल्यकालिक reset है। यह event सूची में reset का किनारा जोड़ने वाले अतुल्यकालिक reset के समान नहीं है। अतुल्यकालिक reset हटाने पर recovery/removal जैसी अलग timing शर्तें लागू होती हैं; केवल जल्दी 0 होने के कारण इसे बदलना उचित नहीं।
यदि काउंटर समय-समय पर पल्स देता है, तो यह भी तय करें कि किस अवस्था में पल्स निकलेगा। अधिकतम मान रहने तक आउटपुट 1 रखना और 0 पर लौटने वाले किनारे के बाद एक चक्र तक 1 रखना अलग हैं। इनके आउटपुट समीकरण और अवलोकन समय भी अलग होंगे।
खुद आज़माएँ
एक 3-बिट काउंटर का मान 7 है। पहले किनारे पर rst=0, en=0 और अगले पर rst=0, en=1 हो, तो दोनों अवस्थाएँ क्या होंगी?
व्याख्या पढ़ें
पहले किनारे पर मान 7 बना रहता है। अगले किनारे पर 3-बिट सीमा में घूमकर 0 हो जाता है। मान 8 बनाए रखने के लिए अधिक चौड़ाई या अलग saturation/त्रुटि नीति चाहिए।