Я пытаюсь определить некоторую часть массива памяти в Verilog, такую как эта
module test (
input clk,
input [7:0] in1,
input [23:0] in2
);
wire [7:0] array_in2 [2:0];
reg [7:0] buffer [5:0];
genvar i;
generate
for (i = 0; i < 3; i = i + 1) begin: fillmsg
assign array_in2[i] = in2[i*8 +:8];
end
endgenerate
always @(posedge clk) begin
//buffer <= {8'd0, in1, 8'd1, array_in2}; // does not work
buffer[0] <= 8'd0;
buffer[1] <= in1;
buffer[2] <= 8'd1;
buffer[5:3] <= array_in2; // <--- does not work either
end
endmodule
но я не был успешным. У кого-нибудь есть идеи, как можно выполнить это задание?
EDIT:
Как dave_59 предположил, что одним из способов назначения будет один элемент массива за раз
integer j;
always @(posedge clk) begin
for (j=0; j<3; j=j+1) begin
buffer[i+3] <= array_in2[i];
end
end