"el rango debe ser el índice final en el nombre indexado", la matriz de segmentos del registro de registros del sistema y enviar al módulo

0

Tengo una matriz 2d (y 1 dimensión más de 11 bits), y no quiero enviar al módulo "cb" la matriz 2d completa, sino solo una parte de él, y entendí que si quiero cortar una array No puedo usar variables no constantes en ambos lados de ":".

Entonces, encontré en línea una manera de superar este problema: img [i +: kersize] [j +: kersize], pero sigo recibiendo el siguiente error: "Error (10768): Error Verilog HDL en convbasic.sv (38): el rango debe ser el índice final en el nombre indexado"

Mi código:

module convbasic #(parameter imgsize=4,
            parameter kersize=3) (
                input clk,
                input  bit unsigned [10:0] img[imgsize:0][imgsize:0],
                input logic raise,rst,
                input  bit unsigned[10:0] kernel[kersize:0][kersize:0],
                output  bit unsigned[10:0] result [4:0][4:0]
                );
.
.
.
genvar i,j;//,k,l;
generate
    for(i=hkersize;i<hkersize+imgsize;i++) begin:first
        for(j=hkersize;j<hkersize+imgsize;j++) begin:second

                cb(.clk(clk),.img_window(img[i-hkersize +: kersize][j + hkersize +: kersize]),.kernel(kernel),.result(r[i][j]));

            end
        end
endgenerate
endmodule

lo que estoy tratando de obtener es enviar la matriz al módulo, con índices [j-hkersize: j + hkersize]. (donde - > hkersize = kersize / 2).

Realmente necesito tu ayuda, no tengo idea de cómo solucionarlo, gracias por tu ayuda y esfuerzo.

    
pregunta albert1905

0 respuestas

Lea otras preguntas en las etiquetas