0

私は2つのモジュールを持っています

  1. counter: 出力は error_count というベクトルです。
  2. lcd: コードを LCD に表示するモジュール。入力にはクロックと error_count が含まれます。

次のコード スニペットが最も関連性が高く、以下に添付されています。

  1. 最上位モジュール:

    カウンター counter1 (..., error_count);
    lcd lcd1 (..., error_count);
  2. カウンターモジュール:

    モジュールカウンター (..., error_count);
    ...
    出力レジスタ [31:0] error_count = 0;
    ... //クロックサイクルごとにカウンターを更新
    エンドモジュール
    
  3. 液晶モジュール:

    モジュール lcd (..., error_count);
    ...
    入力 [31:0] error_count;
    ... //LCD に表示するために使用される error_count
    エンドモジュール
    

このコードの何が問題になっていますか? ディスプレイは、出力として 0 を表示するだけです。ベクトルを渡す方法に問題はありますか?

追加情報: このコードのテストにはザイリンクスの Spartan 3E スターター キットを使用しています。LCD コードは問題なく、ローカル カウンター (reg[31:0]) でテストしました。

4

1 に答える 1

5

2つのポートを接続するには、最上位モジュール内で32ビットワイヤを宣言する必要があります。

wire [31:0] error_count;

これを省略すると、1ビットのワイヤのみでベクトルを適切に接続しない暗黙のネットが宣言されます。

この間違いは、古典的なVerilogの落とし穴です。ここでのプレゼンテーションには、これと他のものについての良い説明があります。

http://www.sutherland-hdl.com/papers/2006-SNUG-Boston_standard_gotchas_presentation.pdf

于 2012-05-20T12:21:23.067 に答える