我的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语句中对其进行了递增。
任何帮助将不胜感激。
答案 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
没有尝试过,但是希望它能使您接近想要的东西。