如何在verilog中得到一个粗略的随机信号?

时间:2017-04-04 02:15:52

标签: verilog system-verilog

现在,我试图制作粗略的随机信号。 所以我在verilog中使用了$ urandom命令。 但我仍然无法得到粗略的随机信号。

以下是我的随机verilog代码,但我不知道如何得到粗略的随机信号。

always@(clk) begin

temp = $urandom;

end

修改

粗随机信号意味着我可以通过使用加法器信号来告诉你。

reg [29:0] temp;

always@(posedge clk or negedge rst) begin
if(!rst)
temp <= 0;
else
temp <= temp + 1;
end

从这里,我们可以看到temp [0]和temp [29]信号的差异,我的意思是粗随机信号有足够的变化周期的变化但是找到像temp [0]这样的随机信号意味着快速变化的信号。 / p>

1 个答案:

答案 0 :(得分:1)

好的,我可以想到两种做法,都需要使用以前的临时状态。

randomize(temp) with {foreach (temp[bitt]) temp[bitt] ^ const'(temp[bitt]) dist {1:=1, 0:=10};};

上面说的对于每个临时位,随机位与当前状态相同的概率是不同的10倍。

  randomize(temp) with {$countones(temp^const'(temp)) < 10;};

上面说的可以与当前值不同的总位数小于10。