如何在Verilog的case语句中使用for循环语句

时间:2015-02-17 15:11:15

标签: loops case verilog fpga

我正在尝试编译类似于此的代码:

`define CORES_NUM 4
reg [1:0] core = 'h0;
reg [`CORES_NUM-1:0] result = 'h0;
integer i;

always @ (posedge clk) begin
   case (core)
      for (i = 0; i < `CORES_NUM; i = i + 1) begin							
         i: begin
            result[i] <= 1;
         end
      end
   endcase
end

目前只有一个核心处于活动状态。我希望我的代码与此相同:

case (core)						
         0: begin
            result[0] <= 1;
         end
         1: begin
            result[1] <= 1;
         end
         2: begin
            result[2] <= 1;
         end
         3: begin
            result[3] <= 1;
         end
endcase

换句话说,我只需要'for loop'进行自动设置 - 如果我更改CORES_NUM,则会自动更改大小写状态。 但我的代码构建错误。如何在case语句中使用for循环?

1 个答案:

答案 0 :(得分:1)

为什么不:

always @(posedge clk) if (core < `CORES_NUM) result[core] = 1;