Multiplication analogique analogique, partie d'un CPU hybride (pour le plaisir)


10

Version courte: Comment créer un multiplicateur analogique qui prend deux entrées DC analogiques?

Version longue:


J'ai fait un commentaire recommandant des vidéos de Ben Eaters pour une autre question, ce faisant, j'ai fini par en regarder moi-même (à nouveau) et en me disant " hmmm ... Je me demande s'il serait plus facile de rendre certaines parties purement analogiques ".

Le bus pourrait être un seul fil où différents niveaux de tension seraient ensuite convertis en bits avec un CAN.

Je suis allé un peu loin, je suis venu jusqu'ici, qui peut théoriquement calculer les nombres de Fibonacci:

entrez la description de l'image ici
Figure 1, petite démonstration d'un ordinateur hybride calculant les premiers nombres de fibonacci

Lien vers le simulateur.

Dans le gif ci-dessus, je vais bien en dehors de la plage de tension, il est donc facile de voir les nombres de fibonacci, en réalité, j'utiliserais simplement le 250 mV = binaire 1 (le LSB aux "valeurs définies"), puis le laisser se propager à travers le DRAM qui contient 4 bits par condensateur.

La partie importante à regarder dans le gif est la sortie de l'ampli op à droite du texte "a + b", il montre les nombres de Fibonacci.

Entre chaque opération, je quantifierais la réponse en utilisant un ADC suivi d'un DAC. Donc, si je lisais 1,1 V, le DAC le transformerait en 1,0 V qui serait ensuite stocké dans la DRAM. Et puis une fois toutes les horloges X, la DRAM entière devrait passer par le quantificateur pour s'assurer que le condensateur ne flotte pas .

L'ALU ne peut faire que +, - et moyenne. Je pensais à faire la multiplication et je me suis arrêté. J'ai déjà fait et vu des multiplicateurs basés sur des diodes, mais je ne veux pas les utiliser car les diodes doivent être adaptées. J'utilise plutôt des résistances que je peux ajuster avec un potentiomètre. Quoi qu'il en soit, j'ai trouvé un multiplicateur hybride, moitié analogique, moitié numérique.

J'ai donc fait une première avec des résistances identiques partout.

entrez la description de l'image ici
Figure 2, multiplicateur naïf entre les nombres numériques et les valeurs analogiques. La valeur numérique est décalée de 1.

Ce que j'ai ensuite transformé en ceci avec des poids binaires:

entrez la description de l'image ici
Figure 3, multiplicateur naïf entre les nombres numériques pondérés binaires et les valeurs analogiques. La valeur numérique est décalée de 1.

Cela m'a rappelé les échelles R2 / R, mais je ne pouvais pas les faire fonctionner avec l'ampli-op.

Cependant, j'ai pensé au fonctionnement des échelles R2 / R, et je me suis souvenu que leur sortie était multipliée par leur source de tension. J'ai donc finalement trouvé ce design:

entrez la description de l'image ici
Figure 4, multiplicateur basé sur R2 / R entre les nombres numériques pondérés binaires et les valeurs analogiques

J'aime bien, le seul problème cependant, c'est que le bus est analogique, juste un fil. Donc, si je suis obligé d'utiliser la solution de la figure 4 ci-dessus, alors je suis obligé d'utiliser un autre ADC dans la zone de multiplication du CPU hybride. Je ne peux pas réutiliser celui de la zone de quantification.

Temps pour la question:

Comment dois-je faire un multiplicateur qui prend deux entrées analogiques?

  • Je ne veux pas de la solution qui est basée sur 3 diodes et 4 amplificateurs opérationnels car vous ne pouvez pas couper les diodes. Ma conviction est que s'ils ne correspondent pas, ils donneront une réponse qui est désactivée de plus de 250 mV. Je n'ai pas essayé cela dans le monde réel.
  • J'ai essayé le multiplicateur basé sur MOS dans le lien littéralement un pouce au-dessus de ce mot, mais je ne sais pas si je suis stupide. Je n'arrive pas à le faire fonctionner dans le simulateur. Voir gif ci-dessous pour l'échec de la mise en œuvre de MOS. Ou cliquez sur ce lien pour la simulation.
  • Je ne veux pas lancer un microcontrôleur sur le problème.
  • Je ne veux pas utiliser un moteur qui tourne et utilise des manigances.
  • Je pensais à utiliser un filtre RC dans une formation passe-bas pour saisir l' , charger et décharger et utiliser une rampe + mesurer le temps qu'il faut au condensateur pour atteindre certains valeur. C'est la même idée qu'avec la diode, c'est juste beaucoup plus lent, pas que je m'en soucie vraiment. Bien que je puisse utiliser une résistance pour couper la constante RC. Je préférerais ne pas utiliser cette solution parce que j'ai l'impression ... que je la résous de la mauvaise façon.e-tRC
  • La précision n'a pas besoin d'être parfaite, en ce moment, ce n'est que 4 bits par condensateur, cela donne à chaque niveau V si VDD est de 4 V. Bien qu'à l'avenir, ce serait amusant de stocker 8 bits par condensateur.424=0,25
  • Une fois la multiplication effectuée, elle sera transmise au quantificateur pour s'assurer que la valeur est aussi proche que possible d'une valeur binaire. Les petites erreurs sont donc correctes.

Voici le gif qui montre mon échec à essayer de faire celui basé sur MOS:

entrez la description de l'image ici
Figure 5, j'ai copié le schéma du lien wiki ci-dessus, mais cela ne fonctionne pas dans le simulateur.

Si cela avait fonctionné, alors j'aurais dû voir la valeur 1 V quelque part car j'ai changé la tension de la référence de 5 V à -5 V.


1
La première fois que j'ai vu un multiplicateur analogique, il utilisait un ensemble de queues longues: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
fonctionne la cellule gilbert jusqu'à DC? Je pense qu'il est utilisé pour mélanger RF
Vladimir Cravero

1
@VladimirCravero Une cellule de gilbert est essentiellement un multiplicateur - pensez-y, si vous multipliez deux signaux, un à f1 et un à f2, vous obtenez une sortie à f1-f2 et f1 + f2, ce que fait un mélangeur. Ils sont également utilisés pour les amplificateurs à gain variable pour cette raison - un signal sera une constante (le réglage de gain), le second sera la chose que vous souhaitez amplifier.
Joren Vaes

Réponses:


5

Si vous voulez construire un multiplicateur analogique qui est un peu hors des sentiers battus, pensez à ce qui se passe lorsque vous alimentez un signal analogique via un commutateur analogique mais contrôlez le commutateur analogique avec PWM à une fréquence élevée (nettement au-dessus du nyquist pour rendre la vie Plus facile).

Si le PWM est à 50% d'espace de marquage, le signal analogique en bande de base est atténué de moitié. De toute évidence, vous devez utiliser un filtre de récupération pour supprimer les artefacts de commutation. Mais avec cette technique, vous pouvez moduler en amplitude un signal analogique en faisant varier le rapport cyclique PWM: -

entrez la description de l'image ici

Vous pouvez également en faire un multiplicateur à 4 quadrants. Une entrée analogique contrôle un modulateur de largeur d'impulsion. L'autre entrée analogique est commutée.

Juste une pensée au cas où vous seriez intéressé.

Plus de détails ici


C'est une approche très intéressante!
Joren Vaes

1
Hmm, en utilisant PWM où l'amplitude est une tension et le rapport cyclique est l'autre tension relative , puis filtré LP. Ce n'est en fait pas une mauvaise idée.
Harry Svensson

1
Il est utilisé dans certaines radios comme modulateurs et dans les LVDT comme démodulation de position. J'en ai également appliqué un comme démodulateur I et Q dans un détecteur de métaux sensible.
Andy aka

4

Ces choses existent - Les appareils analogiques (utilisés?) Ont des circuits intégrés multiplicateurs que vous pouvez (pourriez?) Acheter. Ils ont également cette excellente note que je suggère vraiment de lire.

VOUT(t)=VjeN,1(t)VjeN,2(t)VjeN,1VjeN,2


1
Vous pouvez toujours obtenir ces multiplicateurs analogiques. Je crois que digikey a même une catégorie de produits complète pour eux.
Foyer

2
Cependant, une cellule Gilbert dépend de manière critique de l'adaptation des transistors (ce qui est relativement facile lorsque les transistors font partie d'une seule puce). L'OP a rejeté l'utilisation d'un circuit qui repose sur l'adaptation des transistors, donc je ne suis pas sûr que ce soit une bonne réponse.
WhatRoughBeast

1
AD633 est un multiplicateur à 4 quadrants qui produit (X1-X2) (Y1-Y2) / 10V + Z. Pas particulièrement bon marché.
Spehro Pefhany

3

Je mets juste cela ici comme une réponse viable pour les futurs lecteurs.


Après avoir lu la réponse de Joren, j'ai réalisé que de nombreux multiplicateurs analogiques reposent sur des composants correspondants. Alors je me suis dit, pourquoi ne pas simplement réutiliser des composants pour que le même composant soit utilisé partout? De cette façon, je ferai correspondre tout automatiquement.

J'ai donc recherché le multiplicateur à base de diodes typique et j'ai vu que les anodes de toutes les diodes sont toujours connectées à l'entrée (-) de l'ampli-op. Il en va de même pour une broche de la résistance de 1 kΩ.

entrez la description de l'image ici

Lien vers la simulation.

Dans l'image ci-dessus, la multiplication de 2,25 × 3 est calculée, ce qui donne 6,75. La même multiplication se fait dans la ... monstruosité ci-dessous.

La «valeur pour un» est la référence de tension pour un. Donc, si c'est 0,1 V et V1 = V2 = 1 volt. La réponse sera alors 10 V, ce qui correspond au nombre 100 si 0,1 V est égal à 1.

J'ai donc décidé de muxer la cathode et l'autre broche de la résistance de 1 kΩ et voilà, il y a un joli logarithme et une fonction exponentielle qui correspondent. Vous pouvez voir dans le gif ci-dessous.

entrez la description de l'image ici

Lien vers la simulation.

Le gif est un peu granuleux, ce qui est destiné à réduire 8 Mo à 2 Mo. Le gif est également accéléré 2x, 28 secondes au lieu de 55.

Je sais que ça dit "log (x) en base y" et "pow (y, x)" ce qui n'est pas vrai. Je me suis confondu avec la référence de tension. C'est juste se connecter et pow avec une base aléatoire. Les mathématiciens intelligents sauront que la base n'a pas d'importance, vous pouvez convertir n'importe quel journal en n'importe quel autre journal.

Le nombre 6,7 est affiché à la fin à la sortie de l'ampli-op en bas à droite. CircuitJS tronque 6,75 à 6,7 lors de la présentation des nombres sans survol de la souris. Le placement de la souris ci-dessus a montré 6,69 V, donc une erreur de 60 mV qui est inférieure à 250 mV et donc acceptable. Selon .. pas le meilleur simulateur.


Après avoir lu la réponse d'Andy Aka, je ne sais pas si une autre réponse peut la battre. J'accepterai le sien dans quelques jours si aucune autre réponse ne le bat. Je ne crois pas que ma réponse bat Andy's.


1

Je suis récemment tombé sur le circuit "Parabolic Multiplier" dans un ordinateur analogique de 1968. Pour multiplier A et B, vous commencez avec deux amplis opérationnels pour calculer A + B et AB. Ensuite, vous avez besoin d'un générateur de fonctions qui produit X ^ 2 (c'est-à-dire une parabole). Avec deux générateurs de fonctions, vous calculez (A + B) ^ 2 et (AB) ^ 2. Vous soustrayez les deux résultats avec un ampli op, résultant en 4 × A × B, qui après la mise à l'échelle vous donne A × B comme vous le souhaitez.

Comment obtenez-vous la fonction X ^ 2? Une fonction convexe arbitraire (telle que X ^ 2) peut être approximée avec un réseau de résistances-diodes. L'idée est que chaque diode s'allume à une tension d'entrée particulière (contrôlée par les résistances supérieures) et fournit un courant (contrôlé par les résistances inférieures) à la sortie. Le résultat est une fonction linéaire par morceaux. (Les valeurs des composants ci-dessous sont arbitraires; je n'ai pas calculé les valeurs pour X ^ 2.) Un générateur de fonction réel peut avoir une douzaine de diodes pour plus de précision. Un générateur de fonctions peut être câblé ou avoir des potentiomètres pour que l'utilisateur puisse le régler sur n'importe quelle fonction souhaitée.

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Le multiplicateur parabolique était considéré comme un moyen de haute précision d'effectuer une multiplication analogique. Une brève mention est dans le manuel de l' ordinateur analogique Dornier 240 . (En allemand, voir Der Parabel-Multiplizierer dans la section 9.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.