Я тоже, почитав ответы, пришёл к выводу об использовании XOR. Можно каскадированием, как предложил
DS_, но при этом, имхо, это будет последовательное сравнение, т.е. тратим время.
Я бы, возможно, сделал примерно так:
Код
if (!(^data[31:0])) cnt = 31;
else if (!(^data[31:1])) cnt = 30;
else if (!(^data[31:2])) cnt = 29;
...
else if (!(^data[31:30])) cnt = 1;
else cnt=0
или, если хочется короче:
Код
for(i=0; i<32; i=i+1)
if(!(^data[31:i])
begin
cnt = 31 - i;
break;
end
всё это, естественно, под always @(data)
Сообщение отредактировал Chudik - Apr 30 2006, 18:05