verilog语言中,这句话是什么意思?

assign emif_oen_o = ((nn_mode == 2'b00) & nor_en | (nn_mode == 2'b01) & nand_en);

其中 emif_oen_o , nor_en , nand_en 均为1bit的
我想问的是这局话是啥意思呢~~~
还有就是,emif_oen_o 是1 bit的,而nn_mode 2 bit的,运算后怎么连接呢~~
我是新学verilo,还请各位大哥教教小弟~~

其实这是一个判断式,假设a == (nn_mode == 2'b00),所以这个意思就是如果nn_mode == 2'b00说明括号内式子成立,a == 1;否则 a == 0.是1bit的。emif_oen_o 是1 bit的,而nn_mode 2 bit的他俩之间没什么关系。追问

您看我这样理解对么:
如果nn_mode == 2'b00 , 那么 emif_oen_o = nor_en

追答

不是。其实你的式子是想表达下面这个意思,与的优先级比或高。
assign emif_oen_o = (((nn_mode == 2'b00) & nor_en) | ((nn_mode == 2'b01) & nand_en));
所以,如果nn_mode == 2'b00 , 那么 :
emif_oen_o = ((1 & nor_en)|(0 & nand_en));
所以,如果nn_mode == 2'b01 , 那么 :
emif_oen_o = ((0 & nor_en)|(1 & nand_en));

追问

嗯啊,
所以,如果nn_mode == 2'b00 , 那么 :
emif_oen_o = ((1 & nor_en)|(0 & nand_en)) = nor_en
所以,如果nn_mode == 2'b01 , 那么 :
emif_oen_o = ((0 & nor_en)|(1 & nand_en))= nand_en
那个 “0 & 一个数” ,结果不是0么~~,先与最后才或
我这样理解对么~~

追答

第二次回答是,打错了!very good!~

温馨提示:答案为网友推荐,仅供参考
相似回答