您的位置:首页 > 其它

verilog-2001 向量部分选择

2012-02-20 10:57 435 查看
rt,什么是向量部分选择呢?

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: