• 検索結果がありません。

動作検証用 CCD 疑似データ

ドキュメント内 main.dvi (ページ 72-76)

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)