1

問題: それぞれ X ビットの N 個の要素があり、それらを 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 に答える