Analoge analoge Multiplikation, Teil einer Hybrid-CPU (zum Spaß)

10

Kurzversion: Wie mache ich einen analogen Multiplikator, der zwei analoge DC-Eingänge benötigt?

Lange Version:


Ich habe einen Kommentar abgegeben, in dem ich Ben Eaters-Videos für eine andere Frage empfohlen habe. Dabei habe ich mir (wieder) einige angesehen und mir gedacht: " Hmmm ... ich frage mich, ob es einfacher wäre, einige Teile rein analog zu machen ."

Der Bus könnte nur ein Draht sein, bei dem verschiedene Spannungspegel später mit einem ADC in Bits übersetzt werden.

Ich habe nur ein bisschen rumgespielt und bin so weit gekommen, dass theoretisch die Fibonacci-Zahlen berechnet werden können:

Geben Sie hier die Bildbeschreibung ein
Abbildung 1, kleine Demo eines Hybridcomputers zur Berechnung der ersten Fibonacci-Zahlen

Link zum Simulator.

Im obigen GIF gehe ich weit aus dem Spannungsbereich heraus, damit die Fibonacci-Zahlen leicht zu erkennen sind. In Wirklichkeit würde ich einfach 250 mV = binär 1 (das LSB bei den "eingestellten Werten") verwenden und es dann durch das ausbreiten lassen DRAM, der 4 Bits pro Kondensator enthält.

Der wichtige Teil, der im GIF betrachtet werden muss, ist die Ausgabe des Operationsverstärkers rechts vom "a + b" -Text. Er zeigt die Fibonacci-Zahlen.

Zwischen jeder Operation würde ich die Antwort mit einem ADC gefolgt von einem DAC quantifizieren. Wenn ich also 1,1 V lesen würde, würde der DAC daraus 1,0 V machen, die anschließend im DRAM gespeichert würden. Und dann müsste einmal pro X-Takt der gesamte DRAM den Quantisierer durchlaufen, um sicherzustellen, dass der Kondensator nicht wegschwimmt .

Die ALU kann nur +, - und Durchschnitt ausführen. Ich dachte über die Multiplikation nach und blieb stehen. Ich habe schon einmal diodenbasierte Multiplikatoren hergestellt und gesehen, aber ich möchte sie nicht verwenden, da die Dioden angepasst werden müssen. Ich benutze lieber Widerstände, die ich mit einem Potentiometer trimmen kann. Jedenfalls habe ich mir einen Hybrid-Multiplikator ausgedacht, halb analog, halb digital.

Also habe ich überall eine Premiere mit identischen Widerständen gemacht.

Geben Sie hier die Bildbeschreibung ein
Abbildung 2, naiver Multiplikator zwischen digitalen und analogen Werten. Der digitale Wert wird um 1 versetzt.

Was ich dann mit binären Gewichten daraus gemacht habe:

Geben Sie hier die Bildbeschreibung ein
Abbildung 3, naiver Multiplikator zwischen binär gewichteten digitalen Zahlen und analogen Werten. Der digitale Wert wird um 1 versetzt.

Dies erinnerte mich an R2 / R-Leitern, aber ich konnte sie nicht mit dem Operationsverstärker arbeiten lassen.

Ich dachte jedoch darüber nach, wie R2 / R-Leitern funktionieren, und erinnerte mich, dass ihre Leistung mit ihrer Spannungsquelle multipliziert wird. Also habe ich mir endlich dieses Design ausgedacht:

Geben Sie hier die Bildbeschreibung ein
Abbildung 4, R2 / R-basierter Multiplikator zwischen binär gewichteten digitalen Zahlen und analogen Werten

Ich mag es, das einzige Problem ist jedoch, dass der Bus analog ist, nur ein Draht. Wenn ich also gezwungen bin, die Lösung in Abbildung 4 oben zu verwenden, muss ich einen anderen ADC im Multiplikationsbereich der Hybrid-CPU verwenden. Ich kann den im Quantisiererbereich nicht wiederverwenden.

Zeit für die Frage:

Wie soll ich einen Multiplikator erstellen, der zwei analoge Eingänge benötigt?

  • Ich möchte keine Lösung, die auf 3 Dioden und 4 Operationsverstärkern basiert, da Sie keine Dioden trimmen können. Ich glaube, wenn sie nicht übereinstimmen, geben sie eine Antwort, die um mehr als 250 mV abweicht. Ich habe das in der realen Welt nicht versucht.
  • Ich habe den MOS-basierten Multiplikator im Link buchstäblich einen Zentimeter über diesem Wort ausprobiert, aber ich weiß nicht, ob ich dumm bin. Ich kann es im Simulator nicht zum Laufen bringen. Siehe GIF unten für einen Fehler bei der MOS-Implementierung. Oder klicken Sie auf diesen Link für die Simulation.
  • Ich möchte keinen Mikrocontroller auf das Problem werfen.
  • Ich möchte keinen Motor verwenden, der sich dreht und einige Spielereien verwendet.
  • etRC
  • 424=0.25
  • Nachdem die Multiplikation durchgeführt wurde, wird sie zum Quantisierer geleitet, um sicherzustellen, dass der Wert einem Binärwert so nahe wie möglich kommt. So kleine Fehler sind okay.

Hier ist das GIF, das mein Versagen beim Versuch zeigt, das MOS-basierte zu erstellen:

Geben Sie hier die Bildbeschreibung ein
Abbildung 5: Ich habe den Schaltplan aus dem obigen Wiki-Link kopiert, aber er funktioniert im Simulator nicht.

Wenn es funktioniert hätte, hätte ich den Wert 1 V irgendwo sehen müssen, als ich die Spannung der Referenz von 5 V auf -5 V geändert habe.

Harry Svensson
quelle
1
Als ich zum ersten Mal einen analogen Multiplikator sah, verwendete er eine Reihe langer Schwänze: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart
2
Funktioniert die Gilbert-Zelle bis zu DC? Ich denke, es wird verwendet, um RF zu mischen
Vladimir Cravero
1
@VladimirCravero Eine Gilbert-Zelle ist im Wesentlichen ein Multiplikator. Denken Sie darüber nach. Wenn Sie zwei Signale multiplizieren, eines bei f1 und eines bei f2, erhalten Sie einen Ausgang bei f1-f2 und f1 + f2, was ein Mischer tut. Aus diesem Grund werden sie auch für Verstärker mit variabler Verstärkung verwendet - ein Signal ist eine Konstante (die Verstärkungseinstellung), das zweite ist das, was Sie verstärken möchten.
Joren Vaes

Antworten:

5

Wenn Sie einen analogen Multiplikator bauen möchten, der etwas abseits der ausgetretenen Pfade liegt, sollten Sie überlegen, was passiert, wenn Sie ein analoges Signal über einen analogen Schalter speisen, aber den analogen Schalter mit PWM auf einer hohen Frequenz steuern (deutlich über nyquist, um Leben zu machen) einfacher).

Wenn die PWM 50% Markierungsraum beträgt, wird das Basisband-Analogsignal um die Hälfte gedämpft. Natürlich müssen Sie einen Wiederherstellungsfilter verwenden, um Schaltartefakte zu entfernen. Mit dieser Technik können Sie jedoch ein analoges Signal durch Variieren des PWM-Arbeitszyklus amplitudenmodulieren: -

Geben Sie hier die Bildbeschreibung ein

Sie können es auch zu einem 4-Quadranten-Multiplikator machen. Ein Analogeingang steuert einen Impulsbreitenmodulator. Der andere Analogeingang ist geschaltet.

Nur ein Gedanke, falls Sie interessiert sind.

Weitere Details hier

Andy aka
quelle
Dies ist ein sehr interessanter Ansatz!
Joren Vaes
1
Hmm, unter Verwendung von PWM, wobei die Amplitude eine Spannung und das Tastverhältnis die andere relative Spannung ist , und dann LP gefiltert. Das ist eigentlich keine schlechte Idee.
Harry Svensson
1
Es wird in einigen Radios als Modulatoren und in LVDTs als Positionsdemodulation verwendet. Ich habe einen auch als I- und Q-Demodulator in einem empfindlichen Metalldetektor eingesetzt.
Andy aka
4

Diese Dinge existieren - Analoge Geräte (früher?) Haben einige Multiplikator-ICs, die Sie kaufen können (könnten?). Sie haben auch diese ausgezeichnete Appnote, die ich definitiv zum Lesen empfehle.

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

Joren Vaes
quelle
1
Sie können diese analogen Multiplikatoren immer noch erhalten. Ich glaube, digikey hat sogar eine ganze Produktkategorie für sie.
Herd
2
Eine Gilbert-Zelle hängt jedoch entscheidend von der Transistoranpassung ab (was relativ einfach ist, wenn die Transistoren Teil eines einzelnen Chips sind). Das OP hat die Verwendung einer Schaltung abgelehnt, die auf der Anpassung von Transistoren beruht, daher bin ich mir nicht sicher, ob dies eine gute Antwort ist.
WhatRoughBeast
1
AD633 ist ein 4-Quadranten-Multiplikator, der (X1-X2) (Y1-Y2) / 10V + Z ausgibt. Nicht besonders billig.
Spehro Pefhany
3

Ich stelle dies hier nur als eine tragfähige Antwort für zukünftige Leser dar.


Nachdem ich Jorens Antwort gelesen hatte, stellte ich fest, dass viele analoge Multiplikatoren auf passenden Komponenten beruhen. Also dachte ich mir, warum nicht einfach Komponenten wiederverwenden, damit überall dieselbe Komponente verwendet wird? Auf diese Weise werde ich automatisch alles abgleichen.

Also habe ich den typischen diodenbasierten Multiplikator nachgeschlagen und festgestellt, dass die Anoden aller Dioden immer mit dem (-) Eingang des Operationsverstärkers verbunden sind. Gleiches gilt für einen Pin des 1 kΩ-Widerstands.

Geben Sie hier die Bildbeschreibung ein

Link zur Simulation.

Im obigen Bild wird die Multiplikation 2,25 × 3 berechnet, was 6,75 ergibt. Die gleiche Multiplikation wird in der folgenden Monstrosität vorgenommen.

Der "Wert für eins" ist die Spannungsreferenz für eins. Wenn es also 0,1 V ist und V1 = V2 = 1 Volt. Dann ist die Antwort 10 V, was sich in die Zahl 100 übersetzt, wenn 0,1 V 1 ist.

Also habe ich beschlossen, die Kathode und den anderen Pin des 1-kΩ-Widerstands und der Voilà zu muxen. Es gibt einen schönen Logarithmus und eine Exponentialfunktion, die übereinstimmen. Sie können im GIF unten sehen.

Geben Sie hier die Bildbeschreibung ein

Link zur Simulation.

Das GIF ist etwas körnig, das heißt absichtlich 8 MB auf 2 MB verkleinern. Auch das GIF wird 2x beschleunigt, 28 Sekunden statt 55.

Ich weiß, dass dort "log (x) in Basis y" und "pow (y, x)" steht, was nicht wahr ist. Ich habe mich mit der Spannungsreferenz verwechselt. Es ist nur log und pow mit einer zufälligen Basis. Die cleveren Mathematiker werden wissen, dass es egal ist, um welche Basis es sich handelt. Sie können jedes Protokoll in ein anderes Protokoll konvertieren.

Die Nummer 6.7 wird am Ende am Ausgang des unteren rechten Operationsverstärkers angezeigt. CircuitJS schneidet 6,75 bis 6,7 ab, wenn die Zahlen ohne Mauszeiger angezeigt werden. Das Platzieren der Maus oben zeigte 6,69 V, also einen 60-mV-Fehler, der weniger als 250 mV beträgt und daher akzeptabel ist. Laut .. nicht der beste Simulator.


Nachdem ich Andy Akas Antwort gelesen habe, bin ich mir nicht sicher, ob eine andere Antwort sie schlagen kann. Ich werde seine in ein paar Tagen akzeptieren, wenn keine andere Antwort es übertrifft. Ich glaube nicht, dass meine Antwort die von Andy übertrifft.

Harry Svensson
quelle
1

Ich bin kürzlich in einem analogen Computer von 1968 auf die Schaltung "Parabolischer Multiplikator" gestoßen. Um A und B zu multiplizieren, beginnen Sie mit zwei Operationsverstärkern, um A + B und AB zu berechnen. Als nächstes benötigen Sie einen Funktionsgenerator, der X ^ 2 erzeugt (dh eine Parabel). Mit zwei Funktionsgeneratoren berechnen Sie (A + B) ^ 2 und (AB) ^ 2. Sie subtrahieren die beiden Ergebnisse mit einem Operationsverstärker, was zu 4 × A × B führt, was nach der Skalierung A × B ergibt, wie gewünscht.

Wie bekommt man die X ^ 2 Funktion? Eine beliebige konvexe Funktion (wie X ^ 2) kann mit einem Widerstands-Dioden-Netzwerk angenähert werden. Die Idee ist, dass jede Diode bei einer bestimmten Eingangsspannung (gesteuert durch die oberen Widerstände) eingeschaltet wird und dem Ausgang einen Strom (gesteuert durch die unteren Widerstände) zuführt. Das Ergebnis ist eine stückweise lineare Funktion. (Die folgenden Komponentenwerte sind willkürlich; ich habe die Werte für X ^ 2 nicht berechnet.) Ein realer Funktionsgenerator verfügt möglicherweise über ein Dutzend Dioden, um die Genauigkeit zu erhöhen. Ein Funktionsgenerator könnte fest verdrahtet sein oder Potentiometer haben, so dass der Benutzer ihn auf jede gewünschte Funktion einstellen kann.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Der Parabolmultiplikator wurde als hochgenaue Methode zur Durchführung einer analogen Multiplikation angesehen. Eine kurze Erwähnung in der Dornier 240 Analogrechner Handbuch . (Siehe auf Deutsch Der Parabel-Multiplizierer in Abschnitt 9.)

Ken Shirriff
quelle