[在Verilog中,我注意到,在if语句的条件下,各种资源(课程笔记与在线资源)倾向于使用逻辑运算符!或归约运算符〜。
例如,将其与低电平有效复位一起使用:
if(!reset)
//reset statements, etc.
或
if(~reset)
//reset statements, etc.
我相信,由于知道复位应该/应该是1或0的1位二进制输入,因此它们在本质上都给出了相同的仿真结果。我知道如果条件是多位值,这可能会改变。
选择一个而不是另一个会有任何应用程序好处吗?有人可以提供任何示例吗?综合方面会发生什么变化?模拟?
此问题的答案可能会有一些明显的偏见,但我希望您放入if(expression)
中的表达式将被评估为1位正确或错误的结果。因此,!result
更能代表您的意图。
对于单个信号,例如您的复位,是的,它们在仿真和综合中应该给出相同的结果。任何不可能的工具都有一些错误。
我个人不相信一个比另一个更好。我已经看到FPGA和ASIC都在成功的设计中使用了多年。我通常使用〜,因为我更喜欢想到一个置为低电平的置位/复位,在置位/复位引脚上具有一个真反相器。