Verilog学习笔记基本语法篇(五)········ 条件语句 |
您所在的位置:网站首页 › 男孩名字应该怎么起 › 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(表达式) endcase 2)casex(表达式) endcase 3)casez(表达式) 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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |