LoginSignup
1
0

More than 3 years have passed since last update.

[FPGA][Verilog] モジュールのパラメータ定義と継承

Posted at

今回は、verilog HDLでのモジュールでのパラメータ定義について説明します。個人的には、ユーザー変更を要するパラメータは上位モジュールから継承して下位モジュールで使用する方にした方がいいと思います。

基礎知識

  • パラメータの型は指定しなければ32bit。
  • パラメータをローカルで使うなら、モジュールでの定義は不要。

書き方の例

例えば、上位モジュールで使っている2つのパラメータ(param1とparam2)を使いたい場合、下位モジュールで使用する場合、以下のように定義。

1.下位モジュールでのパラメータ定義

下位モジュールsub.v

module sub
\#( // パラメータ引数
  parameter param1=100,
  parameter param2=200
 )
( // ポート引数
  ...
 )

あるいは、ローカルでそのまま使うなら以下の通り(一番シンプル)。

module sub
( // ポート引数
  ...
 )

  parameter param1=100;
  parameter param2=200;

2. 上位モジュールでのパラメータ定義

上位モジュール(top)における下位モジュール(sub)パラメータの定義方法は、使い方に応じて、3パターンあり。

使い方①

上位モジュールで使っている2つのパラメータ(param1とparam2)を、下位モジュールでそのまま使いたい場合(上位から下位へパラメータを継承する場合)

上位モジュール(top.v)

module top
(
  ...
 )

parameter param1=100; // 下位モジュール(sub)で使いたいパラメータ1
parameter param2=200; // 下位モジュール(sub)で使いたいパラメータ2

sub
\#( // パラメータ引数
 .param1(param1), //上位モジュール(top)のparam1を下位モジュールのparam1でそのまま使用
 .param2(param2) //上位モジュール(top)のparam1を下位モジュールのparam1でそのまま使用
)
( // ポート引数
...
)

使い方②

上位モジュールで、下位モジュール のパラメータをいじりたいとき(上位から下位へパラメータを継承しない場合1)

上位モジュール(top.v)

module top
(
  ...
 )

// 下位モジュールに使用しないので上位で定義する必要なし
//parameter param1=100; 
//parameter param2=200; 

sub
\#( // パラメータ引数
 .param1(100), //ここで下位モジュールのparam1の値を設定
 .param2(200) //ここで下位モジュールのparam2の値を設定
)
( // ポート引数
...
)

使い方③

下位モジュールのパラメータを上位モジュールで直接変更する場合(ただし、上位から下位へパラメータを継承しない場合2)

上位モジュール(top.v)

module top
(
  ...
 )

// 下位モジュールに使用しないので上位で定義する必要なし
//parameter param1=100; 
//parameter param2=200; 

sub
//\#( // パラメータ引数をここで定義する必要なし。この場合、下位モジュールで定義した値がそのまま使用される。
// .param1(100), //ここで下位モジュールのparam1の値を設定
// .param2(200) //ここで下位モジュールのparam2の値を設定
//)
( // ポート引数
...
)

参考URL

verilog~module内パラメーターの階層間受け渡し

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0