欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇为各位朋友介绍Verilog HDL中容易出错的运算符(一)。
A. 异或运算。
假设我们需要判断两个八位的异或结果是否为某一个确定值,应该如何编写Verilog HDL呢?
if (dataa ^ datab == 8'h23)
上述的编写方式为错误的,在Verilog HDL中,异或的位运算的优先级低于==;故而应该写为:
if ((dataa ^ datab) == 8'h23)
由此可知,异或运算更低于那些加减乘除了,在进行设计时,要注意啦。
B. 右移或者左移
假设我们需要将一个数据左移三位,加上另外一个数据左移两位,应该如何编写呢?
assign datas = dataa << 3 + datab << 2;
上述的编写方式为错误的,在Verilog HDL中,左移的优先级是低于加法的;故而应该写为:
assign datas = (dataa << 3) + (datab << 2);
常用的运算符号都已经列在下表中,优先级从上到下,依次降低。
万能法:弄不清楚就加括号,括号优先级最高。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!
125