always_comb中的for循环的优先级情况过程块给出错误?

时间:2019-04-08 18:12:57

标签: verilog system-verilog modelsim

例如,我正在尝试构建静态优先级编码器, 0011101010 ------> 0010000000

基本上,索引值最高的索引应为1,其他索引的索引必须为零。

我已经用modelsim尝试了以下代码,但给出了错误提示:

**错误:“ for”附近:语法错误,意外发生

**错误:语法错误,意外的')',预期为';'

//代码******************************************* < / p>

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 个答案:

答案 0 :(得分:0)

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