Я борюсь с ошибкой «Диапазон должен быть постоянным», когда я думаю, что это так!
Операция, которую я должен реализовать, такова:
Учитывая 8 битов со знаком / без знакавектор и переменная точка, например: b7b6b5b4b3b2.b1b0 или b7b6b5b4b3.b2b1b0
Я должен добавить целую часть с первым дробным битом, например:
b7b6b5b4b3b2 + b1b5 для первого слова, b4bb для первого слова+ b2 для второго случая.
Количество дробных битов задается портом с именем "port_scale" wide C_SHIFT_BITS.
Это мой код, я хочу сгенерировать все комбинации:
C_SHIFT_BITS = 4;
always_comb begin
for (int k=1; k<2**(C_SHIFT_BITS-1); k++) begin
dout_temp[k-1][8:0] = din[(k-1)+:8-k] + din[(k-1)+:1]
end
for (int k=1; k<2**(C_SHIFT_BITS-1); k++) begin
if (port_scale == k) begin
dout = dout_temp[k][8:0];
end
end
end
У вас есть другое решение или способ кодировать это, чтобы сделать его общим?Я бы не стал кодировать массивный оператор case, поскольку параметр C_SHIFT_BITS может быть любым числом, меньшим ширины din.Цикл for должен обойти недопустимый din [port_scale ...], но он не работает должным образом.
Спасибо