gpt4 book ai didi

random - 在verilog中生成随机数

转载 作者:行者123 更新时间:2023-12-01 15:02:30 28 4
gpt4 key购买 nike

我在为一个项目编写测试平台时遇到了这个问题。我找到了如何使用 $random在 verilog 中,但由于某种原因,它对我产生了奇怪的结果。我有 2 个 16 位寄存器,名为 AB ,我用 0-10 之间的随机数测试它每秒输出是一个值,它是你可以在 16 位中拥有的最大值。我想知道是否有其他人遇到过类似的问题并且可以提供帮助。
谢谢

reg[15:0]a;
reg[15:0]b;

integer seed,i,j;
initial begin


for (i=0; i<6; i=i+1)
begin
a=$random%10;
#100;
b=$random%20;
$display("A %d, B: %d",a,b);
end
$finish;

最佳答案

output is a value which is the max value that you can have in 16 bits.


$random产生有符号的随机数。当您将负数打印为无符号数时,负数将显示为大数。

您发布的代码可能如下所示,并且不在 0 到 10 的范围内。
A     8, B: 65517
A 65527, B: 65527
A 7, B: 17
A 65535, B: 65522
A 1, B: 9
A 8, B: 17

作为解决方案, 使用 $urandom生成无符号随机数 您期望在 0 到 10 和 0 到 20 之间。

这是您发布的代码的修改
module test;
initial begin
reg[15:0]a;
reg [15:0] b;

integer seed,i,j;
for (i=0; i<6; i=i+1)
begin
a=$urandom%10;
#100;
b=$urandom%20;
$display("A %d, B: %d",a,b);
end
$finish;
end
endmodule

上面的代码可能会产生类似的输出:
A     8, B:     0
A 3, B: 10
A 7, B: 11
A 6, B: 3
A 2, B: 7
A 1, B: 10

我想这就是你所期望的。

代码可以找到并运行 here .

关于random - 在verilog中生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34011576/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com