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

Posted undermyownmoon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog 位拼接运算符的优先级问题相关的知识,希望对你有一定的参考价值。

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

1 parameter AW = 8;
2 
3 always @(posedge rd_clk)
4     if(!rd_rst)    rp_bin <= {AW+1{1b0}};
5     else
6     if(rd_clr)    rp_bin <= {AW+1{1b0}};
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

还举了几个栗子

技术图片

 

以上是关于Verilog 位拼接运算符的优先级问题的主要内容,如果未能解决你的问题,请参考以下文章

暑期实习准备——Verilog手撕代码(持续更新中。。。

Notepad++编辑器——Verilog代码片段直接编译

设计四位移位寄存器shifter_4

verilog中有符号数的运算

FPGA/verilog 学习笔记—— Verilog基础语法

verilog 两个32位的数据怎么按位异或