【发布时间】:2021-03-09 19:48:08
【问题描述】:
我意识到这是一个非常基本的事情,但我是 systemverilog 和 FPGA 的新手,我似乎一辈子都无法让它发挥作用。我正在使用具有 16 个活动高 LED 的 FPGA,我可以将其初始化为输出逻辑 [15:0] LED,我可以通过写入 LED[x] = 1 来使其中一个 LED 点亮;其中 x 是一个介于 0 和 15 之间的数字,或者通过编写 led = 16b'abcdefghijclmnop 来点亮许多数字,其中 ' 右侧的每个字母都是 1 或 0。
但是我希望它们以随机方式点亮。
我最初尝试写作
led[0] = $urandom_range(0,1);
led[1] = $urandom_range(0,1);
.
.
led[15] = $urandom_range(0,1);
那没有用。 然后我试着写
logic [0:0] led1 = $urandom_range(0,1);
led[0] = led1;
那没有用。
我试过了:
bit [0:0] led1 = $urandom_range(0,1);
led[0] = led1;
那没用 我尝试了位和逻辑类型:
type [0:0] led1 = $urandom_range(0,1);
if(led1)
led[0] = 1;
else
led[0] = 0;
我也试过了:
if (led1>0)
led[0] = 1;
else
led[0] = 0;
都没有成功。 我试过了:
logic [15:0] led1 = $urandom_range(0,1);
led = led1;
那没有用。
我在 initial 和 always_begin 和 always_ff 块中尝试了所有这些,并使用适当的赋值语句,但我仍然无法使用 $urandom_range() 让 LED 点亮
【问题讨论】:
-
我不确定。我怎么知道?这是一个BASYS3。我没有收到任何综合或实施错误或警告。我正在使用 Vivado。
-
检查综合警告和错误。
-
哦,对不起。我的意思是我不知道董事会是否支持该命令,并且我无法找到任何有关此的文档。我在综合或实施时没有收到任何警告或错误。
标签: system-verilog