Generador de bits pseudoaleatorios: circuito analógico para la entrada digital del microcontrolador

5

Quiero la forma más rentable para un generador de números pseudoaleatorios básico en un microcontrolador. Usaré el PIC16F54 que tiene recursos extremadamente limitados. Estoy pensando en usar el ruido con un circuito analógico simple para generar 1 y 0 al azar en una de sus entradas digitales. El grado de aleatoriedad no es crítico. Sin embargo, el nivel de ruido EMI al que se someterá el circuito es desconocido, además del hecho de que estará en un entorno residencial con poco o ningún blindaje.

¿Hay algún circuito de bajo costo particularmente simple que pueda usarse? ¿O debería simplemente centrarme en algunos algoritmos básicos? (Habrá un generador de semillas aleatorio: un interruptor pulsador, después del cual el algoritmo podría hacer su cosa. Probablemente debería preguntar en Stack Overflow para algunos algoritmos simples).

    
pregunta CL22

3 respuestas

3

Dado que el grado de aleatoriedad no se considera crítico:

Un modo de generación de números aleatorios que requiere un mínimo de recursos es leer un pin ADC abierto dentro del código, y usar la diferencia entre una lectura y su anterior como aleatorio. fuente numérica Asegúrate de que el pin ADC no esté tirado alto o bajo.

El uso de las diferencias elimina cualquier sesgo específico en el pin ADC, y proporciona una secuencia aleatoria de valores con polarización cero. Dependiendo de la profundidad de bits requerida, agregue una serie de dichos valores si es necesario.

El método se presta para una fácil experimentación, por lo que puede saber con bastante rapidez si el enfoque proporciona suficiente entropía para cumplir con los requisitos. Si se necesita una mayor entropía, conecte un cable abierto al pin ADC para proporcionar una mayor sensibilidad a los campos eléctricos externos.

    
respondido por el Anindo Ghosh
3

Solicita una solución analógica, ¡pero lo digital utiliza aún menos recursos!

Recomiendo implementar un registro de desplazamiento de retroalimentación lineal en el microcontrolador para generar una secuencia de bits psuedorandom y romper la secuencia en trozos apropiados. Esto tomará algunos bytes de memoria y algunas operaciones de cambio y lógicas.

La matemática es bien entendida. Debe seleccionar sus bits de realimentación con cuidado, y cuantos más bits ahorre para este propósito, más larga será la secuencia pseudoaleatoria.

ESTE ENLACE tiene los bits de comentarios positivos hasta 33 bits. .

    
respondido por el Scott Seidman
2

Los transistores pueden generar un ruido muy "bueno".

enlace

Este es un buen ejemplo, pero la idea es que si no polariza completamente un transistor, generará ruido. No he probado su circuito particular, pero no veo ningún problema con él.

Los diodos de ruido son en realidad los mejores para estos tipos de fuentes de ruido, pero son más difíciles de detectar y probablemente exageren para su aplicación.

    
respondido por el scld

Lea otras preguntas en las etiquetas