我在verilog中有以下电汇:
wire [15:0] mywire;
wire [7:0] mywire_shifted
wire [4:0] shiftamount;
我想将mywire左移一些,但只保留高8位:
assign mywire_shifted = (mywire << shiftamount) >> 8;
有更简洁的方法吗?
也许是这样的:
assign {mywire_shifted,8'0} = mywire << shiftamount;
答案 0 :(得分:5)
我认为你的第一个解决方案是干净的。但你也可以这样做
assign mywire_shifted = mywire[shiftamount+8 +: 8];
这说从LSB(shiftamount + 8)开始返回下一个MSB(更高)8位。