verilog中关于+:和-:的位选操作
(2012-08-15 22:24:51)
标签:
杂谈 |
verilog中关于+:和-:的位选操作
wire
wire
assign
//
其中,
data_ref[7 -: 5]表示将data_ref中以data_ref[7]为起始,索引依次递减,从而获得的长度为5的字串,即data_ref[7],data_ref[6],data_ref[5],data_ref[4],data_ref[3],并按照data_ref定义时索引的升降序规则将上述比特流进行排列,得到data_ref[7:3]。所以,(1)的效果相当于
assign
data_ref[7 +: 5]表示将data_ref中以data_ref[7]为起始,索引依次递加,从而获得的长度为5的字串,即data_ref[7],data_ref[8],data_ref[9],data_ref[10],data_ref[11],并按照data_ref定义时索引的升降序规则将上述比特流进行排列,得到data_ref[11:7]。所以,(2)的效果相当于
assign data_get = data_ref[12:7]; // 也可以这么说,assign data_get = data_ref[7+5-1:7];
注意,(2)的结果不是data_ref[7:12]而是data_ref[12:7],是因为data_ref定义时是wire
如果data_ref定义为wire [15:0] data_ref,则(1)的结果则变为data_ref[3:7],(2)的结果则变为[12:7];
上述结果为个人理解,如有误欢迎拍砖。

加载中…