Altifigence Academy

29 / 63 · अवधारणा

अवस्थाओं की संख्या, काउंटर की चौड़ाई और अप्रयुक्त कोड

गिनती की सीमा से संग्रहण बिटों की संख्या निकालें और अवैध अवस्था से वापसी की नीति तय करें।

गिनने वाला परिपथ भी एक अवस्था मशीन है

0 से 9 तक दोहराने वाले काउंटर को 10 अवस्थाएँ चाहिए। न्यूनतम संग्रहण चौड़ाई ⌈log⁡210⌉=4\lceil\log_2 10\rceil=4 बिट है। लेकिन 4-बिट रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें में 16 बिट पैटर्न होते हैं, इसलिए केवल सही चौड़ाई चुनने से modulo-10 व्यवहार पूरा नहीं होता।

N=⌈log⁡2M⌉,unused codes=2N−MN=\left\lceil\log_2 M\right\rceil,\qquad \text{unused codes}=2^N-M

M अधिकतम मान नहीं, अवस्थाओं की संख्या है। 0 से M-1 तक गिनना और 0 से M तक गिनना अलग हैं। यदि पैरामीटर M=1 समर्थित है, तो संग्रहण चौड़ाई कम-से-कम 1 रखें और मान हमेशा 0 बनाए रखें।

चार बिटों में 16 कोड उपलब्ध हैं, लेकिन modulo-10 केवल 10 को सामान्य अवस्थाओं की तरह उपयोग करता है। चौड़ाई तय करने के बाद तुलना और अवैध अवस्था से वापसी की नीति भी जोड़नी होगी।

संग्रहण चौड़ाई और चक्रीय वापसी अलग तय करें
  1. 10 अवस्थाएँ: सामान्य count की सीमा 0–9
  2. 4-बिट संग्रहण: 16 कोड; 10–15 अप्रयुक्त
  3. अगली अवस्था: en=1 और count≥9 पर 0

सीमा से बाहर की अवस्थाएँ भी डिज़ाइन का हिस्सा हैं

यदि 4-बिट modulo-10 काउंटर किसी कारण 12 हो जाए, तो अगला व्यवहार क्या होगा? या तो ऐसी initialization और resetरीसेट अवस्था को विनिर्दिष्ट प्रारंभिक मान पर लौटाने वाला नियंत्रण। उसका तुल्यकालिक या अतुल्यकालिक होना और अन्य नियंत्रणों पर प्राथमिकता साथ तय करें। और पढ़ें शर्तें सिद्ध करें जिनसे यह अवस्था संभव न हो, या 9 और उससे ऊपर के मानों को 0 पर लौटाने की नीति रखें। यह वापसी व्यवस्था सभी हार्डवेयर दोषों को सहने की गारंटी नहीं है।

SystemVerilog
always_ff @(posedge clk) begin
  if (rst) count <= 4'd0;
  else if (en) begin
    if (count >= 4'd9) count <= 4'd0;
    else count <= count + 4'd1;
  end
end

इस उदाहरण में 10–15 के अवैध मान भी en=1 वाले किनारे पर ठीक होते हैं। enable=0 होने पर वे मान भी बने रहते हैं। यदि विनिर्देश तुरंत वापसी माँगता है, तो शर्तों की प्राथमिकता बदलनी होगी।

चौड़ाई और व्यवहार की समीक्षा अलग हैं

0–999 के लिए 10 बिट पर्याप्त हैं, लेकिन बिना सीमा जाँच के बढ़ाने पर मान 1023 तक जाएगा। निर्दिष्ट अधिकतम अवस्था से 0 पर लौटने के लिए तुलना और चयन परिपथ चाहिए। मेमोरी पते, पुनरावृत्ति संख्या या पैकेट लंबाई गिनने में यही अंतर गलत पहुँच या गलत लंबाई का कारण बन सकता है।

खुद आज़माएँ

0–99 को दोहराने वाले काउंटर की न्यूनतम चौड़ाई और अप्रयुक्त कोडों की संख्या निकालें। केवल उसी चौड़ाई में +1 करने से क्या अंतर होगा?

व्याख्या पढ़ें

100 अवस्थाओं के लिए 7 बिट चाहिए और 128−100=28128-100=28 कोड अप्रयुक्त हैं। साधारण वृद्धि परिपथ 99 पर वापस नहीं लौटेगा, बल्कि 127 तक जाएगा। इसलिए वह modulo-100 के बजाय modulo-128 होगा।

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।