Kinoko Module Driver リファレンス

LeCroy 1976

種別CAMAC ADC/TDC Tester
製造者LeCroy (http://www.lecroy.com)
参照名LeCroy-1976
読み出しread()
サービス要求なし

読み出しアクション

selectChargeMode() / selectTimeMode()
電荷モードかタイミングモードの選択をする.
電荷モードでは,タイミングに 8bit DAC,電荷に 16bit DAC を使用する.
タイミングモードでは,タイミングに 16bit DAC を使用し,電荷出力は diable される

setChargeFullScale(int charge_full_scale_pC)
CHARGE 出力のフルスケールを pC 単位で指定する.
指定できる値は,300, 600, 1200 のいずれか
それ以外(最大1200)を指定すると,amplitude と組み合わせて自動でスケールされる.
デフォルトは 300 pC

setTimeFullScale(int time_full_scale_nsec)
START-STOP 間隔のフルスケールを nsec 単位で指定する.
指定できる値は,150, 300, 600, 1200, 2400, 4800, 9600 のいずれか
それ以外(最大9600)を指定すると,amplitude と組み合わせて自動でスケールされる.
デフォルトは 9600 nsec

setGateWidth(int width_nsec)
GATE 出力の長さを nsec 単位で指定する.
指定できる値の範囲は,10 から 9610 まで
デフォルトは 9610 nsec.

selectShortPulse() / selectLongPulse()
START および STOP 信号のパルス幅を指定する.
Short で 20 nsec,Long で 100 nsec
デフォルトは 20 nsec

selectFastTail() / selectSlowTail()
CHARGE 出力の立ち下がり時間を指定する.実際の時間は ChargeFullScale の値に依存し,15 nsec, 35 nsec, 65 nsec (fast) または 350 nsec, 600 nsec, 1200 nsec (slow) から選ばれる.デフォルトは SlowTail.

setAmplitude(int amplitude)
電荷モードでの出力電荷 Q,時間モードでの START-STOP 間隔 T を指定する.
Q = ChargeFullScale * (amplitude/65535)
T = TimeFullScale * (1 - amplitude/65535)

execute()
設定にしたがい,1サイクルを実行する.

read(int channel_bit_mask)
read(ReadoutChannelList channel_list)
現在の設定値をデータに入れて返す.アドレスの意味は以下のとおり.
アドレス
0 Amplitude
1 Full Scale (pC または nsec)
2 Gate Width (nsec)
3 Tail Fall Time (nsec)
4 Pulse Width (nsec)

読み出しスクリプト例

ADC Tester として使う例
datasource CamacAdcTester {
    int tester_station = 22;
    int adc_station = 17;
    int adc_channel = #0;

    CamacCrate crate;
    CamacController controller("Toyo-CC7x00");
    CamacModule tester("LeCroy-1976");
    CamacModule adc("Generic-Standard");

    crate.installController(controller);
    crate.installModule(tester, tester_station);
    crate.installModule(adc, adc_station);

    SoftwareModule timer("IntervalTimer");
    Register amplitude;

    on run_begin {
	tester.selectChargeMode();
	tester.setChargeFullScale(600);
	tester.setGateWidth(200);
	tester.selectFastTail();

	amplitude.load(0);
	timer.setInterval(0, 10000);
    }


    on trigger (timer) {
	amplitude.add(0x10);
	when (amplitude > 0xffff) {
	    //terminate();
	    amplitude.load(0x10);
	}
	tester.setAmplitude(amplitude);
	tester.execute();
    }

    on trigger (adc) {
	adc.read(adc_channel);
	adc.clear();

        // read test pulse setting
        // 0: amplitude, 1: full scale, 2: gate width, 3: tail fall time
	tester.read(#0..#3);  
    }
}
TDC Tester として使う例
datasource CamacTdcTester {
    int tester_station = 22;
    int tdc_station = 15;
    int tdc_channel = #0;

    CamacCrate crate;
    CamacController controller("Toyo-CC7x00");
    CamacModule tester("LeCroy-1976");
    CamacModule tdc("Generic-Standard");

    SoftwareModule timer("IntervalTimer");
    Register amplitude;

    crate.installController(controller);
    crate.installModule(tester, tester_station);
    crate.installModule(tdc, tdc_station);

    on run_begin {
	tester.selectTimeMode();
	tester.setTimeFullScale(4800);
	tester.setPulseWidth(20);

	amplitude.load(0);
	timer.setInterval(0, 10000);
    }

    on trigger (timer) {
	amplitude.add(0x10);
	when (amplitude > 0xffff) {
	    //terminate();
            amplitude.load(0x10);
	}

	tester.setAmplitude(amplitude);
	tester.execute();
    }

    on trigger (tdc) {
	tdc.read(tdc_channel);
	tdc.clear();

        // read test pulse setting
        // 0: amplitude, 1: full scale
	tester.read(#0..#1);  
    }
}