Décodeur Binaire / 7 segments : Connaissez-vous l'algèbre de Boole

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

lipki

Architecte en herbe
27 Mars 2011
933
30
146
Suite à ce billet http://minecraft.fr/forums/showthread.php?tid=6415&page=8
Détaillant avec brillo la méthode pour créer un afficheur 7 segments alimenté par un compteur Binaire.
J'aimerais faire ici Une explication détaillé de la création d'un composant servant à convertir du Binaire en "7 segments", pour ensuite le faire en redstone.
( Je simplifie volontairement toutes mes explications, des liens vers wikipédia viendrons en renfort. )

------------------------------------
Introduction
------------------------------------

Décimal :

Comme vous le savez dans notre façon quotidien de compté nous utilisons 10 symboles représentant chacun une valeur.
0 1 2 3 4 5 6 7 8 9
( Notre système de numération et positionnelle, par opposition à la numération romaine qui est de type additive et soustractive, ce qui la rend si compliquée à comprendre pour nous :) )
Pourquoi 10 ? Parce que nous avons 10 doigts tous simplement.
( Certaine civilisations on utilisée 20 symboles en rapport avec nos 20 doigts ( pieds + mains ) )

Système de numérotation

Analogique / Numérique :

On a commencé à exploité le courant électrique de manière analogique, en utilisant un courant alternatif dont la fréquence pouvais s’exprimer avec le système décimal.
Mais pour l’électronique et l'informatique, le système analogique n'était pas assez précis.
On à alors exploité le courant continu pour transmettre une information.
Mais l'on ne disposé alors que de deux valeurs d'information :
du courant : 1
pas de courant : 0
Il nous fallut donc un système de numérotation n'utilisant que deux symboles.

Binaire :

Le binaire ne doit pas vous faire peur, car il fonctionne exactement comme le décimal, sauf que l'on à que deux symboles. ( c'est aussi une numérotation de type positionnelle ).

Étudions le décimal :
Lorsque l'on incrémente on passe d'un symbole, au symbole suivant :
2 +1 = 3 ; 4 +1 = 5 : 8+1 = 9 ; 9 +1 = ?
Arrivé au derniers symbole de la liste, on est coincé :) à ce moment on reviens au tout premier symbole et on incrémente un symbole situé à gauche.
Imaginé qu'il y à toujours un 0 avant le 9.
09 +1 = 10
Le 0 est passé au symbole suivant, le 1 et le 9 est lui aussi passé au symbole suivant, le 0.
Le chiffre est devenu un nombre.

Tous cela vous parais évident ? Parfait en binaire c'est pareil !
Mais on-à que deux symboles.
0 1

Lorsque l'on incrémente on passe d'un symbole, au symbole suivant :
0 +1 = 1 ; 1 +1 = ?
Arrivé au derniers symbole de la liste, on reviens au tout premier symbole et on incrémente un symbole situé à gauche.
01 +1 = 10
Le 0 est passé au symbole suivant, le 1 et le 1 est lui aussi passé au symbole suivant, le 0.
Le chiffre est devenu un nombre, mais ce n'est pas un dix ... c'est un 10.
prononcé le "un zéro".

Maintenant vous pouvez comprendre la blague suivante :
Il y a 10 sortes de gens... ceux qui comprennent le langage binaire… et les autres.

Maintenant pour le plaisir nous allons compter jusqu’à 9.

0 -> 0000
1 -> 0001 -> Premier bit valeur 1
2 -> 0010 -> Deuxième bit valeur 2
3 -> 0011
4 -> 0100 -> Troisième bit valeur 4
5 -> 0101
6 -> 0110
7 -> 0111
8 -> 1000 -> Quatrième bit valeur 8
9 -> 1001

Avec un nombre binaire sûr 4 bit, on peut compter jusqu’à 15, vous verrais plus bas pourquoi je le précise.

7 Segments ? :

7 Segments, 7 segments, mais c'est quoi ces 7 segments ? Au final lipki de quoi tu nous parle.

J'arrive !
7_segments.png

7 ... il y a 7 segments qui peuvent être soit allumé (1) soit éteint (0).
Voilà tout l’intérêt de ce "décodeur Binaire / 7 Segments", afficher un chiffre en décimal, lisible par les humains, alors que l'on à en entrée du binaire peut lisible.

La difficulté de ce décodeur et le manque total de logique qu'il y à entre le nombre binaire et sont affichage.
Le zéro active 6 segments, le huit les active tous, le 1 en active 2 et le deux en active 5.
Enfin c'est un bordel monstre.

Ex : le segment noté A doit être activé si et seulement si :
bit 1 = 0 et bit 2 = 0 et bit 3 = 0 et bit 4 = 0
ou ( bit 1 = 0 et bit 2 = 0 et bit 3 = 1 et bit 4 = 0 )
ou ( bit 1 = 0 et bit 2 = 0 et bit 3 = 1 et bit 4 = 1 )
ou ( bit 1 = 0 et bit 2 = 1 et bit 3 = 0 et bit 4 = 1 )
ou ( bit 1 = 0 et bit 2 = 1 et bit 3 = 1 et bit 4 = 0 )
ou ( bit 1 = 0 et bit 2 = 1 et bit 3 = 1 et bit 4 = 1 )
ou ( bit 1 = 1 et bit 2 = 0 et bit 3 = 0 et bit 4 = 0 )
ou ( bit 1 = 1 et bit 2 = 0 et bit 3 = 0 et bit 4 = 1 )

En algèbre de Boole :
A = ( a?.b?.c?.d? ) + ( a?.b?.c.d? ) + ( a?.b?.c.d ) + ( a?.b.c?.d ) + ( a?.b.c.d? ) + ( a?.b.c.d ) + ( a.b?.c?.d? ) + ( a.b?.c?.d )

Quand je vous dit que c'est le bordel ! Et c'est ça pour chaque segment.
Converti en redstone cela fait bcp de ressources, bcp de surface, bcp de retard accumulé, et bcp plus de chance de faire une erreur.

Il faut donc simplifier les équations de chaque segment, pour ça on à l'algèbre de Boole bien sûr.
Mais avant on va utiliser une "Table de vérité" et des "Tables de Karnaugh" pour en déduire des équation en "Algèbre de Boole" plus simple que l'on essayera de simplifier encore un peut en utilisant entre autre le "Théorème de De Morgan".
Ensuite on dessinera le circuit logique, que l'on convertira pour finir en redstone.

On n'est pas arrivé :)

------------------------------------
Résolution
------------------------------------

La vérité est ici :

Avant de résoudre quoique ce soit, il nous faut réunir en un endroit tout les éléments que l'on possède et ce de manière le plus synthétique possible.
Pour ça il existe la Table de de vérité, c'est assez simple et comme je suis feignant je vais vous mettre une image de cette table trouvé sur internet.
septseg3.png

La première colonne représente les chiffres de 0 à 9 et les lettres de A à F, que l'on va essayer d'afficher avec notre afficheur 7 segments.
La deuxième colonne affiche l'équivalent en binaire des chiffres 0 à 9 et des lettres de A à F qui sont associé au nombres de 10 à 15. ( Je vous avais bien dit qu'avec 4 bit on pouvait aller jusqu'à 15. )
Les colonnes suivante représente les 7 segments et leur états allumé ou éteint en fonction du chiffre ou de la lettre à afficher.

Maintenant que l'on à nos informations, plus précisément nos entrées et nos sorties.
combinatoire-affichage.png

Il n’y a plus cas trouver quoi mettre dans le rectangle jaune.

Tables de Karnaugh :

Un tableau de Karnaugh sert à trouver l'équation logique correspondant à une table de vérité. La méthode utilisée est graphique et simple.
Une explication plu détaillé prendrai trop de place, je vous conseille wikipédia.
http://fr.wikipedia.org/wiki/Table_de_Karnaugh

Il nous faut 7 tables de Karnaugh, une pour chaque segment.
Il nous faut des tables de Karnaugh à 4 entrée correspondant à nos 4 bit.
bit de valeur 1 -> a, bit de valeur 2 -> b, bit de valeur 4 -> c et bit de valeur 8 -> d



à suivre ...

je vais éditer et la partie intéressante viendra après.
Je viens de découvrir Le code Gray, qui serais parfais pour les circuits en redstone qui prenne si facilement du retard.
j’étudierais ça juste après.
 

Olivman

Bucheron
15 Mars 2011
729
7
13
Je t'aime lipki !!! Sinon, tu pourrais aérer un peu, ce pavé est ... décourageant ... :(
 

Simenos

Aventurier
3 Avril 2011
27
0
1
Houlalala >< J'ai du comprendre la moitié, apres je décroche et je fond :S
Pile le "tuto" que j'attendais, mais faut être reposé pour déchiffrer sa :O
 

Toojie

Bucheron
15 Mars 2011
439
0
11
Le binaire est très simple détrompez vous.
C'est peut-être que lipki ne l'a peut-être pas expliqué de la façon la plus accessible qu'il soit...

Mais dans tous les cas, le binaire est d'une logique simple.
 

lipki

Architecte en herbe
27 Mars 2011
933
30
146
Zet pas obligé de comprendre.
Déjà parce que je ne doit pas super bien expliquer et surtout parce que ce n'est pas vital.
En tous cas la première partie est sensé expliquer les bases, alors si c'est pas clair, je devrait peut-être aéré effectivement.
 

almandin

Bucheron
7 Avril 2011
885
10
13
je trouve tout cela très bien, je suis actuellement dans la filière S sciences de l'ingénieur, j'apprend tout ça, donc je ne peut pas donner un jugement objectif sur la clarté des explications mais je peut peut-être t'aider si tu as des problèmes lipki, même si tu ne sembles pas avoir de problèmes 8D
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
Le tout est assez bien expliqué, même si certaines tournures de phrases sont assez bizarre. Je regrette juste l'explication de la conversion Chiffre Humain -> Binaire un peu trop compliqué alors qu'il y a beaucoup plus simple :
Déjà, pour éviter toute confusion, un octet = 8 bytes, vous verrez pourquoi tout à l'heure.
Comment traduire 167 en binaire ? Très simple. Sachez d'abord qu'un byte peut valoir 0 ou 1, j'imagine que vous le savez déjà. :)
Maintenant, si nous voulons faire des nombres plus grands que 1, il faudra utiliser plusieurs bytes.
Imaginons qu'on utilise 2 bytes. Quel sera le nombre maximale possible ?
Pour le savoir, il faut comprendre que dans une suite de bytes, chaque byte vaudra une puissance de 2.
Pour 2 byte :
• Le premier byte vaudra 1 (2 puissance 0 = 1)
• Le 2ème vaudra 2 (2 puissance 1 = 2)
Si nous faisons ceci : 01 (La lecture binaire est inversé, donc le premier byte est celui tout à droite, le 2ème a gauche), on prend le premier byte (Car il est marqué 1) et on exclue le 2ème (Car il est marqué 0).
01 vaudra donc 1.
Si nous faisons 11, on prend les 2 bytes, ils valent respectivement 1 et 2, la suite binaire vaut donc 3 !
Prenons une suite de byte plus grandes : 5 bytes !
• 1er byte = 1
• 2ème byte = 2
• 3ème byte = 4
• 4ème byte = 8
• 5ème byte = 16
Si l'on prend la suite binaire 10100, on a pris le 3ème et le 5ème byte, la suite vaut donc 4 + 16 = 20 ! Et si nous voulons des chiffres encore plus grand, il faudra faire des suites encore plus grandes de bytes.

Maintenant, qu'est-ce un octet ? Une suite de 8 bytes. Mais pourquoi 8 bytes ? Essayons de voir la valeur maximum qu'on peut atteindre avec une suite de 8 bytes :
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = ... 255 !
Peut-être connaissez-vous le chiffre 255, il est très utilisé, par exemple, pour déterminer le ton d'une couleur. Utiliser 3 fois, il permettra de déterminer une couleur : Le premier octet (J'ai bien dit octet, pas byte) déterminera le ton rouge, le 2ème le vert, et le 3ème le bleu.

Un autre exemple, si vous connaissez la table ASCII, elle permet de faire la conversion d'un symbole vers son nombre. Elle contient 128 chiffres.
1 + 2 + 4 + 8 + 16 + 32 + 64 = 127
La table ASCII contient le 0, j'aurais du le préciser. :p
 

lipki

Architecte en herbe
27 Mars 2011
933
30
146
j'ai volontairement évité les puissances, pour ne pas faire un pavé sur le binaire, vu que ce n'est pas le sujet.
La tu parle de byte, d'octet, puissance, d'ASCII.
Autant de concept qu'il faut comprendre, mais qui n’apporte rien pour la suite.
 
Statut
N'est pas ouverte pour d'autres réponses.