假设我有一个向量value[6:0]
和一个输入向量input[3:0]
。问题是我想在输入值的基础上将值向量中的位数设置为1,例如:
input = 0011
(在dec中为3)然后value = 000111
(将3位设为1
)
input = 0101
(在dec中为5)然后value = 011111
(将5位设置为1
)
正如我们只能在值不变时才能做到这一点,但这里是运行时的变化。有什么想法解决这个问题吗?
答案 0 :(得分:4)
此处无需选择范围。
wire [3:0] input;
wire [7:0] shifted;
wire [6:0] value; //This can only hold 0 to 7
//Assign 2^input then subtract 1
assign shifted = 1'b1 << input;
assign value = shifted - 1;
答案 1 :(得分:0)
这可能很简单:
wire [3:0] input;
wire [31:0] constant_value = 32'h0000_FFFF;
wire [15:0] output;
assign output = constant_value[ input +: 16 ];
注意“+:”范围选择。