我想創建一個模塊,根據一個熱輸入將x個輸入數據包切換爲單個輸出數據包。如何使用SystemVerilog定義參數化多路複用器
如果x是4個固定值,我只想創造一個case語句,
case (onehot)
4'b0001 : o_data = i_data[0];
4'b0010 : o_data = i_data[1];
4'b0100 : o_data = i_data[2];
4'b1000 : o_data = i_data[3];
default : o_data = 'z;
endcase
但隨着變量x,我如何定義所有的案件?
謝謝。
是的,我確實表示謝謝,我將編輯q。雖然 爲什麼行'o_data ='z'不與'o_data = i_data [i];'相沖突並且是if(oneshot ==(1 << i))'if' oneshot [i] == 1)'? – user2646276
for循環之前的賦值就像默認值一樣。最後的任務應該贏。這兩個比較是不相同的,因爲'oneshot [i] == 1'僅基於那一個比特匹配。如果多位高,那麼你會得到多個匹配。 – nguthrie
例如,如果'oneshot == 4'b1001'然後'oneshot [0] == 1'將成立,但'oneshot ==(1 << 0)'將是錯誤的。 – nguthrie