Verilog 生成随机数-种子更改仅一次

Verilog 生成随机数-种子更改仅一次,verilog,modelsim,Verilog,Modelsim,我在verilog中生成一个介于0到10000之间的数字,循环如下: wire rand; integer i, seed; initial begin i=1; seed=0; while (i<10) begin force rand = $random(seed) % 10000; end end wire-rand; 整数i,种子; 首字母 开始 i=1; 种子=0; 而(i你不需要在这

我在verilog中生成一个介于0到10000之间的数字,循环如下:

wire rand;
integer i, seed;
initial 
   begin
      i=1;
      seed=0;
      while (i<10)
        begin
        force rand = $random(seed) % 10000;
      end
   end
wire-rand;
整数i,种子;
首字母
开始
i=1;
种子=0;

而(i你不需要在这个循环中有某种延迟吗?好吧,它会在所有10次迭代中瞬间迭代,最后强制
rand
为最终生成的值


另外,你是在哪里增加
i
?还是你只是在粘贴代码之前把它删掉了?

你不需要在循环中进行某种延迟吗?如果它只是在所有10次迭代中瞬时迭代,最终会强制
rand
为最终生成的值


另外,你在哪里增加
i
?或者你只是在粘贴代码之前把它删掉了吗?

它应该可以进行一些小的修改,如果需要的话,随机数大于1位,并且不会在0时间内执行。for循环比while循环更好

integer i, seed;
reg [31:0] rand;

initial begin
  seed=0;
  for(i=0; i<10; i=i+1) begin
    rand = $random(seed) % 10000;
    $display("rand %d", rand);
    #1ns; //Stop loop executing in 0 time
  end
end
整数i,种子;
雷格[31:0]兰特;
初始开始
种子=0;

对于(i=0;i它应该进行一些小的修改,如果需要,随机数应大于1位,并且不在0时间内执行。在这里,for循环比while循环更好

integer i, seed;
reg [31:0] rand;

initial begin
  seed=0;
  for(i=0; i<10; i=i+1) begin
    rand = $random(seed) % 10000;
    $display("rand %d", rand);
    #1ns; //Stop loop executing in 0 time
  end
end
整数i,种子;
雷格[31:0]兰特;
初始开始
种子=0;

对于(i=0;iso),您正在将种子设置为零,没有对其进行任何更改,并且想知道为什么它没有更改?我知道$random与$dist_uniform(seed,01000)相同,因此种子在每次迭代中都会更改。我使用force rand=$dist_uniform(seed,01000)尝试了相同的代码结果是一样的。真正的问题是,在循环的每次迭代中,rand都保持不变。因此,您将seed设置为零,没有对它进行任何更改,并且想知道为什么它没有更改?我知道$random与$dist_uniform相同(seed,01000)这样,seed每次迭代都会改变。我用force rand=$dist_uniform(seed,01000)尝试了相同的代码,结果是一样的。真正的问题是,在循环的每次迭代中rand都保持不变。你是对的。我在代码I=I+1中有。我发现如果我打印$display(“%d”,$random)它打印不同的值,但是如果我打印:force rand=$random,然后打印$display(“%d”,rand),它会打印相同的值。你是对的。我在代码中有i=i+1。我发现如果我打印$display(“%d”,random),它会打印不同的值,但是如果我打印:force rand=$random,然后打印$display(“%d”,rand)它打印相同的值。问题是我希望rand是一个wire,而不是一个整数。为什么?您是从一个
initial
块定义它的,这就是regs的作用。
integer
几乎与
reg[31:0]相同
这可以驱动输入。我已将答案更改为
reg
。这可能会满足您的需要,除非力用于不同的层次结构。问题是我希望rand是一条线,而不是一个整数。为什么?您是从一个
初始
块定义的,这就是reg的用途。
整数
几乎是e与
reg[31:0]
相同,可以驱动输入。我已将答案更改为
reg
。这可能会满足您的需要,除非强制力用于不同的层次结构。