スライド 1

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∩aUMEM2、 FP1∩aUMEM1
微妙なタイミング
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か見るべし)