C++ のバックグラウンドから来て、Verilog を学び始めています。このコードは、2 つの AND ゲートに入る 4 つの入力を記述します。これら 2 つの AND ゲートからの出力は、OR ゲートに入ります。OR ゲートからの出力が最終出力です。
// 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
最初の 2 つのモジュールは理にかなっています。ただし、最後のものはそうではありません。最初の 2 つのモジュールの最後には、出力変数の値を設定するための assign ステートメントがあります。ただし、最後のものはそうではありません。何故ですか?