來自C++背景我開始學習Verilog。該代碼描述了進入兩個AND門的四個輸入。這兩個與門的輸出進入一個或門。或門的輸出是最終的輸出。爲什麼在這個Verilog函數中沒有賦值語句?
// a user-defined AND gate
module my_and2 (in, out);
input [1:0] in;
output out;
assign out = in[1]&in[0];
endmodule
// a user-defined OR gate
module my_or2 (in, out);
input [1:0] in;
output out;
assign out = in[1]|in[0];
endmodule
// the AND-OR logic built on top of the user-defined AND and OR gates
module and_or (in_top, out_top);
input [3:0] in_top;
output out_top;
wire [1:0] sig;
// instantiate the gate-level modules
my_and2 U1 (.in(in_top[3:2]),.out(sig[1]));
my_and2 U2 (.in(in_top[1:0]),.out(sig[0]));
my_or2 U3 (.in(sig),.out(out_top));
endmodule
前兩個模塊對我有意義。但是,最後一個沒有。前兩個模塊最後有一個分配語句來設置輸出變量的值。但是,最後一個沒有。這是爲什麼?
那麼實例化一個模塊會自動運行它嗎? – 2011-02-25 21:57:03
實際上,該代碼中沒有任何「運行」,因爲它不包含任何過程語句。這是一個顯示連接性的結構描述。當然,仿真器將執行代碼來實現信號變化,但這些細節與建模該電路並不相關。 – 2011-02-26 00:40:36