CYRIC Hyperball2 technical memo Double-buffer関連 Double buffer • 二つのメモリーモジュールを使い、片方に データを貯めている間にもう片方を読み出す ということを繰り返し、データ転送やover headによるdead timeを少なくするデータ収 集方法 – 連続ビームを使用する実験では非常に有効 – J-PARCやKEKのようにspillがあると、spill-offの 間にデータを収集すれば大丈夫なので、使う必 要性は低い 基本な流れ UMEM1 DAQ PC FERA ADC TDC CAMAC • • • UMEM2 VME TUL (切り替え信号) 要は切り替え信号をtriggerやFERAからのpass、PCのbusyやreadoutを使 用していかに作るかという問題である 信号処理にTULが使えるので、必要なモジュールは少ない(gateやFI/FOを 使っても可能だが、NIM-BIM1台半必要) CAMACモジュールからFERAを介してデータを転送するという形なので、 VMEモジュールを追加したときに、double-bufferを行うのが難しくなる UMEM UMEMの動作 • 入力する制御信号 EV FP WSO Data – Data: FERA driverからのdataを入力 – Event gate (EV) : trigger (start)⇒pass (stop)で作 るgate。このgateがある時だけ、UMEMはdataを受 け付ける – Write strobe out (WSO) : FERAbusにdataがある 時にFERA driver(実際にはdata転送中のモジュー ルが出すもの)が出す信号。この信号をUMEMに入 力して、data書き込みを行わせる(入力口はData portの最後) – Front panel enable gate (FP) : Event gate入力と FERA driverからのWSO、data入力を enable/disableするgate。このgate入力がある時だ け、UMEMはdataやEV、WSOを受け付ける UMEMの切り替えの方法 FERA pass信号 • FERAは1イベントごとにデータをメモリモジュールを送り、最後のデータが転送された 後に、モジュールをクリアする「pass」信号を出す ⇒この信号をpre scaleすればメモリに貯めるデータを制御できる out out A FERA pass Pre Scale 1/n start G/G out Coincidence stop Latch 入力信号幅以上のdelay Aはnイベントに一回出る信号になる⇒n回分(nイベント分)のFERAからのデータ量を表す G/GのoutとoutでUMEM1と2のFPをon/offする UMEM切り替え pass Pre-pass UMEM1の書き込み UMEM2の読み出し UMEM1の読み出し Pre-pass G/G out UMEM2の書き込み Pre-pass G/G out Coincidence out UMEM2のinterrupt UMEM1のinterrupt UMEM2のinterrupt Pre-passを利用して、各UMEMのFPをon/offし、double bufferingを行う 切り替えタイミング調整 UMEM切り替えの際にはPre-passだけでなく、PC側のread-outも考慮しなければならない 図の①場合はpre-passでUMEMが切り替わる前にread-outが終了しているので問題ないが ②の場合、切り替えタイミングをread-outで決めなければならない ① Pre-pass ② Read-out これだけ余分に読み出し時間が必要 UMEM1の書き込み UMEM2の読み出し UMEM1の読み出し Pre-pass G/G out UMEM2の書き込み Pre-pass G/G out ちゃんとデータを制御するにはこのタイミングで切り替える必要あり Coincidence out タイミング調整用の回路 start 右図のような回路を用い ることで、Pre-passか read-outの遅いほうで UMEMの切り替えタイ ミング「B」を作る Pre-pass Latch G/G stop start Read-out Latch Coincidence G/G stop Pre-pass Pre-pass G/G out Read-out Pre-pass G/G out B B タイミング調整後の切り替え Pre-pass Pre-pass G/G out Read-out Pre-pass G/G out B UMEM1の書き込み UMEM2の読み出し UMEM1の読み出し Pre-pass G/G out UMEM2の書き込み Pre-pass G/G out 「B」を用いることで適切なタイミングでUMEMの切り替えが出来る Trigger、pass、interrupt、FPのタイミングチャート Trigger pass Pre-pass UMEM Busy Pre-pass G/G out Read-out Pre-pass G/G out UMEM1のinterrupt UMEM1の書き込み UMEM2の読み出し UMEM2のinterrupt B UMEM1の読み出し Pre-pass G/G out UMEM2の書き込み Pre-pass G/G out 回路図 (TUL内部の回路) Trigger start Latch out PASS G/G Main part Pre Scale start Pre-pass start Read-out Latch G/G G/G Coin out out start stop G/G out:FP2 stop Coin stop I/O register : output : モジュール Latch 入力信号幅以上のdelay out:FP1 start G/G out 黒文字 Interrupt Latch stop : input FERA busy out stop 1/n EV (event gate) 黒文字 黒文字 Which UMEM I/O register Latch UMEM busy UMEM切り替え信号(aとする)とFP1をI/O registerに入れ、どちらのUMEMを見に行くか判断 FP1∩aUMEM2、 FP1∩aUMEM1 微妙なタイミング Trigger start Latch out PASS G/G Main part Pre Scale Pre-pass G/G out start Read-out Latch G/G G/G Coin out out start stop G/G out:FP2 stop Coin stop I/O register : output : モジュール Latch 入力信号幅以上のdelay out:FP1 start Latch stop 黒文字 Interrupt 1 ms delay start : input FERA busy out stop 1 ms delay 1/n EV (event gate) 黒文字 黒文字 Which UMEM I/O register Latch UMEM busy TULは33 MHzの同期モードで動くように設定してあるので、 入力信号の幅は30 ns以上必要⇒40 nsの信号を入れている 図で指定した部分以外はタイミングが適当(極例を除く)でも問題なし TUL in/out In4 Out 0 Trigger pass Event gate UMEM EV input Event gate Trigger veto UMEM busy Trigger veto FP UMEM1 UMEM1 FP input FP UMEM2 UMEM2 FP input Interrupt CAMAC interrupt Which UMEM I/O reg In2 Out 2 In6 Out 3 TUL Out 4 Out 5 Out 6 Out 7 • • • I/O reg In1 Out 1 In5 Read-out 切り替え信号 passのpre-scaleはTUL内部で行っている UMEM用のEvent gateはFI/FOで2つに分けて使用 TULのECL portからチェック用にいくつか信号を出してある user_event.cでの流れ • UMEM、I/O reg、Interrupt-regのclear & initialize – おのおののモジュールの作法はマニュアル参照 1. LAM待ち – CAMAC interrupt-reg : CWLAM()使用 2. I/O regでwhich UMEMの判定 – – – I/O regのIN1に切り替え信号、IN2にFP1を入力 IN1∩IN2⇒Trigger pattern 0x2 (1 bit & 2 bit) IN1∩IN2⇒Trigger pattern 0x1 (1 bit1のみ) 3. UMEMの読み出し – – 2でのflagに準じて読む Trigger pattern 0x1でUMEM2、0x2でUMEM1 4. I/O regのclear • 以後、1~4を繰り返す 見たことあるErrorについて • UMEMのランプが二つ点滅しない – FP enableとdata受付中のランプがあり、data受付中が 光らない時が多く、この場合dataが来ない VMEクレート再起動 • Collectorのメッセージでdata sizeが小さすぎる – Which UMEMが反対になっている – ランプ点滅でもdataが来ないときがある VMEクレート再起動 • Double buffer用のTULがエラー – まったく動かない(EV gate outがあるのでチェックすると 何も信号が見えない) TUL 再設定 Dataのチェック • Dataはヒストグラムで以下をモニター – Event size : 1triggerあたりのdate word数(16 bit) (例:1 fold triggerでADC 2 word、TDC 3 word、Event footerの計6 word) – Event number/buffer : UMEMから取ってきた1buffer当 たりのevent数 (Passのpre-scaleと同じ、0.1%くらいの割合で1か2のずれがある) – ADC and TDC number : TriggerあたりのADCとTDCの hit数(slot対応あり、なし) (triggerのfold数と同じ。Pile-upがあるとADC数はfold数以下に減る) • HDDに貯まるdata量の見積もり – Event size×2×trigger(vetoed) [Hz] = data [Byte/s] (モニターから算出したdata量と実際にHDD上でのdataの増加量が consistentか見るべし)
© Copyright 2024 ExpyDoc