パート1があります:私は常にコードの重複を避けるために、Verilogでの関数を使用するように言われましたなぜのverilogで使用する機能モジュール
に。しかし、私はモジュールでそれを行うことはできませんか?私の理解が正しいとすれば、すべての関数をVerilogでモジュールとして書き直すことができます。ただし、モジュールはalwaysブロックの内部からインスタンス化できません。この場合を除いて、私は常にモジュールに固執することができます。私は正しいですか?
パート2:
私が正しいだ場合は、その理由のVerilogコンパイラは、モジュールは機能の治療を受けるように書くことができないのですか?つまり、なぜコンパイラはプログラマがnブロック内のモジュールをインスタンス化して関数をサポートしなくすることができないのでしょうか?
実際には、 'parameters'ブロックと' generate'ブロックを使用して再帰モジュールを作成できます。この[32ビットALU(再帰的に定義されたLACを使用してコンピュータアーキテクチャ用に書いたもの)](https://gist.github.com/patrickroberts/3908606ece975eb4c20b4cd8f8b25dd6)を参照してください。 –
@PatrickRobertsのリンクに感謝します。私は質問 – user3219492
を編集しました。明確にするために、リンクの最上位モジュールの仕様のスクリーンショットをいくつか追加しました。私はあなたがそれをチェックしてうれしいです。好奇心のために、モジュール**ではなくコードの重複を避けるために関数を使用するように指示されましたか?それとも一般的には?一般的に適用されただけでは良いアドバイスだが、モジュールが特定の状況ではより意味をなさないと感じているので、このアドバイスが機能のためにモジュールの使用を積極的に妨げることを示唆しているかどうかは不明です。 –