1.条件语句(if_else语句)
3钟形式的if语句:
1)if(表达式)语句。如
if(a>b)
out1 = int1;
2)if(表达式)
语句;
else
语句;如
if(a>b)
out1 = int1;
else
out1 = int2;
3)if(表达式1)
语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
…………………...
else if(表达式m) 语句m;
else 语句n;
条件语句必须在过程块语句中是用(initial和always语句),除了这两个语句引导的bedin end块中可以编写条件语句外,模块中的其他地方都不能编写。
说明
(1)3钟形式的if语句中if后面的表达式一般为逻辑表达式或关系表达式。判断若为0、Z、X按假处理,若为1,按真处理执行指定语句。
(2)在每个else前面有一分号,整个语句结束处有一分号。
(3)if和else后包含多个操作语句时要用begin_end包含成一个复合语句。
(4)允许一定形式的表达式简写
(5)else总是与它上面最近的if配对
2.case语句
case语句提供一种多分支选择语句,形式如下:
(1)case(表达式) endcase
(2)casez(表达式) endcase
(3)casex(表达式) endcase
case分支项格式如下
分支表达式: 语句;
default: 语句;
说明:
1)分支表达式又可以称为常量表达式。
2)当控制表达式与分支表达式相等时就执行分支表达式后的语句,如没有相等的就执行default后的语句。
3)default项可有可无,一个case语句只准有一个default项。
4)每个case的分支表达式的值必须互不相等,否则就会出现问题。
5)执行完case分项后的语句则跳出case语句结构,终止case语句。
6)在用case语句表达式进行比较时只当信号对应位的值能明确进行比较时,比较才会成功,因此要详细说明case分项的分支表达式的值。
7)case语句的所有表达式的值位宽必须相等。
Casez语句用来处理不考虑高阻值z的比较过程
casex语句用来处理不考虑高阻值X的比较过程
如果用到if语句最好写上else项;
如果用case语句最好写上default项。
3.条件语句的语法
If else表示的条件语句共有3种类型:
//第一类条件语句
if ( !lock ) buffer = data ;
if ( enable ) out = in ;
//第二类条件语句
if (number_queued < MAX_Q_DEPTH)
begin
data_queue = data ;
number_queued = number_queued + 1 ;
end
else
$display ( " Queue Full. Try again " ) ;
//第三类条件语句
//根据不同的算术逻辑单元的控制信号 alu_control 执行不同的算术运算操作
if ( alu_control = = 0 )
y = x + z ;
else if ( alu_control = = 1 )
y = x - z ;
else if ( alu_control = = 2 )
y = x * z ;
else
$ display ( " Invalid AL