Verilog-2001的向量部分選擇

Verilog-2001的向量部分選擇
什麼是向量部分選擇呢?

verilog-2001 LRM中有這麼一句話:

對於a[8*i+:8],this is the so-called “Indexed vector part selects” 。

在Verilog-1995中,可以選擇向量的任一位輸出,也可以選擇向量的連續幾位輸出,不過此時連續幾位的始末數值的index需要是常量。

vect[msb_expr : lsb_expr]; //其中msb_expr和lsb_expr必須是常量表達式。
而在Verilog-2001中,可以用變量作爲index,進行part select。

[base_expr +: width_expr] //positive offset

[base_expr -: width_expr] //negative offset

其中base_expr可以是變量,而width_expr必須是常量。+:表示由base_expr向上增長width_expr位,-:表示由base_expr向下遞減width_expr位。

例如:

reg [63:0] word;

reg [3:0] byte_num; //a value from 0 to 7

wire [7:0] byteN = word[byte_num*8 +: 8];

如果byte_num的值爲4,則將word[39:32]賦值給byteN。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章