这个写法和或门相比有什么区别吗?

这个写法和或门相比有什么区别吗?

问题描述:

verilog
两个输入a,B
一个输出c

c=a?1'b1:(B?1'b1:1'b0);

还想请教一下二者的优势和缺点,哪一个更稳些,哪一个对fpga来说消耗少些。谢谢~

编译出得结果不一样
用你这个写法,编译出来是一个二选一
这最终不会影响结果正确性

虽然输出的特性一样,但是运算的顺序和逻辑还是有很大差别的

这种写法和直接用与或非门的写法,编译出的结果是不一样。
但是占用的资源都是 1 个 LUT,这个 LUT 是 FPGA 的基本单元,包括6个输入2个输出(XILINX)。
可以说只要不超过6入2出得组合逻辑都是 1 个 LUT 就行。
结论,这两种写法不影响最终的资源占用,也不影响稳定。
客观的说,以 “代码可读性”来说,用 C= A ? x:y; 这会好些,代码容易读。
在一些简单的逻辑,直接用与非门去描述也很好。