现在,我试图制作粗略的随机信号。 所以我在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>
答案 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。