0

理解しようと、インターネットでコードを探したところ、次のように関数と思われる宣言があり、まったく理解できませんでした。

sext #(.inwidth(1), .outwidth(32))  scc_sext_i0(
                  .i0(paw_0_i0_outport0[32]),
                  .o0(scc_sext_i0_o0));

combine2_wn #(.inwidth0(32), .inwidth1(32))  scc_combine2_wn_i0(
                  .i0(paw_0_i0_outport0[31 : 0]),
                  .i1(scc_sext_i0_o0),
                  .o0(scc_combine2_wn_i0_o0));


combine2_wn #(.inwidth0(32), .inwidth1(32))  scc_combine2_wn_i1(
                  .i0(scc_combine2_wn_i2_o0[31 : 0]),
                  .i1(scc_combine2_wn_i2_o0[63 : 32]),
                  .o0(scc_combine2_wn_i1_o0));

私の質問は次のとおりです。

  1. これらは本当に関数マッピングですか?
  2. はいの場合、それらは他の下位レベルの.vファイルで定義されていません(また、最上位ファイルにもライブラリは含まれていません)。それで、それらの用途は何ですか?
  3. #記号とはどういう意味ですか?
  4. どういう.inwidth(32)意味ですか?32ビットの入力?(インターネットで見つけることは不可能です...)
  5. はいの場合、combine2_wnブロックには2つの入力のみが必要ですが、毎回出力がマップされるのはなぜですか?

より一般的には、これらはどのような種類の連結関数ですか?

4

1 に答える 1

4

これらは、関数呼び出しではなく、モジュールのインスタンス化である可能性が最も高いです。

Verilog 検索パスのどこかにあるファイルで、名前付きのモジュールsextと別の名前付きのモジュールを宣言する必要があります。combine2_wn

#()parameter名前付きモジュール内の s に値を割り当てていることを意味します。

inwidthモジュールで指定されたパラメーターがありsextます。値 1 を割り当てています。

ウェブ上には参考文献がたくさんあります。Verilog wiki サイトを見てください。

于 2013-03-14T17:12:31.207 に答える