随机十进制数,但结果看起来不像十进制数

问题描述 投票:0回答:1

我想编写一个简单的任意范围的随机十进制数生成器。

我用 Verilog 编写了以下代码:

module randnumgen (clock, r);
input clock;
integer n;
output r;
always @(posedge clock) begin
    n <= 0 + {$urandom} % (10 - 0) ;
end
assign r = n;
endmodule

和测试台:

`timescale 1ns / 1ps
module randnumgen_tb; 
// Inputs
reg clock;
// Outputs
wire r;
// Instantiate the Unit Under Test (UUT)
randnumgen uut (.clock,.r);
initial begin
// Initialize Inputs
clock  = 1'b1;
end
always #1 clock = ~clock;  
endmodule

不幸的是,结果(输出

r
)仍然表现为二进制数。在我看来,我在某处输入了错误的数据类型(wireinteger等)。请帮助我纠正错误。

enter image description here

verilog system-verilog hdl
1个回答
1
投票

您仅在 bolhe 顶级 tb 和 randnumgen 中将

r
声明为 1 位宽信号。更改为这种风格的端口声明:

module randnumgen (input clock, output int r);
  int n;
...
endmodule
module randnumgen_tb; 
// Inputs
logic clock;
// Outputs
int r;

确保您的所有文件都有

.sv
扩展名。另外,您应该使用
$urandom_range(maxval,minval)
生成一个范围内的随机数。

© www.soinside.com 2019 - 2024. All rights reserved.