1

问题:我每个有 N 个 X 位元素,并将它们连接成 1 个向量,现在我想使用 for 循环将它们解压缩到矩阵 M[N][X] 中。例如,

input [N*X-1:0]VECTOR;
integer i;
reg [X-1:0]M[N-1:0];
always@(*) begin
    for(i=0; i<N; i=i+1) begin
        M[i] = VECTOR[(X*(i+1)-1):(X*i)];
    end
end

但是,上面的代码给了我以下错误:

错误 (10734): FILE.v(line_number) 处的 Verilog HDL 错误: i 不是常数

4

1 回答 1

0

一些更正:

input [N*X-1:0] VECTOR; // move range to the other side
integer i;
reg [X-1:0] M [0:N-1]; // Give proper range with X
always @* begin // always block for comb logic
  for(i=0; i<N; i=i+1) begin // not i=i++
    M[i] = VECTOR[X*i +: X]; // vector slicing
  end
end

参考之前回答的问题来解释+:向量切片:

于 2015-09-17T17:20:20.903 回答