假設我有一個向量value[6:0]
和一個輸入向量input[3:0]
。問題是我想了許多在值向量位的設定爲1點的基礎上輸入的值,例如:使用系統verilog中的運行時值選擇位向量範圍
input = 0011
(3中分解)然後value = 000111
(組3位以1
)
input = 0101
(5中分解)然後value = 011111
(設置5位到1
)
由於我們可以做到這一點,只有當值不變,但在這裏它是運行時改變。任何想法解決這個問題?
假設我有一個向量value[6:0]
和一個輸入向量input[3:0]
。問題是我想了許多在值向量位的設定爲1點的基礎上輸入的值,例如:使用系統verilog中的運行時值選擇位向量範圍
input = 0011
(3中分解)然後value = 000111
(組3位以1
)
input = 0101
(5中分解)然後value = 011111
(設置5位到1
)
由於我們可以做到這一點,只有當值不變,但在這裏它是運行時改變。任何想法解決這個問題?
這裏沒有必要選擇一個範圍。
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;
這可能是如此簡單:
wire [3:0] input;
wire [31:0] constant_value = 32'h0000_FFFF;
wire [15:0] output;
assign output = constant_value[ input +: 16 ];
注 「+」 範圍選擇。
'assign output = constant_value [0 +:input];',它會給我正確的輸出嗎? – Jithin
感謝亞當,我會試試這種方式,我做了另一種方式用於循環。也許會試圖看看哪些方法可以節省我的資源。再次感謝 – princegialai