HOME Corporate Product Verilog VHDL Link Contact Site map


組合わせ回路の記述はalways文,function文でも記述可能です。
但し、各々特徴がありますので注意が必要です。



*always文による組合せ回路
  • if,case,casexが使用できるので表現自由度が高い。
  • 全条件を書かないとラッチ回路になる。
  • reg宣言を行なうのでレジスタとの区別がつきにくい

   alwaysによる 4 to 1 セレクタ

   module SEL4TO1 (in, sel , out );
      input [3:0]  in;
      input [1:0]  sel;
      output     out;
      reg      out;


  
   イベント式にalwaysに入力される信号をすべて記述
      always @(sel or in)begin
          if (sel == 2'h0)
             out = in[0];   // if SEL=0ならばin[0]
          else if (sel == 2'h1)
             out = in[1];   // else if SEL=1ならばin[1]
          else if (sel == 2'h2)
             out = in[2];   // else if SEL=2ならばin[2]
          else if (sel == 2'h3)
             out = in[3];   // else if SEL=3ならばin[3]
          else
             out = 0;     // 上記以外なら'0'
     end
   endmodule


   全条件を書かないとラッチになる記述
   module SEL4TO1 (in, sel , out );
        input [3:0]    in;
        input [1:0]    sel;
        output out;   reg out;

     always (sel or in)begin
        if (sel == 2'h0)
           out = in[0];   // if SEL=0ならばin[0]
        else if (sel == 2'h1)
           out = in[1];   // else if SEL=1ならばin[1]
        else if (sel == 2'h2)
           out = in[2];   // else if SEL=2ならばin[2]
        else if (sel == 2'h3)
           out = in[3];   // else if SEL=3ならばin[3]
     end
   endmodule



*function文による組合せ回路
  • if,case,casexが使用できるので表現自由度が高い。
  • 関数のため再利用ができる。
  • 回路規模が大きくなることもあり、ユーザーにより使用について限定している。

   module DEC2TO4 (in1,in2,out1,out2);
        input   [1:0] in1;
        input   [1:0] in2;
        output  [3:0] out1;
        output  [3:0] out2;

        //関数
        function  [3:0] dec;
        input    [1:0] in;
        begin
             case( in )
                0: dec = 4'b0001;
                1: dec = 4'b0010;
                2: dec = 4'b0100;
                3: dec = 4'b1000;
             endcase
        end
        endfunction

        assign out1 = dec ( in1 );
        assign out2 = dec ( in2 );

   endmodule




Back

HOME Corporate Product Verilog VHDL Link Contact Site map