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標准),找到了操作符優先級別表。可以看到位拼接運算符“{}”的優先級別是最低,級別最高的是縮減操作符(一元操作符)。

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

還舉了幾個栗子

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM