スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


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

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


この問題を考える上で、「ある変数から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カウンター
カテゴリ
ユーザータグ

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

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。