for循环内部的优先级情况always_comb程序块给出错误?

问题描述 投票:-2回答:1

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

基本上,具有最高值的索引应该是1,而其他索引必须为零。

我用modelsim尝试了以下代码,它给出了错误说:

**错误:接近“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
verilog system-verilog modelsim
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.