Verilog 位拼接运算符的优先级问题

最近研究FIFO的时候,在开源工程中看到这样一段代码

1 parameter AW = 8;
2
3 always @(posedge rd_clk)
4     if(!rd_rst)    rp_bin <= {AW+1{1‘b0}};
5     else
6     if(rd_clr)    rp_bin <= {AW+1{1‘b0}};
7     else
8     if(re)        rp_bin <= rp_bin_next;

以前没看到 {AW+1{1‘b0}} 这样用位拼接符的,不清楚运算符 + 和 {} 的优先级哪个高。 虽然分析代码可以看出来“+”的优先级比“{}”高,但是在《Verilog数字系统设计教程》的4.7节 优先级别表中并没有位拼接运算符。

查了下 IEEE Verilog 2005标准(下载链接:https://pan.baidu.com/s/1UJWMIxCciyumoIq_lLxLsw 密码:vzhn),找到了操作符优先级别表。可以看到位拼接运算符“{}”的优先级别是最低,级别最高的是缩减操作符(一元操作符)。

IEEE文件中,也采用了相同的用法,实现可参数化的嵌套位连接符“{{}}”,但是有一定的要求,英语水平比较渣,直接上英文了。。。

A replication operation may have a replication constant with a value of zero. This is useful in parameterized code. A replication with a zero replication constant is considered to have a size of zero and is ignored. Such a replication shall appear only within a concatenation in which at least one of the operands of the concatenation has a positive size.

还举了几个栗子

原文地址:https://www.cnblogs.com/undermyownmoon/p/10591186.html

时间: 2024-08-30 14:16:02

Verilog 位拼接运算符的优先级问题的相关文章

位移位运算符

  位移位运算符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算.位移位运算符分为左移和右移两种,均为双目运算符.第一运算对象是移位对象,第二个运算对象是所移的二进制位数. 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关.如果是左移,则规定补入的数全部是0:如果是右移,还与被移位的数据是否带符号有关.若是不带符号数,则补入的数全部为0:若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位).具体移位规则如下所示. 位移位运算符的优先级如

常见的关系运算符(位拼运算符)

写在前面的话 位拼运算符是将多个小的表达式合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用“,”隔开.位拼运算符是梦翼师兄特别喜欢的一种运算符,它聪慧灵秀,不但可以进行简单的数据拼接,更是可以用来执行移位操作,而且数据永远是循环的,不会丢失,用途非常广泛. 代码实例 /**************************************************** *   Engineer        :   梦翼师兄 *   QQ            

javascript中运算符的优先级

运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出JavaScript运算符.具有相同优先级的运算符按从左至右的顺序求值. 其中圆括号可用来改变运算符优先级所决定的求值顺序.这意味着圆括号中的表达式应在其用于表达式的其余部分之前全部被求值. z = 78 * (96 + 3 + 45) 在该表达式中有五个运算符: =, *, (), +

java基础----&gt;运算符及其优先级

一.运算符 1)'/'  除法运算符 a) 如果是两个整数相除,只取整数商,如7/2=3 b) 如果是和浮点数相除,则取浮点数为商,如7/2F=3.5 2)自增,自减运算符"++""--" a) 使用自增或自减运算符的操作数必须是整数或者浮点数,char以及 boolean型的数不可以使用"++""--" 3)比较运算符,注意这些运算符的操作数的可取类型 4)逻辑运算符&&.&.|| .! a) 这些逻

【黑马程序员】————运算符的优先级

运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 <<.>>.>>> 7 大小关系 >.>=.<.<= 8 相等关系 ==.!= 9 按位与 & 10 按位异或 ^ 11 按位或 | 12 逻辑与 && 13 逻辑或 || 14 条件运算 ?: 15 赋值运算 =.+=.-=.*=.

【C/C++】运算符及其优先级

首先介绍表达式及语句的基本概念. 表达式: 一个表达式由运算量(亦称操作数)和运算符组成.例如,算术表达式A+B是由二元运算符"+"和操作数A.B组成的.A.B分别称为运算符+的左.右操作数. 在表达式中,一元运算符通常写在它的操作数前面,如-A,这种形式称为前缀形,但也有也在操作数的后面,如A++,这种形式称为后缀形.二元运算符一般写在两个操作数的中间,如X+Y. 表达式的性质在后文中会有所提及,如自增.自减运算符只能作用于变量,而不能作用于常量或表达式. 语句: 语句通常是以分号结

[转]Java 运算符的优先级

Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 <<.>>.>>> 7 大小关系 >.>=.<.<= 8 相等关系 ==.!= 9 按位与 & 10 按位异或 ^ 11 按位或 | 12 逻辑与 && 13 逻辑或 || 14 条件运算 ?: 15 赋值运算 =.+=.-

说说C语言运算符的“优先级”与“结合性”

论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时.但从本质上看,仍然是概念理解上的偏差.本文试图通过对三个典型表达式的分析,集中说说运算符的优先级.结合性方面的问题,同时说明它们跟求值过程之间存在的区别与联系. 优先级决定表达式中各种不同的运算符起作用的优先次序,而结合性则在相邻的运算符的具有同等优先级时,决定表达式的结合方向. (一)a = b = c;关于优先级与结合性的经典示例之一就是上面这个"连续赋值"表

Delphi 的运算符列表,运算符及优先级表格 good

Delphi 的运算符列表 分类 运算符 操作 操作数 结果类型 范例 算术运算符 + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 Result - 1 * 乘 整数,实数 整数,实数 P * InterestRate / 实数除 整数,实数 实数 X / 2 div 整数除 整数 整数 Total div UnitSize mod 取模 整数 整数 Y mod 6 +(一元) 符号等同 整数,实数 整数,实数 +7 -(一元) 符号相反 整数,实数 整数,实数 -X