zoukankan      html  css  js  c++  java
  • 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   1 0   1   1   1
    x 0   0   1   0   x 0   0   1   1   x  1   1   1   1 
    z 0   0   0   1   z 1   1   1   1   z 1   1   1   1

    casex和casez是case的特殊情况,用来处理过程中不必考虑的情况(don't care condition)。case用来处理不用考虑高阻值,casex表示不用考虑高阻值和不定值。

    上述表格说明casez中,可以将z任意匹配,casex中可以将x任意匹配。在case的分支语句中,从上到下开始匹配,输出第一个匹配成功的值。

    有关casex 和casez的详细对比请参照http://www.cnblogs.com/poiu-elab/archive/2012/11/02/2751323.html

  • 相关阅读:
    从JavaScript的事件循环到Promise
    Vuex初识
    npm常用命令及版本号浅析
    npm install 时--save-dev和--save的区别
    Json-Server模拟数据接口开发
    基于Express+Socket.io+MongoDB的即时聊天系统的设计与实现
    fileInput实战总结
    找工作总结
    nodejs-基本语法
    初识nodejs
  • 原文地址:https://www.cnblogs.com/SYoong/p/5853473.html
Copyright © 2011-2022 走看看