0
我有一個矢量數據[255:0]。另一個向量len [3:0](根據定義,len只能取最大值8)。我需要這樣做(僞碼):基於不同的矢量掩蓋矢量中的一些位
bits= len*32;
data_mod[255:0] = {data[255:(255-(bits-1))], (256-bits)'0}
ex : if len = 6, then
data_mod[255:0] = {data[255:64], 64'b0}
基本上,搶僅上部「LEN * 32」從原始向量位和零出其餘部分。
我被困在可綜合系統verilog中這樣做?有任何想法嗎?
首先你範圍應爲[511:0],因爲len爲4位寬。對於其餘部分,右移512-len * 32來獲取高位。您可以向左移動相同的數量以清除較低的位。或者你可以玩面具。 – Serge
256位就足夠了,因爲在設計中Len的最大值是8.我確實想到了右移然後左移,但我認爲必須有更優雅的方式 –