扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

Verilog HDL中容易出错的运算符的优先级(一)

15小时前
125
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。

本篇为各位朋友介绍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);

常用的运算符号都已经列在下表中,优先级从上到下,依次降低。

万能法:弄不清楚就加括号,括号优先级最高。

本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!

相关推荐