return to upper page
(LastUPDATE 04/4/26,27 誤字脱字の修正) (02/5/20 add 'initial phase') (New 99/7/5)

学生実験 指導書 591

アナログスイッチの特性と,離散時間処理の基礎

Download:レポート表紙(2005.04.11)

この実験では,スイッチトキャパシタ回路を使う上でキーデバイスとなる 「アナログスイッチ」という素子の特性を知ると共に, 「アナログスイッチ」を使う上で遭遇しがちなエラーである, 「エイリアシング」について学びます。


アナログスイッチとは

アナログスイッチの特性は,別にデータシートを見て下さい。
そこから,次のような点に気づくと思います。
アナログスイッチはメカニカルなリレーと同様な特性を持っていますが, 次のような利点,欠点を持ちます。
利点:高い周波数まで使える
欠点:扱える電圧,電流範囲が狭い
この事から,この素子が主に使われる用途は, 信号伝送回路と言えます。(電力を供給する経路には無理)

アナログスイッチを用いた応用回路の働き

--- S/H (sample and hold) 回路 ---

この回路は,S/H(sample and hold) 回路と呼ばれます。
動作:
--- 電圧波形 ---
ただし,
緑 = スイッチの開閉(H=Close, L=Open) ← HLと開閉の対応に注意
赤 = Vin
青 = Vout


--- 解析方法 ---
スイッチが閉じているときの開いているときで, 別別に回路図を書けば, 単に従来の回路理論がそのまま使え, 状態ごとにどういう動作をするか理解しやすくなる。
--- スイッチ 閉じる(Close) ---

--- スイッチ 開く(Open) ---


この回路は,たとえば,アナログ信号をディジタル信号に変換する A/D コンバータの前に置かれます。 これにより,A/D コンバータの動作に測定すべき電圧が変化することを防ぎます。

この回路は信号を離散時間処理しています。
離散時間処理とは, ある周期ごとにサンプリングした信号を処理する事です。 (これに対応する言葉は連続時間処理です。)
サンプリング定理によると, もしも取り扱う信号の周波数成分がある値 fMAX 以下だけの場合, 2 * fMAX という周波数でサンプリングすれば, 元の信号に完全に復元できるといいます。
この定理は,CD にも応用されています。 人の耳は 最大で 20 kHz までしか聞き取ることが出来ないといわれています。 この場合,定理より,40 kHz 以上のサンプリング周期で 離散時間処理が出来れば,元の信号を完全に復元できます。 (実際には CD に記録されている信号は,44 kHz の周期でサンプリングされています。) このことから,CD に記録されている信号で,完全に音を再現できるわけです。

エイリアシング

ところで,上記の例について意地悪なことを考えてみましょう。
もしも,信号の周波数がサンプリング周波数の半分よりも大きかったら どうなるでしょうか。
サンプリング周波数が入力信号の変化周期に比較して長いと, 入力信号の周波数が異なる周波数の信号になってしまいます。 このことをエイリアシングと呼びます。
エイリアシングにより,fa[Hz] の信号は, fb[Hz] = fa - fc[Hz] の信号とみなされます。 ただし,fc はサンプリング周波数です。
例を挙げますと,サンプリング周波数 fc = 44kHz の回路に, fa = 45kHz の信号を入力すると, fb = 1kHz の信号の時と同じ出力になります。

実験

実験室に回路が用意されていますので,実験してみましょう。
回路では,
サンプリング周波数 fc = 856 Hz,
信号(1)の周波数 f0 = 57 Hz,
信号(2)の周波数 f- = 799 Hz,
信号(3)の周波数 f+ = 913 Hz
です。
信号(2) の時は,fb = -57Hz, 信号(3) の時は,fb = 57Hz となる筈ですが, 実際に確認してみて下さい。

参考

MATLABを使うと,波形の様子を簡単にシミュレート出来ます。
以下に,m-ファイル を置きますので, 適当な名前のファイルとしてセーブして,MATLABで実行させてみましょう。
m-ファイル(望月のパソコン上ではファイル名="e591.m")

clear
fs1=1000;%% [Hz] frequency of signal - 1
fs2=3000;%% [Hz] frequency of signal - 2
fc=20000;%% [1/s] sampling rate
t9=0.001;%% [s] time area
ph0=0;%% [degree] initial phase

ddt=1/fc;
[m, mi]=max([fs1 fs2]);
fca=m*30;
dt=1/fca;
ph0rad=ph0*pi/180;
 
%%% analog (or sample very high speed) %%%

it=(0:t9*fca);
ta=it*dt;
y1a=sin(2*pi*fs1*ta+ph0rad);
y2a=sin(2*pi*fs2*ta+ph0rad);

%%% digital %%%

n=(0:t9*fc);
td=n*ddt;
y1d=sin(2*pi*fs1*td+ph0rad);
y2d=sin(2*pi*fs2*td+ph0rad);

%%%
subplot(2,1,1)
plot(ta,y1a,'r',ta,y2a,'b',  td,y1d,'r+',td,y2d,'ro')
subplot(2,1,2)
plot(td,y1d,'r+',td,y2d,'ro')



上記プログラムの実行例

コメント
  • 横軸は1msまで
  • 信号1(赤)は周波数1kHz
  • 信号2(青)は周波数3kHz
  • サンプリング周波数(マークがある場所)は20kHz
  • 上記の図から, もしもマークした点のみを見ても,元の信号の周波数は判明する ということが判ります。
  • とりあえず,fs2として,1000 から 50000 まで 1000 刻みで (計50回) グラフを書かせてみよう。
  • そうすると,どれか同じ出力を出す点が見つかるはずである。
    入力何ヘルツと入力何ヘルツが同じなのか,調べよう。
    ヒント:ある法則に従っているため,数式で書けるような美しい関係がある。
  • こういう結果が得られた理由を考えよう。
様々な信号を仮定して,数値を変えて実験してみて下さい。
//