在 verilog 中左移一个数字,只保留高位
Shift a number left in verilog and only retain upper bits
我在 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;
我认为您的第一个解决方案很干净。但你也可以这样做
assign mywire_shifted = mywire[shiftamount+8 +: 8];
这表示从 LSB (shiftamount+8) return 下一个 MSB(更高)8 位开始。
我在 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;
我认为您的第一个解决方案很干净。但你也可以这样做
assign mywire_shifted = mywire[shiftamount+8 +: 8];
这表示从 LSB (shiftamount+8) return 下一个 MSB(更高)8 位开始。