第 9 章 デジタルフィルタ回路実装
9.5 頭部用半導体 PET でのエネルギースペクトル測定
- 84 -
- 85 -
図 9-11 頭部用半導体 PET のピーク検出処理
9.5.1 デジタルフィルタ回路実装が失敗した測定スペクトル
図9-12に改良前のエネルギースペクトルを青で示す。エネルギーFWHM81.2keV
(15.8%@511keV)であった。一方、改良後のエネルギースペクトルを赤で示す。2600ch~
2800ch間で異常なカウントロスが見られた。数回測定を行ったが、必ず同一のチャネルの
みでカウントロスが発生していた。つまり、統計的なカウントロスではなく、デジタル演 算処理に不具合がある。
図 9-12 実装失敗した測定スペクトル
2400 2600 2800 3000 3200 3400 3600 3800 4000
100 101 102 103
チャネル
Count
改良前 改良後(失敗)
LLD ULD
- 86 -
9.5.2 デジタル演算処理不良の改善
図9-6(c)をよく見ると最大波高値がつぶれているのが確認できる。これは表9-2より、
sfix32En19でフィルタ係数Aを精度良く表現できていないのが原因と考えられる。したが
って小数部のbit数を増やしてsfix64En51としたが、必要なFPGAのLEが53819個とな り、搭載されている24624個を大幅に超えてしまい実装不可であった。
sfix32En19で精度良く表現できるフィルタ係数を選ぶことにした。表9-3より =60kHz のフィルタ係数はsfix32En19で十分表現でき、Simulinkシミュレーションで最大波高値 がつぶれていないことを確認した(図9-13)。また図8-17より =30kHzと =60kHzの ときのエネルギーFWHMに大差はない。よって、 =60kHzのフィルタを実装することに 変更した。
フィルタ演算処理を修正したVHDLフローチャートを図9-14に示す。修正箇所を赤で 示してある。
表 9-3 遮断周波数 60kHz のフィルタ係数値
データ型 フィルタ係数 A フィルタ係数 B フィルタ係数 C
double 6.048338641723570e-06 -1.995056879746730 0.995087123254622 sfix32En19 5.7220458984375e-6 -1.9950561523438 0.99508666992188
16 進数表示 x(0000 0003) x(FFF0 0A20) x(0007 F5F0)
図 9-13 Simulink での演算シミュレーション結果( のフィルタ)
- 87 -
図 9-14 修正した CHEB2_Filter.vhd 記述のフローチャート
- 88 -
9.5.3 デジタルフィルタ回路実装が成功した測定スペクトル
改良前のエネルギースペクトルを青で、改良後のエネルギースペクトルを赤で示す。図 9-12で見られた異常なカウントロスを解消できた。
ここで、 、 の2点を(5.1)式に代入して校正曲線を得る。
(9.3)
図9-15(a)より改良前はPEAK=2930chであり、1chあたり0.58keVの校正曲線が得られた。
改良後はPEAK=2847chであり、1chあたり0.64keVの校正曲線が得られた。電子ボルト 軸にしたときの測定スペクトルを図9-15(b)に示す。
図 9-15(a) 実装成功した測定スペクトル(チャネル軸)
2400 2600 2800 3000 3200 3400 3600 3800 4000 101
102 103
チャネル
Count
改良前 改良後(成功)
LLD ULD
2847ch 2930ch
- 89 -
図 9-15(b) 実装成功した測定スペクトル(電子ボルト軸)