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:
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.
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:
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:
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.
- 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.
- 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:
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.