Redstone Décodeur Binaire vers BCD

Statut
N'est pas ouverte pour d'autres réponses.

[GISED] Link

Torches, poudre et repeaters. What else ?
4 Mars 2012
341
76
140
26
VNSA, 2740 Moutier
vnsa.ch
593603ThundeRedGeneral2.jpg


Décodeur Binaire vers BCD
Décodeur Binaire vers BCD
Au programme :
  1. À quoi ça sert
  2. Comment ça marche
    • En combinatoire
    • En séquentiel
  3. Quelle méthode choisir ?
1. À quoi ça sert
Souvent, en redstone, on travaille avec le format binaire. L'avantage c'est que c'est très facile de faire des calculs avec et qu'on utilise l'entier de la capacité des bus. Cependant, ce n'est pas la base avec laquelle nous, primate aguerri, travaillons. Il est donc difficile de comprendre un résultat affiché sous forme binaire. Il faut donc le convertir en un format lisible. Ce format lisible, ce sont les afficheurs 7 segments. Cependant, la les afficheurs 7 segments ont besoin d'une entrée en BCD. Alors qu'est-ce que le BCD ? C'est simplement une représentation des chiffres, sous leur format binaire. Rien compris ? Regardons une table de conversion :
Code:
Binaire | BCD      | décimal
 
0000    | 0000 0000 | 0
0001    | 0000 0001 | 1
0010    | 0000 0010 | 2
0011    | 0000 0011 | 3
0100    | 0000 0100 | 4
0101    | 0000 0101 | 5
0110    | 0000 0110 | 6
0111    | 0000 0111 | 7
1000    | 0000 1000 | 8
1001    | 0000 1001 | 9
1010    | 0001 0000 | 10
1011    | 0001 0001 | 11
1100    | 0001 0010 | 12
1101    | 0001 0011 | 13
1110    | 0001 0100 | 14
1111    | 0001 0101 | 15

Je vais pas m'étendre plus la dessus, internet regorge d'explication sur le BCD.

2. Comment ça marche
Il y a, en résumé, deux méthodes de faire. Ces deux méthodes utilisent la même idée (ou algorithme, appelé Double dabble), mais de manière différente. Regardons comment ça marche en combinatoire, puis nous ferons pareil mais avec une approche séquentielle.

Combinatoire :
Voici comment cela se présente en combinatoire :
bcd04.png

- source : http://www.johnloomis.org/ece314/notes/devices/binary_to_BCD/bin_to_bcd.html

Et chacun des module C fait la conversion suivante :
bcd03.png

- source : http://www.johnloomis.org/ece314/notes/devices/binary_to_BCD/bin_to_bcd.html

là où il y a des X, c'est que ça peut être 0 ou 1, cela n'a aucune importance. Le décodeur peut ressembler à ça :
index.php


Donc il faut faire un décodeur du type C, et le placer aux endroits indiqué. Cette vidéo de mon collègue de chez ORE, Newomaster, peut vous être utile (en anglais). Et si vous avez plus de bit à l'entrée, il vous faudra plus de convertisseur (le placement des modules supplémentaire est assez intuitif). Et vous remarquez très vite que plus le nombre de bit à l'entrée est grand, plus le nombre de convertisseur augmentera. Ce qui fait que la taille du système au total deviendra vite assez grand, exemple cette image de la calculatrice 20 bit de Thooto :

index.php


Donc, pour palier à ces problèmes de taille, je vous propose de voir la même chose mais en :
Séquentiel :
Alors on va s'attaquer à quelque chose de plus difficile à concevoir et à expliquer. Déjà, c'est quoi exactement un module "séquentiel" ? C'est très simple, c'est un module qui fait une suite de calcul (chaque suite est appelée une itération) en enregistrant et réutilisant un ou plusieurs résultats temporaires dans un/des registre(s) (ou mémoire). L'idée derrière ça, c'est de diminuer le nombre de module de calcul (ici, de diminuer le nombre de module C nécessaire). Puisque ces modules C font tous la même opération, pourquoi ne pas reprendre le résultat obtenu et le remettre à l'entrée du module C ? C'est exactement ce que nous allons faire, sauf qu'il ne faut pas oublier de toujours décaler le résultat d'un cran vers la gauche (comme le décrit l'algorithme cité plus haut). Je résume l'idée en image :

987159Squentiel.jpg

ATTENTION : les modules C notés ici comporte des registres qui enregistre le résultat à chaque Clock !

On voit ici l'apparition du module Clock. Il s'agit de l'horloge qui va cadencer notre système séquentiel (le temps entre chaque itération (calcul) est défini par la fréquence d'horloge). On voit aussi que le nombre de module C (pour 7 à 9 bit à l'entrée) est plus de 2x inférieurs au modèle combinatoire ! Donc, pour de grand nombre de bit à l'entrée (je dirais > 6), on est capable d'avoir des modules beaucoup plus compact en séquentiel qu'en combinatoire. Cependant ce gain de place n'est pas sans perte : le temps de conversion est quand à elle 2 à 10 fois (même plus selon modèle) plus élevé.

Regardons ce que ça peut donner en image (moi qui ai fait ;), téléchargement plus bas)
62303820150324175345.png

Vu d'esnemble d'une conversion binaire vers 7 segments. Le module en couleur à gauche représente le convertisseur Binaire vers BCD. Vous noterez qu'il ne comporte aucun piston (il est donc Solide State, abrégé SS (mouhahaha le nazisme est partout... )

80703620150324175602.png

Ici le décodeur binaire-BCD est à droite. La partie gris/blanche c'est le décodeur BCD vers 7 segments de kothar (3 ticks pour la conversion)

54265020150324175622.png

Une vue du module

94649320150324175654.png

Vu du registre à décalage permettant d'entrer les bits un à un dans le module.

Téléchargement :

3. Quelle méthode choisir ?
Et bien... Si vous avez assez de place, que vous voulez un temps de conversion faible, la méthode en combinatoire semblent la mieux adaptée. Maintenant, surtout si vous êtes embêté par la place, un module séquentiel semble le mieux. Notez encore que selon la technologie que vous utiliserez (en gros si utiliser des BUD switchs ne vous pose pas de problème), il existe des convertisseurs séquentiels très rapide (se rapprochant des temps de conversion combinatoire). N'hésitez pas à me contacter si jamais vous êtes à la recherche de qqch, je pourrai certainement vous aider.

---

Je pense faire une vidéo sur le sujet (le plus vite possible évidemment). Je vous donnerez aussi les liens de téléchargement de mon convertisseur dès que je l'aurai posté sur planetminecraft. En attendant vous pouvez me retrouver sur thundered.nitroserv.eu (version 1.7.2) et sur mc.openredstone.org (version 1.7.9 / 1.7.10) pour en apprendre d'avantage sur la redstone !
 
  • J'aime
Reactions: luludatra

[GISED] Link

Torches, poudre et repeaters. What else ?
4 Mars 2012
341
76
140
26
VNSA, 2740 Moutier
vnsa.ch
Je nai qun mot:eek: C'est compliqué
Cette homme a raison.


Le sujet en soit n'est pas très compliqué. Avec les bases nécessaires (c'est à dire connaître par ♥ le binaire + les tables de vérités, savoir ce que c'est le BCD) on devrait pouvoir y arriver sans soucis. C'est vrai que je pourrais être plus bavard sur le combinatoire, mais je pense qu'il y a suffisamment d'image pour s'en sortir. Evidemment , faire un module C compact et rapide est difficile, c'est même la chose la plus difficile à faire. Mais ça marche très bien avec un circuit de conversion classique. L'astuce pour faire compact c'est d'utiliser un full adder qui fait +3 quand l'entrée dépasse la valeur 4, sinon c'est l'état de l'entrée.

Bon maintenant, je pense que le plus simple est de reprendre ce qui a déjà été fait car bien souvent c'est les meilleurs modules. Mais avec ce tuto, vous avez une idée de ce qui existe, vous êtes capable de faire la différence entre les deux méthodes et vous pouvez choisir celle qui vous convient le mieux.
 
Dernière édition:

[GISED] Link

Torches, poudre et repeaters. What else ?
4 Mars 2012
341
76
140
26
VNSA, 2740 Moutier
vnsa.ch
Je travaille assez activement à la réalisation d'un guide redstone. Cela ne concernera pour le moment que la partie "redstone" (donc pas command block). L'idée c'est de donner au gens une base de vocabulaire commune, une liste exhaustive des composants connus, des manières de faire et bien d'autres.

Voilà ce qui existe déjà, si tu es intéressé :
 

MattDracos

Massacreur de zombies
21 Avril 2015
170
5
65
20
Merci beaucoup pour ses informations :)
J'ai déjà les bases niveau redstones (Porte logiques,T Flip flop, Mémoire 1 bit etc..)
 
Statut
N'est pas ouverte pour d'autres réponses.