当b=0的时候a的值为0,当b=1时,a的值取决于c,d的值,当c=1,d=1时a的值等于1,当c=1,d=0或者c=0,d=1或者c=0,d=0时a的值为0。
首先会判断b的值是否等于1,等于0,则直接对a进行赋值为0,如果b的值为1,那么会执行(c && d) ? 1'b1:1'b0,然后根据c&&d的结果判断赋值的结果,当c=1,d=1,时a赋值为1,其他情况都赋值为0。
扩展资料:
Verilog是一种大小写敏感的硬件描述语言。其中,它的所有系统关键字都是小写的。
Verilog具有一些编译指令,它们的基本格式为`
三目运算符“表达式1?表达式2:表达式3”,的执行为,先判断表达式1的结果,结果为真执行表达式2,否则执行表达式3。
Verilog还允许设计人员为每个延迟时间设置最大值、典型值、最小值,在编译阶段可以通过编译代码选择其中一个。
参考资料来源:百度百科-VerilogHDL
写的代码风格不好,致使别人很难理解,如果加上括号就好理解了.
assign a= (b=1)? ((c && d) ? 1'b1:1'b0) :1'b0; 我在后面加上括号
先判断b的值,不过我认为verilog中的等于应该是==而不是=吧,也可以直接写(b),
1.如果b等于0,则a的值就是0,不管你的cd是多少。
2.如果b=1,则进入我加的括号里面的那个问号判断,这时候再判断c&&d的值,如果是1,a=1,如果是0,a=0
所以我们可以给出真值表 tab
b 0 1 1 1 1
c x 1 0 0 1
d x 1 0 1 0
a 0 1 0 0 0
1111