我有一些与此类似的代码(下面是一个示例):
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的复杂得多的函数。
谢谢!
答案 0 :(得分:0)
generate
块仅用于生成常规Verilog语句,例如模块实例化,总是块,assign语句……这是一种预处理。
因此,您的作业必须是合法的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