
la sortie analogique PAM est ensuite convertie en digital par un convertisseur analogique vers digital (ADC), dont le manuel du LM donne le schéma suivant:

Un convertisseur analogique vers digital est un circuit qui permet de convertir un signal analogique (qui varie continument) en sa représentation binaire équivalente.
Ce circuit est utilisé dans les calculateurs hybrides dans lesquels un calculateur analogique (qui travaille avec des signaux analogiques) échange des informations avec un calculateur digital (qui travaille avec des informations binaires).
De même, il y a également un circuit (DAC) qui permet de convertir un mot binaire en son signal analogique équivalent.
Wikipedia donne le schéma suivant pour un ADC (Analog-To-Digital converter).
Ce circuit marche de la manière suivante:
Un compteur compte à partir d'une horloge d'entrée: les sorties binaires du compteur sont un mot digital qui monte progressivement de 0 à la valeur maximale du compteur (et qui représente la valeur maximale du signal analogique).
Les sorties du compteur sont des entrées pour un circuit (appelé Digital-To-Analog Conv sur le schéma de Wikipedia) qui permet de convertir les sorties courantes du compteur en un signal analogique équivalent.

Ce convertisseur est en fait un réseau de résistances de différentes valeurs.
Le bit de poids le plus fort est connecté à la résistance la plus faible, parce qu'il doit produire le courant le plus fort.
La résistance du bit suivant a une résistance de valeur double, et ainsi de suite: La résistance connectée à chaque bit a une valeur double de la résistance connectée au bit immédiatement supérieur.
Le bit de poids le plus faible est connecté à la résistance de la plus haute valeur, car il doit produire le courant le plus faible.
(Dans l'exemple montré, chaque valeur de résistance n'est pas exactement le double de la résistance précédente, à cause de la restriction des valeurs possibles de résistance).

L'entrée analogique à convertir et la sortie du réseau de résistances qui donne le signal analogique équivalent au compteur rentrent dans un comparateur qui les compare.
Tant que le signal analogique équivalent au compteur est en dessous de l'entrée analogique, le comparateur permet le comptage du compteur.
Lorsque le signal analogique équivalent au compteur atteint l'entrée analogique, la sortie du comparateur change et bloque le comptage du compteur (en forçant à zéro le porte ET à travers laquelle passe le signal d'horloge du compteur).
La sortie du comparateur signale à présent que le compteur détient une représentation binaire valide qui correspond à l'entrée analogique; la conversion est terminée.
Un signal permet de réinitialiser le compteur (pour le refaire compter à partir de zéro) et aussi autorise ou inhibe le comptage.

En fait la représentation de Wikipedia est simplifiée pour ne pas trop compliquer l'explication du circuit.
En réalité, les sorties du compteur sont verrouillées lorsque la sortie du comparateur change, de sorte que les sorties du verrouillage représentent constamment l'équivalent binaire de l'entrée analogique.
Sur ce nouveau schéma (que j'ai également trouvé sur Internet), lorsque la sortie du comparateur indique que le compteur n'a pas encore atteint l'entrée digitale, l'entrée de contrôle de comptage haut (Up) du compteur est activée et son entrée de contrôle de comptage bas (Down) est désactivée, ce qui signifie que le compteur compte vers le haut; lorsque le compteur atteint l'équivalent de l'entrée analogique, la sortie du comparateur change; Le changement du comparateur déclenche le verrouillage des sorties courantes du compteur, et les sorties verrouillées prennent alors les sorties du compteur qui représentent couramment la représentation binaire équivalente au signal analogique: L'entrée de comptage haut est désactivée, arrêtant le comptage vers le haut du compteur.
Inversement, si la sortie courante du compteur correspond à une valeur analogique supérieure à l'entrée analogique, la sortie du comparateur valide l'entrée de contrôle de comptage vers le bas du compteur et désactive l'entrée de comptage vers le haut, ce qui fait que le compteur compte maintenant vers le bas; lorsque la valeur du compteur atteint l'équivalent de l'entrée analogique, la sortie du comparateur change et les sorties courantes du compteur sont à nouveau verrouillées comme représentation binaire équivalente à l'entrée analogique.
Avec ce circuit amélioré:
- Les sorties du convertisseur représentent constamment la réprésentation binaire équivalente à l'entrée analogique.
- Le convertisseur suit très rapidement de petites variations du signal analogique, car il n'a pas à compter à partir de zéro à chaque fois, mais à partir de la valeur courante à la place.
Il y a un petit délai entre la valeur de l'entrée analogique courante et la valeur binaire convertie; mais, plus la fréquence de l'horloge du convertiseeur est élevée, et plus ce délai est faible.

Cette représentation simplifiée, avec seulement quatre bits, montre avec une entrée analogique qui est à moitié de sa valeur maximale, comment le compteur compte vers le haut jusqu'à moitié de sa valeur maximale, et puis la sortie du comparateur change, verrouillant la valeur courante du compteur qui détient alors la représentation binaire correspondant à l'entrée analogique (et aussi réinitialise le compteur).
Ces explications ont été un peu longues, mais je pense nécessaires pour bien comprendre pourquoi le convertisseur qui est montré dans le manuel du LM n'a pas de sens.

Il y a une autre manière de fait une conversion anlogique vers digital qui est appelée "Conversion par approximations successives".
Je montre sur ce schéma comment une conversion par approximations successives fonctionne.
Le bit de poids le plus fort du registre SA (de succession approximative) part de 1, avec les autres bits mis à zéro; cela réprésente en fait la moitié de la valeur maximale; puis, selon la valeur du comparateur, le bit de poids le plus fort est laissé à 1 (si la sortie du DAC dépasse l'entrée analogique) ou mis à 0 dans le cas opposé.
Puis, à l'impulsion d'horloge suivante, le bit de poids suivant est traité à son tour d'une manière analogue, et ainsi de suite jusqu'à atteindre le bit de poids le plus faible.
En huit pulsations d'horloge, le registre SA détient la représentation binaire équivalente de l'entrée analogique.
Ce type de convertisseur est plus efficace qu'un convertisseur utilisant exclusivement un compteur qui compte seulement vers le haut.
Toutefois, un convertisseur pouvant compter alternativement vesr le haut et vers le bas peut parfois être plus efficace dans le cas où l'entrée analogique a de faibles variations.

Avant de décrire comment marche le convertisseur AD à approximations successives, je vais d'abord avoir un mot à propos des circuits qu'il utilise.

Une bascule (flip-flop) est un circuit avec deux entrées et une sortie:
- Lorsque l'entrée "Set" (entrée de gauche) reçoit un front montant, la sortie de la bascule est forcée à 1.
- Lorsque l'entrée "Reset" (entrée de droite) reçoit un front montant, la sortie de la bascule est forcée à 0.
Hormis ces deux cas, la sortie de la bascule ne change pas.

Une porte ET est un circuit simple qui a deux entrées et une sortie, et la sortie est à 1 seulement si les deux entrées sont aussi à 1.
Dans tous les autres cas (i.e. les deux entrées sont à 0, ou seule une entrée est à 1), sa sortie sera à 0.

Une porte OU marche en sens inverse; Sa sortie est à 0 seulement si deux entrées sont à 0; dans tous les autres cas (i.e. les deux entrées sont à 1, ou seule une entrée est à 1); sa sortie sera à 1.

Un différentiateur est un circuit qui soustrait au signal qui rentre dans l'entrée '+' le signal qui rentre dans l'entrée '-'; le résultat de cette soustraction est sur sa sortie.
Conséquemment, la sortie du différentiateur sera une tension positive si la tension sur son entrée '+' est plus grande que la tension que son entrée '-', et une tension négative dans le cas inverse.

Il est facile de convertir la tension positive à 1 (ou 0) et la tension négative à 0 (ou 1).
Le différentiateur joue alors le rôle de comparateur de tensions et peut fournir une une information binaire qui permet de tester une tension relativement à l'autre.

Je vais faire une démonstration simplifiée de la manière dont le convertisseur AD fonctionne sur 4 bits.
Le différentiateur est simplifié de manière qu'il sorte directement un 1 si la conversion analogique de l'information binaire est plus grande que l'entrée analogique, et 0 dans le cas contraire. (i.e. plus petite ou égale).
Pour plus de clarté, je dessinerai les lignes à l'état haut (1) en vert, et les lignes à l'état bas (0) en rouge.

Dans le schèma que je montre, j'utiliserai la convention suivante:
Lorsque deux lignes se croisent, elles n'ont pas de contact électrique entre elles, à moins que je ne place un rond sur leur intersection.
Toutefois, si une ligne se termine sur une autre, je considérerai qu'il y a un contact entre les deux lignes sans qu'il soit besoin de placer un rond sur leur point commun.

Je vais faire une première démonstration avec une tension de 0,625V sur l'entrée analogique (V représentant la tension maximale).
Le générateur de temps déclenche initialement sa ligne la plus à gauche (il les déclenche successivement de la gauche vers la droite).
Cette ligne rentre dans l'entrée "Set" de la bascule la plus à gauche (qui correspond au bit de poids le plus fort de la conversion).
Conséquemment la sortie de cette bascule passe à 1.
Cette ligne rentre également dans les portes OU dont les sorties vont vers les entrées "Reset" des autres bascules; conséquemment ces portes OU produisent un 1 qui permet de forcer à 0 la sortie de ces bascules.
Après avoir déclenché cette ligne, la générateur de temps à forcé le premier bit de la conversion à 1 et les autres bits à 0, ce qui correspond à une tension de 0.5V sur la sortie du réseau de résistances.
Cette tension est moins grande que la tension de l'entrée analogique, et la sortie du comparateur est conséquemment à 0.

Puis le générateur de temps déclenche sa deuxième ligne (à partir de la gauche).
Cette ligne va à la première porte ET dont l'autre entrée provient du différentiateur; comme la sortie du différentiateur est couramment à 0, la sortie de cette porte ET est aussi à 0, ainsi que la sortie de la porte OU à laquelle elle est connectée, car la première ligne du gérateur de temps est couramment à 0; donc l'entrée "Reset" de la première bascule reste à 0, et la sortie de la bascule n'est pas forcée à 0 et reste à 1.
La deuxième ligne du générateur de temps rentre aussi dans l'entrée "Set" de la deuxième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "1100" sur les bits convertis, ce qui correspond à une tension de 0,75V sur la sortie du réseau de résistances; cette tension est plus grande que l'entrée analogique, et conséquemment la sortie du différentiateur passe à 1.

Le générateur de temps déclenche à présent sa troisième ligne; cette ligne rentre dans la deuxième porte ET dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 1, la sortie de la porte ET passe à 1, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment la sortie de la deuxième bascule est forcée à 0 par l'action sur l'entrée Reset.
La troisième ligne du générateur de temps rentre également dans l'entrée Set de la troisième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "1010" sur les bits convertis, ce qui correspond à une tension de 0,625V, égale à l'entrée analogique.
La sortie du différentiateur passe à 0.

Le générateur de temps déclenche à présent sa quatrième ligne; cette ligne rentre dans la troisième porte ET dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 0, la sortie de la porte ET reste à 0, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment l'entrée Reset n'est pas activée, et la sortie de la troisième bascule reste à 1.
La quatrième ligne du générateur de temps rentre également quans la quatrième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "1011" sur les bits convertis, ce qui correspond à une tension de 0,6875V, plus grande que la tension de l'entrée analogique; conséquemment la sortie du différentiateur passe à 1.

Le générateur de temps déclenche à présent sa cinquième ligne; cette ligne rentre dans la quatrième porte ET, dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 1, la sortie de la porte ET passe à 1, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment la sortie de la quatrième bascule est forcée à 0 par l'action sur l'entrée Reset.

La conversion est à présent terminée, et les sorties des bascules détiennent la valeur convertie de l'entrée analogique, soit "1010".

Je vais faire une seconde démonstration avec une tension de 0,3125V sur l'entrée analogique.
Le générateur de temps déclenche initialement sa ligne la plus à gauche.
Cette ligne rentre dans l'entrée "Set" de la bascule la plus à gauche.
Conséquemment la sortie de cette bascule passe à 1.
Cette ligne rentre également dans les portes OU dont les sorties vont vers les entrées "Reset" des autres bascules; conséquemment ces portes OU produisent un 1 qui permet de forcer à 0 la sortie de ces bascules.
Après avoir déclenché cette ligne, la générateur de temps à forcé le premier bit de la conversion à 1 et les autres bits à 0, ce qui correspond à une tension de 0.5V sur la sortie du réseau de résistances.
Cette tension est plus grande que la tension de l'entrée analogique, et la sortie du comparateur est conséquemment à 1.

Puis le générateur de temps déclenche sa deuxième ligne (à partir de la gauche).
Cette ligne va à la première porte ET dont l'autre entrée provient du différentiateur; comme la sortie du différentiateur est couramment à 1, la sortie de cette porte ET passe à 1, ainsi que la sortie de la porte OU à laquelle elle est connectée.
Conséquemment l'entrée "Reset" de la première bascule est activée, et la sortie de la bascule est forcée à 0.
La deuxième ligne du générateur de temps rentre aussi dans l'entrée "Set" de la deuxième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "0100" sur les bits convertis, ce qui correspond à une tension de 0,25V sur la sortie du réseau de résistances; cette tension est plus petite que l'entrée analogique, et conséquemment la sortie du différentiateur passe à 0.

le générateur de temps déclenche à présent sa troisième ligne; cette ligne rentre dans la deuxième porte ET dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 0, la sortie de la porte ET reste à 0, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment la sortie de la deuxième bascule n'est pas forcée à 0 par l'action sur l'entre Reset et reste à 1.
La troisième ligne du générateur de temps rentre également dans l'entrée Set de la troisième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "0110" sur les bits convertis, ce qui correspond à une tension de 0,375V, plus grande que l'entrée analogique.
La sortie du différentiateur passe à 1.

Le générateur de temps déclenche à présent sa quatrième ligne; cette ligne rentre dans la troisième porte ET dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 1, la sortie de la porte ET passe à 1, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment la sortie de la troisième bascule est forcée à 0 par l'action sur l'entrée Reset.
La quatrième ligne du générateur de temps rentre également quans la quatrième bascule, forçant la sortie de celle-ci à 1.

Nous avons maintenant la configuration "0101" sur les bits convertis, ce qui correspond à une tension de 0,3125V, égale à la tension de l'entrée analogique; conséquemment la sortie du différentiateur passe à 0.

Le générateur de temps déclenche à présent sa cinquième ligne; cette ligne rentre dans la quatrième porte ET, dont l'autre entrée vient du différentiateur; comme la sortie du différentiateur est couramment à 0, la sortie de la porte ET reste à 0, ainsi que la sortie de la porte OU à laquelle elle est connectée; conséquemment la sortie de la quatrième bascule n'est pas forcée à 0 et reste à 1.

La conversion est à présent terminée, et les sorties des bascules détiennent la valeur convertie de l'entrée analogique, soit "0101".

Ces démonstrations ont permis de montrer comment le convertisseur AD d'Apollo est sensé fonctionner.

Alors, qu'est ce qui ne va pas avec ce convertisseur AD qui semble avoir tous les composants d'un convertisseur normal a approximations successives?

D'abord, il y a la sortie d'une porte OU qui est indiquée comme une entrée au lieu d'une sortie comme elle le devrait.

J'ai corrigé le sens de cette sortie sur ce schéma.

Puis il y a une sortie imaginaire (ou entrée?) qui est connectée à la sortie du réseau de résistances à travers une résistance; en fait cette sortie n'existe pas (et si c'était l'entrée +5V ou la terre, cela rendrait la sortie du réseau de résistances invalide).

J'ai supprimé cette résistance qui n'a pas de raison d'exister.

Nous avons maintenant une erreur plus embarrassante, une qui en fait a pour conséquence que le convertisseur ne peut fonctionner.
Au lieu d'être connectées au différentiateur comme deux entrées différentes, la sortie du réseau de résistances et l'entrée analogique à convertir sont directement connectées ensemble et rentrées comme une entrée simple dans le différentiateur, tandis que la seconde entrée du différentiateur n'est pas connectée du tout.
Cela n'a aucune chance de fonctionner; le differentiateur ne permettra pas de comparer la sortie du réseau de résistances avec l'entrée analogique à la manière dont il est connecté.

J'ai corrigé le convertisseur de manière à ce que la sortie du réseau de résistances aille vers une entrée du différentiateur, tandis que l'entrée analogique va vers son autre entrée.

Pourquoi cela ne peut-il fonctionner si l'entrée analogique à convertir et la sortie du DAC (réseau de résistances) sont directement connectées ensemble.
Sur ce schéma, je montre l'entrée analogique connectée au réseau de résistances à travers une résistance, tous deux étant connectés à la première entrée du différentiateur, et la seconde entrée du différentiateur est connectée à une tension de référence.
Plus la tension de l'entrée analogique est élevée, et plus basse la configuration des bits convertis pour faire que la première entrée du différentiateur concorde avec la tension de référence, et, inversement, plus basse la tension de l'entrée analogique, et plus élevée la configuration des bits convertis pour faire que la première entrée du différentiateur concorde avec la tension de référence.
Cette connection ferait donc que les bits convertis seraient une sorte de complément de l'entrée analogique relativement à quelque tension de référence, et pas du tout la conversion de l'entrée analogique.
De toute manière, cela ne marche même pas ainsi, car la deuxième entrée du différentiateur n'est même pas connectée du tout.
Cela ne peut tout simplement pas fonctionner; la seule manière qui fonctionne est de connecter l'entrée analogique sur une entrée du différentiateur, et la sortie du réseau de résistances sur l'autre entrée.

Puis le générateur de temps envoie des pulses d'interrogation à la sortie du différentiateur; mais il n'a pas à faire cela, car seul le générateur de temps peut faire changer la sortie du différentiateur en déclenchant ses lignes; alors pourquoi le générateur de temps interrogerait-il périodiquement la sortie du différentiateur?

J'ai supprimé la ligne inutile provenant du générateur de temps qui envoie des pulses d'interrogation sans intérêt.

Finalement les sorties du convertisseur AD sont indiquées comme étant les sorties des portes ET.
Mais les véritables sorties du convertisseur AD ne sont pas les sorties de ces portes, mais les sorties des bascules.
les sorties des portes ET sont toutes à 0 à la fin de la conversion, car les lignes du générateur de temps sont couramment à 0.

J'ai corrigé le schéma pour montrer quelles sont les vraies sorties du convertisseur.
De toute manière cela ne change pas beaucoup, car les sorties des bascules ne détiennent pas un conversion valide, étant donnée la manière incorrecte dont le différentiateur est connecté, rendant la conversion impossible.
|