我建立了一个8 * 2bits数组来表示Verilog中的一块内存

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

此存储器有一个复位信号,如果reset为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循环)。

关于arrays - 如何在Verilog中将二维数组中的所有位设置为0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20356857/

10-10 18:15