Verilog-在generate块中增加本地参数

时间:2019-03-29 19:07:52

标签: parameters verilog increment

我的Verilog生成块出现错误,显示j = j + 1;说明“ j是未知类型”

data_pick
# array([2., 8., 1., 1., 2.])
y_pick
# array([3, 0, 0, 2, 3])
x_pick
# array([3, 2, 0, 2, 3])

BUFFER,DATA_WIDTH和KERNEL_SIZE是我在模块中拥有的本地参数。

我一直在寻找在我的generate块中拥有第二个参数的方法,我发现我只能在for循环中使用genvar变量,因此我无法为j做第二个genvar变量。

我遇到了这个问题: Incrementing Multiple Genvars in Verilog Generate Statement

我尝试基于第二个答案的代码,但是我的情况略有不同,因为我仅在if语句中对其进行了递增。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您将必须创建一个函数来定义j的值。

genvar i;
for (i = 0; i < BUFFER; i=i+1)
   if((i%DATA_WIDTH) < (KERNEL_SIZE-1)) begin
      localparam j = func(i);
      assign o_input_matrix[((j+1)*DATA_WIDTH)-1:j*DATA_WIDTH] = 
buffer[((i+1)*DATA_WIDTH)-1:i*DATA_WIDTH];
        end
    end
function integer func(integer ii);
   for (ii = 0;ii < BUFFER; ii++)
     if ((ii %DATA_WIDTH) < (KERNEL_SIZE-1)) ii++;
endfunction

没有尝试过,但是希望它能使您接近想要的东西。