Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable 2D/3D/Jeux

    La génération matérielle de nombres aléatoires
    Bonjour à tous,

    J'ai le plaisir de vous proposer un tutoriel écrit par Guy Grave, alias mewtow, sur la génération matérielle de nombres aléatoires.

    Bonne lecture.

    Lire le tutoriel
    Voir les autres cours et tutoriels de la rubrique Hardware
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    MikeRowSoft
    Invité(e)
    Sa m'a rappelé beaucoup de souvenir d'étude.

  3. #3
    Nouveau membre du Club
    Bonjour,

    Une première remarque après avoir lu uniquement l'intro ; il y a déjà une confusion sur la notion de décalage :
    - Tout d'abord, si on décale vers la *gauche*, c'est le bit de poids *faible* qui prend une nouvelle valeur. Vu la suite de l'exemple, je suppose que le décalage dont on parle est en réalité un décalage vers la *droite*.
    - Ensuite, pour pinailler, lorsque l'on décale, en réalité, on ne met pas toujours un 1 ou toujours un 0. Cela dépends de si l'on fait un décalage logique ou arithmétique. Un décalage logique fera toujours rentrer un 0, quel que soit le sens du décalage, tandis qu'un décalage arithmétique fera rentrer un 0 lors d'un décalage vers la gauche, mais fera rentrer un bit dont la valeur est égale au bit de poids fort lors d'un décalage vers la droite, ceci afin de préserver le signe de l'opérande, et de conserver la signification mathématique (division par 2) y compris pour les nombres négatifs en complément à 2. Après, on peut bien sûr avoir un registre à décalage customisé, dans une situation particulière, qui ferait toujours rentrer un 1 ou un 0 (par exemple dans un buffer). Mais c'était juste pour faire remarquer que le *toujours* un 1 ou *toujours* un 0 est un raccourci un peu rapide...

    Voilà pour mon petit grain de sel ;-). Je continue la lecture de l'article, je suis justement à la recherche d'un générateur matériel aléatoire, merci donc pour cet article qui tombe bien.

    EDIT : J'ai terminé la lecture, très bon article qui explique les choses assez clairement. Je ne pensais pas que le fonctionnement des générateurs aléatoires à registre à décalage était si simple. Merci donc pour cet article.
    Une petite question, par contre, concernant la génération par désynchronisation d'horloge : je suppose qu'il faut deux sources d'horloges indépendantes pour obtenir ce résultat ; si on génère l'horloge lente à partir de l'horloge rapide, on a une synchronisation implicite ? Si oui, cette technique est-elle possible si un seul quartz est présent ? je prends un exemple concret sur une carte que j'utilise : est-ce possible à mettre en œuvre sur une carte de type ZedBoard, où, il me semble, il n'y a qu'une seule source d'horloge ? (Je peux me tromper sur ce point).

  4. #4
    MikeRowSoft
    Invité(e)
    Si tu veux les défaillances physiques et logiques proposent parfois un meilleur système aléatoire, surtout si elles ne sont pas manipulé de façons volontaire.
    C'est une façon de sortir de l'algorithme connu pour tombé sur l'imprévu.

    Il m'a souvent été dit que l'aléatoire dépendait de l'échelle. Exemple : compliqué à déterminer pour des humains ayant moins de moyens pour le déterminer ou plus facile avec l'usage d'outils informatisé connaissant parfaitement l'environnement de génération du "facteur" aléatoire. Se n'est pas forcément un nombre.

    Je comparerais le vrai aléatoire à une mesure sans temporel et non mathématique, puisque seul l'échantillonnage donne un chiffre ou un nombre.

  5. #5
    Invité
    Invité(e)
    Citation Envoyé par Epok__ Voir le message
    Tout d'abord, si on décale vers la *gauche*, c'est le bit de poids *faible* qui prend une nouvelle valeur. Vu la suite de l'exemple, je suppose que le décalage dont on parle est en réalité un décalage vers la *droite*.
    C'est bien un décalage vers la gauche, mais j'ai inversé bit de poids fort et bit de poids faible.

    Citation Envoyé par Epok__ Voir le message
    Une petite question, par contre, concernant la génération par désynchronisation d'horloge : je suppose qu'il faut deux sources d'horloges indépendantes pour obtenir ce résultat ; si on génère l'horloge lente à partir de l'horloge rapide, on a une synchronisation implicite ? Si oui, cette technique est-elle possible si un seul quartz est présent ? je prends un exemple concret sur une carte que j'utilise : est-ce possible à mettre en œuvre sur une carte de type ZedBoard, où, il me semble, il n'y a qu'une seule source d'horloge ? (Je peux me tromper sur ce point).
    Ça peut marcher, vu que le circuit qui multiplie la fréquence de base n'est pas fabriqué avec des composants parfaits, qu'il est soumis à des variations de température, et ainsi de suite : cela créera des déphasages transitoire, qui seront à l'origine d'une dérive d'horloge.

  6. #6
    Nouveau membre du Club
    @mewtow:

    Ok, merci pour ces précisions.