这4种情况表达方式是:
if(a>0)
if(b>0) .//对应的是a>0,b>0;。
else .// 对应的是a>0,b0).//对应的是a0;。
else .//对应的是a。
三种形式的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块中可以编写条件语句外,模块中的其他地方都不能编写。
最好的方法你自己编译后看看生成的rtl看看它是怎么构成的; 这个语句的执行可以说没有先后顺序,同时赋值,看看内部RTL网络就知道了;。
和条件语句if作用不同
`ifdef是判断后面的name是否被define过。
并不存在所谓的条件
ifdef可以嵌套
`ifdef
`ifdef
xxx
`else
yyy
`endif
`else
zzz
`endif
xxx可以看作你所谓的多个条件(A&&B)满足后执行的语句。
verilog对边沿触发的逻辑有规定:
你写了negedge rst,就必须在always内的第一个if中写~rst的逻辑。就是你把if(en)写在rst下面就好了。
这样综合时推断的是一个异步复位的寄存器。
-------------------------------。
为什么语法要这么规定我也不知道。@()里面的第一项是时钟定义,第二项和第三项(如果有的话)是异步复位和异步置位,必须写在第一个if, else if里面(如果有第三项的话)。
你说的其他按键就一个ctrl了啊,if(en)写在ctrl前面就行了。