Comment le binaire est-il converti en signaux électriques?

16

Je débute dans l'électronique et je suis déjà fasciné. Ayant joué avec un Arduino ces derniers jours, je suis conscient que le binaire est une représentation de différentes tensions - telles que + 5V représentant 1et GND représentant 0.

J'ai essayé de découvrir comment, au niveau physique, le microcontrôleur convertit le binaire en ces tensions. Je n'arrive pas à trouver une description n'importe où. Quelqu'un peut-il partager ses connaissances ou me diriger vers un endroit / un bon livre qui décrit comment cela fonctionne?

Mat
la source
1
Je ne me souviens pas lequel c'était, mais regardez cette vidéo. Bon contenu.
abdullah kahraman
2
En fait, le microcontrôleur ne convertit pas le binaire en différentes tensions. Binaire est la tension. A + 5V est désigné par "HIGH" ou "1". Et 0V est désigné par "LOW" ou "0". Allez voir les interrupteurs électroniques, ou plus en détail; MOSFET.
abdullah kahraman
Vous ne posez PAS de questions sur la conversion "analogique vers numérique" ou "numérique vers analogique", n'est-ce pas?
abdullah kahraman
3
Il pourrait être utile de penser à l'inverse. Le «binaire» est une sorte d'entité mathématique symbolique que nous, humains, aimons raisonner. Les circuits logiques peuvent représenter des binaires avec des tensions différentes. Nous concevons des circuits logiques de sorte que ce que les circuits font avec les niveaux de tension ait un sens logique cohérent lorsque nous, humains, interprétons ces tensions comme des nombres binaires.
JustJeff
1
@abdullahkahraman Vous avez raison, je ne pense pas que je parle du CAD, comme vous le dites. Merci pour le lien vers la vidéo, c'est très instructif. Et en passant, vous m'avez également présenté le site MIT OCW, qui semble être une excellente ressource pour l'apprentissage. Merci!
Matt

Réponses:

18

Je veux reformuler une partie de la réponse de KellenJB d'une manière légèrement différente:

Il n'y a pas de conversion des binaires 1 et 0 en tensions comme 5 V et 0 V. Le microcontrôleur, ou tout circuit physique, fonctionne simplement sur les tensions.

Ces tensions sont "converties" en 1 et 0 binaires dans nos têtes lorsque nous formons un modèle simplifié dans notre esprit sur le fonctionnement du circuit.

Le photon
la source
2
Oui. Oui, oui, oui, et (oh oui), oui.
JustJeff
1
Et j'ajouterais que pour être un 0, la tension doit simplement être proche de 0 ou inférieure à un seuil (disons <0,8 V) et être 1 supérieure à un seuil (disons> 2,0 V). Les seuils diffèrent par la technologie utilisée pour construire l'appareil et la tension d'alimentation de fonctionnement 5v dans son cas.
kenny
1
Merci a tous. Donc, une fois qu'un ordinateur est en cours d'exécution, il n'y a pas de transmission de code machine binaire du tout? Le code binaire, lorsqu'il est téléchargé en tant que micrologiciel, est probablement stocké dans la mémoire qui, lorsqu'il est "accédé" par le processeur, répond avec un cycle de tensions qui correspond au binaire? (J'espère que cela a du sens)
Matt
Pour être "uploadé", le code doit déjà se présenter sous une forme physique: tensions sur un fil, positions de certains leviers (ou touches sur un clavier), peu importe. En mémoire, les bits sont stockés sous forme d'accumulations de charge sur un condensateur ... qui génère également une tension sur le condensateur.
Le Photon
1
Mon point de vue est que les formes sur un écran ou imprimées sur un morceau de papier ne sont que des lumières ou des taches d'encre, jusqu'à ce que nos esprits les interprètent comme signifiant un ou zéro. Imaginez une lettre imprimée dans un alphabet que vous ne connaissez pas (disons, cyrillique ou thaï). C'est juste une goutte d'encre jusqu'à ce qu'une personne russe ou thaïlandaise vienne l'interpréter et savoir quel son elle représente. Mais cette distinction philosophique nous éloigne probablement du sujet.
The Photon
11

Il n'y a pas vraiment de "conversion" qui ait lieu. Les binaires 1 et 0 ne sont qu'une représentation virtuelle des tensions sous-jacentes. En fait, dans de nombreux systèmes, une haute tension peut signifier 0 tandis qu'une basse tension signifie 1. Il y a quelques raisons pour lesquelles cela est fait, mais probablement plus alors vous vous souciez de vous y plonger tôt.

Pour comprendre ce qui se passe dans la logique, il est probablement préférable de regarder dans le transistor. Un transistor peut être utilisé pour de nombreuses choses, mais à un niveau simple, vous pouvez le traiter comme un interrupteur. Conceptuellement, vous pouvez y penser comme votre interrupteur d'éclairage sur le mur, mais au lieu d'être contrôlé en déplaçant physiquement l'interrupteur, il est contrôlé par le changement de courant. Vous pouvez traiter la lumière allumée comme un 1 et la lumière éteinte comme un 0. Vous pouvez maintenant commencer à combiner ces commutateurs dans différents ensembles pour créer différents éléments logiques (comme AND, OR, NOR, etc.).

Je sais que ma réponse n'est pas horriblement détaillée, mais j'espère qu'elle répondra à votre question. Si vous avez besoin de plus d'explications, je serai prêt à ajouter plus de détails, mais je ne veux pas vous submerger.

Kellenjb
la source
Merci à tous pour les bonnes réponses !! Aurais-je raison de penser que, à un niveau simpliste, le microprocesseur fonctionne à une certaine vitesse d'horloge et envoie à chaque cycle un jeu d'instructions (tension relative aux valeurs binaires?) À travers ces transistors, qui agissent comme des portes logiques. Et les transistors produisent alors une sortie pertinente basée sur la logique combinée (et, ou, NAND, etc.)?
Matt
1
Simplement ... oui. Il y a beaucoup de couches d'abstractions ici. Il est difficile d'expliquer tout ce qui se passe ici dans une seule réponse car il faut beaucoup de couches d'abstraction avant de pouvoir tout comprendre. Il peut facilement prendre quelques cours de niveau collégial pour tout enseigner. Vous pouvez soit prendre les choses telles qu'elles sont à la surface, soit vous préparer à beaucoup d'apprentissage.
Kellenjb
Merci @kellenjb, vous avez été très utile. Je suis encouragé à en savoir plus!
Matt
10

La réponse courte est qu'il ne se "convertit" pas, les tensions sont le binaire (ou une représentation de celui-ci). Tout comme si vous écrivez un nombre sur du papier, les marques sont une représentation du nombre, ou si vous comptez sur un boulier, les positions de pierre sont une représentation d'un nombre.

Le binaire est un système numérique, tout comme le décimal (ou octal, hexadécimal, etc.)

Alors que décimal (base-10) a 10 symboles (0123456789) binaire (base-2) n'en a que deux (01)

La séquence 10 dans n'importe quelle base signifie la base à la première puissance, donc en décimal 10 signifie 10 ^ 1 = 10, et en binaire cela signifie 2 ^ 1 = 2. Ensuite, 100 en décimal signifie 10 ^ 2 = 100, et en binaire cela signifie 2 ^ 2 = 4. Et ainsi de suite.

Pour représenter décimal en utilisant l'électronique serait possible mais compliqué, ils ont donc choisi le binaire qui peut être représenté par un simple 0 et 1 (ou on / off)
Il y avait des variations à ce sujet, comme les systèmes ternaires (3 états) et bien sûr l' informatique analogique . Avant les transistors, il y avait des machines mécaniques à cartes perforées (Google en sait beaucoup, quelques lectures très intéressantes si vous en avez le temps).
Les premiers ordinateurs numériques binaires étaient faits avec de vrais interrupteurs (relais électroniques). Le Zuse Z3 (1941) en est un exemple:

Zuse Z3

Après cela, des tubes à vide ont été utilisés à la place de relais (pouvaient changer plus rapidement sans pièces mécaniques mobiles), qui ont effectué la commutation à la place de relais. L' ENIAC est un exemple d'un premier ordinateur fabriqué avec des tubes à vide.

Puis dans les années 60, les transistors sont arrivés et peu de temps après les circuits intégrés. Les transistors remplissent la même fonction que les relais / valves des machines précédentes, mais étaient beaucoup plus petits, plus rapides et consommaient moins d'énergie.

La théorie derrière le fonctionnement de base des circuits informatiques binaires n'a pas changé du tout, tout comme nous n'avons pas changé la façon dont nous manipulons les nombres en mathématiques - les algorithmes s'améliorent mais les règles de base restent les mêmes.

Donc, si vous savez comment fonctionne le binaire, et que vous avez un circuit simple capable de stocker un 1 ou un 0 comme deux niveaux de tension différents (par exemple 5 V et 0 V), et d'autres circuits simples qui peuvent effectuer des fonctions logiques simples comme ET et OU, alors vous pouvez tous les combiner pour faire des choses plus complexes.
Depuis tout ces circuits binaires ne sont que des commutateurs au niveau le plus fondamental, vous pouvez obtenir la même chose avec tout ce qui peut alterner entre deux états comme mécanique / relais / vanne / transistor /?.

Pour donner un exemple de stockage d'un nombre en binaire, disons que nous avons 8 commutateurs (quel type ils ne sont pas importants)
Un 1 est représenté par 5V et un 0 est représenté par 0V.
Nous voulons stocker le numéro 123.

En décimal c'est 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
En binaire c'est 01111011 = (0 x 2 ^ 7) + (1 x 2 ^ 6) + (1 x 2 ^ 5) + (1 x 2 ^ 4) + (1 x 2 ^ 3) + (0 x 2 ^ 2) + (1 x 2 ^ 1) + (1 x 2 ^ 0)
Donc tout nous faisons est de régler les commutateurs 0,1,3,4,5,6 à 5V et les commutateurs 7 et 2 à 0V. Cela "stocke" le nombre 123 en binaire. Cette configuration serait connue sous le nom de "registre".

Si vous voulez en savoir plus sur la façon dont les commutateurs sont combinés pour former des circuits plus complexes, procurez-vous un bon livre sur la logique numérique ou demandez à Google.

Ce site ne semble pas être trop mauvais pour commencer.

Oli Glaser
la source
0

Le programme que vous exécutez utilise des tensions qui représentent des uns et des zéros. Tout dans cette partie numérique est une tension proche de la masse ou proche de la tension d'alimentation (5V dans votre exemple). Lorsque vous chargez un registre de processeur avec 0xFF, disons que vous créez 8 signaux distincts de 5 volts quelque part dans la puce. Lorsque vous stockez ensuite cette valeur de registre dans un registre de contrôle lié aux ports de sortie, les broches de sortie sur l'appareil les signaux 5 V dans le registre des processeurs provoquent la création d'autres signaux 5 V qui sont connectés aux broches externes de l'appareil. .

old_timer
la source
0

Les tensions ne sont qu'un moyen de représenter le binaire. C'est une conversion assez efficace et pratique qui permet d'implémenter la logique binaire en utilisant différentes configurations de transistors.

La façon dont la logique binaire est généralement implémentée électroniquement consiste à utiliser la technologie CMOS ( http://en.wikipedia.org/wiki/CMOS ), dans laquelle deux transistors MOS sont installés dans une paire complémentaire pour former une porte CMOS. Il existe cependant d'autres implémentations électroniques de logique binaire, en utilisant TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) par exemple, ou des relais. Mais vous pouvez vraiment utiliser n'importe quoi, du papier, des chèvres robot papier: http://www.robives.com/category/product_tags/logic_goats . La mise en œuvre électronique CMOS se trouve être efficace et pratique.

A partir de ces portes CMOS simples, vous pouvez construire des portes logiques plus compliquées: NAND et NOR, la porte standard étant NON, sont les portes de base. À partir de ceux-ci, vous pouvez construire tout ce qui est de la logique binaire, un additionneur, un fichier de registre, de la mémoire. À partir de ceux-ci, vous pouvez construire une ALU, jusqu'à un microprocesseur complet.

Si vous voulez plus d'informations, vous pouvez lire un livre sur la logique numérique, je possède et aime celui-ci:

http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1

Un bon moyen pratique de comprendre comment un processeur est construit consiste simplement à en construire un vous-même, à l'aide de VHDL et d'un FPGA. Vous pouvez obtenir des cartes de développement FPGA bon marché et le logiciel est généralement gratuit (pour une licence restreinte). J'en ai quelques-uns par digilent qui sont assez abordables:

http://www.digilentinc.com/

Wesen
la source
-3

En termes simples, dans une plage donnée (généralement de 5 à 12 volts), le bit le plus significatif est 0 dans la première moitié de cette plage et 1 dans l'autre. Le bit le plus significatif suivant est calculé en divisant davantage la moitié en deux et ainsi de suite jusqu'à ce que tous les bits aient été calculés.

Par conséquent, le binaire consiste simplement à augmenter et à diminuer les tensions qui sont mesurées périodiquement.

Voici un exemple simplifié. Dans la plage de 1V à 256V, traduisons (analogique) 137 en binaire (numérique) en utilisant le pseudocode:

// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
    if (number > length) { return(ERROR); }
    function convert(var half, var binary) {
        if (half < 2) { return(binary); }
        elseif (number < half) {
            return(convert((half / 2), append(binary, 0)));
        } else {
            return(convert((half / 2), append(binary, 1)));
        }
    } return(convert((length / 2), list()));
}
Samuel Duclos
la source