1

128 個の並列 XOR ゲートを生成しようとしており、それらの出力を Verilog の 64 個の XOR ゲートに接続しています。「EXOR」という名前で用意されたモジュールを使用します。私の問題は次のとおりです。このモジュール「EXOR」をループに入れると、プログラムは構文エラー「予期しないトークン: 'EXOR'」を返します。そして、ゲートに exor0、exor1、... という名前を付けたいと思います。

どうすれば解決できますか?

initial begin 
  for (i=0; i<128 ; i=i +1 )
    EXOR exor[i](.I1(m[2*i]), .I2(m[2*i+1]), .o(t[i]));
end

initial begin 
  for (i=0; i<64 ; i=i +1 )
    EXOR exor[i+128](.I1(t[2*i]), .I2(t[2*i+1]), .o(f[i]));
end

initial begin 
  for (i=0; i<32 ; i=i +1 )
    EXOR exor[i+192](.I1(f[2*i]), .I2(f[2*i+1]), .o(g[i]));
end
4

1 に答える 1

5

ここで探しているのは、生成ループです。'initial' および 'always' ブロックは、「実行時」構造に使用されます。インスタンスで配列を作成しようとしているので、作成時に何かを解釈する必要があります。

genvar i;

generate
   for (i = 0; i < 64; i = i + 1) begin : gen_loop
      EXOR exor(.I1(m[2 * i]), .I2(m[2 * i + 1], .o(t[i]));
   end
endgenerate

2つのこと:

1) ループ変数は「genvar」として宣言する必要があります

2) for ループに名前を付ける必要があります。これは、インスタンスの階層名で使用されます。

于 2012-12-07T13:08:21.453 に答える