微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 炼狱传奇-if_else与case之战

炼狱传奇-if_else与case之战

时间:03-31 来源:互联网 点击:

………

<分支语句n>  :语句块n

Default:       语句块n+1;

Endcase


<控制表达式>代表着对程序流向进行控制的控制信号:各个<分支表达式>则是控制表达式的某些具体状态取值,在实际使用中这些分支项表达式通常是一些常量表达式:各个“语句”则指定了在各个分支下所要执行的操作,它们也可以是由单条语句构成,处于最后的、以关键词default开头的那个分支项称为“default”分支项,它是可以缺省的。


   Case语句的执行过程:

   (1)当“控制表达式”的取值等于“分支项表达式1”时,执行第一个分支项所包含的语句块1.

(2)当“控制表达式”的取值等于“分支项表达式2”时,执行第一个分支项所包含的语句块2.  

………….

(n)当“控制表达式”的取值等于“分支项表达式n”时,执行第一个分支项所包含的语句块n.

    (4)在执行了某一分支项内的语句后,跳出case语句结构,终止case语句的执行。

Case语句中各个“分支项表达式”的取值必须是互不相同的,否则就会出现矛盾现象。



例如程序4

仿真图

Case语句在执行时,控制表达式和分支项表达式之间进行的比较是一种按进位进行的“全等比较”,也就是说,只有在分支项表达式和控制表达式对应的每一位都是彼此相等的情况下才认为分支项表达式和控制表达式两者是“相等”的,对应的语句块就会被执行。


1.  case语句和if-else的区别


   if-else 语句的执行是有优先级的判断,按照优先级的顺序执行语句;而case语句没有先级的考虑,只跟对应的逻辑值有关系,只要逻辑值对应相等就执行对应的语句块。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top