25 / 63 · प्रयोग
अभ्यास: MUX की पूर्ण जाँच और पंजीकृत आउटपुट विश्लेषण
एक ही इनपुट को संयोजन पथ और रजिस्टर पथ पर लगाएँ तथा सत्य सारणी और नमूना समय से परिणाम जाँचें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
प्रयोग का विषय और अवलोकन शर्तें
sel=0 पर a और sel=1 पर b, y पर आता है। sampled_y, क्लॉक के उदयी किनारेउदयी किनारा (rising edge) क्लॉक के 0 से 1 होने का क्षण। यह CLK=1 के पूरे स्तर-अंतराल से अलग है। विस्तार से पढ़ें का y संग्रहित करता है। इनपुट बदलने पर भी अगली उदयी एज तक sampled_y स्थिर रहता है।
शुरू करने से पहले
Digital Design Studio का Desktop प्रोजेक्ट और वैध निष्पादन अनुमति तैयार रखें। प्रत्येक उदाहरण अलग फ़ोल्डर में rtl/top.sv के रूप में सहेजें।
पहले a और b अलग रखें। sel=0 पर a और sel=1 पर b आउटपुट होने की जाँच करें, फिर इनपुट फ़ाइल की हर पंक्ति से मिलाएँ।
y = sel ? b : a
SystemVerilog स्रोत
module top (
input logic clk,
input logic a,
input logic b,
input logic sel,
output logic y,
output logic sampled_y
);
assign y = sel ? b : a;
// Explicit observation register: y remains purely combinational.
// The register makes this design eligible for logic-netlist-1 simulation.
always_ff @(posedge clk) sampled_y <= y;
endmoduleचलाने का तरीका
New analysis में Two-state single-clock v1 चुनें। Clock port, clk और अवधि 1000ps रखें। नीचे के मानों से Preflight करें, फिर Run RTL simulation चलाकर परिणाम मिलाएँ।
| सेटिंग | मान |
|---|---|
| प्रारंभिक रजिस्टर मान, LSB से | [false] |
| Reset port | खाली |
| Maximum cycles / time | 8 / 8000ps |
हर स्तंभ नीचे की इनपुट फ़ाइल की एक प्रविष्टि है। अनुमानित संयोजन y, 0,0,0,1,1,0,1,1 है। यह इनपुट क्रम का कार्यात्मक अनुमान है; sampled_y के अद्यतन समय इसमें नहीं हैं।
तरंगरूप डेटा देखें
| संकेत | तरंगरूप | बस मान |
|---|---|---|
| a | 0...1... | |
| b | 0.1.0.1. | |
| sel | 01010101 | |
| y expected | 0..1.01. |
इनपुट उद्दीपन
[
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
true
]
}
}
]परिणामों की तुलना
8 cycles · y=1 · sampled_y=1। 3000ps पर जाँचें कि y=1 और sampled_y=0 हैं।
यह अभ्यास 0/1 एकल-क्लॉक RTL उपयोग करता है। इसमें #delay, initial या X/Z टेस्टबेंच नहीं हैं। सीखने के पूर्णता चिह्न से प्रगति दर्ज होती है; वह वास्तविक सिम्युलेशन परिणाम नहीं है।
पहले अपेक्षित परिणाम लिखें
सिम्युलेटर चलाने से पहले दिए इनपुट क्रम का संयोजन आउटपुट स्वयं निकालें। अपेक्षित बिट क्रम है। यह आठों इनपुट संयोजन जाँचता है और केवल अंतिम मान सही होने से अधिक मजबूत प्रमाण है।
रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। विस्तार से पढ़ें आउटपुट इनपुट उद्दीपन बदलते ही नहीं, उदयी एज पर अद्यतन होता है। एज से पहले का संयोजन आउटपुट और एज के बाद का रजिस्टर आउटपुट अलग लिखें।
यहाँ वीं एज पर नमूना लिए इनपुट से उसके बाद की अवस्था परिभाषित है। sampled_y इसी अवस्था का नाम है। एक ही समय निर्देशांक पर दिखने पर भी इनपुट लागू करने और रजिस्टर अद्यतन की घटनाओं का क्रम जाँचें।
त्रुटियाँ अलग करने के तीन परीक्षण
- चयन उलटना:
sel ? a : bकरने पर सबसे पहले कौन सा वेक्टर विफल होगा, पहले अनुमान लगाएँ। वाला वेक्टर यह गलती नहीं पकड़ता। - अवलोकन बिंदु का भ्रम:
yके बजायsampled_yको तुरंत संयोजन उत्तर से मिलाने पर सही परिपथ भी गलत क्यों दिखेगा, समझाएँ। - इनपुट स्थिरता परीक्षण: केवल अचयनित इनपुट बदलें और देखें कि स्थिर रहता है। चयनित इनपुट बदलने पर उसका अनुसरण करे।
त्रुटि रिपोर्ट में इनपुट, अवलोकन समय, अपेक्षित और वास्तविक मान प्रति पंक्ति लिखें। केवल “तरंगरूप अजीब है” लिखने से चयन लॉजिक की गलती और एक-चक्र विलंब अलग नहीं होंगे।
विस्तार कार्य
डेटा चार बिट करने पर संयोजन इनपुट क्षेत्र है। पूर्ण जाँच अभी संभव है, लेकिन पहले 0, अधिकतम, 0101, 1010 और walking-one पैटर्न से बिट-स्थिति की त्रुटि जल्दी पकड़ें। चौड़ाई बदलने पर परिपथ की सेटिंग और इनपुट फ़ाइल भी अद्यतन करें।
खुद आज़माएँ
को उदयी एज पर संग्रहित करने के बाद अगली एज से पहले केवल को 1 करें। लॉजिक विलंब बीतने के बाद और अगली उदयी एज के पहले तथा बाद के sampled_y निकालें।
व्याख्या पढ़ें
संयोजन आउटपुट है। sampled_y अगली उदयी एज से पहले 0 रहता है और उस एज पर 1 संग्रहित करता है। इसमें इनपुट नमूना लेने के लिए आवश्यक समय तक स्थिर माना गया है।