ループ
# このページは,学生実験用資料として筑波大学リコンフィギュラブルコンピューティングシステム研究室のwebページで公開されていたものを,許可を得て転載したものです.
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文
処理を永遠に続けます。テストベンチを作成する際に用いられます。
module TestCounter();
reg clock;
initial begin
forever begin
// シミュレーションのためのクロックを生成
clock = 0;
#20 clock = 1;
end
end
...
|
repeat文
処理を指定した回数だけ繰り返します。
while文
または
開発環境によってはfor文を展開できないことがあるため、for文を用いる際は必ずシミュレーションすること。
戻る