Verilog - 是否可以根据生成块中的genvar变量为寄存器赋值

问题描述 投票:0回答:1

我有一些类似的代码(下面是一个例子):

genvar x;
genvar y;
generate
    for (y = -off; y < off; y=y+1) begin
        for (x = -off; x < off; x=x+1) begin
            guassian_kernel[((((y+off)*ks)+x+off+1)*fs)-1:(((y+off)*ks)+x+off)] = x*y; // <- something like this
        end
    end
endgenerate

有可能做类似的事情或类似的事情:

20'd(x*y) 

等等?

或者我除了硬编码所有寄存器值外别无选择?在我正在使用的实际代码中,reg中的值将是x和y的更复杂的函数。

谢谢!

for-loop verilog assign synthesis
1个回答
0
投票

一个generate块只用于生成常规的verilog语句,比如模块实例化,总是块,赋值语句......这是一种预处理。

因此,您的作业必须是合法的verilog声明,例如,

generate
for (y = -off; y < off; y=y+1) begin
    for (x = -off; x < off; x=x+1) begin
        always @*  // <-- something like this.
             guassian_kernel[((((y+off)*ks)+x+off+1)*fs)-1:(((y+off)*ks)+x+off)] = x*y; 
    end
end
endgenerate
© www.soinside.com 2019 - 2024. All rights reserved.