【问题标题】:Single bit random number generator单比特随机数发生器
【发布时间】:2017-01-27 11:20:04
【问题描述】:

我正在尝试在 Verilog 的每个时钟周期上生成单个位随机数以进行测试。我在测试台模块中这样做。这是代码;

module tb;

// Inputs
reg clk;
reg in;

// Outputs
wire x;

// Instantiate the Unit Under Test (UUT)
single_bit uut (
    .clk(clk), 
    .in(in), 
    .x(x)
);

integer seed=1;
initial
 begin
  clk=0;
  forever
    #5 clk=!clk;
        in= $random(seed);
end

endmodule

但是在模拟之后,我在seed 中得到恒定值 1,而in 有 x。 任何帮助表示赞赏。

【问题讨论】:

    标签: random verilog test-bench


    【解决方案1】:

    您的缩进具有误导性。以下是您的代码的解析方式:

    initial begin
        clk=0;
        forever #5 clk=!clk;
        in= $random(seed);
    end
    

    您的代码永远不会到达in 的分配,因为您永远不会到达forever 循环的末尾。由于您将in 声明为reg,并且您从未将值分配给in,因此它保留其默认值x。

    in 的赋值应该在forever 循环内。这会在每个时钟沿为in 生成一个随机的 0 和 1 流:

    initial begin
        clk=0;
        forever begin
            #5 clk=!clk;
            in = $random(seed);
        end
    end
    

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 1970-01-01
      • 2011-01-23
      • 2019-12-15
      相关资源
      最近更新 更多