Altifigence Academy

16 / 37 · अवधारणा

मॉड्यूलर, saturating काउंटर और समाप्ति पल्स

अधिकतम मान की नीति और terminal-count सिग्नल का सही चक्र डिज़ाइन करें।

सीमा पार करने की तीन अलग नीतियाँ हैं

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

Cnextwrap=(C+1) mod 2NC_{next}^{wrap}=(C+1)\bmod2^N
Cnextsat=min⁡(C+1,2N−1)C_{next}^{sat}=\min(C+1,2^N-1)

8-बिट मॉड्यूलर काउंटर में 255 के बाद 0 आता है; saturating काउंटर में 255 ही रहता है। ये अलग व्यवहार हैं। ऋणात्मक और धनात्मक मानों वाले accumulator में signed सीमा और दोनों saturation सीमाएँ भी देखें।

हर स्तंभ एक उदयी किनारेउदयी किनारा (rising edge) क्लॉक के 0 से 1 होने का क्षण। यह CLK=1 के पूरे स्तर-अंतराल से अलग है। और पढ़ें का अवलोकन है। इनपुट किनारे से ठीक पहले के हैं; नाम में after वाली अवस्थाएँ अद्यतन के तुरंत बाद की हैं। स्तंभों का क्रम नमूनों का क्रम दिखाता है, भौतिक प्रसार विलंबप्रसार विलंब इनपुट बदलने के बाद आउटपुट सही मान पर स्थिर होने तक का समय। तार्किक समतुल्यता और समय-संबंधी गुण अलग हैं। और पढ़ें नहीं। प्रारंभ में count=8, reset=0, enable=1 हैं। समान इनपुट पर भी modulo-10, 4-बिट wrap और 4-बिट saturation अलग क्रम देते हैं।

अधिकतम मान के बाद तीन नीतियाँ
तरंगरूप डेटा देखें
तरंगरूप डेटा: हर अक्षर एक अंतराल है; बिंदु पिछली अवस्था बनाए रखता है; p एक क्लॉक चक्र है।
संकेततरंगरूपबस मान
edge234523452E0 → E1 → E2 → E3 → E4 → E5 → E6 → E7 → E8
mod10 बाद में2345234529 → 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7
wrap4 बाद में2345234529 → 10 → 11 → 12 → 13 → 14 → 15 → 0 → 1
sat4 बाद में2345234..9 → 10 → 11 → 12 → 13 → 14 → 15

Modulo-M की अंतिम अवस्था की तुलना करें

हर 10 गिनतियों पर पल्स देने के लिए 0–9 अवस्थाएँ उपयोग करें और केवल enable वाले मान्य किनारे गिनें। pulse को इस अर्थ में रजिस्टर किया जा सकता है: “इस किनारे पर 9 से आगे बढ़कर 0 पर लौटे।”

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

pulse का default assignment उसे अगले किनारे पर 0 कर देता है। केवल count==9 आउटपुट देने पर enable=0 से रुके समय कई चक्र तक 1 रह सकता है। समाप्ति अवस्था और पूर्णता event में अंतर रखें।

अवधि गिनने का आधार

Reset के बाद count=0 से शुरू होकर enable=1 वाले 10 किनारे गुजरने पर पहला pulse आता है। पहले किनारे को 0 कहें या 1, उससे अधिक महत्वपूर्ण है कि इनपुट, अवस्था और आउटपुट तालिका की परिभाषा सुसंगत हो।

यह अभ्यास modulo-16 काउंटर का है। प्रारंभिक 1110 से एक किनारे पर 1111 और अगले पर 0000 होगा। 1111 पर enable=0 करके रोकें। Hold और saturation का मान समान दिख सकता है, लेकिन दोबारा चलाने पर व्यवहार अलग है। तुलना करें कि उन्हीं शर्तों में saturating काउंटर का मान क्या होना चाहिए।

4-बिट अधिकतम पर रुकना या वापस घूमना

तुल्यकालिक reset को enable पर प्राथमिकता है। enable=0 पर संग्रहित मान बनाए रखें। q=1110; q_next = (q + 1) mod 16

खुद आज़माएँ

ऊपर के परिपथ में count=9, pulse=0 है। en=0 वाले दो किनारों के बाद en=1 वाला किनारा आए, तो count और pulse कैसे बदलेंगे?

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

रुके हुए दोनों किनारों में count=9 और pulse=0 रहते हैं। तीसरे किनारे पर count=0, pulse=1 होते हैं। उसके अगले किनारे पर default assignment से pulse=0 हो जाता है।

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