Я хочу пройти логический вектор из 32 битов и найти индексы, которые имеют значения 1 и 0, и сохранить их в двух отдельных массивах.
Я буду знать через вход, который скажет число единицв массиве.
Массив индексов будет двухмерным.
Также я хочу, чтобы это было реализовано с использованием комбинированной логики и синтезируемости.
Я не могу придумать ни одной логики без вывода защелки.
logic [31:0] data ; // Array to be traversed
logic [31:0] [ONES_NUM-1:0] one_index;// One's indices in array
logic [31:0] [32-ONES_NUM-1:0] zero_index;//Zeros indices in array
always @(*)
while(j < ONES_NUM)
while ( i < 32)
if(data[i]==1) begin
one_index[j][31:0] = i;
j++;
i++;
end
else
i++; //Here prob is no else statement so latch inferred.
Аналогично всегда @ (*) и для нулевого индекса.
Также у меня есть сомнения, является ли цикл while синтезируемым.
Пожалуйста, помогите с логикой.