Я пытаюсь создать кодировщик со статическим приоритетом, например, 0011101010------>0010000000
В основном индекс с наибольшим значением должен быть равен единице, а остальные индексы должны быть равны нулю.
Я пробовал следующий код с моделями, и он выдает ошибку:
** Ошибка: рядом с "for": синтаксическая ошибка, непредвиденная для
** Ошибка: синтаксическая ошибка, неожиданное ')', ожидание ';'
//код*******************************************
integer i;
always_comb begin
priority case (1'b1)
for ( i=0; i<16 ; i=i+1 )
begin
in[15-i] : out= 16'd2**(15-i);
end
endcase
end
Не существует такого синтаксиса для создания элементов дела в цикле for
. Вам просто нужна петля for
always_comb begin
out = 0;
for (int i=15; i>=0 ; i-- )
if (in[i]) begin
out[i]= 1'b1;
break;
end
end
Удаление break
в этом примере дает вам поведение случая параллельно.
Понятно. Итак, в общем, если мне нужно писать элементы дела без какого-либо приоритета, я просто удаляю оператор «перерыв»?