第
4
章でデザインした高速データ処理アーキテクチャの動作検証(
デバッグ)
を行なうためには、予め用意した入力データパターンを確実にデータ処理側に入力し、処理後の期待値と実際の処理 結果が一致するかどうかを確認する作業が必須となる。そのために、
CCD
の疑似データを高速 に発生・出力させて入力データとすることにした。この疑似データはデータ処理側と同等以上の 速さで発生・出力することが要求されるが、計算機ではそのような高速生成をすることができな かったため、こちらの場合も同様にFPGA
を用いることにした。以下に、その手法と構築したアーキテクチャについて述べていく。
5.1 CCD 疑似データ発生の手法
ここでは、ハードウェア実装としての疑似データ発生手法と、
FPGA
そのものの特徴を活かし たCCD
疑似データの発生方法を紹介していく。5.1.1
高速データ処理の動作検証用としてのCCD
疑似データまず、実際に線源もしくは
X
線発生装置で発生させるX
線がCCD
に検出されることで生じる イベントに近いデータにするための条件と、高速データ処理の評価用として要求される疑似CCD
データの条件を以下に挙げる。• SITe
社製CCD
のフォーマットのフレームデータサイズ(Image region
にunderclocked region
、HOC region
を含めた560 pixels × 512 lines)
•
グレード0
から7
までを含む、適度にスプリットしたイベントピクセル•
高ピクセルレートのフレームデータ(
フレーム中のX
線イベント密度が高いデータ)
項目の
2
、3
番目は必須項目であるものの、必ずしも同時に満たされる必要はない。なぜなら、検 証の対象となる高速データ処理アーキテクチャでは、全てのプロセスが独立に1
マシンサイクル で動作しているため、ソフトウェアと違って処理するイベントの数に関係なく1
クロックの間に イベントチェック、グレード判定、PH
の加算が常に行なわれるような仕組みになっているからで ある。したがって、第2
、3
項目は別々に検証することが許される。以上の条件を満たすデータを
FPGA
を用いて生成・発生させるために、二通りの手法を用い ることにした。5.1.2
乱数による手法一方は、
FPGA
内で乱数を生成させ、その乱数を基に高い波高値を示すピクセル(
グレード0
のイベント)
を適当な間隔で発生させる手法である。この疑似データは乱数発生ルーチンで決定 される任意の値を持つデータを作り出し、しかも高ピクセルレート(
最大1 events/2 pixels)
の フレームデータを生成することができる。そのため、高ピクセルレートのフレームデータを高速 データ処理アーキテクチャが処理仕切れるかどうかの動作検証用として用いることができる。5.2. CCD
疑似 データ発生アーキテクチャ その1 (
乱数による高ピクセルレートデータ) 73
5.1.3 EAB ROM
を用いた手法もう一方は
FPGA
内部にROM
機能を持たせ、そのROM
にこちらで用意した小規模のフレー ムデータを予め書き込んでおき、そのデータを繰り返し読み出すことによって疑似フレームデー タを作り出すものである。こちらの方法は恣意的にグレード0
から7
までのイベントデータを発 生させることができる。また、データは任意ではないが、高ピクセルレートのデータを発生させ ることもできる。いずれの発生法も、
SITe
フォーマットのフレームデータを構成するように発生させていく。次 節からそれぞれの発生手順を具体的に述べ、構築したアーキテクチャを説明していく。5.2 CCD 疑似 データ発生アーキテクチャ その 1 ( 乱数による高ピクセルレートデータ )
ソフトウェアとして乱数を発生させる場合、
0
から1
の間の一様乱数を作り出しそれを基にし て任意のデータ範囲の乱数や、指数分布や正規分布などのある確率分布に従う乱数を生成してい る。そのため、ほとんどのC
処理系のライブラリには乱数を初期化・生成する一組のライブラリ ルーチンが備わっている。しかしながら、
0
から1
の範囲の乱数を作り出すには浮動小数点の演算が必要となるため、ハー ドウェア上で実現しようとすると計算に多大な時間を要し、またFPGA
の内部ロジックセルも大 量に消費すると考えられる。したがって、このような生成法によってハードウェアで乱数を高速 発生させることは不可能である。そこで、ハードウェア上でより速く乱数(
ランダムなビット)
を 生成するために、「2
を法とする原始多項式」の理論に基づく発生法を利用することにした。詳細 は付録C
にまわすが、この手法を用いることでビットシフトと複数のビットの排他論理和をとる という操作のみでランダムなビットを生成することができる。したがって、ハードウェア向きで あり、高速に乱数発生させることが可能となることが望める。以下に、この手法を用いて実現さ せた乱数発生アーキテクチャの説明をしていく。5.2.1
全体の構成乱数による
CCD
疑似データ発生アーキテクチャは、疑似CCD
データ生成部、カウンタ、ス テートマシンからなる。以下、各部の説明をしていく。
5.2.2
ステートマシンまず、図
.4.1
に対応したフレームイメージを構成し、高ピクセルレートでグレード0
のイベン トピクセルが並んだ疑似データを発生させるために、CCD
のフレームデータの各領域に対応づ けられた疑似データ発生システムの状態を定義する。システムのステートとフレームデータの対 応関係を図.5.1
に示し、各状態でのシステムの動作を表.5.1
にまとめる。図.5.1
に示したよう に、状態はT0
とT1
の2
状態のみをとる。図において、フレームデータの左端18 pixels × 512
lines
はunderclocked region
に、右端30 pixels × 512 lines
はHOC region
に対応するデータで ある。T0
はこの2
つの領域と偶数番目(
最下端を0
としている)
のラインデータの領域のときの 状態で、X
線イベントが全くないDark level
に対応したPH
を出力するようにしている。(
厳密 にはHOC
とunderclocked region
のPH
はそれとは異なるが、ノイズという意味でひとまとめ に扱っている。) T1
は512 × 512
のImage region
における奇数番目のラインに相当するデータ を発生するときの状態であり、T0
と同じダークレベルのPH
データか、そのダークレベルのPH
にX
線イベントに相当するようなPH
を加算したPH
値を出力する。このX
線イベントは一定 の間隔(
頻度)
で発生させる。この頻度制御はピクセルレートカウンタを用いて行なう。transfer direction
T0 T1
T1 T1 T1 T1 T1 T1
T0 T0 T0 T0 T0 T0
Event Generate
Dark Level
18
1line 512pixels
30
図
5.1:
疑似CCD
フレームデータの一部とステートの関係図状態 対応領域 出力されるデータ 遷移条件
偶数番目のライン、
T0 underclocked region
、HOC region
ダークレベルPH N r =577
ダークレベルPH
またはT1 Image region
の奇数ライン ダークレベルPH + X
線イベントPH N r =1089
表5.1:
データ発生処理における状態とその状態に対応する領域、出力データ、及び、次のス テートへの遷移条件5.2.3
カウンタカウンタはステートマシンの遷移条件を与えるシステムカウンタと、
X
線イベントの発生頻度 を与えPH
の加算部を制御するピクセルレートカウンタの2
種類である。5.2.3.1
システム・カウンタ図
.5.1
からも見てとれるように、フレームの最小構成要素は560 pixels × 2 lines
の領域となっ ている。そこで、システムカウンタを2
ライン分のピクセル、つまり0
〜1119
をカウントする ように設定し、このカウンタを使うことで状態の遷移を行なうようにした。図に示したように、T0
からT1
へ移行するのは奇数番目(
最下端を0
として)
のラインのunderclocked region
とImage region
との境界であり、またT1
からT0
への遷移は奇数番目のラインのImage region
か らHOC region
に移る時である。システムカウンタの値N r
と状態遷移の関係は表.5.1
に示して ある。5.2.3.2
ピクセルレート・カウンタピクセルレート・カウンタはグレード
0
のX
線イベントに相当するピクセルPH
を発生させ る頻度を決めるカウンタである。カウンタ値のデータ幅を変えることによって発生頻度を調整することができる。イベント発生 はそのカウンタが最大値となったときとする。例えば、
16
ピクセルに1
回の割合でイベントを発 生させる場合のピクセルレート・カウンタは4
ビットカウンタで、カウンタ値が’1111’
になった 時にイベントPH
をダークレベルPH
に加算したPH
を出力させる。5.3. CCD
疑似 データ発生アーキテクチャ その2(
内部RAM
を用いた多種グレード疑似データ)75
1 bit
カウンタを用いることで最大ピクセルレート(2
ピクセルに1
回の割合)
でイベントピクセ ルを発生することができる。5.2.4
疑似データ生成部通常の
X
線CCD
におけるPH
データのワード幅は10 keV
以下のエネルギーを持つX
線の イベントデータとして必要な12bits
である。そのため、高速データ処理部のデータ入力線も12 bits
としている。したがって、疑似データも12 bits
のデータとして発生させる必要がある。先にも述べたように、疑似データの
PH
値はダークレベルPH
とイベントPH
の2
種類であ る。これらを作り出すために、それぞれの最低値(
オフセット)
を設定し、それらにあるビット幅 の乱数をゆらぎ値として加算するようにした。そのようにすると、各疑似データはそれぞれある 平均値を持ち、取り得る値の範囲も限られることになる。したがって、それぞれのデータをこち らで設定した最小値と最大値を持つ一様乱数PH
データとして発生させていることになる。具体的には、
Dark PH
は520 ch
という最低値に6
ビット幅で振った乱数を加算することで、データ範囲が
520 ch
から584 ch
で平均値が552 ch
をとるようにした。また、Event PH
は688 ch
という最低値に7
ビット幅の乱数を加算し688 ch
から816 ch
で平均値が752 ch
のPH
とし て発生させている。5.3 CCD 疑似 データ発生アーキテクチャ その 2 ( 内部 RAM を用いた多種グレード疑似データ )
もう一つのデータ発生法では、予めスプリットパターンが決められたイベントピクセルで構成 される
2
次元フレームデータの一部分を作り、それをFPGA
内部のEAB ROM (
ここではデー タ更新をしないため)
に格納しておく。そして、そのデータを繰り返し出力することでCCD
フ レームデータを構築するものである。5.3.1
全体の構成ROM
データの繰り返し読み出しによる、様々なスプリットパターンを持たせたイベントピク セルデータを発生させるアーキテクチャは、フレームデータ・パターン記憶用ROM
、ステート マシン、カウンタ、データ発生部から構成される。5.3.2
小規模フレームデータの作成まず、
ROM
に書き込むためのデータ・パターンについて述べる。先にも述べたように、グレー ド0
から グレード7
までのパターンを全て含むようなフレームデータの一部分を作る。作成し た小規模2
次元フレームデータを図.5.2
に示す。イベント中心ピクセルとスプリット・ピクセルの
PH
の境界値は厳密に決めたものではないが、中心ピクセルは周りに比べて十分大きな
PH
を与え、またスプリット・ピクセルは周りのピクセ ル(
ダーク・ピクセル)
のPH
よりもやや高くなるような値に設定した。このスプリットパターン 群にはグレード5
のスプリット・パターンが含まれていないが、図.5.2
のデータはgrade 0
、2
、3
、4
、6
のみを認識・抽出し、各パターンでPH
の加算が正確に行なわれているかを検証するた めに必要な最低限のイベントパターンを含んでいると考えて良い。図
.5.3
は図.5.2
の2
次元フレームデータを12bits
幅のROM
に一次元的に格納した時の摸式図 を表している。図のように、パターンPH
データはROM
のaddress 0
からLine-A
、Line-B
、Line-C
の順番に詰めて格納している。
ドキュメント内
main.dvi
(ページ 72-76)