アナログは汚い?デジタルは綺麗?

どちらも同じ目的を達成することができるとき、どちらを選びますか。アナログ?デジタル?
今回は、初心者でも十分躓くことができる(?)アナログ回路の本質的な難しさについて。


この問題を考える上で、「ある変数から100を引く」という処理を実現する場合を例に考えて見ます。

○デジタルの場合
PICのアセンブラで、Wレジスタから100を引くプログラムを書けといわれたらどのようにかけるでしょうか。

方法①
        MOVWF   TMP
MOVLW D'100'
SUBWF TMP,W


これは少しまどろっこしいですね。

方法②
        ADDLW   -D'100'


①よりもすっきりしました。これなら3命令サイクルかかっていたものが、1命令サイクルで終わります。
しかしながら、計算結果は変わりません

○アナログの場合
一方、アナログ回路で同じようなことを考えてみるとどうでしょう。
V(work)からV(literal)=100mVを引き算する回路を考えます。


001_20081105003701.png

002_20081105003706.png



1つのスケマティックないに二つの方式の回路図が書いてあります。

上の緑で囲まれた回路図は、少しまどろっこしい最適とはいえない回路図です。
「反転増幅回路」→「加算回路」→「反転増幅回路」
となっており、理想的な出力電圧は、V(out1)=-{(-1)*V(literal)+V(work)}*(-1)=V(work)-V(literal)です。

下の青で囲まれた回路図は、もっとすっきりしており、「差動増幅回路」1つで構成されています。
理論上の出力電圧は、V(out2)=V(work)-V(literal)であり、上の回路と同じです。

LTspiceを用いた回路シミュレーションでは、すべての抵抗を10kΩに対して±5%の誤差を持つものとしてモンテカルロ解析を行っています。グラフ中の赤のラインが理想的な出力電圧であり、緑のラインと青のラインはこれに対してばらけていることが分かります。
ここで重要なのは、緑のラインのほうが青のラインよりもばらけかたが激しいということです。言い換えれば、青の回路のほうが理想に近い優れた回路だということです。

○結論
デジタル方式では、多少エレガントさにかける方法①のようなプログラムを書いても、やっていることに間違いが無ければ正常に動作をすることが分かります。結果だけを見れば、命令サイクル数が余計にかかることを除いて、方法②と変わりません。

一方で、アナログ方式ではどうでしょうか。緑の回路は青の回路に比べて、出力電圧の誤差が大きくなっています。
しかし、単純にこれだけで「青は正常で緑は異常」という判断はできません。なぜなら、緑の誤差が許容範囲であるか、また、青はどうか、といった判断をしなければならないからです。

また、今回は誤差要因として抵抗の誤差を考えましたが、この抵抗の誤差も確率論的に分布しているだけです。したがって、同時に両方の回路を作ったとして、たまたま、緑の方式の回路のほうが青の方式の回路よりも高性能になることもありえます。

このあたりが、デジタル回路と比較した場合での、アナログ回路の本質的な難しさなのでしょう・・・きっと。

○蛇足
さて余談です。
PICのプログラム、OPアンプ回路の両方にいえる話ですが、最初に見せたエレガントでない方法・・・そんな方法、絶対選ぶわけ無いじゃんと馬鹿にしてはいけません。案外こういう事はやってしまいがちなんです。
そもそも、次に見せたまともに見える方法すら、よりよい方法が無いという根拠は無いわけですから。

○付録
このエントリで使用したスケマティックを添付します。コピーして、「substract.asc」という名前で保存すればLTspiceでシミュレーションできるはずです。

substract.asc
Version 4
SHEET 1 884 680
WIRE -176 16 -208 16
WIRE -48 16 -96 16
WIRE 0 16 -48 16
WIRE 112 16 80 16
WIRE -48 96 -48 16
WIRE 0 96 -48 96
WIRE 112 112 112 16
WIRE 112 112 64 112
WIRE 128 112 112 112
WIRE 256 112 208 112
WIRE 304 112 256 112
WIRE 416 112 384 112
WIRE 0 128 -32 128
WIRE 128 192 96 192
WIRE 256 192 256 112
WIRE 256 192 208 192
WIRE 304 192 256 192
WIRE 416 208 416 112
WIRE 416 208 368 208
WIRE 432 208 416 208
WIRE 560 208 512 208
WIRE 608 208 560 208
WIRE 720 208 688 208
WIRE 304 224 272 224
WIRE 560 288 560 208
WIRE 608 288 560 288
WIRE 720 304 720 208
WIRE 720 304 672 304
WIRE 752 304 720 304
WIRE 608 320 576 320
WIRE 400 400 368 400
WIRE 528 400 480 400
WIRE 576 400 528 400
WIRE 704 400 656 400
WIRE 528 480 528 400
WIRE 560 480 528 480
WIRE 704 496 704 400
WIRE 704 496 624 496
WIRE 752 496 704 496
WIRE -240 512 -256 512
WIRE -96 512 -112 512
WIRE 560 512 528 512
WIRE -256 528 -256 512
WIRE -112 528 -112 512
WIRE 400 592 368 592
WIRE 528 592 528 512
WIRE 528 592 480 592
WIRE 576 592 528 592
WIRE 704 592 656 592
FLAG 272 224 0
FLAG 576 320 0
FLAG -32 128 0
FLAG -256 512 literal
FLAG -208 16 literal
IOPIN -208 16 In
FLAG -112 512 work
FLAG 96 192 work
IOPIN 96 192 In
FLAG -256 608 0
FLAG -112 608 0
FLAG 704 592 0
FLAG 368 592 work
IOPIN 368 592 In
FLAG 368 400 literal
IOPIN 368 400 In
FLAG 752 304 out1
IOPIN 752 304 Out
FLAG 752 496 out2
IOPIN 752 496 Out
SYMBOL Opamps\\opamp 32 48 R0
SYMATTR InstName U1
SYMBOL Opamps\\opamp 336 144 R0
SYMATTR InstName U2
SYMBOL res -80 0 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R1
SYMATTR Value {mc(10k,tol)}
SYMBOL res 96 0 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R2
SYMATTR Value {mc(10k,tol)}
SYMBOL res 224 96 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R3
SYMATTR Value {mc(10k,tol)}
SYMBOL res 400 96 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R4
SYMATTR Value {mc(10k,tol)}
SYMBOL Opamps\\opamp 640 240 R0
SYMATTR InstName U3
SYMBOL res 224 176 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R5
SYMATTR Value {mc(10k,tol)}
SYMBOL res 528 192 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R6
SYMATTR Value {mc(10k,tol)}
SYMBOL res 704 192 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R7
SYMATTR Value {mc(10k,tol)}
SYMBOL voltage -256 512 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName Vliteral
SYMATTR Value 100mV
SYMBOL voltage -112 512 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName Vwork
SYMATTR Value 255mV
SYMBOL Opamps\\opamp 592 432 R0
SYMATTR InstName U4
SYMBOL res 496 384 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R8
SYMATTR Value {mc(10k,tol)}
SYMBOL res 672 384 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R9
SYMATTR Value {mc(10k,tol)}
SYMBOL res 496 576 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R10
SYMATTR Value {mc(10k,tol)}
SYMBOL res 672 576 R90
WINDOW 0 5 56 VBottom 0
WINDOW 3 27 56 VTop 0
SYMATTR InstName R11
SYMATTR Value {mc(10k,tol)}
TEXT -288 432 Left 0 !.lib opamp.sub
TEXT -288 408 Left 0 !.step param X 1 10 1
TEXT -288 384 Left 0 !.param tol 0.05
TEXT -288 360 Left 0 !.dc Vwork 0V 255mV 1mV


tag: LTspice モンテカルロ解析 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoCOPアンプPICCPA強磁性常微分方程式モンテカルロ解析odeトランジスタ状態密度インターフェーススイッチング回路ecaljPDS5022DOS定電流半導体シェルスクリプト乱数レベルシフトHP6632Aブレッドボード分散関係温度解析R6452Aトランジスタ技術I2C可変抵抗反強磁性セミナー数値積分確率論偏微分方程式バンド構造非線形方程式ソルババンドギャップ絶縁熱設計シュミットトリガLEDA/Dコンバータ三端子レギュレータLM358ISO-I2CGW近似カオスフォトカプラマフィンティン半径TL431数値微分PC817Cアナログスイッチ直流動作点解析発振回路USBサーボカレントミラー74HC4053パラメトリック解析LDAbzqltyチョッパアンプ量子力学FFT2ちゃんねるアセンブラBSch開発環境電子負荷ブラべ格子イジング模型補間基本並進ベクトル標準ロジック単振り子キュリー温度繰り返しMaxima状態方程式失敗談相対論スピン軌道相互作用FETランダムウォーク熱伝導六方最密充填構造コバルトewidthTLP621GGAQSGW不規則合金位相図抵抗SMPcygwinラプラス方程式スレーターポーリング曲線gfortranスイッチト・キャパシタ詰め回路TLP552三角波格子比熱TLP521条件分岐LM555MCUNE555QNAPマントルテスタ過渡解析FXA-7020ZRダイヤモンドデータロガーガイガー管自動計測Writer509UPSシュレディンガー方程式ブラウン運動awk差し込みグラフ熱力学平均場近似仮想結晶近似VCAfsolve井戸型ポテンシャルVESTA起電力スーパーセルOpenMP第一原理計算ubuntu固有値問題L10構造OPA2277interp12SC1815fccウィグナーザイツ胞面心立方構造フィルタジバニャン方程式ヒストグラム確率論マテリアルデザインspecx.f等高線正規分布PGAフェルミ面非線型方程式ソルバ初期値固定スピンモーメントスワップ領域ルチル構造リジッドバンド模型edeltquantumESPRESSO岩塩構造BaOSIC二相共存ZnOウルツ鉱構造フォノンデバイ模型c/aノコギリ波全エネルギーFSMTeXgnuplotmultiplotハーフメタルCapSense半金属合金結晶磁気異方性Ubuntu文字列入出力TS-110TS-112疎行列Excel直流解析ヒストグラム円周率不規則局所モーメントトラックボールPC等価回路モデルパラメータ・モデルキーボードRealforce三次元マンデルブロ集合フラクタル化学反応重積分縮退日本語最小二乗法関数フィッティングGimpMAS830LHiLAPW熱拡散方程式両対数グラフナイキスト線図負帰還安定性陰解法Crank-Nicolson法P-10クーロン散乱境界条件連立一次方程式片対数グラフEAGLEPIC16F785LMC662トランスシンボルCK1026線種凡例MBEAACircuitグラフの分割軸ラベルifort

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ