Altifigence Academy

19 / 37 · अवधारणा

parameter, localparam,$clog2 और सीमा कॉन्फ़िगरेशन

चलते समय इनपुट और स्थिर सेटिंग अलग करें; N=1 और दो की घात न होने पर चौड़ाई व समाप्ति बनाएँ।

पैरामीटर elaboration में स्थिर होते हैं

पोर्ट संचालन में बदलता है; parameter संरचना बनने से पहले सेटिंग करता है; localparam व्युत्पन्न स्थिरांक का नाम है जिसे इंस्टेंस नहीं बदलता। वे हर चक्र के चर नहीं। Modulo-N काउंटर 0..N−1 लेता है। N≥2 पर चौड़ाई $clog2(N) है; N=1 पर शून्य, इसलिए कम-से-कम एक बिट रखें। N=0 अनुबंध के बाहर है।

सक्षम किनारे पर पूरा होना

पुराना count, N−1 से शून्य होने पर pulse रजिस्टर होता है। अक्षम किनारा count रखता है और pulse साफ करता है। सिंक्रोनस रीसेट दोनों साफ करता है और enable पर प्राथमिकता रखता है। N समर्थित सीमा का धनात्मक पूर्णांक है।

SystemVerilog
module modulo_tick #(
  parameter integer N = 5,
  parameter integer CW = (N <= 1) ? 1 : $clog2(N)
) (
  input  logic          clk, rst, enable,
  output logic [CW-1:0] count,
  output logic          pulse
);
  localparam logic [CW-1:0] LAST = CW'(N-1);
  always_ff @(posedge clk) begin
    if (rst) begin
      count <= '0;
      pulse <= 1'b0;
    end else begin
      pulse <= 1'b0;
      if (enable) begin
        if (count >= LAST) begin
          count <= '0;
          pulse <= 1'b1;
        end else count <= count + 1'b1;
      end
    end
  end
endmodule

CW पोर्ट में आता है इसलिए बाहर से सेट हो सकता है। डिफ़ॉल्ट या ≥max(1,$clog2(N)) रखें। छोटा CW, LAST काटता है; बड़ा CW अनुपयोगी कोड देता है जिन्हें >= सक्षम किनारे पर शून्य लाता है। CW'(N-1) आकार बताता है, गलत पैरामीटर ठीक नहीं करता। Elaboration से पहले सत्यापित करें: चलती assertion गलत घोषणा नहीं ठीक करती।

कॉन्फ़िगरेशन सारणी

Nडिफ़ॉल्ट CWरीसेट के बाद सक्षम किनारों पर countबाद में pulse
110,0,01,1,1
211,0,10,1,0
531,2,3,4,00,0,0,0,1
831,2,3,4,5,6,7,00,0,0,0,0,0,0,1

एक भंडारण बिट होने पर N=1 की दो वैध अवस्थाएँ नहीं बनतीं। N=5 सामान्यतः 5,6,7 नहीं जाता। केवल दो की घात जाँचना वापसी का स्पष्ट तुलना नियम छूटना छिपा देगा।

अभ्यास: व्यवहार और अस्वीकृति

N=1,2,5,8 बनाएँ, कम-से-कम दो अवधि चलाएँ, अंतिम मान पर रोकें और reset साथ enable लगाएँ। हर count/pulse तुलना करें। पूर्णांक संदर्भ रीसेट पर साफ होता है, pulse पहले शून्य करता है और enable पर modulo N बढ़ाकर वापसी पहचानता है; CW या अंदर की अवस्था नहीं लेता। N=0 और अपर्याप्त CW का अस्वीकार जाँचें। पुनः उपयोग का प्रमाण घोषित और जाँची सीमा के लिए है, सिर्फ एक सफल डिफ़ॉल्ट के लिए नहीं।

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