Generar un número aleatorio de n bits en Verilog

7

Puedo generar fácilmente un número aleatorio de 32 bits de ancho en Verilog usando $random . ¿Hay alguna forma de generar un número aleatorio de exactamente n bits (por ejemplo, n = 70 )?

Supongo que podría concatenar muchos números aleatorios de 32 bits y luego restringirlos al número requerido de bits, pero eso parece un truco.

    
pregunta Randomblue

1 respuesta

8

Si puedes usar SystemVerilog, puedes aleatorizar un número de cualquier ancho. Declare como rand dentro de una clase, o use std::randomize . Aquí hay un ejemplo simple:

module top;

  bit[69:0] vec;

  initial begin
    assert(std::randomize(vec));
    $display("vec = %070b", vec);
  end

endmodule

Si necesitas mantenerte en el viejo Verilog, creo que el truco que sugieres es la mejor, la más simple y posiblemente la única opción. No creo que haya nada en el idioma para ayudar, ya que $random devuelve un número de 32 bits.

Si simplemente desea evitar declarar nuevas variables y concatenarlas explícitamente, podría hacer algo como esto.

vec[31:0]  = $random;
vec[69:32] = $random;
    
respondido por el dwikle

Lea otras preguntas en las etiquetas

Comentarios Recientes

(Probé diferentes tamaños pero de alguna manera es aleatorio) .son separados de los procesos de vainilla que estamos usando ahora, pero deberíamos explicar cada uno aquí porque a veces necesitan usar un archivo de guardado en software como Windows XP, Linux y Mac o deben agregarse al programa al mismo tiempo. Estimaciones básicas de Verilog de la condición de recorte de recorte (nombre elegido por usted): CAFNG (ventana crítica del circuito de análisis) Toppografía - Modelo final para la reconstrucción o la... Lees verder