Domanda:
Genera un numero casuale di n bit in Verilog
Randomblue
2012-09-03 19:23:26 UTC
view on stackexchange narkive permalink

Posso facilmente generare un numero casuale di 32 bit di larghezza in Verilog usando $ random . C'è un modo per generare un numero casuale di esattamente n bit (diciamo n = 70 )?

Immagino di poter concatenare molti 32 bit numeri casuali, quindi limitati al numero di bit richiesto, ma sembra un trucco.

Mi sembra un trucco ragionevole, dato che il simulatore Verilog dovrà effettivamente eseguire i calcoli utilizzando l'architettura della macchina sottostante, che probabilmente si occupa di parole a 32 o 64 bit anziché singoli bit alla volta.
Vedi anche http://stackoverflow.com/questions/34011576/generating-random-numbers-in-verilog
Una risposta:
dwikle
2012-09-04 18:53:47 UTC
view on stackexchange narkive permalink

Se sei in grado di utilizzare SystemVerilog, puoi randomizzare un numero di qualsiasi larghezza. Dichiaralo come rand all'interno di una classe o usa std :: randomize . Ecco un semplice esempio:

  module top; bit [69: 0] vec; asserzione iniziale iniziale (std :: randomize (vec)); $ display ("vec =% 070b", vec); endendmodule  

Se hai bisogno di restare fedele al vecchio Verilog, penso che l'hack che hai suggerito sia la scelta migliore, più semplice e forse l'unica. Non penso ci sia nulla nella lingua che possa aiutare, poiché $ random restituisce un numero a 32 bit.

Se vuoi semplicemente evitare di dichiarare nuove variabili e concatenare esplicitamente loro, potresti fare qualcosa del genere.

  vec [31: 0] = $ random; vec [63:32] = $ random; vec [69:64] = $ random;  


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...