我正在尝试在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
但是我没有成功。有谁知道如何完成这项任务?
编辑:
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
答案 0 :(得分:0)
Verilog不允许一次对多个数组元素进行操作。您需要移至SystemVerilog才能使代码正常工作。通常,只需将文件扩展名更改为* .sv即可。然后,您的两个作业都应该工作。