CR微分回路のディジタルフィルタ化
放射線計測などの分野では、指数関数的に減衰するパルスを扱うことがあります。減衰の時定数が長いと、1回目のパルスの尾の部分で2回目のパルスが入る(パイルアップするという)ってパルス高さの正確な測定ができなくなるので、CR微分回路とRC積分回路を使ってパルスを鋭く整形します。
まずは、次の図の普通のCR微分回路を考えてみます。
入力がステップ関数であれば、出力は指数関数的に減衰する波形となります。
ですが、指数関数の減衰というのは意外と遅いので、もっと鋭くしたくなります。
実際には放射線のパルスは(電荷を収集する時間がゼロではないので)瞬時には立ち上がらず、プリアンプの前に微分回路が入っていることなどが多いので、回路への入力時点で指数関数的に減衰するカーブになっています。
もともと減衰している信号を微分回路に入れると、出力にはアンダーシュートが生じてしまいます。
そこで、微分回路のコンデンサに並列に補償抵抗を入れます。これをRpzとします。
詳しい理由は後述しますが、Rpzをうまく設定するとアンダーシュートが消えるのです!これがポールゼロ補償というものです。
なぜアンダーシュートが生じるかと、どうすればアンダーシュートが消えるかは、ラプラス変換で考えるとわかります。CR微分回路の伝達関数は、
sτ/(1+sτ) ・・・ (1)
です。時定数τ1と時定数τ2の微分回路を2回通すと、伝達関数は
s^2τ_1τ_2/{(1+sτ_1)(1+sτ_2)} ・・・ (2)
となって、ポールが2個出てきます。この伝達関数は指数関数的には減衰しません。
ところで、コンデンサと並列にポールゼロ補償抵抗Rpzを追加した回路
の伝達関数は、
τ(1+sRpzC1)/{(RpzC1sτ+RpzC1+τ)} ・・・ (3)
ですが、この回路の前に時定数τ2を持つ、別の微分回路があるならば、全体の伝達関数は、
τ1(1+sRpzC1)sτ2/{(1+sτ2)(RpzC1sτ1+RpzC1+τ1)} ・・・ (4)
となります。ここでτ1は上の図の微分回路の時定数=CRで、τ2は入力信号の減衰の時定数です。
RpzとCで作られる時定数CRpzをτ2と等しくなるように設定すると、式(4)は簡略化されて、
s/{s+(τ1+τ2)/τ1τ2} ・・・ (5)
となります。つまり、s/(s+k)の形になるので、指数関数の減衰波形となるわけです。
時間軸的に考えれば、CRだけだとアンダーシュートしてしまいますが、RpzとRの抵抗分圧によって減衰された入力波形を足し合わせることによって、アンダーシュートしないように持ち上げているともいえます。
このCR微分回路の伝達関数をZ変換を使って表現すると、
y[k]= x[k]- (1-τpz )×x[k-1]+(1-τ-τpz )×y[k-1] ・・・ (5)
となります。
※τ=T/CR、τpz=T/(CRpz )で、Tはサンプリング周期
図で表すとこうなります。
つまり、入ってきた信号から、1クロック遅らせた信号と(1-τpz)を掛けたものを引き、出力に(1-τ-τpz)を掛けたものを1クロック遅らせて足します。
わかりにくいかもしれませんが、手を動かして計算すれば理解できるでしょう。
これを実際にFPGAに実装して試してみました。
まず、入力信号を時定数τ=0.5usの微分回路に通した場合の図をご覧ください。緑が入力信号で、茶色が出力信号です。
確かにパルスは0.5usくらいで減衰して、出力信号は緑の入力信号に比べて鋭くなりましたが、派手なアンダーシュートを生じています。ここではτpz=10usという大きな値に設定しているのでRpzがほぼ機能していないような状態だからです。
さて、τpz=2.2usにしてみると、だいぶん、アンダーシュートは減りました。
もう少し減らして、τpz=1.4usくらにすると、アンダーシュートは全くなくなりました。
さらにτpzを減らして1.0usにすると、アンダーシュートは出ませんが、尾を長く引いてしまいます。
すなわち、τpzには最適な値があるというわけです。
微分回路の時定数を滑らかに変えることができるというのは、ディジタルフィルタならではの特長と言えます。
Cosmo-ZのWindows版コントロールアプリでは、スクロールバーで時定数を滑らかに設定できるようにしました。
例えば、τ=0.1us、τpz=1.4usとして整形すると、入力パルスはこんなに鋭くなります。これならパイルアップにも強くなるでしょう。
ディジタル微分回路の各部分がどういう動作をしているかは、次の図をご覧ください。
緑が入力信号、紫が1つ目の減算器の出力(つまり1つ前との差分)です。青が乗算器の出力で、茶色が最終的な出力です。
1つ前との差分(紫)と、現在の出力値(茶)に係数を乗じて足したもの(青)を次の出力とするという動作をしています。
| 固定リンク
コメント