我有一个16位(15:0)的数组。我有一个注册的4位变量,称为“ pos”,它会根据其他情况而变化。根据变量pos的值,我想设置一个位并清除剩余的位(0)。例如,如果pos = 5,则位5应该变为1,所有其他位都设置为0(清除)。 0000 0000 0010 0000是所需值。这应该可以在系统Verilog中综合
我能够设置所需的位,但是清除其余位一直是一个挑战。
答案 0 :(得分:3)
使用逻辑移位运算符设置一位
value = 16'b1 << pos;
答案 1 :(得分:0)
1)查看带有班次的其他答案
2)对于更复杂的情况,例如,如果您想将另一个值的左或右部分保留在1之前或之后,则可以使用case语句简单地在16个可能的值中分配完整的答案/结果。
3)您还可以在所有位上使用循环来设置自己的逻辑方程式,例如1(如果等于计数器),0(如果高于计数器),源位(如果低于/其他),等等...