ADCのGNDレイアウト

http://www.analog.com/jp/analog-dialogue/articles/staying-well-grounded.html
http://www.analog.com/jp/analog-dialogue/raqs/raq-issue-9.html

上記のpptを見てみると結論として

IN CONCLUSION
if in doubt - join AGND & DGND and connect them to system analog ground

と書かれている。基本的には、AGNDとDGNDは共通にした方が無難なようだ。

If the data sheet suggests otherwise the data sheet is probably incorrct

と書かれているように、例えデータシートに分離しろと書かれていたとしても。
AGNDとDGNDをシステムレベルで分離した方が良いという例外もあり、その場合はDGNDに100mA以上の電流が流れる場合だと書かれている。
この境目は、ADCのデジタル回路を流れる(通常の)電流をAGNDに流すか、DGNDに流すか、どちらが有益かで決まってくる。AGNDに流す場合、デジタル回路からアナログ回路に流れる寄生パスのループも小さくなり、全体的にAGNDの電圧変動は小さくなる。一方、DGNDに流す場合、デジタル回路の電流は分離されるが、デジタル回路からアナログ回路を流れる電流のループは大きくなってしまう。そのため、デジタル回路の電流が小さい場合(<30mA)は共通に、大きい場合(>100mA)は分離をしろと書かれていた。

デジタルデザインノート

伝送線路やFPGAの考え方が詳しく書かれている。
http://zakii.la.coocan.jp/

pole zero cancellation

http://research.kek.jp/people/ikeda/KEK_REPORT2002-8/Electronics/day_5.pdf
http://nahitafu.cocolog-nifty.com/nahitafu/2016/04/cr-f455.html
などを参照。 前段の零点をpoleによって打消し、新たな(帯域の速い)poleのみを残す手法のようである。

ミドルブルック法が成り立つ条件について

逆方向伝達利得を考慮すると、ミドルブルック法は成立しない。 例えば、以下のような回路を考えてみる。

middle.png

この時、

T = -(Zin/(Zin+G22))*(G11^-1/(G11^-1+Zout))*(A0-(Zout/Zin)*G12)*G21
Tv = -[(Zin/(Zin+G22))*(A0-(Zout/Zin)G12)*G21+(Zout/G11^-1)]
Ti = -(G11^-1/Zout)*(A0*(Zin/(Zin+G22))*G21+1)*((Zin+G22)/(Zin+G22-G12G21G11^-1))

となる。この結果から、ミドルブルック法で利用する式

T = TiTv-1/(Tv+Ti+2)

を求めることは出来ない。この式が成立するためには、G12=0という条件が必要となる。この条件では

T = -(Zin/(Zin+G22))*(G11^-1/(G11^-1+Zout))*A0*G21
Tv = -[(Zin/(Zin+G22))*A0*G21+(Zout/G11^-1)]
Ti = -(G11^-1/Zout)*(A0*(Zin/(Zin+G22))*G21+1)

となるので、ここからミドルブルックの条件式を求めることが出来る。
このような誤差無しに完璧なループゲインを求めるには、各々二端子対回路としてパラメータを求め、そこから計算をする必要がある。それらしい疑問をしている人もいる。
http://www.edaboard.com/thread84988.html

シミュレーションでループゲインを求める方法

ミドルブルック法というシミュレーション方法があるようだ。
http://www.tij.co.jp/jp/lit/an/jaja098/jaja098.pdf
http://www.tij.co.jp/jp/lit/an/jaja097/jaja097.pdf
http://homepage1.nifty.com/dcr/dcmic/pspice/phasemgn.pdf
http://www.geocities.jp/cxb00463/audio/AMP/spice/spice08.html
http://www.arrl.org/files/file/QEX_Next_Issue/Mar-Apr_2011/QEX_3_11_Post.pdf
http://www.tij.co.jp/jp/lit/an/jaja483/jaja483.pdf

上記辺りが参考になる。
しかしながら、この方法が適用できない場合もある。フィードバックループと利得段の影響を切り離すことが出来ないときだ。例えば、ソース接地増幅回路における容量フィードバックで、CGDの影響を無視できないときなどだ。この時には、正確なループゲインを求めることが出来ない(代替のシミュレーション方法はないのだろうか)。

CTIAのトランスインピーダンスゲイン周波数特性

フォワードアンプの周波数特性をA0/(1+st)とすると

Ro = (1/s)*(1/(Cf+((Cf+Cin)/A0)))*(1/(1+s*(t/(A0*(Cf/(cf+Cin))+1))))

となることが分かる。つまり

利得 1/(Cf+((Cf+Cin)/A0))
時定数 t/(A0*(Cf/(cf+Cin))+1)

である。

CTIAのリセットノイズ導出方法

http://www.forzasilicon.com/2011/05/analysis-and-simulation-of-ctia-based-pixel-reset-noise/
文献の4.RESET AND SIMULATIONに詳細が書かれている。 リセットノイズに関しては、インジェクションなどが毎回変動するイメージを持っていたのだが、それは間違いだった。アンプや抵抗などの熱雑音の変動を、リセットオフの瞬間にホールドするようなイメージが正しい。

フィードバック時におけるアンプの-入力端子のノイズ

V- = βA/(1+βA) ≒ 1

となり、バッファアンプ出力のノイズに近い値となる。

トランスインピーダンスアンプの解析

http://www.tij.co.jp/jp/lit/an/jaja098/jaja098.pdf
http://homepage1.nifty.com/dcr/dcmic/nosdac/transimp.pdf
http://www.ti.com/lit/an/sboa055a/sboa055a.pdf
http://www.tij.co.jp/jp/lit/an/jaja201/jaja201.pdf
https://www.maximintegrated.com/jp/app-notes/index.mvp/id/5129

が非常に分かりやすかった。フィードバック抵抗がRFが存在する場合、零点よりも低域のゲインは1になる。

1/β = (1+(Rf/Rin))*((1+s*(Rf||Rin)*(Cin+Cf))/(1+s*Rf*Cf))

Rin→∞で
1/β = (1+s*Rf*(Cin+Cf))/(1+s*Rf*Cf)
Rf→∞で
1/β = (Cf+Cin)/Cin
Cf→0で
1/β = (1+(Rf/Rin)*(1+s*(Rf||Rs)*Cin))
Vout/Iin = -Rf*(A0/1+A0)*(1/[1+(1+(Rf/Rin)*(1/A0)+s*( Rf*Cf+(1/A0)*( Rf*(Cf+Cin)+T*(1+(Rf/Rin))) )+s^2*( (1/A0)*T*Rf*(Cin+Cf) ) ] )
ここでTはアンプの時定数
ω0 = sqrt((1+A0)/(T*(Cf+Cin)*Rf))
Q = 1/[ω0*( Cf*Rf+(1/(1+A0))*(T*(1+(Rf/Rin))+RF*Cin) )]
Q <= 1/2で安定

アンプの抵抗値の決め方

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1017277425
抵抗値が小さすぎる場合は、アンプの出力電流で制限される。逆に大きすぎる場合は、入力オフセット電流による誤差、ノイズなどの影響が大きくなってくる。大体数kohmオーダーを考えるとちょうどいい場合が多い。

セトリングタイムについて

http://www.cqpub.co.jp/term/settlingtime.htm

入力ディジタル信号に,ステップ出力が得られるような変化を与えた場合の出力応答に関わる値で,入力データが変化した後,出力値が目標値の許容範囲(±0.5LSB)に到達するまでの時間.

EMCのための設計テクニック

http://homepage3.nifty.com/tsato/dtemc2/

電荷再分配式SAR-ADCの動作

http://www.tij.co.jp/jp/lit/an/jajt017/jajt017.pdf

途中、コンパレータの入力電圧は

-2*Vin*C = (Vx-Vref)*C + Vx*C

を解いて

Vx = -Vin + Vref/2

となる。

ノイズメモ

  1. 電磁ノイズ対策として、測定系はアルミホイルなどで覆う
  2. 電源ラインを同軸ケーブルにするのはNG、ツイストペアにする
    http://www.miyazaki-gijutsu.com/series2/noise041.html

一点接地について

http://www.analog.com/jp/content/cu_ad4606jp/fca.html

積分アンプにおける電荷転送

以下のような回路を考える。初期状態では、アンプの-端子はVrefと等しいとする(リセット動作を行った後だとすると、正確にはVout = Vref/(1+(1/A)) となる)。

ctia2.png

この状態から

ctia3.png

Vinのスイッチがオフ、その後にアンプのスイッチがオンになったとする。この時に出力電圧がどうなるかを考える。上図より電荷は保存されるので、アンプの-端子をV-とすると、

Cin*V- + Cf*(V- - Vout) = Cin*Vin
Vout = A(V- - Vref)

となるので、これを解いて

Vout = (Cin*Vin-(Cf+Cin)*Vref) / ((Cin+Cf)*(1/A))-Cf)

A=無限大とすると

Vout = -(Cin/Cf)*(Vin-Vref) + Vref

となる。
ちなみに、この時のノイズゲインは、

Cf*(⊿Vin-⊿Vout) = -Cin*⊿Vin

より

Gn = (Cf+Cin)/Cf

となる。

アナログ回路準備編

http://www.ele.kochi-tech.ac.jp/tacibana/analog-Web/analog-junnbi.html#top-of-page

回路記号などについて詳しく書いてある。

容量自体の電荷変動について

電流を流すとなると、容量の電荷が減ってしまい、結局電圧変動が起こるような気がするがどうだろうか。 例えばインバータで考えてみる。ICの出力負荷を15pF、入力電源の容量を0.1uFとする。入力が反転した瞬間に必要な電荷は、Q=15p*VDDとなる。よって、電圧変動は

ΔV = 15p / 0.1u = 1.5*10^-7

である。この程度の変動ならば、十分無視することが出来るであろう。

デカップリング用インダクタについて

http://www.murata.co.jp/products/catalog/pdf/c39.pdf
村田のApplication Manualが非常に分かりやすい。このジャンルをPDNというらしい。
インダクタをつける理由は、簡単に言えば、ICの電源電圧の変動が伝わらないようにするためである。高周波で電流を流すことで、電源電圧が変動してしまうのは下で考えた。その電源電圧が他のICにもつながっていたとすると、電圧変動が他の素子にも影響してしまう。しかし、インダクタをつけることで、他の素子(についているであろう容量)との間にLPFを形成し、高周波の電圧変動だけを抑える役割を持っていることが分かる。これがデカップリング用のインダクタである。
このインダクタに対する必要な容量Cの計算が(8.2)などにあるが、これは

ZT = jωL
ZT = 1/jωC

として、fを除去した値となる。

電源インピーダンスの考え方

ICなどのVDDから見たインピーダンスが電源インピーダンスである。
簡単な場合として、直流電源からICのVDDまでに配線抵抗などが1Ωほどついていたとしよう。このICが動作して電流が流れるとき、その電流の大きさによって電圧降下が生じる。たとえば、ICに10mAの電流が流れたとすると、ΔV=RI=10mVの電圧降下が生じる。この影響を小さくするために、できるだけ抵抗はつけたくないわけである。
この考え方を交流にも適用する。つまりインピーダンスで考えるのである。すると、電流が流れる経路上のインピーダンスが小さければ、その分だけ電圧降下が小さくなることが分かる。パスコンとして容量をつけているのはそのための理由がひとつある。高周波になれば、GNDに対してインピーダンスが低くなるためである。

ドライバの出力抵抗とその求め方

以下などを参照。
http://www.elsena.co.jp/elspear/specialist_column/technology_column5.html

Rout = 0.4 / (1.5*I)

大雑把だが、この計算で値は求まる。4mAで67Ω、6mAで44Ω、24mAで11Ω程度である。 ここから、ドライブ能力の高いものほどインピーダンスの不整合が起こる。 このため、ある程度ドライブ能力が高い素子では、マッチングが必要となる。 8mA以上だろうか。例えば24mA=11Ωなので、39Ωのダンピング抵抗を直列に挿入すれば、 マッチングが取れることになる。
もちろん、どこまでオーバーシュートを許すのかで、その値は変わってくるが。

アンプが発振する理由とその対策

http://semicon.njr.co.jp/jpn/faq/10018.html
発振する理由はセカンドポールが低周波側に移動するからである。具体的な原因は二点。

  1. 出力容量の増加
  2. 負帰還の経路のLPF

この対策として、零点を低周波側に移動させて、位相を戻してやる必要がある。

  1. 出力に直列抵抗を入れる
    アンプの出力電圧と出力抵抗をそれぞれVout、Routとすると、直列抵抗を挟んだ前の電圧は
    Vx = (1+jωCR)/(1+jωC(R+Rout))
    となり、LHPゼロ点を形成することが出来る。このため、(Routが小さい or Rが大きい場合)位相特性はほぼ一定となり、出力容量であるCの影響を大幅に低減することができる。
  2. 負帰還抵抗と並列に容量を入れる
    計算が面倒なので、Rout=0と仮定して、アンプの出力電圧をVout、LPFを形成している抵抗をR、容量をC、並列接続された容量をCxとすると
    Vx = (1+jωCxR)/(1+jω(C+Cx)R)
    となり、この場合もLHPゼロ点を形成することが出来る。

基板設計におけるノイズ対策

http://www.noise-counterplan.com/
改めてみてみると、基本的には電流が流れる経路を出来るだけ短く、余分な線を引かないことが重要である。パスコンの話も、ビアも、GNDベタも、いずれも電流ループを出来るだけ小さくするということがポイント。

P板の「基板製造サービス」における特性インピーダンス

大雑把な計算だと、0.25mmの配線で60Ω程度となるようだ。50Ωに合わせたい場合は、もう少し小さくしてもいい?同じパラメータで計算してみると、0.338mm程度で50Ωになる。誤差もあるので、大体の目安として考えるといいだろう。
http://nahitafu.cocolog-nifty.com/nahitafu/2008/11/post-57a1.html

途中に抵抗が入った場合の伝送線路

http://members3.jcom.home.ne.jp/zakii/transmission_line/27_reflection_resistor.htm

インピーダンスマッチングによる終端処理

http://www.kaihatsu-support.com/article/14645389.html
http://www.analog.com/jp/content/cu_analog_dialogue_vol44_no1_bb_jp/fca.html
http://members3.jcom.home.ne.jp/zakii/transmission_line/0contents.htm
など。(高速でない限り)とりあえずは、送信端直近に出力インピーダンスが50Ωになるように抵抗を直列にはさんでおけばいいようだ。

時間に対するショットノイズの求め方

http://www.chem.wisc.edu/deptfiles/mcclain/Shot%20noise.pdf

Inoise = sqrt(I*q/T)
Δf = 1/2T

の関係が成り立つ。詳細はNyquistの標本化定理など。あとでまとめる。
https://www.chem.wisc.edu/deptfiles/mcclain/Shot%20noise.pdf
も参考。

オペアンプの雑音とその求め方について

オペアンプを実際に利用して回路を作成する際に、その雑音がどの程度になるのか計算する方法を以下にまとめる。
ネット上の資料では、TIによるものが詳しい。これを参考にして、オペアンプの出力換算雑音の導出を行った。ちなみに、TIのApplication Reportは
http://www.ti.com/lit/an/slva043b/slva043b.pdf
にある。
詳細は上記レポートにまかせるとして、ここでは計算結果だけを記す。以下の図は、入力換算雑音電圧源と入力換算雑音電流源が接続された反転(非反転)増幅回路となる。なお、ここでのオペアンプの特性は理想的なものとする。

amp_noise.png

ノイズの求め方の流れは

  1. 単位sqrt(周波数)あたりの雑音を求める
  2. 全周波数帯域で積分
  3. ゲインをかけて出力雑音電圧を求める

となる。
具体的なノイズだが、今回は3種類のノイズを求めればよい。すなわち、抵抗による熱雑音、電圧源による雑音、電流源による雑音である。まずは単位sqrt(周波数)あたりの入力換算雑音を求める。
抵抗による熱雑音は

Vrnoise^2 = (4*k*T*(R1||R2))^2+(4*k*T*R3)^2

となる。すなわち、各入力端子から見た抵抗成分の熱雑音を考えれば良い。+端子と-端子の雑音は無相関なので、電力を加算することで上式が得られる。
次に雑音電圧源の雑音は

Venoise^2 = Vnoise^2

となる。
最後に雑音電流源の雑音は

Vinoise^2 = ((R1||R2)*inoise)^2+(R3*inoise)^2

となり、抵抗の熱雑音のときと同様に考えれば良い。
次に全周波数帯域で積分を行う。ここで考える必要があるのは、等価雑音帯域幅(ENB)と、1/f雑音による影響である。
まず、ENBを求める。

fig6a.png

熱雑音はアンプの帯域によって制限されている。この制限された帯域でノイズを積分すればいいのだが、計算を簡単にするために等価雑音帯域幅を定義する。つまり、単位あたりのノイズにENBをかければ等価的に全周波数帯域で積分した値と同じになる。 オペアンプの周波数特性が一次の場合、カットオフ周波数をfcとすれば等価雑音帯域幅は

f_ENB = (π/2) * fc

で表される。通常、アンプの周波数特性は一次だと考えられる(支配的な極がひとつとなるので)。二次以降の場合は資料を参照(1に近づいていく)。ここから、抵抗、電圧源、電流源の熱雑音を全周波数帯域で積分すると、

Vrnoise_t^2 = (π/2)*fc * Vrnoise^2
Venoise_t^2 = (π/2)*fc * Venoise^2
Vinoise_t^2 = (π/2)*fc * Vinoise^2

となり、単純に(π/2)≒1.57をかければ良い。
また、帯域が狭い場合には1/f雑音の影響が無視できなくなってくる。

fig4.png

上の図は、TLV2772における周波数対入力換算電圧の両対数グラフとなっている。ここの1/fノイズを導出したい。入力雑音の白色雑音をVn_white、コーナー周波数をfnc、帯域幅の最小値をfL、最大値をfH、また1/f雑音をVn_f(f)=a/sqrt(f)とすると、

Vn_f(fL)^2 - Vn_white^2 = a^2/fL
Vn_white^2 = a^2/fnc

となるので、ここからa^2を除去して

fnc = ((Vn_f(fL)^2 - Vn_white^2)/(Vn_white^2)) * fL

となり、最終的に雑音電圧源、雑音電流源についてそれぞれ1/f雑音の積分を行うと、

Venoise_f_t^2 = fnc * log(fH/fL)*Venoise^2
Venoisi_f_t^2 = fnc * log(fH/fL)*Vinoise^2

となる。抵抗成分は熱雑音のみで、1/f雑音は含まない。
また、fL→0の場合に雑音が無限大になってしまうことを考えたかもしれない。当然ながら、現実には雑音が無限大に発散してしまうことはない。ひとつは、現実的に周波数がそこまで小さくならないことだ。 サンプリング効果フィルターを考慮すると、T秒間サンプリングをする時に、1/2T[Hz]より低い周波数がHPFのように除去されてしまう。 このため、例えば1日継続して測定を行っていても、6[uHz]程度で低周波側はカットオフされる。 つまり結論としては、十分に小さい周波数を適用すれば問題ないと考えられる。では、現実的にどの程度まで小さい周波数を適用すればいいのか。 当然、測定時間に依存するので一概には言えないが、10[uHz]-1[Hz]程度とすれば十分一般的ではないかと考えられる。
これは本来ならば、熱雑音を考慮するときにも考える必要があることである。しかしながら、fL=0[Hz]と近似をしても、そこまで値として変化がないために問題ないとしているのではないかと考えられる。
以上の雑音にノイズゲイン(今回は(R1+R2)/R1)をかけたものが合計されたノイズである。

Vn_total^2 = ((R1+R2)/R1) * sqrt( Vrnoise_t^2+ Venoise_t^2+ Vinoise_t^2+ Venoise_f_t^2+Venoisi_f_t^2)

最後にこの平方根を取ってやれば、アンプの発生する出力雑音を計算することが出来る。

等価雑音帯域幅

http://www-acc.kek.jp/WWW-ACC-exp/KEKB/beam/KEKB_BPM/ch08.html
http://cc.cqpub.co.jp/lib/system/document_download/1083/1/
ここ辺りを参照。乱暴に言えば、雑音が分布する周波数帯域を一つのパラメータで表すために考えられたものである。

入力端子をGNDに落とさない場合のアンプ増幅回路

Vout = ( 1+(Rf/Rs) )*Vp - (Rf/Rs)*Vn

完全積分回路と仮想短絡について

完全積分回路の仮想短絡について考えてみる。
入力のマイナス端子側に電荷Qが蓄積されたとすると、

Vout = A*(Vin+ - Vin-)
Vin- - Vout = Q/C

が成立しているはずなので

Vin- = (1/(1+(1/A))*V+ + (1/(1+A)) * (Q/C)
Vout = (1/(1+(1/A))*V+ - (1/(1+(1/A))) * (Q/C)

となる。ここでA→∞とすると

Vin- = V+
Vout = V+ -(Q/C)

となることが分かる。電荷と電圧を分けて考えることがポイントである。 まず、電荷がキャパシタに蓄積されているので、Q/Cだけの電圧が印加されているはずである。この電圧が(Vin- - Vout)に等しい。さらにオペアンプの利得条件から、入力Vin-がほぼ0、出力側は有限の値になることに電圧が分配される。

ADCの入出力伝達特性とLSB(量子化単位)

peek to peekが0Vから1Vの場合を考えると、

00 = 0.125V(0-0.25V)
01 = 0.375V(0.25-0.5V)
10 = 0.625V(0.5V-0.75V)
11 = 0.875V(0.75-1.0V)

となる。この時LSBは1/(2**2)=0.25Vとなる。しかしながら、実際のADCでは

00 = 0.000V(0-0.125V)
01 = 0.25V(0.125-0.375V)
10 = 0.5V(0.375V-0.625V)
11 = 0.75V(0.625-1.0V)

これを見ると、00は1/2LSB分、11は3/2LSB分をカバーしていることになる。

ADCの量子化雑音について

測定対象となる信号がADCのLSBに比べて大きい場合、

N = LSB / sqrt(12)

となる。