Altifigence Academy

29 / 37 · अवधारणा

समेकित डिज़ाइन: अतिव्यापी 101 पैटर्न संसूचक

एक डिज़ाइन में न्यूनतम आवश्यक अवस्था, इनपुट valid, रजिस्टर वाला आउटपुट और स्वतंत्र संदर्भ सत्यापन लागू करें।

पहले आवश्यकताएँ निश्चित करें

Valid=1 वाले उदयी किनारेउदयी किनारा (rising edge) क्लॉक के 0 से 1 होने का क्षण। यह CLK=1 के पूरे स्तर-अंतराल से अलग है। और पढ़ें पर bit_in का एक बिट स्वीकारें। यदि नवीनतम स्वीकृत बिटों का अंत 101 है, तो उस किनारे के बाद एक चक्र तक hit=1 दिखाएँ। Overlap स्वीकार है, इसलिए 10101 में तीसरे और पाँचवें बिट पर hit होना चाहिए। Valid=0 पर अवस्था बनी रहे और hit=0 हो; reset पर अवस्था और hit आरंभ हों।

केवल आवश्यक पिछली जानकारी रखें

S0 का अर्थ कोई matching prefix नहीं, S1 का अर्थ अंत में 1, और S10 का अर्थ अंत में 10 है। 101 पूरा होने के बाद अंतिम 1 अगले pattern की शुरुआत बन सकता है, इसलिए S1 पर लौटें।

वर्तमान अवस्थास्वीकृत बिट 0स्वीकृत बिट 1
S0S0, hit=0S1, hit=0
S1S10, hit=0S1, hit=0
S10S0, hit=0S1, hit=1

हर स्तंभ एक उदयी किनारे का अवलोकन है। इनपुट किनारे से ठीक पहले के हैं; नाम में after वाली अवस्थाएँ अद्यतन के तुरंत बाद की हैं। स्तंभों का क्रम नमूनों का क्रम दिखाता है, भौतिक प्रसार विलंबप्रसार विलंब इनपुट बदलने के बाद आउटपुट सही मान पर स्थिर होने तक का समय। तार्किक समतुल्यता और समय-संबंधी गुण अलग हैं। और पढ़ें नहीं। Reset के बाद S0 से शुरुआत और हर स्तंभ में valid=1 है। तीसरे बिट की detection के बाद S1 बचता है, इसलिए पाँचवें बिट पर भी detection संभव है।

10101 में दो अतिव्यापी detections
तरंगरूप डेटा देखें
तरंगरूप डेटा: हर अक्षर एक अंतराल है; बिंदु पिछली अवस्था बनाए रखता है; p एक क्लॉक चक्र है।
संकेततरंगरूपबस मान
स्वीकृत बिट10101
अवस्था बाद में23452S1 → S10 → S1 → S10 → S1
hit बाद में0.101

Detection आउटपुट को रजिस्टर में रखें

SystemVerilog
module pattern_101 (
  input logic clk, rst, valid, bit_in,
  output logic hit
);
  typedef enum logic [1:0] {S0, S1, S10} state_t;
  state_t state;
  always_ff @(posedge clk) begin
    if (rst) begin
      state <= S0;
      hit <= 1'b0;
    end else begin
      hit <= 1'b0;
      if (valid) begin
        case (state)
          S0: state <= bit_in ? S1 : S0;
          S1: state <= bit_in ? S1 : S10;
          S10: begin
            state <= bit_in ? S1 : S0;
            hit <= bit_in;
          end
          default: state <= S0;
        endcase
      end
    end
  end
endmodule

hit के लिए अवस्था और उस किनारे पर स्वीकृत इनपुट से निकला मान रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें में रखा जाता है। यह साधारण संयोजन Mealy आउटपुट की तरह किनारों के बीच bit_in बदलते ही प्रतिक्रिया नहीं देता। इस डिज़ाइन उदाहरण को सामान्य SystemVerilog के रूप में देखें; दिए गए single-clock अभ्यास इंजन का समर्थित syntax और निष्पादन प्रमाण अलग जाँचना होगा।

पास होने के मानदंड स्वतंत्र रूप से निकालें

केवल स्वीकृत बिटों की string बनाएँ। लंबाई कम-से-कम तीन होने पर अंतिम तीन अक्षर 101 हैं या नहीं जाँचकर संदर्भ मॉडल बनाया जा सकता है। FSMअवस्था मशीन संग्रहित अवस्था और इनपुट से अगली अवस्था तथा आउटपुट तय करने वाला मॉडल। अवस्था संक्रमण, आउटपुट और reset के नियम साथ परिभाषित किए जाते हैं। और पढ़ें की अवस्था encoding संदर्भ मॉडल में कॉपी करने की जरूरत नहीं।

  • 101 → hit स्थान 3
  • 10101 → hit स्थान 3, 5
  • 11101 → hit स्थान 5
  • 1001 → कोई detection नहीं
  • 1,0 के बाद reset, फिर 1 → कोई detection नहीं
  • 1,0 के बीच या बाद valid=0 डालें → स्वीकृत क्रमांक के अनुसार वही परिणाम

नीचे का बिट-क्रम अभ्यास लगातार valid इनपुट का व्यवहार जाँचता है। इसे reset, valid रुकावट या भौतिक timing के सत्यापन का परिणाम न मानें।

इनपुट बदलें

खुद आज़माएँ

101 मिलने के बाद कोड को S0 पर लौटने वाला बना दें, तो सबसे छोटी कौन-सी इनपुट श्रृंखला मूल विनिर्देश से अलग परिणाम देगी?

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

10101 पर अंतर दिखता है। सही परिपथ तीसरे और पाँचवें इनपुट को detect करता है। S0 पर लौटने से पहली detection का अंतिम 1 अगले pattern की शुरुआत के रूप में फिर उपयोग नहीं होता, इसलिए पाँचवीं detection छूट जाती है।

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