SystemVerilog:如何将二进制向量转换为整数

时间:2017-04-09 12:14:59

标签: verilog system-verilog digital-logic

我有一个8位输入A和3位输入n。我想向左或向右移动A次​​,但这段代码似乎不起作用(输出为x):

w = A << n;

但是当我输入一个像2而不是n的整数时,代码可以正常工作。那么如何将n转换为整数值,以便移位操作可以正常工作?

1 个答案:

答案 0 :(得分:0)

移位运算符始终将RHS上的表达式视为无符号。您还需要将n声明为有符号变量,或者转换为已签名的

bit signed [2:0] n;
assign w = (n >= 0) ? A << n : A>> -n;
bit [2:0] n;
assign w = (signed'(n) >= 0) ? A << n : A >> -n;