выбор диапазона битового вектора со значением времени выполнения в системном тесте - PullRequest
0 голосов
/ 08 октября 2011

Допустим, у меня есть вектор value[6:0] и входной вектор input[3:0].Проблема в том, что я хочу установить число битов в векторе значений на 1 основание на значении входа, например:

input = 0011 (3 в декабре), затем value = 000111 (установите 3 бита в 1)
input = 0101 (5 в декабре), затем value = 011111 (установите для 5 битов значение 1)

Поскольку мы можем сделать это легко, только когда значение в константе, но здесь оно выполняетсяизменение времени.Любые идеи по решению этого?

Ответы [ 2 ]

4 голосов
/ 08 октября 2011

Здесь нет необходимости выбирать диапазон.

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;
0 голосов
/ 30 марта 2015

Это может быть так просто:

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

assign output = constant_value[ input +: 16 ];

Примечание "+:" выбор диапазона.

...