-1

vectorvalue[6:0]と input vectorがあるとしますinput[3:0]。問題は、値ベクトルのビット数を入力の値に基づいて 1 に設定したいことです。

input = 0011(10 進で 3) 次にvalue = 000111(3 ビットを に設定1)
input = 0101(10 進で 5) 次にvalue = 011111(5 ビットを に設定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 に答える