変数

# このページは,学生実験用資料として筑波大学リコンフィギュラブルコンピューティングシステム研究室のwebページで公開されていたものを,許可を得て転載したものです.


wire

wire(ワイヤ)はネットをモデル化した変数の一つです。wireは単一のゲートか継続代入文によって接続されます。wireを宣言するためには、以下のように記述します。

 
  wire <[最上位桁: 最下位桁]> ワイヤ名;

以下に例を示します。

 
  wire flag; // 1ビットのワイヤ
  wire [3: 0] counter; // 4ビットのワイヤ
  wire [3: 0] new_counter = counter; // counterをnew_counterへ代入
    

reg

regはレジスタをモデル化した変数です。regを用いてフリップフロップやラッチを生成することができます、regを宣言するためには、以下のように記述します。


  reg <[最上位桁: 最下位桁]> レグ名;
  

以下に例を示します。

 
  reg flag; // 1ビットのレグ
  reg [3: 0] counter; // 4ビットのレグ

配列

regやwireなどの変数は配列にすることができます。配列を宣言するためには、以下のように記述します。


  reg [最上位桁: 最下位桁] レグ名[最上位桁: 最下位桁]...[最上位桁: 最下位桁];
  wire [最上位桁: 最下位桁] ワイヤ名[最上位桁: 最下位桁]...[最上位桁: 最下位桁];
  

配列の要素へアクセスするためには以下のように記述します。


  レグ名[添字]...[添字];
  ワイヤ名[添字]...[添字];
  

以下に例を示します。

 
  reg flag[1: 0]; // 1ビット、深さ2のレグ
  wire [7: 0] images[319: 0][239: 0] // 8ビット、320x240のワイヤ
  ....
  assign image[319][239] = 8'b0; // image[319][239]へ代入
  ....
  always @(posedge clock) begin
  ...
  flag[0] <= 1'b0; // flagの0番目の要素へ代入
  flag[1] <= 1'b1; // flagの1番目の要素へ代入
  ...
  end

戻る