第3章 VME-EASIROCボードの仕様 50
第3章 VME-EASIROCボードの仕様 51
3.3.1.2 ADC Controllerモジュール
ADC Controller モジュールのブロックダイアグラムを図3.17 に示す。ADC Con-trollerモジュールはTriggerManagerモジュールから受け取ったトリガー情報を各ADC Coreモジュールに分配している。また、各ADC CoreモジュールからのBUSY信号の 統合も行っている。さらに、EASIROCのReadRegister IFに対する制御信号の生成も 行っている。
TriggerManagerモジュールからのトリガー情報は内部で遅延させてから ADC Core モジュールに送っている。これはパイプライン型ADCであるAD9220には変換開始時 に変換待ち時間があるためである。
各ADC CoreモジュールからのBUSY信号はADC Controller 内部のFSM によっ て作られる InternalBusy 信号と OR をとったあとに TriggerManager モジュールに ADC_BUSYとして送られる。TriggerManagerからの ADC_TRIGGER信号を受信 した後すぐにADC_BUSYをHにするためである。
これらの処理の流れは FSM によって管理される。図3.18 に FSM のステート遷 移 を 示 す 。リ セ ッ ト 直 後 の 状 態 は IDLE 状 態 で あ る 。ADC_TRIGGER を 受 信 す る と SRIN_HIGH_0 状 態 、続 い て SRIN_HIGH_1 状 態 に 移 行 す る 。こ れ ら の 状 態 で EASIROC に 保 存 さ れ た 電 圧 情 報 を シ リ ア ル に 読 み 出 す た め の 制 御 線 で あ る SRIN_READ ピンを H にする。その後は CLK_LOW 状態と CLK_HIGH 状態を 32回ずつ繰り返すことによってEASIROCに対して3 MHzのクロック信号を32周期分 だけ送信している。AD9220へのCLK信号の供給はいずれかのADC Core モジュール のADC_BUSYがHになっている限り行われ続ける。また、FAST_CLEAR信号を受 信した場合は、どの状態からも、速やかにIDLE状態に移行する。ADC Coreモジュー ルに対してのCORE_START信号の発行はCLK_LOW状態かつChannel Counterが 4になっているタイミングで行う。
3.3.2 DoubleBuffer
DoubleBufferのブロックダイアグラムを図3.19に示す。
DoubleBufffer内にはSRAM が2 つ実装されており、読み書きの対象となるSRAM を切り替えることでDoubleBufferとして動作する。DoubleBufferの製作に当たっては 非同期 FIFOの製作方法[35, 36, 37]を参考にした。DoubleBufferは異なるクロックド メイン間でのデータの受け渡しを行うという役割も持つ。
SRAM に対して 1 イベント分のデータの書き込みが完了したタイミングで上流モ ジュールがWCOMP信号を発行する。この信号によってWptrがインクリメントされ、
第3章 VME-EASIROCボードの仕様 52
FSM
ADC̲TRIGGER FAST̲CLEAR
TriggerManager
ADC̲BUSY
InternalBusy
4 CORE̲BUSY ADC̲CORE × 4
CORE̲START
EASIROC1, 2
SlowControl IF
CLK̲READ RSTB̲READ SRIN̲READ
Channel Counter
CountUp CountClear
図 3.17 ADC Controller モジュールブロックダイアグラム。TriggerManager モ ジュールからのトリガー信号を各ADC_COREモジュールに分配し、Busy信号を統 合してTriggerManagerモジュールに送る。また、EASIROCのReadRegisterイン ターフェースの制御もこのモージュールが行う。
図3.19左側のスイッチが切り替わる。読み出しの場合も同様で、1イベント分の読み出 しが完了したタイミングで下流モジュールがRCOMP信号を発行し、それによってRptr がインクリメントされる。
WptrとRptrの比較によってFULL信号、EMPTY信号の生成を行う。スイッチの 切り替えを行うことだけを考えると Wptr、Rptr 共に 1 bit あれば足りるが、FULL、 EMPTYの生成のために2 bitカウンターとしている。スイッチの切り替えには下位bit のみを用いている。このとき、FULLの条件は「下位bitが一致 かつ 上位bitが不一致」、
EMPTYの条件は「全bitの一致」となる。しかし、これらは異なるクロックドメインに
属しているために直接の比較を行うことができない。異なるクロックドメイン間のデータ の受け渡しのために、Gray codeとSynchronizerを用いた。以下ではそれらのモジュー ルについて述べる。
3.3.2.1 クロックドメインをまたぐ信号の受け渡し
異なるクロックドメイン間でのデータを受け渡しする際にはメタステーブルと競合状態 について考慮する必要がある[38]。
メタステーブルは、図3.20に示すように、フリップフロップの入力データ信号が変化
第3章 VME-EASIROCボードの仕様 53