ためになるホームページ お問い合わせ




TOP > Verilog > beginとend
beginとend
プログラミング言語でよく使用する中括弧{}は、verilogでは存在しない。その代わりとなるのが、beginendである。
alwaysやifなどの条件式で、1命令ではなく複数の処理をする際には、begin〜endに記述する。

beginとendの記述の例
/////////////////////////////////////////////////////////////////////////////////
//TESTBENCH
//  テストベンチ
/////////////////////////////////////////////////////////////////////////////////
module TESTBENCH;
reg CLK, RES, SEL;
wire[1:0] XOUTA, XOUTB;
parameter STEP = 10;

// クロックの定義
always #(STEP/2) CLK = ~CLK;

BEGINTEST BEGINTEST(CLK, RESET, SEL, XOUTA, XOUTB);

initial begin
   $dumpfile("test.vcd");
   $dumpvars(0, TESTBENCH);
   $monitor ("%t: RES = %b, SEL = %h, XOUTA = %h, XOUTB = %h", $time, RES, SEL, XOUTA, XOUTB);
          CLK = 0;
   #STEP  RES = 0;
   #STEP  RES = 1; SEL = 0;
   
   #STEP  SEL = 0;
   #(STEP * 2);
   $finish;
end

endmodule


/////////////////////////////////////////////////////////////////////////////////
//begin
/////////////////////////////////////////////////////////////////////////////////
module BEGINTEST(CLK, RES, SEL, XOUTA, XOUTB);
input CLK, RES, SEL;
output [1:0]XOUTA, XOUTB;
reg [1:0]XOUTA, XOUTB;
always@(posedge CLK) begin
    if (!RES)
      begin
      XOUTA <= 0;
      XOUTB <= 0;
      end
    else if (!SEL)
      begin
      XOUTA <= 1;
      XOUTB <= 1;
      end
    else if (SEL == 1)
      XOUTA <= 2;
    XOUTB <= 2; //この処理は毎回実行される


end


endmodule






Copyright 2007 ためになるホームページ All Rights Reserved.