条件语句用于根据某个条件来确定是否执行其后的语句,关键字if和else用于表示条件语句。
Verilog语言共有3种类型的条件语句。
//第一类条件语句:没有else语句
//其后的语句执行或不执行
if(<expression>) true_statement;
//第二类条件语句:有一条else语句
//根据表达式的值,决定执行true_statement或者false_statement
if(<expression>) true_statement;
else false_statement;
//第三类条件语句:嵌套的if_else_if语句
//可供选择的语句有许多条,只有一条被执行
if(<expression1>) true_statement1;
else if(<expression2>) true_statement2;
else if(<expression3>) true_statement3;
else default_statement;
条件语句的执行过程为:
计算表达式expresssion,如果结果为真,即1或非零值,则执行true_statement语句。
如果结果为假,即0或不确定值x,则执行false_statement语句。
在条件表达式中可以包含任何操作符。
true_statement和false_statement语句,可以是一条语句,也可以是一组语句,如果是一组语句,则通常使用begin和end关键字将它们组成一个块语句。
//第一类条件语句
if(! lock) buffer = data;
if(enable) out = in;
//第二类条件语句
if(number_queued<MAX_Q_DEPTH)
begin
data_queued = 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 ALU control singal");