-1

假设我有一个向量value[6:0]和一个输入向量input[3:0]。问题是我想根据输入值将值向量中的位数设置为 1,例如:

input = 0011(3 in dec) then value = 000111(set 3 bits to 1)
input = 0101(5 in dec) then value = 011111(set 5 bits to 1)

因为只有当值保持不变时我们才能轻松做到这一点,但这里是运行时变化。关于解决这个问题的任何想法?

4

2 回答 2

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;
于 2011-10-08T16:16:57.517 回答
0

这可以像这样简单:

wire [3:0] input;
wire [31:0] constant_value = 32'h0000_FFFF;
wire [15:0] output;

assign output = constant_value[ input +: 16 ];

注意“+:”范围选择。

于 2015-03-30T10:02:32.280 回答