Matrix 如何在Verilog代码中给出输入矩阵?
我正在编写verilog代码,用于在4x4矩阵中插入值 我需要在4x4矩阵中收集16个输入。我该怎么做Matrix 如何在Verilog代码中给出输入矩阵?,matrix,verilog,Matrix,Verilog,我正在编写verilog代码,用于在4x4矩阵中插入值 我需要在4x4矩阵中收集16个输入。我该怎么做 reg [15:0]fun_out; integer x, y; always @(posedge clk or negede rst_n) begin if (~rst_n) begin for (x=0,x<4,x=x+1) begin for (y=0,y<4,y=y+1) begin data[0][0] <= fun_
reg [15:0]fun_out;
integer x, y;
always @(posedge clk or negede rst_n) begin
if (~rst_n) begin
for (x=0,x<4,x=x+1) begin
for (y=0,y<4,y=y+1) begin
data[0][0] <= fun_out[0];
data[0][1] <= fun_out[1];
data[0][2] <= fun_out[2];
data[0][3] <= fun_out[3];
data[1][0] <= fun_out[4];
data[2][0] <= fun_out[5];
........
........
data[4][3] <= fun_out[14];
data[4][4] <= fun_out[15];
end
end
end
else begin
data[x][y]<=4'b0;
end
end ```
reg[15:0]fun\u out;
整数x,y;
始终@(posedge clk或negede rst_n)开始
如果开始
对于(x=0,x,考虑到NUM_WIDTH是矩阵中每个值的位数:
localparam NUM_WIDTH = 4;
localparam NUM_X = 4;
localparam NUM_Y = 4;
我们可以使用“+:”索引数组的一个块。也就是说,我们可以将矩阵中每一行的数据打包并分配为:
genvar I, J;
wire [(NUM_WIDTH*NUM_X)-1:0] matrix [NUM_Y-1:0];
generate
for(I = 0; I < 4; I = I + 1) begin: matrix_gen_y
for(J = 0; J < 4; J = J + 1) begin: matrix_gen_x
assign matrix[I][(J*NUM_WIDTH)+:NUM_WIDTH] = (I*NUM_X)+J+1; //..from 1 to 16
end
end
endgenerate
assign value = matrix[y_idx][(x_idx*NUM_WIDTH)+:NUM_WIDTH];