簡體   English   中英

如何在Verilog的二維數組中將所有位設置為0?

[英]How to set all the bits to be 0 in a two-dimensional array in Verilog?

我已經構建了一個8 * 2bits陣列來表示Verilog中的一塊內存

reg [1:0] m [0:7]

該存儲器有一個復位信號,如果復位為1,則該存儲器中的所有位應復位為0.但我不知道如何以簡潔的方式設置m的所有位,因為如果有數百位在內存中數千位,以下方式顯然是不可行的。

always@(posedge clk or posedge reset)
begin
  if (reset) 
    begin
      m[0]<=2'b00;
      m[1]<=2'b00;
      m[2]<=2'b00;
      m[3]<=2'b00;        
      m[4]<=2'b00;
      m[5]<=2'b00;
      m[6]<=2'b00;
      m[7]<=2'b00;
    end
  else
    ....
end

使用for循環:

  integer i;
  always@(posedge clk or posedge reset)
  begin
    if (reset) 
      begin
        for (i=0; i<8; i=i+1) m[i] <= 2'b00;
      end
    else
      ....
  end

這在IEEE Std 1800-2012中描述(例如,第12.7.1節“for循環”)。

如果您可以使用當前系統verilog語法,那么這應該工作:

always_ff @(posedge clk or posedge reset)
begin
  if(reset) begin
    m <= '{default:2'b00};
  end
  else
    ...
end

請參閱1800-2012 IEEE標准的 5.11節(陣列文字)。

這實際上就是要使用for循環的地方。

for (i=0; i<8; i++)
  begin
    m[i] <= 2'b00;
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM