[ Main Page ]

サンプルホールド回路

音声を含めたDACの出力段やフィルタは比較的設計が簡単なこともあって、様々な回路や製作例が公開されているが、ADCの入力段については、 オペアンプの選定を含めた設計がやや面倒であることもあり、DACに比べるとまとまっているサイトが少なく、実際に動く回路の例が少ないので、いくつかまとめてみる。

Open-loop sample hold

LTSpice

Open-loopタイプは、負帰還のことを考える必要がないので、サンプルホールド回路の中では、比較的設計が容易である。 サンプル・ホールド回路で正しいスイッチの組み合わせはどれ?からの作例。 スイッチの電位を保つ抵抗はもとの回路よりもう少し小さい方が良いと思われる。オペアンプは、入力段・ホールド回路共にボルテージフォロワが可能な品種が必要で、 ホールド回路のオペアンプは、なるべく入力バイアス電流が低いFET入力品種等を選ぶ。

Closed-loop sample hold (non-inverting / X10)

LTSpice

初段をLT1055のままにする場合は、ゲインを20dBにするとLTSpice上は発振しないが、オーバーシュートがやや大きい。ホールド時の入力段のスイッチを削除するとさらにオーバーシュートは大きくなる。 位相補償として初段のオペアンプ出力と反転入力端子の間に100pF程度のコンデンサを追加するとオーバーシュートは改善するが、あまり大きい値だとサンプルが追随しない。

Closed-loop sample hold (non-inverting / voltage follower)

LTSpice

帰還ループにホールド回路を入れると誤差が少なくなるが、初段を選ばないと容易に発振する。LF198(TO-99)/ LF398(SOIC/PDIP)/LF298(SOIC) のようなサンプルホールド用のICを使うのが簡単だが、そうでない場合は慎重に選定する。 例の回路では、初段のオペアンプに比較的低速なLT1001をおくと発振しないが、LT1055だと発振する。LT1055の場合、ゲインを20dB程度にすると一応明らかな発振はしない。

LTSpice

ホールド用のコンデンサはかなりの容量負荷になるので、初段をLT1128の様な高速オペアンプにする場合は位相補償が必須になる。 抵抗を入れてホールド用のコンデンサの容量負荷を離し、Rfと並列に位相補償コンデンサを追加した。

LTSpice

ホールド時に初段をフォローさせるスイッチの代わりにダイオードを使うこともできる。トリガのインバータ等の部品点数を減らす目的では使えるかもしれないが、 Vf(0.6V)が意外に大きく、ホールドからサンプルへの移行時のオーバーシュートはスイッチによる回路より大きい。LF198/LF398の内部回路でもダイオードが採用されており、 Vfは通常のダイオードより小さいかもしれないが、内部の回路の信号を計測する方法がない。ICの回路と同様に作っても必ずしもうまく行くわけではない。


LF198/LF298/LF398の内部回路

LF198/LF298/LF398 Functional Block Diagram

Linear Technology LF198/LF298/LF398 Schematic Diagram


Closed-loop sample hold (inverting integrator)

LTSpice

MT-090: Sample-and-Hold Amplifiers (Analog Devices)のFigure 18 Closed-loop SHA based on Inverting Integrator Switched at the Summing Pointに バッファを追加して速度を改善した回路。回路例ではオーバーシュートが大きく、改善のためは、Rfに適宜コンデンサを追加すれば良い。

Closed-loop sample hold
(inverting integrator / charge injection compensation)

LTSpice

Rfにコンデンサを追加し、オーバーシュートを改善させた他、 Charge injection補正のためのスイッチと、ボルテージフォロワ両側にスイッチを追加して精度を高めた回路。MT-090のオリジナルの回路では、RfとRsの並列抵抗をつなぐことになっているが、 ボルテージフォロワ後のスイッチなのでインピーダンスは低く、ここでは便宜的にGNDに直接つないでいる。ボルテージフォロワのオペアンプのオフセットが大きい場合は問題になることもあるので品種により考慮するべきだろう。


Hold Step pedestal sample-to-hold offset

スイッチは物理的なものでなくMOSFETによるものなので、ゲートから電荷がホールドコンデンサに流入しオフセット誤差が生じる。 双方向のスイッチの場合は必ずしも正のオフセットが生じるわけではない。TS12A4514/TS12A4515のデータシートではCharge injectionによる電圧誤差は負方向になっている。

多くのメーカの74HC4066のデータシートにはcharge injectionの記載はないが、TIの参考文献(SZZA030)に計測値が掲載されており、 これから計算すると6pC/100pF=0.06Vで、実測値は、計算値より、やや低い値となっている。


Sample and Hold Feedthrough

ホールドコンデンサから電荷が流出しホールド電圧が変わってしまうのを極力避けるため、スイッチをホールド電圧で保持したり色々な方法がある。 ホールドコンデンサがオペアンプの端子内に入っている反転増幅のタイプの方が比較的有利になると思われる。 非反転増幅のタイプでは、スイッチをホールド電圧でドライブしても、入力側からの信号を完全には遮断できていない。

反転増幅のタイプ

非反転増幅のタイプ

LTSpice

反転増幅の方はスイッチが5つ必要で少し面倒なので、まず試しに非反転増幅の方をホールド段AD8655、MAX412、74HC4066、ホールド470pF、位相補償1500pFで組んでみると、ホールド時の信号の漏れが結構あることに気づく。

今回使用した日立のHD74HC4066のデータシート上のFeedthroughは-50dBで、TIの参考文献(SZZA030)では類似品種のSN74HC4066のFeedthroughは-42dB程度であり、上記おおまかな実測値が約2/500=-48dBなので、理論値に近い。 一般的なCMOSディスクリートの性能はそれほど良い訳ではなく、教科書的な回路のまま、実用になるサンプルホールド回路を組むのは意外に難しい。回路的にはスイッチ数が多いが、反転増幅のタイプがおそらく良い性能を出しやすいと思われる。 TIの製品で言えば、対応電圧がやや広い(0-10V)CD74HC4066の方は、SN74HC4066(2-6V)に比べてFeedthroughがやや良い性能(-72dB)であり、部品の変更だけでより良い回路性能を出せる可能性がある。 74HC4066系のアナログスイッチが余り使われず、新しいアナログスイッチ製品群が開発されていくのは、これらの古い製品群は用途に対し不十分な性能しか持たないことも理由の一つにあるだろう。 LF398のFeedthroughは90dB程度(1kHz)で、通常の用途としてはまずこちらの使用を考えたくなるところであるが、単電源・低電圧での使用は難しい。


Sample and Hold Droop / オペアンプ - 入力オフセット電流

LF398は正負電源が必要なので、単電源の場合はR2Rオペアンプを使用して回路を組む必要がある。入力オフセット電流(input offset current)がpAオーダのFET入力またはCMOSのR2Rオペアンプは比較的品種が限られている。 入力オフセット電流が大きな場合は、ホールドコンデンサの電荷を保持することができず、ホールド時に電圧が低下する。
下記例では、2.31V-0.83V/3.03ms=488V/sでDroopが見られているが、この回路のホールド段のR2RオペアンプNJM2734の入力バイアス電流は50nAあり、 計算上I/C=50nA/100pF=50000pA/100pF=500V/sとなるので理論値に近いが、このような品種の選定は望ましくない。

オペアンプ - スルーレート・出力電流

入力バイアス電流が少ないCMOSオペアンプでも、適切な品種を選定しないとサンプルがうまくいかない。NJU7096は出力電流はsinkは6mAまで可能だがsourceが最大でも200uA程度しかなく、 負荷抵抗特性も良くないので、スルーレートが問題でなくてもホールドコンデンサの充電時間に問題が生じる。 コンデンサ容量、充電時間と電圧差から充電電流を算出すると、1500pF*(1.93V-1.25V)/(12.95ms-10.05ms)=0.4uAとなり、かなり出力が制限されていることが分かる。 ちなみに、位相補償していないので、サンプル時に発振している。

FET入力でR2RのオペアンプはCMOSが多いが、低消費電力のためにスルーレートが低い品種では、高周波の信号には追随しないので、この点も注意が必要である。NJM2734でも0.4V/usしかないので、 5Vフルに振らせて0.4V/us/(2*pi*5V)=12.7kHzで、音声帯域には不足である。また、ホールドからサンプルの移行時の時間もかなりかかることになる。

20kHzだとなんとか追えている。

50kHzだとかなり波形が三角波になっている。

100kHzだと全く追随できない。

参考文献

Applications of Monolithic Sample-and-Hold Amplifiers APPLICATION NOTE AN517 - intersil (Renesas)
SBAA045 High Speed Data Conversion - Burr-Brown Texas Instruments
JAJA206 高速データ変換 - Texas Instruments
TIDU022 - Sample and Hold Glitch Reduction for Precision Outputs Reference Design - Texas Instruments
Application Note 775 - Specifications and Architectures of Sample-and-Hold Amplifiers - Texas Instruments
MT-090 - Sample-and-Hold Amplifiers - Analog Devices
AN-257 - Careful Design Tames High Speed Op Amps - Analog Devices

 <Altreus>  Hmm I should have checked the licence on Inline::Lua
     <dwu>  orochi_: licence it and people will steal it anyway :)
  <Yaakov>  Well, you can try to steal that, but it would be like a mouse
            stealing a battle tank.
     <dwu>  Altreus: you mean acronym?
 <Altreus>  Perl license
 <Altreus>  dwu: n
 <Altreus>  IP is not pronounced as a word so it is not an acronym.
 <Altreus>  At least not in the original meaning of the word: which is the
            only meaning given by a majority of dictionaries
  <Yaakov>  Yes, it's not a true acronym, though the word now has that
            baggage.
 <orochi_>  Ip Ip Ip!
 <Altreus>  ni!
         *  orochi_ runs away
     <dwu>  Altreus: i say ip... :)
  <Yaakov>  IP would be an abbreviation.
     <dwu>  also, initials? but isms are cool.
 <rindolf>  I see Eye.Pea.
     <dwu>  oooh yes.
     <dwu>  and dead people?
         *  rindolf is listening to Sesame Street - Yip Yip Martians
 <Altreus>  dwu: Intent is involved; just because you say it as a word
            does not mean it was meant to be said as a word ;)
 <Altreus>  wikipedia knows about it, and has like a million sauces cited
 <Altreus>  mostly dictionaries
  <Yaakov>  YAPC is an acronymic moniker! BE THERE
     <dwu>  Altreus: well absolutement :) also, yumy, i like bernaise.
 <rindolf>  I say* Eye.Pea.
     <dwu>  hrrrm, the oxford cream dictionary. *nomnomnom*
     <dwu>  rindolf: awww.
  <ne2k__>  Eye.Pea.Freely
 <rindolf>  dwu: heh
  <ne2k__>  no-one says "ip", everyone says "Eye Pea"
 <Altreus>  Ip address
     <dwu>  rindolf: can you just -say- dead people, for the heck of it?
 <rindolf>  Yip address
     <dwu>  ne2k__: provably false. i need an ip address, stat!
 <Altreus>  yiff address?
 <rindolf>  dwu: I say dead people.
     <dwu>  <3 rindolf
 <rindolf>  dwu: I say.
     <dwu>  you do :)
 <Altreus>  I say I say I say
 <rindolf>  dwu: :-)
  <ne2k__>  dwu: you can't stat an ip address, only a file

    -- How to say IP?
    -- #perl, Freenode

I have much more books than I can put on my night-stand. Books that are on my
night-stand are quickly accessible (when I'm in bed, that is), and books on
the shelf are not (I hate getting up from the cozy, warm, bed). So, when I
suddenly feel like reading a book that is not on the night- stand, I have no
choice but to go to sleep. In the morning, I wake up and always find the book
I wanted next to the bed! As it turns out, when I was asleep, another process,
known as "sleepwalkd" got me the book I wanted. Also, when my nightstand
already has too many books on it, The sleepwalk process moves one of the books
- the one I'm least likely to want to read next - back to the shelf.

Last month, four Europeans with weird names decided to mess around with my
book-reading system. One called Alan decided that in some cases I should move
*all* my books to the shelf, go to bed without any books the same night, and
instead fill the nightstand with crap. And if somehow all my shelves are full
I should just burn one at random (if it burns the whole shelf, or the wrong
shelf, who cares).
Another one, called Andrea, decided that I should redesign my whole
sleepwalking routine according to his master-plan. However, this made my
sleepwalking become so strange, that people were hesitant to call me "stable"
any more. Alan thought my new sleepwalking was a sure sign of be not being
stable.
But then a third European, Linus, finally made a judgment-call, and decided
that I was stable, even with Andrea's new sleepwalking routine. He then told
yet another European, Marcello, that from now he's resposible for keeping me
stable. I thought it was my shrink's resposibility, but Marcello said no, that
now that he finally has some responsibility he's not going to just give it up.

    -- Nadav Har'El
    -- Hackers-IL Message No. 1,408 ( http://tech.groups.yahoo.com/group/hackers-il/message/1408 )


Powered by UNIX fortune(6)
[ Main Page ]