2016-09-30 58 views
0

私は初心者です、Verilog、ちょうどSW [0]のような標準ポートに私のモジュールの1つのポートを割り当てることに関して問題が発生しました。Verilogどのようにポートの配列を接続する

は、私は2つのモジュール

module top(SW, LEDR); 
input [3:0]SW; 
output [3:0]LEDR; 

bottom b0 (
**.in(SW[3:0]); // I am planning to associate SW[0] to in[0], SW[1] to in[1] etc.** 
.out(LEDR[0]); 
); 
endmodule 
module bottom(in[3:0], out); 
input [3:0]in; 
output out; 
assign out = in[0] | in[1] | in[2]; endmodule 

.IN([3:0] SW)を有すると仮定する。 // SW [0]を[0]、SW [1]などに関連付ける予定です。私がしたことは間違っていて、それをコンパイルできませんでした。アドバイスをお願いしますか?

答えて

1

セミコロンは、ポート接続の構文が正しくありません。各ポートはコンマで区切ります(最後は何もありません)。また、bottomモジュールのポートリストで[3:0]を取り除いてください。

module bottom(in, out); 
input [3:0]in; 
output out; 
assign out = in[0] | in[1] | in[2]; 
endmodule 

module top(SW, LEDR); 
input [3:0]SW; 
output [3:0]LEDR; 

bottom b0 (
.in(SW[3:0]), 
.out(LEDR[0]) 
); 
endmodule 
+0

これをシミュレートするためにModelSimを使用しようとしましたが、「モジュールに名前のないポートが含まれているとポートを名前で接続できません」 – TSP

+0

答えを更新しました。 – toolic

1

これはポート宣言とポート接続のための構文にあなた

module top(
      input [3:0] SW, 
      output [3:0]LEDR 
      ); 
    bottom b0 (
      .in(SW), 
      .out(LEDR[0]) 
      ); 
endmodule 

module bottom(
       input [3:0] in, 
       output out 
      ); 
assign out = {<<{in}}; // bit-reverse 
endmodule 

注意を払うために働く必要があります。

関連する問題