【问题标题】:unpacking a vector into an array in verilog using for loops使用for循环将向量解压缩到verilog中的数组中
【发布时间】:2015-09-17 17:04:34
【问题描述】:

问题:我有 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): Verilog HDL 错误在 FILE.v(line_number): i is not a 常数

【问题讨论】:

    标签: for-loop verilog hardware-programming


    【解决方案1】:

    一些更正:

    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多