![]() |
![]() |
TOP > Verilog > beginとend |
![]() |
![]() |
beginとend
プログラミング言語でよく使用する中括弧{}は、verilogでは存在しない。その代わりとなるのが、beginとendである。
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. |