2

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 ステートメントがあります。ただし、最後のものはそうではありません。何故ですか?

4

3 に答える 3

2

out_top は、U3 インスタンスの出力によって駆動されます。

于 2011-02-25T21:28:22.993 に答える
1

簡単に言えば、インスタンス化は単にワイヤを接続するだけだと考えるのが好きです。

モジュールはデジタル回路のブロックです。AND および OR ゲート モジュールは、魔法が起こる場所です。あなたはすでにその部分を理解しています。これらのモジュールをインスタンス化することで、最上位モジュールの入力ワイヤを 2 つのブロック AND モジュールの入力に接続しているようなものになります。次に、それらの出力を取得し、OR ブロックから突き出ている入力ワイヤにテープで留めます。最後に、OR ブロックの出力を最上位の出力信号線に接続します。

于 2014-10-26T01:27:00.060 に答える