Ich bin neu in Verilog und ich würde es wirklich zu schätzen, wenn jemand mir mit diesem Fehler helfen könnte:Verilog-Fehler: Ein Verweis auf einen Draht oder reg nicht in einem konstanten Ausdruck erlaubt
output reg [0:image_width][image_height:0] result
....
integer i, j, imageX, imageY, x, y, kernelX, kernelY;
....
@(negedge ACLK)
for(x = 0; x < image_width; x++) begin
for(y = 0; y < image_height; y++)
begin
//multiply every value of the filter with corresponding image pixel
for(kernelX = 0; kernelX < kernel_width; kernelX++) begin
for(kernelY = 0; kernelY < kernel_height; kernelY++)
begin
imageX = (x - kernel_width/2 + kernelX + image_width) % image_width;
imageY = (y - kernel_height/2 + kernelY + image_height) % image_height;
// ignore input samples which are out of bound
if(imageY >= 0 && imageY < image_height && imageX >= 0 && imageX < image_width)
//ERROR HERE!!!
result[x][y] += image[imageX][imageY] * kernel[kernelX][kernelY];
end
end
end
end
end
Die Fehler, den ich bekomme ist:
error: A reference to a wire or reg ('x') is not allowed in a constant expression.
error: Array index expressions must be constant here.
error: A reference to a wire or reg ('imageX') is not allowed in a constant expression.
error: Array index expressions must be constant here.
error: A reference to a wire or reg ('kernelX') is not allowed in a constant expression.
error: Array index expressions must be constant here.
Könnte mir jemand sagen, was ich falsch mache? Vielen Dank!
Sind Sie sicher, 'image_width' und' image_height' sind Parameter? – sharvil111
Ja, das sind sie. '' Modul PU_conv '# (// Parameters' ' Parameter image_width integer = 10, '' Parameter integer image_height = 4, '' Parameter integer kernel_width = 2, '' Parameter integer kernel_height = 2' ')' – AnnaR