generando números pseudo-aleatorios con hardware restringido

1

Necesito generar un valor de 448 bits que parece aleatorio, para usar en un circuito de prueba. La "aleatoriedad" de los valores no es demasiado importante; El tamaño del hardware del generador es. Estoy usando un FPGA y tengo un presupuesto de ~ 32 elementos lógicos (en la jerga de Altera, un LE es un LUT más un FF).

Una posible solución que viene a la mente sería hacer un LFSR de 32 bits y luego usar algunas funciones lógicas / combinaciones de esos bits para generar la salida de 448 bits.

¿Hay alguna otra solución inteligente?

Editar: Estoy agregando algunos detalles porque algunos han señalado que no es posible crear un circuito con 448 bits de salida usando solo 32 elementos lógicos.

El bloque que va a alimentar los valores "aleatorios" registra todos los 448 bits en su puerto de entrada. Aunque no puedo tocar el código VHDL de ese bloque, las LUT que alimentan esos registros pueden ser utilizadas para la lógica combinacional por el sintetizador. Entonces, si bien es cierto que no puedo crear un circuito con 448 bits de salida que use solo 32 LUT, esto no es un problema en este caso en particular, porque solo el número de registros es un límite estricto.

    
pregunta rick

1 respuesta

3
  

¿Hay alguna otra solución inteligente?

Si está limitado a 32 registros, solo puede tener 32 bits de estado en sus números aleatorios. Por lo tanto, lo único que puede hacer para expandirlo es usar alguna lógica combinatoria para producir los 448 bits que necesita.

La generación de los 32 bits se realiza (como supones) probablemente más eficientemente utilizando un LFSR.

Yo sugeriría que usar algún tipo de función hash de esos bits sería su mejor opción para lograr que el menor patrón pase a través de la salida de 448 bits, pero eso puede requerir demasiada lógica en su destino. No me queda claro qué restricciones tiene ahí.

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas