アナログアナログ乗算、ハイブリッドCPUの一部(楽しみのため)


10

ショートバージョン: 2つのアナログDC入力を受け取るアナログ乗算器を作成するにはどうすればよいですか?

ロングバージョン:


私がコメント作られた私は自分自身にいくつかに(再び)自分と考え方を見てしまったので、やっている間、別の質問のためのベン食いの動画を推薦する「うーん...私はいくつかの部分は純粋にアナログにするために容易になるだろうかしら」。

バスは、異なる電圧レベルが後でADCを使用してビットに変換される1本のワイヤーである場合もあります。

理論的にはフィボナッチ数を計算できる少しここまで来ました。

ここに画像の説明を入力してください
図1、最初のフィボナッチ数を計算するハイブリッドコンピューターの小さなデモ

シミュレーターへのリンク

上のgifでは、電圧範囲から外れているので、フィボナッチ数が簡単にわかります。実際には、250 mV =バイナリ1(「設定値」のLSB)を使用し、それを介して伝播させます。コンデンサあたり4ビットを保持するDRAM。

gifで確認する重要な部分は、「a + b」テキストの右側にあるオペアンプの出力です。フィボナッチ数を示しています。

すべての操作の合間に、ADCに続いてDACを使用して答えを定量化します。したがって、1.1Vを読み取ると、DACはそれを1.0 Vに変換し、その後、DRAMに保存します。そして、Xクロックごとに、DRAM全体が量子化器を通過して、コンデンサが浮かないようにする必要があります。

ALUは+、-、および平均のみを実行できます。掛け算を考えていて止まりました。以前にダイオードベースの乗算器を作成して見ましたが、ダイオードを一致させる必要があるため、使用しないでください。むしろ、ポテンショメーターでトリミングできる抵抗を使用します。Anywhoo、私はハイブリッド乗算器、半分アナログ、半分デジタルを思いついた。

だから私はどこでも同じ抵抗器で最初のものを作りました。

ここに画像の説明を入力してください
図2、デジタル数値とアナログ値の間の単純な乗数。デジタル値は1だけオフセットされます。

それから私はバイナリの重みでこれに変えました:

ここに画像の説明を入力してください
図3、バイナリで重み付けされたデジタル数値とアナログ値の間の単純な乗数。デジタル値は1だけオフセットされます。

これはR2 / Rラダーを思い出させましたが、オペアンプでそれらを動作させることができませんでした。

しかし、私はR2 / Rラダーがどのように機能するかを考え、出力が電圧源で乗算されることを思い出しました。だから私は最終的にこのデザインを思いつきました:

ここに画像の説明を入力してください
図4、バイナリ加重デジタル数値とアナログ値の間のR2 / Rベースの乗数

私はそれが好きですが、唯一の問題はバスがアナログであり、1本の線だけであることです。したがって、上の図4のソリューションを使用せざるを得ない場合は、ハイブリッドCPUの乗算領域で別のADCを使用せざるを得ません。量子化領域で再利用することはできません。

質問の時間:

2つのアナログ入力を受け取る乗算器をどのように作成すればよいですか?

  • 私はしていないに基づいて解決したいことと、4オペアンプ3個のダイオードあなたがトリムダイオードことができないために。私の信念は、それらが一致しない場合、250 mVを超えるオフの応答を与えると考えています。私はこれを現実の世界では試していません。
  • 文字通りこの単語より1インチ上のリンクでMOSベースの乗数を試しましたが、私が馬鹿げているかどうかはわかりません。シミュレーターで動作させることができません。MOS実装の失敗については、下のgifを参照してください。または、シミュレーションのこのリンクをクリックします。
  • 問題にマイクロコントローラを投げたくありません。
  • 私はしていない回転とすると、いくつかのペテンを使用しているモーターを使用したいです。
  • ローパス構成でRCフィルターを使用してを取得することを考えていましたetRC
  • 424=0.25
  • 乗算が行われた後、量子化器に渡され、値がバイナリ値に可能な限り近いことを確認します。したがって、小さなエラーは問題ありません。

これは、MOSベースのものを作成しようとして失敗したことを示すgifです。

ここに画像の説明を入力してください
図5、上のwikiリンクから回路図をコピーしましたが、シミュレーターでは機能しません。

それがうまくいったなら、リファレンスの電圧を5 Vから-5 Vに変更したときに、どこかで1 Vの値が表示されたはずです。


1
私が初めてアナログ乗算器を見たとき、それは一連のロングテールを使用していました:analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
ギルバートセルはDCまで機能しますか?RFの混合に使用されていると思います
Vladimir Cravero

1
@VladimirCraveroギルバートセルは本質的に乗数です-考えてみてください。2つの信号を乗算すると、1つはf1に、もう1つはf2に、f1-f2とf1 + f2で出力が得られます。これがミキサーの機能です。これらは、この理由で可変ゲインアンプにも使用されます。一方の信号は定数(ゲイン設定)で、もう一方の信号は増幅したいものです。
Joren Vaes、2018

回答:


5

少し奇抜なアナログ乗算器を構築したい場合は、アナログスイッチを介してアナログ信号を供給しながら、PWMでアナログスイッチを高周波で制御するとどうなるかを検討してください(かなりナイキストを上回って寿命を作るため)より簡単に)。

PWMが50%マークスペースの場合、ベースバンドアナログ信号は半分に減衰されます。明らかに、スイッチングアーチファクトを削除するには、回復フィルターを使用する必要があります。しかし、この手法では、PWMデューティサイクルを変化させることにより、アナログ信号を振幅変調できます。

ここに画像の説明を入力してください

また、4象限乗算器にすることもできます。1つのアナログ入力がパルス幅変調器を制御します。他のアナログ入力が切り替えられます。

興味がある方のために考えておきましょう。

詳細はこちら


これは非常に興味深いアプローチです。
Joren Vaes

1
うーん、PWMを使用し、振幅が1つの電圧で、デューティサイクルがもう1つの相対電圧で、LPフィルタリングされます。それは実際に悪い考えではありません。
Harry Svensson、2018年

1
一部の無線機では変調器として、LVDTでは位置復調として使用されます。高感度金属探知器のIおよびQ復調器としても適用しました。
アンディ、別名

4

これらのものが存在します-アナログデバイス(慣れている?)には、購入できる(できる?)乗算器ICがあります。彼らはまた、私が間違いなく読むことをお勧めするこの素晴らしいappnoteを持っています。

VOUTt=VN1tVN2tVN1VN2


1
これらのアナログ乗算器は引き続き入手できます。digikeyには、完全な製品カテゴリさえあると思います。
ハース

2
ただし、ギルバートセルはトランジスタのマッチングに非常に依存しています(トランジスタが単一のダイの一部である場合は比較的簡単です)。トランジスタのマッチングに依存する回路の使用をOPが拒否したため、これが適切な答えであるかどうかはわかりません。
WhatRoughBeast

1
AD633は、(X1-X2)(Y1-Y2)/ 10V + Zを出力する4象限乗算器です。特に安くはありません。
Spehro Pefhany

3

私はこれを将来の読者のための実行可能な答えとしてここに出しています。


ヨレンの答えを読んだ後、私は多くのアナログ乗算器が一致するコンポーネントに依存していることに気付きました。だから私は自分で考えました、なぜ同じコンポーネントがどこでも使用されるようにコンポーネントを再利用しないのですか?そうすれば、すべてが自動的に一致します。

そこで、典型的なダイオードベースの乗算器を調べたところ、すべてのダイオードのアノードが常にオペアンプの(-)入力に接続されていることがわかりました。1kΩ抵抗の1つのピンについても同様です。

ここに画像の説明を入力してください

シミュレーションへのリンク

上の画像では、乗算2.25×3が計算され、結果は6.75になります。非常に同じ乗算が以下の...怪物で行われます。

「1つの値」は、1つの基準電圧です。したがって、0.1 Vで、V1 = V2 = 1ボルトの場合。次に、答えは10 Vで、0.1 Vが1の場合は100になります。

そこで、カソードと1kΩ抵抗の他のピンを多重化することにしました。これは、対数関数と指数関数が一致しているためです。あなたは下のgifで見ることができます。

ここに画像の説明を入力してください

シミュレーションへのリンク

gifは少し粗く、8 MBを2 MBに縮小するためのものです。また、gifは55倍ではなく2倍の28秒に高速化されています。

「log(x)in base y」と「pow(y、x)」と書いてあるのは知っていますが、これは正しくありません。電圧リファレンスと混同してしまいました。それはちょうどいくつかのランダムなベースを持つログとパウです。賢い数学者なら、基数が何であっても関係なく、どのログでも他のログに変換できます。

番号6.7は、右下のオペアンプの出力の最後に表示されます。CircuitJSは、マウスを動かさずに数値を表示すると、6.75を6.7に切り捨てます。上にマウスを置くと6.69 Vを示したので、60 mVの誤差は250 mV未満であり、許容できます。によると..最高のシミュレータではありません。


Andy Akaの回答を読んだ後、別の回答がそれを打つことができるかどうかわかりません。他の答えがそれを打つことができない場合、私は数日で彼を受け入れます。私の答えがアンディに勝るとは思いません。


1

私は最近、1968年のアナログコンピュータで「パラボリックマルチプライヤー」回路に出会いました。AとBを乗算するには、2つのオペアンプから始めて、A + BとABを計算します。次に、X ^ 2(つまり放物線)を生成する関数発生器が必要です。2つの関数発生器を使用して、(A + B)^ 2および(AB)^ 2を計算します。オペアンプで2つの結果を差し引くと、4×A×Bが得られます。これは、スケーリング後に必要に応じてA×Bになります。

X ^ 2関数はどのように取得しますか?任意の凸関数(X ^ 2など)は、抵抗ダイオードネットワークで近似できます。アイデアは、各ダイオードが特定の入力電圧(上部の抵抗によって制御される)でオンになり、電流(下部の抵抗によって制御される)を出力に提供するというものです。結果は区分的線形関数です。(以下のコンポーネント値は任意です。X^ 2の値は計算しませんでした。)実際の関数発生器は、より正確に数十のダイオードを備えている場合があります。関数発生器は、ハードワイヤードにすることも、ポテンショメータを備えてユーザーが任意の関数に設定できるようにすることもできます。

概略図

この回路のシミュレーションCircuitLabを使用して作成された回路

放物線乗数は、アナログ乗算を実行する高精度な方法と考えられていました。簡単な説明は、ドルニエ240アナログコンピュータマニュアルにあります。(ドイツ語では、セクション9のDer Parabel-Multipliziererを参照してください。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.