3 / 37 · अवधारणा
मॉड्यूल, पोर्ट और इंस्टेंस: कनेक्शन को अनुबंध समझना
नाम वाले पोर्ट से संयोजन मॉड्यूल जोड़ें और एक ड्राइवर तथा पदानुक्रम की सीमाएँ जाँचें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
मॉड्यूल की सीमा क्लॉक की सीमा नहीं
मॉड्यूल पोर्ट और तर्क को समूह करता है। इंस्टेंस बनाना अपने आप रजिस्टर या चक्र नहीं जोड़ता। क्रम में जुड़े संयोजन मॉड्यूल एक संयोजन पथ ही रहते हैं, जिसमें भौतिक विलंब जुड़ता है। स्पष्ट रजिस्टर भंडारण की सीमा बनाता है। दिशा, चौड़ाई, चिह्न, ड्राइवर और वैध समय लिखें; नाम वाले कनेक्शन पोर्ट क्रम पर निर्भरता हटाते हैं।
module select_word #(parameter integer W = 8) (
input logic [W-1:0] a, b,
input logic select_b,
output logic [W-1:0] y
);
assign y = select_b ? b : a;
endmodule
module choose_and_increment (
input logic [7:0] a, b,
input logic select_b,
output logic [8:0] result
);
logic [7:0] chosen;
select_word #(.W(8)) select_u (
.a(a), .b(b), .select_b(select_b), .y(chosen)
);
assign result = {1'b0, chosen} + 9'd1;
endmoduleselect_word मॉड्यूल का प्रकार है और select_u इंस्टेंस का नाम। .a(a) बच्चे के a पोर्ट को माता-पिता के a सिग्नल से जोड़ता है। .W(8) elaboration की सेटिंग है, गतिशील इनपुट नहीं।
दोनों छोर जाँचें
chosen को केवल बच्चे का y चलाता है और माता-पिता पढ़ता है। दूसरे प्रोसेस से भी इसे असाइन न करें; logic ड्राइवर टकराव वैध नहीं करता। result में 255+1=256 के लिए नौ बिट हैं और जोड़ से पहले chosen बढ़ाया जाता है। a=255, b=9, select_b=0 पर 256 और select_b=1 पर 10 मिलता है। पहले मामले में आठ बिट carry खो देंगे।
पदानुक्रम, फ़ाइलें और top
परिभाषाएँ एक या अलग फ़ाइल में हो सकती हैं, लेकिन कम्पाइलर को दोनों चाहिए। Top choose_and_increment है; select_word चुनना जाँच की सीमा बदलता है। बच्चे की फ़ाइल न मिलना स्रोत सूची की समस्या है, तर्क गलत होने का प्रमाण नहीं। पोर्ट बदलने पर स्थिति आधारित कनेक्शन बदल सकते हैं। न जुड़ा इनपुट जानबूझकर शून्य नहीं है: स्थिरांक जोड़ें या अनुपयोगी आउटपुट लिखें और निदान देखें। बिना भंडारण वाले संयोजन फीडबैक से बचने के लिए निर्भरता खोजें; मॉड्यूल लूप नहीं तोड़ता।
अभ्यास: रचना की स्वतंत्र जाँच
(a, b, select_b)=(0,255,0),(0,255,1),(255,0,0),(255,0,1) के लिए 1,256,256,1 अपेक्षित हैं। दोनों select पर चयनित मान के सभी 256 मान जाँचें, दूसरा इनपुट अलग रखें ताकि उलटा चयन दिखे। संदर्भ पूरा a या b चुनकर 1 जोड़ता है; स्थिर होने पर तुलना करें। अंदर का chosen पढ़ना गलत चयन साझा कर सकता है। फिर आउटपुट रजिस्टर जोड़कर रीसेट, वैधता और संबंधित इनपुट किनारा तय करें: गणना समान होने पर भी समय का अनुबंध बदलता है।