verilog 生成块_Verilog学习----条件语句、循环语句、块语句与生成语句

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值