スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Verilog] 組み合わせ回路記述の罠(その1)

最近、Verilog HDLでこんな記述見かけます。
最初に初期値を書いて、その後で必要な信号に値のみ記述する。

  always @(control) begin
    tb_a = 0;
    tb_b = 0;
    casex (control)
      3'b00x : tb_a = 1 ;
      3'b1xx : tb_b = 1 ;
    endcase
  end

全体記述を書くとこんな感じです。

module testbench();

  reg [2:0] control = 0;
  reg tb_a, tb_b;

  task print ();
    $display("control = '%3b, tb_a = %0b, tb_b = %0b", control, tb_a, tb_b);    
  endtask

  initial begin
    #10;
    control = 'b001; #10 print();
    control = 'b010; #10 print();
    control = 'b110; #10 print();
    $finish();
  end

  always @(control) begin
    tb_a = 0;
    tb_b = 0;
    casex (control)
      3'b00x : tb_a = 1 ;
      3'b1xx : tb_b = 1 ;
    endcase
  end

endmodule

実行結果はこちら。

# control = '001, tb_a = 1, tb_b = 0
# control = '010, tb_a = 0, tb_b = 0
# control = '110, tb_a = 0, tb_b = 1


実行結果からだと問題無い記述かと思いますが、
VHDLみたいに書いてはいけません。(理解して書くことが重要です。)
Verilog HDLは VHDLではないのです。


すいません、続きます。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。