Altifigence Academy

40 / 63 · प्रयोग

अभ्यास: क्रमिक डेटा के स्थानांतरण और बिट क्रम की जाँच

बिट क्रम और पूर्णांक संदर्भ मॉडल से दिशा, खोने वाले बिट और reset के बाद के विलंब की जाँच करें।

प्रयोग का लक्ष्य और अवलोकन की शर्तें

हर उदयी किनारेउदयी किनारा (rising edge) क्लॉक के 0 से 1 होने का क्षण। यह CLK=1 के पूरे स्तर-अंतराल से अलग है। और पढ़ें पर पुराने q के निचले दो बिट बाईं ओर जाते हैं और din बिट 0 में आता है। क्रम से 1, 0, 1, 1 डालकर स्थानांतरण की तुलना करें।

शुरू करने से पहले

Digital Design Studio का Desktop प्रोजेक्ट और वैध निष्पादन अधिकार तैयार रखें। हर उदाहरण को अलग फ़ोल्डर में rtl/top.sv के रूप में सहेजें।

SystemVerilog स्रोत

SystemVerilog
module top (
    input logic clk,
    input logic rst,
    input logic din,
    output logic [2:0] q
);
    // Old q[1:0] and din are captured together at each rising edge.
    always_ff @(posedge clk)
        if (rst) q <= 3'b000;
        else q <= {q[1:0], din};
endmodule

चलाने का तरीका

New analysis में Two-state single-clock v1 चुनें। Clock port को clk और अवधि को 1000ps रखें। नीचे के मानों से Preflight चलाएँ, फिर Run RTL simulation चलाकर परिणाम मिलाएँ।

सेटिंगमान
प्रारंभिक रजिस्टर मान (LSB से)[false,false,false]
Reset portrst · Active high · 1 cycle
Maximum cycles / time5 / 5000ps

इनपुट stimulus

json
[
  {
    "inputs": {
      "din": [
        false
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  },
  {
    "inputs": {
      "din": [
        false
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  }
]

हर स्तंभ एक उदयी किनारे का अवलोकन है। इनपुट किनारे से ठीक पहले के हैं; नाम में after वाली अवस्थाएँ अद्यतन के तुरंत बाद की हैं। स्तंभों का क्रम नमूनों का क्रम दिखाता है, भौतिक प्रसार विलंबप्रसार विलंब इनपुट बदलने के बाद आउटपुट सही मान पर स्थिर होने तक का समय। तार्किक समतुल्यता और समय-संबंधी गुण अलग हैं। और पढ़ें नहीं। पहला स्तंभ resetरीसेट अवस्था को विनिर्दिष्ट प्रारंभिक मान पर लौटाने वाला नियंत्रण। उसका तुल्यकालिक या अतुल्यकालिक होना और अन्य नियंत्रणों पर प्राथमिकता साथ तय करें। और पढ़ें का किनारा है; उसका din=0 संग्रहित डेटा में नहीं गिना जाता। बाद के चार इनपुट को नीचे के JSON क्रम से मिलाएँ।

इनपुट stimulus और तीन-बिट अवस्था का स्थानांतरण
तरंगरूप डेटा देखें
तरंगरूप डेटा: हर अक्षर एक अंतराल है; बिंदु पिछली अवस्था बनाए रखता है; p एक क्लॉक चक्र है।
संकेततरंगरूपबस मान
edge23452E0 → E1 → E2 → E3 → E4
reset10...
din0101.
q बाद में23452000 → 001 → 010 → 101 → 011

परिणाम तुलना

5 cycles · q=011. उदयी किनारों पर क्रम 000 → 001 → 010 → 101 → 011 है।

यह अभ्यास 0/1 और एक क्लॉक वाला RTL उपयोग करता है। इसमें #delay, initial या X/Z testbench शामिल नहीं है। पाठ पूरा होने का संकेत सीखने का रिकॉर्ड है, वास्तविक simulation परिणाम नहीं।

Concatenation को स्वतंत्र समीकरण से जाँचें

RTL का वही concatenationबिट संयोजन (concatenation) बिट अनुक्रमों को एक के बाद एक जोड़ना। परिणाम की चौड़ाई operands की चौड़ाइयों का योग है; यह संख्याओं के अंकगणितीय जोड़ से अलग है। और पढ़ें परीक्षण के अपेक्षित उत्तर में कॉपी करने पर वही गलती दोनों जगह आ सकती है। Unsignedunsigned बिट अनुक्रम को गैर-ऋणात्मक पूर्णांक मानने का नियम। n बिट की सीमा 0 से 2^n−1 है और वही बिट signed व्याख्या में अलग मान दे सकते हैं। और पढ़ें पूर्णांक के रूप में व्याख्या करने वाला संदर्भ मॉडल उपयोग करें।

Qk+1=(2Qk+dk) mod 8Q_{k+1}=(2Q_k+d_k)\bmod 8

Reset के बाद 1, 0, 1, 1 पर गणना 0→1→2→5→30\to1\to2\to5\to3 है। इसे तीन-बिट बाइनरी में लिखने पर अभ्यास के तरंगरूप से मेल होना चाहिए। अंतिम चरण में 2⋅5+1=112\cdot5+1=11, और केवल निचले तीन बिट बचने से मान 3 होता है।

मिले हुए बिटों की संख्याइनपुटकिनारे के बाद qपूर्णांक मान
0reset0000
110011
200102
311015
410113

Reset=0, enable=1 पर din को 1,0,1,1 चुनें और हर बार क्लॉक दबाएँ। q क्रमशः 001,010,101,011 होगा। चरणबद्ध अभ्यास से पहले पूर्वानुमान करें, फिर वास्तविक RTL परिणाम से मिलाएँ। Enable नियंत्रण नीचे के विस्तारित कार्य में रुकावट जाँचने के लिए भी दिया गया है।

RTL चलाने से पहले बिट क्रम का पूर्वानुमान करें

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

एक बिट का पीछा करके दिशा जाँचें

Reset के बाद 1 एक बार, फिर 0 तीन बार डालें। क्रम 001 → 010 → 100 → 000 है। पहला 1 बिट 0, बिट 1, बिट 2 से गुजरकर गायब होना चाहिए। केवल सभी-0 या सभी-1 पैटर्न से गलत दिशा छिप सकती है।

तीन-चरण रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें में इनपुट पहली बार जिस किनारे पर संग्रहित हुआ, उसे kk कहें। वह सबसे ऊपरी बिट 2 पर k+2k+2 किनारे के बाद पहुँचता है। यदि विलंब बाहरी प्रेषक रजिस्टर द्वारा डेटा भेजने के किनारे से गिनें, तो आधार बदल जाता है; रिपोर्ट में शुरुआती और अंतिम बिंदु स्पष्ट करें।

विस्तारित कार्य: केवल मान्य इनपुट को खिसकाएँ

मानें इनपुट में valid जोड़ा गया। Valid=0 पर q को रोकने वाला डिज़ाइन और हर चक्र shift करते हुए अलग valid बिट साथ भेजने वाली पाइपलाइन अलग हैं। पहला प्राप्त बिटों की संख्या के अनुसार आगे बढ़ता है, दूसरा वास्तविक क्लॉक चक्रों के अनुसार। दोनों को एक ही अपेक्षित अवस्था श्रृंखला से न जाँचें।

खुद आज़माएँ

Reset के बाद valid=1 वाले बिट क्रम से 1, 0, 1 हैं। दूसरे बिट से पहले और बाद एक-एक valid=0 चक्र है, जिसमें q बना रहता है। अंतिम q और पहले 1 के बिट 2 तक पहुँचने का समय समझाएँ।

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

केवल तीन मान्य इनपुट अवस्था बदलते हैं, इसलिए अंतिम q=101 है। पहला 1 तीसरा मान्य इनपुट संग्रहित होने वाले किनारे पर बिट 2 तक पहुँचता है। पहली capture के बाद दो अतिरिक्त स्थानांतरण चाहिए; बीच के दो invalid चक्र उतना वास्तविक समय और जोड़ते हैं।

Lesson files

shift-top.sv ↓shift-inputs.json ↓

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