for文for(初期化; 終了条件; 処理終了ごとに実行される処理) 処理
for文は、終了条件を満たすまで処理を繰り返すか、処理を展開します。 parameter WIDTH = 8;
parameter INIT = 8'b0;
parameter DEPTH = 16;
// for文内で使用する変数の宣言 integer i;
reg [WIDTH - 1: 0] queue [DEPTH - 1: 0];
always @(posedge clock) begin
if(reset) begin
for(i = 0; i < DEPTH; i = i + 1) begin // i++, ++iとは記述できない
queue[i] <= INIT;
end
// これは以下と等価な回路を生成することが期待される。
// queue[0] <= INIT;
// queue[1] <= INIT;
// queue[2] <= INIT;
// ...
// queue[9] <= INIT ;
end else begin
for(i = 1; i < DEPTH; i = i + 1) begin
queue[i - 1] <= queue[i];
end // これは以下と等価な回路を生成することが期待される。
// queue[0] <= queue[1];
// queue[1] <= queue[2];
// queue[2] <= queue[3];
// ...
// queue[8] <= queue[9]; ...
forever文
forever 処理
処理を永遠に続けます。テストベンチを作成する際に用いられます。 module TestCounter();
reg clock;
initial begin
forever begin // シミュレーションのためのクロックを生成
clock = 0;
#20 clock = 1;
end end
...
repeat文処理を指定した回数だけ繰り返します。
repeat(回数) 処理
while文while(終了条件) 処理
または while(終了条件) begin 処理 end
応用実験受講者へ開発環境によってはfor文を展開できないことがあるため、for文を用いる際は必ずシミュレーションをすること。Xilinx ISE 9.2iでは多分大丈夫でしょうが...。 |