Ich kann in Verilog mit $random
. Gibt es eine Möglichkeit, eine zufällige Anzahl von genau n
Bits zu generieren (z. B. n = 70
)?
Ich denke, ich könnte viele 32-Bit-Zufallszahlen verketten und dann auf die erforderliche Anzahl von Bits beschränken, aber das scheint ein Hack zu sein.
Wenn Sie SystemVerilog verwenden können, können Sie eine Zahl beliebiger Breite randomisieren. Deklarieren Sie es entweder als rand
innerhalb einer Klasse oder verwenden Sie std::randomize
. Hier ist ein einfaches Beispiel:
module top;
bit[69:0] vec;
initial begin
assert(std::randomize(vec));
$display("vec = %070b", vec);
end
endmodule
Wenn Sie sich an das einfache alte Verilog halten müssen, denke ich, dass der von Ihnen vorgeschlagene Hack der beste, einfachste und möglicherweise die einzige Wahl ist. Ich glaube nicht, dass es in der Sprache etwas gibt, das hilft, da $random
eine 32-Bit-Zahl zurückgegeben wird.
Wenn Sie einfach vermeiden möchten, neue Variablen zu deklarieren und sie explizit zu verketten, können Sie so etwas tun.
vec[31:0] = $random;
vec[63:32] = $random;
vec[69:64] = $random;
Das Photon
Brian Carlton