2017-04-09 457 views
0

我有一个8位输入A和3位输入n。我想移的n次向左或向右但是这个代码似乎不工作(输出X):SystemVerilog:如何将二进制向量转换为整数

w = A << n; 

但是当我把像2而不是n为整数,代码工作不问题。那么如何将n转换为一个整数值,以便移位操作可以毫无问题地工作?

+0

尝试铸造'N'到'int',即'W = A <<诠释'(N);' – rascob

+0

有没有必要将n转换为int。 –

+0

没有大量的铸造将使输出不是X.这里一定有更多的事情要做。我们可以看到足够的代码来创建可以模拟的东西吗? – nguthrie

回答

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;