设为首页 加入收藏

TOP

Verilog学习笔记基本语法篇(五)········ 条件语句(一)
2017-10-10 12:21:06 】 浏览:4027
Tags:Verilog 学习 笔记 基本 语法 条件 语句

条件语句可以分为if_else语句和case语句两张部分。

 

A)if_else语句

三种表达形式

1) if(表达式)          2)if(表达式)               3)if(表达式1)

            语句1;                    语句1;                           语句1;

                                    else                              else   if(表达式2)    语句2;

                                          语句2;                   else   if(表达式3)    语句3;

                                                                              ........

                                                                       else   if(表达式n)     语句n;

说明:

1)3种形式的if语句后面都有表达式,一般为逻辑表达式或关系表达式。当表达式的值为1,按真处理,若为0、x、z,按假处理。

2)在每一个else前面,即上面的语句后都有分号(除非上面是begin_end块)。else语句不能单独使用,它是if语句的一部分。

3)if 和else后面都可以包含一个内嵌的操作语气,也可以有多个语句,此时可以用begin_end将它们包含起来成为一个复合块语句;(end后不需要再加分号

4)允许一定形式的表达式的简写方式。如:if(expression)等同于 if(expression==1)

5)if语句可以嵌套,即 if 语句中可以再包含if语句,但是应该注意else总是与它上面的最近的 if 进行配对。

如果不希望else与最近的 if 配对,可以采用begin_end进行分割,如:

if ()

     begin

         if()  语句1;

     end

else

     语句2;

这里的else与第一个 if 配对,因为第二个 if 被限制在了begin_end内部。

 

注意:

条件语句必须在过程块中使用。所谓过程块是指由 initial 和always语句引导的执行语句集合。除了这两种语句引导的begin_end块中可以编写条件语句外,模块中的其他地方都不能编写。

在always块内,若果在给定的条件下变量没有赋值,这个变量将保持原值,也就是说会生成一个锁存器。

 

B)case语句

 case语句是一种多分支选择语句,if只有两个分支可以选择,但是case可以直接处理多分支语句。

1)case(表达式)      <case分支项>  endcase

2)casex(表达式)    <case分支项>  endcase

3)casez(表达式)    <case分支项>  endcase

case分支项的一般格式如下:

分支表达式:             语句;

默认项(default)      语句;

1)case后括号内的表达式称为控制表达式,分支项后的表达式称作分支表达式,又称作常量表达式。控制表达式通常表示为控制信号的某些位,分支表达式则用这些控制信号的具体状态值来表示。

2)当控制表达式和分支表达式的值相等时,就执行分支表达式后的语句。

3)default项可有可无,一个case语句里只准有一个default项。(为了防止程序自动生成锁存器,一般都要设置default项,P57)

4)每一个case的表达是必须各不相同,执行完case分支项的语句后,跳出case块。

5)case语句的所有表达式的值的位宽必须相等。

                                               case casex 和 casez 的真值 

case 0   1   x   z   casez 0    1   x   z   casex 0   1   x   z
0 1   0   0   0   0 1   0   0   1   0 1   0   1   1
1 0   1   0   0   1 0   1   0  
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Verilog学习笔记基本语法篇(四).. 下一篇uart串口的调试学习

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目