【问题标题】:2D arrays: A net is not a legal lvalue in this context [duplicate]二维数组:在这种情况下,网络不是合法的左值[重复]
【发布时间】:2022-02-19 03:05:53
【问题描述】:

我希望使用二维数组创建一个 FIFO(P_MDIM 是每个向量的宽度,P_NDIM 是存储这些向量的数组/内存的深度)。

我在代码中的许多位置都遇到了上述错误消息(分配给outfullempty)。

我不知道为什么会这样。我认为我的数组(“memory”)将是一个二维数组 reg(不是网)。以下是我的完整代码:

module fifo( signal, enqueue, dequeue, clk, out, full, empty );

//depth of the memory
parameter P_NDIM = 16;
//width of each memory cell(in bits)
parameter P_MDIM = 16;

input [P_MDIM - 1:0] signal;
input enqueue;
input dequeue;
input clk;

output [P_MDIM - 1:0] out;
output full;
output empty;

logic [P_MDIM - 1:0] [P_NDIM - 1:0] memory = 0;
integer enqueue_pos = 0;
integer i = 0;


always @(posedge clk) begin

  //enqueue data
  if(enqueue) begin
    //checking if memory is full
     if(enqueue_pos == P_NDIM - 1) begin
      $display("data not entered, memory full");
    end
    //add signal into memory
    else begin
      memory[enqueue_pos][P_MDIM-1:0] = signal;
      enqueue_pos <= enqueue_pos + 1;
    end//else
  end//if enqueue

  //dequeue data
  if(dequeue) begin
    //checking if memory is empty
    if(enqueue_pos == 0) begin
      $display("no data to dequeue, memory empty");
      out[P_MDIM-1:0] = 0;
    end
    //output signal from memory, shift memory
    else begin
      out = memory[0][P_MDIM - 1:0];
      enqueue_pos <= enqueue_pos - 1;
      for(i = 0; i <= P_NDIM - 2; i = i + 1) begin
        memory[i][P_MDIM-1:0] = memory[i + 1][P_NDIM-1:0];
      end//for
    end//else
  end//if dequeue

  //check full and empty
     full = (enqueue_pos == P_NDIM-1 ? 1'b0 : 1'b1);
     empty = (enqueue_pos == 0 ? 1'b0 : 1'b1);

end//always

endmodule

【问题讨论】:

    标签: system-verilog


    【解决方案1】:

    您将out 声明为网络类型,但随后您在程序always 块中对其进行了分配。在程序块中分配的信号应声明为logic

    变化:

    output [P_MDIM - 1:0] out;
    output full;
    output empty;
    

    到:

    output logic [P_MDIM - 1:0] out;
    output logic full;
    output logic empty;
    

    与错误无关,在您的 always 块中,您混合使用了阻塞 (=) 和非阻塞 (&lt;=) 分配。它们都应该是非阻塞的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多