#verilog #system-verilog #modelsim
#verilog #system-verilog #modelsim
Вопрос:
Я пытаюсь создать кодировщик статического приоритета, например, 0011101010——>0010000000
В основном индекс с наибольшим значением должен быть равен единице, а другие индексы должны быть равны нулю.
Я попробовал следующий код с modelsim, и он выдает сообщение об ошибке:
** Ошибка: рядом с «for»: синтаксическая ошибка, неожиданная для
** Ошибка: синтаксическая ошибка, неожиданный ‘)’, ожидаемый ‘;’
//code*******************************************
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
Ответ №1:
Такого синтаксиса для генерации элементов case в 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
Комментарии:
1. Понял. Итак, в общем, если мне нужно писать элементы обращения без какого-либо приоритета, я просто удаляю оператор ‘break’?
2. Удаление
break
в этом примере дает вам поведение параллельного случая.