16 / 37 · अवधारणा
मॉड्यूलर, saturating काउंटर और समाप्ति पल्स
अधिकतम मान की नीति और terminal-count सिग्नल का सही चक्र डिज़ाइन करें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
सीमा पार करने की तीन अलग नीतियाँ हैं
उसी N-बिट रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें में अधिकतम मान से वापस घूमना, अधिकतम पर रुकना या त्रुटि बताना विनिर्देश का निर्णय है।
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 अलग क्रम देते हैं।
तरंगरूप डेटा देखें
| संकेत | तरंगरूप | बस मान |
|---|---|---|
| edge | 234523452 | E0 → E1 → E2 → E3 → E4 → E5 → E6 → E7 → E8 |
| mod10 बाद में | 234523452 | 9 → 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 |
| wrap4 बाद में | 234523452 | 9 → 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 पर लौटे।”
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
endpulse का 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 काउंटर का मान क्या होना चाहिए।
तुल्यकालिक 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 हो जाता है।