¿Cómo puedo generar números aleatorios en verilog usando la velocidad de reloj?

0

Supongamos que tengo reloj 50 mhz y quiero generar un número aleatorio entre

1 - 13 (ambos incluidos)

Supongamos que cuando hago clic en una tecla, quiero que se genere un número aleatorio entre 1 y 13.

Mi idea:

Tecla de clic

- > (tome los últimos 4 dígitos del reloj MOD 13) + 1

No estoy seguro de cómo puedo acceder a los últimos cuatro bits del reloj?

    
pregunta K Split X

3 respuestas

4

Una forma fácil de hacer esto es escribir el código Verilog que implementa un contador que aumenta de 1 a 13 de manera repetitiva. Conduce ese contador usando el reloj de 50MHz. Permita que el contador cuente durante el intervalo en que se presiona el interruptor de gatillo. (Ese intervalo será variable en función del usuario). Después de soltar el interruptor, el contador se desactivará y se congelará en uno de los 1 a 13 conteos. Usa eso como tu número aleatorio.

    
respondido por el Michael Karas
1

El reloj no tiene una matriz de bits, es solo un bit cuyo valor cambia entre '0' y '1' 50 millones de veces por segundo. Lo que debe hacer es crear un contador con el módulo 12 que incremente su valor cada vez que CLOCK_SIGNAL sea '1' (o '0'). Tu número aleatorio debe ser COUNTER_VALUE + 1

    
respondido por el Zero point
-1

Primero debes preguntar si un número pseudoaleatorio funcionaría. Son bastante fáciles de implementar.

Aparte de eso, el ruido de fase de un oscilador rc es aleatorio y es bastante fácil de implementar en cuanto a hardware.

    
respondido por el dannyf

Lea otras preguntas en las etiquetas