Verilog中循环语句使用
程序员文章站
2022-07-14 22:40:13
...
- 概述
- for语句
- repeat语句
- while语句
- forever语句
1.概述
对verilog中四种循环语句进行介绍,其中for、repeat、while可综合,forever不可综合,分别介绍其语法结构并给出相应的demo code
2.Verilog中循环语句
2.1 for
for语句语法:
for(循环初始值设置表达式;循环控制条件表达式;循环控制变量增值表达式)
begin 循环体语句结构 end
使用for语句实现的4位乘法器设计:
module Loop(A,B,R);
parameter S=4;
input[S:1] A,B;
output[2*S:1] R;
reg[2*S:1] R;
integer i;
aaa@qq.com(A or B)
begin
R=0;
for(i=1;i<=S;i=i+1)
if(B[i]) R=R+(A<<(i-1));
end
endmodule
2.2 repeat
repeat语法:
repeat(循环次数表达式)
begin 循环体语句结构 end
module Loop(A,B,R);
parameter S=4;
input[S:1] A,B;
output[2*S:1] R;
reg[2*S:1] R;
reg[2*S:1] TA;
reg[S:1] TB;
aaa@qq.com(A or B)
begin
R=0;
TA=A;
TB=B;
repeat(S)
begin
if(TB[1]) R=R+TA;
TA=TA<<1;
TB=TB>>1;
end
end
endmodule
2.3 while
while语法:
while(循环控制条件表达式)
begin 循环体语句结构 end
module Loop(A,B,R);
parameter S=4;
input[S:1] A,B;
output[2*S:1] R;
reg[2*S:1] R;
reg[2*S:1] AT;
reg[S:1] BT,CT;
aaa@qq.com(A or B)
begin
R=0;
AT={{S{1'b0}},A};
BT=B;
CT=S;
while(CT>0)
begin
if(BT[1]) R=R+AT;
else R=R;
CT=CT-1;
AT=AT<<1;
BT=BT>>1;
end
end
endmodule
2.4 forever
forever语句不可综合,该语句用于仿真,语法如下:
forever 语句;
或
forever begin 语句; end
forever循环语句可以连续不断地执行其后的语句或语句块,从而产生周期性的波形,作为仿真激励信号,比如clock信号。
demo code:
`timescale 1ns/1ps
module Loop_tb;
reg clk;
initial
begin
clk=0;
forever
begin
#5;
clk=~clk;
end
end
endmodule
Questasim波形: