对于2的补码中的2个数字(正数和正数)除以使用ieee.numeric_std.signed它可以使用shift来完成:
res <= std_logic_vector(shift_right(signed(arg), 1));
Run Code Online (Sandbox Code Playgroud)
在shift_right以单个比特移位与签署参数将做算术移位,从而可用于除以2.
正如MatthiasB在评论中指出的那样,也可以使用除法,其中:
res <= std_logic_vector(signed(arg) / 2);
Run Code Online (Sandbox Code Playgroud)
操作上的差异是:
shift_right):向下舍入,因此-7/2 = -4/):向零舍入,因此-7/2 = -3实施的差异:
shift_right):尺寸和速度的零成本,因为仅使用布线/):由于舍入需要逻辑运算,因此在尺寸和速度上会有一些成本| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |