我正在尋找一個優雅的C++使用SystemC來連接位。concatenate位C++
系統的Verilog例如,在一個漂亮的一行:
bool my_variable;
uint bits_combination = {8'b0, {8{my_variable}}, 8'b1, 4'b0, 2'b1, 2'b0};
對於C++我的最佳解決方案:
bool my_variable;
sc_uint<32> bits_combination;
bits_combination.range(31,24) = 0;
bits_combination.range(23,16) = my_variable ? (1 << 8)-1 : 0;
bits_combination.range(15,8) = (1 << 8)-1;
bits_combination.range(7,4) = 0;
bits_combination.range(3,2) = (1 << 2)-1;
bits_combination.range(1,0) = 0;
提高該行的非三元運營商也將幫助:
my_variable ? (1 << 8)-1 : 0
是位不變的休息嗎?系統verilog示例中的uint有34位?如果其餘部分沒有改變,將它作爲掩碼,或者在(255 << 16)中如果我的變量是真的? –