欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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波形:
Verilog中循环语句使用

相关标签: # EDA verilog