我有一个假设为16位(15:0)的数组。我有一个注册的4位变量,比如'pos‘,它会根据其他条件发生变化。根据变量pos的值,我想设置一个位并清除剩余的位(0)。例如,如果为pos=5,则位5应变为1,而所有其他位应设置为0(清除)。0000 0000 00100 0000是所需的值。这应该是可以在系统verilog中综合的
我可以设置所需的位,但清除剩余的位一直是一个挑战。
发布于 2019-06-04 05:39:15
使用逻辑移位运算符来设置位
value = 16'b1 << pos;
发布于 2019-06-04 05:37:21
1)查看shift中的另一个答案
2)对于更复杂的情况,比如如果你想在1之后或之前保留另一个值的右或左部分,你可以简单地使用case语句分配16个可能值中的完整答案/结果。
3)您还可以使用循环遍历所有位来设置它们自己的逻辑等式,如等于计数器时为1,大于时为0,低于/else时为源位,依此类推...
https://stackoverflow.com/questions/56434670
复制相似问题